The site is updated with info for CVE-2023-28326
diff --git a/openmeetings-core/apidocs/allclasses-index.html b/openmeetings-core/apidocs/allclasses-index.html
new file mode 100644
index 0000000..4e8d843
--- /dev/null
+++ b/openmeetings-core/apidocs/allclasses-index.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>All Classes and Interfaces (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="class index">
+<meta name="generator" content="javadoc/AllClassesIndexWriter">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="all-classes-index-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html#all-classes">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="All Classes and Interfaces" class="title">All Classes and Interfaces</h1>
+</div>
+<div id="all-classes-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="all-classes-table-tab0" role="tab" aria-selected="true" aria-controls="all-classes-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="all-classes-table-tab1" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab1', 2)" class="table-tab">Interfaces</button><button id="all-classes-table-tab2" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab2', 2)" class="table-tab">Classes</button><button id="all-classes-table-tab3" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab3', 2)" class="table-tab">Enum Classes</button><button id="all-classes-table-tab4" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab4', 2)" class="table-tab">Record Classes</button><button id="all-classes-table-tab5" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab5', 2)" class="table-tab">Exceptions</button></div>
+<div id="all-classes-table.tabpanel" role="tabpanel">
+<div class="summary-table two-column-summary" aria-labelledby="all-classes-table-tab0">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="org/apache/openmeetings/core/converter/ConversionException.html" title="class in org.apache.openmeetings.core.converter">ConversionException</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/converter/DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/data/file/FileProcessor.html" title="class in org.apache.openmeetings.core.data.file">FileProcessor</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/converter/ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/openmeetings/core/notifier/INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/converter/InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/openmeetings/core/converter/IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/openmeetings/core/sip/ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Management of optional LDAP Login</div>
+</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/documents/LibraryChartLoader.html" title="class in org.apache.openmeetings.core.documents">LibraryChartLoader</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/notifier/NotifierService.html" title="class in org.apache.openmeetings.core.notifier">NotifierService</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/converter/RecordingConverter.html" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/converter/VideoConverter.html" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/ws/WsMessageChat2All.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+</div>
+</div>
+</div>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/allpackages-index.html b/openmeetings-core/apidocs/allpackages-index.html
new file mode 100644
index 0000000..c8f1ed4
--- /dev/null
+++ b/openmeetings-core/apidocs/allpackages-index.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>All Packages (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="package index">
+<meta name="generator" content="javadoc/AllPackagesIndexWriter">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="all-packages-index-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html#all-packages">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
+</div>
+<div class="caption"><span>Package Summary</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="org/apache/openmeetings/core/data/file/package-summary.html">org.apache.openmeetings.core.data.file</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><a href="org/apache/openmeetings/core/documents/package-summary.html">org.apache.openmeetings.core.documents</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><a href="org/apache/openmeetings/core/mail/package-summary.html">org.apache.openmeetings.core.mail</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="org/apache/openmeetings/core/notifier/package-summary.html">org.apache.openmeetings.core.notifier</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><a href="org/apache/openmeetings/core/rss/package-summary.html">org.apache.openmeetings.core.rss</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="org/apache/openmeetings/core/sip/package-summary.html">org.apache.openmeetings.core.sip</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><a href="org/apache/openmeetings/core/util/package-summary.html">org.apache.openmeetings.core.util</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/constant-values.html b/openmeetings-core/apidocs/constant-values.html
new file mode 100644
index 0000000..2b609fb
--- /dev/null
+++ b/openmeetings-core/apidocs/constant-values.html
@@ -0,0 +1,175 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Constant Field Values (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="summary of constants">
+<meta name="generator" content="javadoc/ConstantsSummaryWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="constants-summary-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html#constant-values">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
+<section class="packages">
+<h2 title="Contents">Contents</h2>
+<ul>
+<li><a href="#org.apache">org.apache.*</a></li>
+</ul>
+</section>
+</div>
+<section class="constants-summary" id="org.apache.openmeetings.core.converter">
+<h2 title="org.apache">org.apache.*</h2>
+<ul class="block-list">
+<li>
+<div class="caption"><span>org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Constant Field</div>
+<div class="table-header col-last">Value</div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.converter.BaseConverter.HALF_STEP">public&nbsp;static&nbsp;final&nbsp;double</code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/converter/BaseConverter.html#HALF_STEP">HALF_STEP</a></code></div>
+<div class="col-last even-row-color"><code>0.5</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.converter.BaseConverter.TIME_TO_WAIT_FOR_FRAME">public&nbsp;static&nbsp;final&nbsp;int</code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/converter/BaseConverter.html#TIME_TO_WAIT_FOR_FRAME">TIME_TO_WAIT_FOR_FRAME</a></code></div>
+<div class="col-last odd-row-color"><code>300000</code></div>
+</div>
+</li>
+</ul>
+<ul class="block-list">
+<li>
+<div class="caption"><span>org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Constant Field</div>
+<div class="table-header col-last">Value</div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.ldap.LdapLoginManager.CONFIGKEY_LDAP_KEY_PICTURE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html#CONFIGKEY_LDAP_KEY_PICTURE">CONFIGKEY_LDAP_KEY_PICTURE</a></code></div>
+<div class="col-last even-row-color"><code>"ldap_user_attr_picture"</code></div>
+</div>
+</li>
+<li>
+<div class="caption"><span>org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Constant Field</div>
+<div class="table-header col-last">Value</div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_ADMIN_DN">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_ADMIN_DN">CONFIGKEY_LDAP_ADMIN_DN</a></code></div>
+<div class="col-last even-row-color"><code>"ldap_admin_dn"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_ADMIN_PASSWD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_ADMIN_PASSWD">CONFIGKEY_LDAP_ADMIN_PASSWD</a></code></div>
+<div class="col-last odd-row-color"><code>"ldap_passwd"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_AUTH_TYPE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_AUTH_TYPE">CONFIGKEY_LDAP_AUTH_TYPE</a></code></div>
+<div class="col-last even-row-color"><code>"ldap_auth_type"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_HOST">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_HOST">CONFIGKEY_LDAP_HOST</a></code></div>
+<div class="col-last odd-row-color"><code>"ldap_conn_host"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_PICTURE_URI">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_PICTURE_URI">CONFIGKEY_LDAP_PICTURE_URI</a></code></div>
+<div class="col-last even-row-color"><code>"ldap_user_picture_uri"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_PORT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_PORT">CONFIGKEY_LDAP_PORT</a></code></div>
+<div class="col-last odd-row-color"><code>"ldap_conn_port"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_SEARCH_BASE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_SEARCH_BASE">CONFIGKEY_LDAP_SEARCH_BASE</a></code></div>
+<div class="col-last even-row-color"><code>"ldap_search_base"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_SEARCH_SCOPE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_SEARCH_SCOPE">CONFIGKEY_LDAP_SEARCH_SCOPE</a></code></div>
+<div class="col-last odd-row-color"><code>"ldap_search_scope"</code></div>
+</div>
+</li>
+</ul>
+<ul class="block-list">
+<li>
+<div class="caption"><span>org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Constant Field</div>
+<div class="table-header col-last">Value</div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.sip.SipManager.ASTERISK_OM_FAMILY">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/sip/SipManager.html#ASTERISK_OM_FAMILY">ASTERISK_OM_FAMILY</a></code></div>
+<div class="col-last even-row-color"><code>"openmeetings"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.sip.SipManager.ASTERISK_OM_KEY">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/sip/SipManager.html#ASTERISK_OM_KEY">ASTERISK_OM_KEY</a></code></div>
+<div class="col-last odd-row-color"><code>"rooms"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.sip.SipManager.SIP_FIRST_NAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/sip/SipManager.html#SIP_FIRST_NAME">SIP_FIRST_NAME</a></code></div>
+<div class="col-last even-row-color"><code>"SIP Transport"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.sip.SipManager.SIP_USER_NAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/sip/SipManager.html#SIP_USER_NAME">SIP_USER_NAME</a></code></div>
+<div class="col-last odd-row-color"><code>"--SIP--"</code></div>
+</div>
+</li>
+</ul>
+<ul class="block-list">
+<li>
+<div class="caption"><span>org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Constant Field</div>
+<div class="table-header col-last">Value</div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_ALL">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_ALL">ID_ALL</a></code></div>
+<div class="col-last even-row-color"><code>"chatTab-all"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_ROOM_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_ROOM_PREFIX">ID_ROOM_PREFIX</a></code></div>
+<div class="col-last odd-row-color"><code>"chatTab-r"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_TAB_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_TAB_PREFIX">ID_TAB_PREFIX</a></code></div>
+<div class="col-last even-row-color"><code>"chatTab-"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_USER_PREFIX">ID_USER_PREFIX</a></code></div>
+<div class="col-last odd-row-color"><code>"chatTab-u"</code></div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/element-list b/openmeetings-core/apidocs/element-list
new file mode 100644
index 0000000..7ac3665
--- /dev/null
+++ b/openmeetings-core/apidocs/element-list
@@ -0,0 +1,10 @@
+org.apache.openmeetings.core.converter
+org.apache.openmeetings.core.data.file
+org.apache.openmeetings.core.documents
+org.apache.openmeetings.core.ldap
+org.apache.openmeetings.core.mail
+org.apache.openmeetings.core.notifier
+org.apache.openmeetings.core.rss
+org.apache.openmeetings.core.sip
+org.apache.openmeetings.core.util
+org.apache.openmeetings.core.util.ws
diff --git a/openmeetings-core/apidocs/help-doc.html b/openmeetings-core/apidocs/help-doc.html
new file mode 100644
index 0000000..5eff12e
--- /dev/null
+++ b/openmeetings-core/apidocs/help-doc.html
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>API Help (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="help">
+<meta name="generator" content="javadoc/HelpWriter">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="help-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li class="nav-bar-cell1-rev">Help</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Help:&nbsp;</li>
+<li><a href="#help-navigation">Navigation</a>&nbsp;|&nbsp;</li>
+<li><a href="#help-pages">Pages</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<h1 class="title">JavaDoc Help</h1>
+<ul class="help-toc">
+<li><a href="#help-navigation">Navigation</a>: 
+<ul class="help-subtoc">
+<li><a href="#help-search">Search</a></li>
+</ul>
+</li>
+<li><a href="#help-pages">Kinds of Pages</a>: 
+<ul class="help-subtoc">
+<li><a href="#overview">Overview</a></li>
+<li><a href="#package">Package</a></li>
+<li><a href="#class">Class or Interface</a></li>
+<li><a href="#doc-file">Other Files</a></li>
+<li><a href="#use">Use</a></li>
+<li><a href="#tree">Tree (Class Hierarchy)</a></li>
+<li><a href="#constant-values">Constant Field Values</a></li>
+<li><a href="#serialized-form">Serialized Form</a></li>
+<li><a href="#all-packages">All Packages</a></li>
+<li><a href="#all-classes">All Classes and Interfaces</a></li>
+<li><a href="#index">Index</a></li>
+</ul>
+</li>
+</ul>
+<hr>
+<div class="sub-title">
+<h2 id="help-navigation">Navigation</h2>
+Starting from the <a href="index.html">Overview</a> page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The <a href="index-all.html">Index</a> and Search box allow you to navigate to specific declarations and summary pages, including: <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>
+<section class="help-section" id="help-search">
+<h3>Search</h3>
+<p>You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camelCase" abbreviations. For example:</p>
+<ul class="help-section-list">
+<li><code>j.l.obj</code> will match "java.lang.Object"</li>
+<li><code>InpStr</code> will match "java.io.InputStream"</li>
+<li><code>HM.cK</code> will match "java.util.HashMap.containsKey(Object)"</li>
+</ul>
+<p>Refer to the <a href="https://docs.oracle.com/en/java/javase/17/docs/specs/javadoc/javadoc-search-spec.html">Javadoc Search Specification</a> for a full description of search features.</p>
+</section>
+</div>
+<hr>
+<div class="sub-title">
+<h2 id="help-pages">Kinds of Pages</h2>
+The following sections describe the different kinds of pages in this collection.
+<section class="help-section" id="overview">
+<h3>Overview</h3>
+<p>The <a href="index.html">Overview</a> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</p>
+</section>
+<section class="help-section" id="package">
+<h3>Package</h3>
+<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:</p>
+<ul class="help-section-list">
+<li>Interfaces</li>
+<li>Classes</li>
+<li>Enum Classes</li>
+<li>Exceptions</li>
+<li>Errors</li>
+<li>Annotation Interfaces</li>
+</ul>
+</section>
+<section class="help-section" id="class">
+<h3>Class or Interface</h3>
+<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.</p>
+<ul class="help-section-list">
+<li>Class Inheritance Diagram</li>
+<li>Direct Subclasses</li>
+<li>All Known Subinterfaces</li>
+<li>All Known Implementing Classes</li>
+<li>Class or Interface Declaration</li>
+<li>Class or Interface Description</li>
+</ul>
+<br>
+<ul class="help-section-list">
+<li>Nested Class Summary</li>
+<li>Enum Constant Summary</li>
+<li>Field Summary</li>
+<li>Property Summary</li>
+<li>Constructor Summary</li>
+<li>Method Summary</li>
+<li>Required Element Summary</li>
+<li>Optional Element Summary</li>
+</ul>
+<br>
+<ul class="help-section-list">
+<li>Enum Constant Details</li>
+<li>Field Details</li>
+<li>Property Details</li>
+<li>Constructor Details</li>
+<li>Method Details</li>
+<li>Element Details</li>
+</ul>
+<p><span class="help-note">Note:</span> Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.</p>
+<p>The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p>
+</section>
+<section class="help-section" id="doc-file">
+<h3>Other Files</h3>
+<p>Packages and modules may contain pages with additional information related to the declarations nearby.</p>
+</section>
+<section class="help-section" id="use">
+<h3>Use</h3>
+<p>Each documented package, class and interface has its own Use page.  This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A.  You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.</p>
+</section>
+<section class="help-section" id="tree">
+<h3>Tree (Class Hierarchy)</h3>
+<p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with <code>java.lang.Object</code>. Interfaces do not inherit from <code>java.lang.Object</code>.</p>
+<ul class="help-section-list">
+<li>When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.</li>
+<li>When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.</li>
+</ul>
+</section>
+<section class="help-section" id="constant-values">
+<h3>Constant Field Values</h3>
+<p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p>
+</section>
+<section class="help-section" id="serialized-form">
+<h3>Serialized Form</h3>
+<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.</p>
+</section>
+<section class="help-section" id="all-packages">
+<h3>All Packages</h3>
+<p>The <a href="allpackages-index.html">All Packages</a> page contains an alphabetic index of all packages contained in the documentation.</p>
+</section>
+<section class="help-section" id="all-classes">
+<h3>All Classes and Interfaces</h3>
+<p>The <a href="allclasses-index.html">All Classes and Interfaces</a> page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.</p>
+</section>
+<section class="help-section" id="index">
+<h3>Index</h3>
+<p>The <a href="index-all.html">Index</a> contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>.</p>
+</section>
+</div>
+<hr>
+<span class="help-footnote">This help file applies to API documentation generated by the standard doclet.</span></main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/index-all.html b/openmeetings-core/apidocs/index-all.html
new file mode 100644
index 0000000..8735977
--- /dev/null
+++ b/openmeetings-core/apidocs/index-all.html
@@ -0,0 +1,644 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Index (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="index">
+<meta name="generator" content="javadoc/IndexWriter">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="index-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li class="nav-bar-cell1-rev">Index</li>
+<li><a href="help-doc.html#index">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1>Index</h1>
+</div>
+<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:Q">Q</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="serialized-form.html">Serialized&nbsp;Form</a>
+<h2 class="title" id="I:A">A</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">additionalMp4OutParams(Recording)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>
+<div class="block">This method should be overridden to supply any additional parameters</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/InterviewConverter.html#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">additionalMp4OutParams(Recording)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/notifier/NotifierService.html#addNotifier(org.apache.openmeetings.core.notifier.INotifier)" class="member-name-link">addNotifier(INotifier)</a> - Method in class org.apache.openmeetings.core.notifier.<a href="org/apache/openmeetings/core/notifier/NotifierService.html" title="class in org.apache.openmeetings.core.notifier">NotifierService</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#alwaysTrue()" class="member-name-link">alwaysTrue()</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#appendBody(jakarta.mail.internet.MimeMessage,java.lang.String)" class="member-name-link">appendBody(MimeMessage, String)</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#appendIcsBody(jakarta.mail.internet.MimeMessage,org.apache.openmeetings.db.entity.basic.MailMessage)" class="member-name-link">appendIcsBody(MimeMessage, MailMessage)</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#ASTERISK_OM_FAMILY" class="member-name-link">ASTERISK_OM_FAMILY</a> - Static variable in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#ASTERISK_OM_KEY" class="member-name-link">ASTERISK_OM_KEY</a> - Static variable in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html#ATTRIBUTE" class="member-name-link">ATTRIBUTE</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html#AUTOCREATE" class="member-name-link">AUTOCREATE</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html#AUTOUPDATE" class="member-name-link">AUTOUPDATE</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:B">B</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">BaseConverter</a> - Class in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#%3Cinit%3E()" class="member-name-link">BaseConverter()</a> - Constructor for class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a> - Record Class in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:C">C</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#callExternalNumber(java.lang.String,org.apache.openmeetings.db.entity.room.Room)" class="member-name-link">callExternalNumber(String, Room)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>
+<div class="block">Perform call to specified phone number and join to conference</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#cfgDao" class="member-name-link">cfgDao</a> - Variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/DocumentConverter.html#cfgDao" class="member-name-link">cfgDao</a> - Variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a> - Class in <a href="org/apache/openmeetings/core/util/package-summary.html">org.apache.openmeetings.core.util</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#chunkDao" class="member-name-link">chunkDao</a> - Variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_ADMIN_DN" class="member-name-link">CONFIGKEY_LDAP_ADMIN_DN</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_ADMIN_PASSWD" class="member-name-link">CONFIGKEY_LDAP_ADMIN_PASSWD</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_AUTH_TYPE" class="member-name-link">CONFIGKEY_LDAP_AUTH_TYPE</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_HOST" class="member-name-link">CONFIGKEY_LDAP_HOST</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html#CONFIGKEY_LDAP_KEY_PICTURE" class="member-name-link">CONFIGKEY_LDAP_KEY_PICTURE</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_PICTURE_URI" class="member-name-link">CONFIGKEY_LDAP_PICTURE_URI</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_PORT" class="member-name-link">CONFIGKEY_LDAP_PORT</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_SEARCH_BASE" class="member-name-link">CONFIGKEY_LDAP_SEARCH_BASE</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#CONFIGKEY_LDAP_SEARCH_SCOPE" class="member-name-link">CONFIGKEY_LDAP_SEARCH_SCOPE</a> - Static variable in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ConversionException.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">ConversionException</a> - Exception in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ConversionException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">ConversionException(String)</a> - Constructor for exception org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ConversionException.html" title="class in org.apache.openmeetings.core.converter">ConversionException</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ImageConverter.html#convertDocument(org.apache.openmeetings.db.entity.file.FileItem,java.io.File,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertDocument(FileItem, File, ProcessResultList, Optional&lt;DoubleConsumer&gt;)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></dt>
+<dd>
+<div class="block">Converts PDF document to the series of images</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ImageConverter.html#convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,java.util.Optional)" class="member-name-link">convertImage(BaseFileItem, StoredFile, Optional&lt;DoubleConsumer&gt;)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ImageConverter.html#convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertImage(BaseFileItem, StoredFile, ProcessResultList, Optional&lt;DoubleConsumer&gt;)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ImageConverter.html#convertImageUserProfile(java.io.File,java.lang.Long,boolean)" class="member-name-link">convertImageUserProfile(File, Long, boolean)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/DocumentConverter.html#convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile)" class="member-name-link">convertPDF(FileItem, StoredFile)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/DocumentConverter.html#convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertPDF(FileItem, StoredFile, ProcessResultList, Optional&lt;DoubleConsumer&gt;)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">convertToMp4(Recording, List&lt;String&gt;, boolean, ProcessResultList)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">convertToPng(BaseFileItem, String, ProcessResultList)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/VideoConverter.html#convertVideo(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertVideo(FileItem, StoredFile, ProcessResultList, Optional&lt;DoubleConsumer&gt;)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/VideoConverter.html" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#countUsers(java.lang.String)" class="member-name-link">countUsers(String)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/DocumentConverter.html#createOfficeManager(java.lang.String,java.util.function.Function)" class="member-name-link">createOfficeManager(String, Function&lt;OfficeManager, ConversionJob&gt;)</a> - Static method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#createSipStackProcessor(java.lang.String,org.apache.openmeetings.db.entity.room.Room,org.apache.openmeetings.core.sip.ISipCallbacks)" class="member-name-link">createSipStackProcessor(String, Room, ISipCallbacks)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)" class="member-name-link">createWav(Recording, ProcessResultList, File, List&lt;File&gt;, File, List&lt;RecordingChunk&gt;)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:D">D</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#delete()" class="member-name-link">delete()</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#delete(java.lang.String)" class="member-name-link">delete(String)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#deleteFileIfExists(java.io.File)" class="member-name-link">deleteFileIfExists(File)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#destroy()" class="member-name-link">destroy()</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#destroy()" class="member-name-link">destroy()</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#diff(java.util.Date,java.util.Date)" class="member-name-link">diff(Date, Date)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#diffSeconds(long)" class="member-name-link">diffSeconds(long)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#diffSeconds(java.util.Date,java.util.Date)" class="member-name-link">diffSeconds(Date, Date)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html#%3Cinit%3E(int,int)" class="member-name-link">Dimension(int, int)</a> - Constructor for record class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></dt>
+<dd>
+<div class="block">Creates an instance of a <code>Dimension</code> record class.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/DocumentConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a> - Class in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/DocumentConverter.html#%3Cinit%3E()" class="member-name-link">DocumentConverter()</a> - Constructor for class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/DocumentConverter.html#doJodConvert(java.io.File,java.io.File)" class="member-name-link">doJodConvert(File, File)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></dt>
+<dd>
+<div class="block">Generates PDF using JOD Library (external library)</div>
+</dd>
+</dl>
+<h2 class="title" id="I:E">E</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></dt>
+<dd>
+<div class="block">Indicates whether some other object is "equal to" this one.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a></dt>
+<dd>
+<div class="block">Indicates whether some other object is "equal to" this one.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a></dt>
+<dd>
+<div class="block">Indicates whether some other object is "equal to" this one.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#EXEC_EXT" class="member-name-link">EXEC_EXT</a> - Static variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:F">F</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/data/file/FileProcessor.html" class="type-name-link" title="class in org.apache.openmeetings.core.data.file">FileProcessor</a> - Class in <a href="org/apache/openmeetings/core/data/file/package-summary.html">org.apache.openmeetings.core.data.file</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/data/file/FileProcessor.html#%3Cinit%3E()" class="member-name-link">FileProcessor()</a> - Constructor for class org.apache.openmeetings.core.data.file.<a href="org/apache/openmeetings/core/data/file/FileProcessor.html" title="class in org.apache.openmeetings.core.data.file">FileProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">finalizeRec(Recording, String, ProcessResultList)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:G">G</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#get(java.lang.String)" class="member-name-link">get(String)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#getApp()" class="member-name-link">getApp()</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#getBasicMimeMessage()" class="member-name-link">getBasicMimeMessage()</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html#getChatMessage()" class="member-name-link">getChatMessage()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)" class="member-name-link">getDimension(String, BaseConverter.Dimension)</a> - Static method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>
+<div class="block">Parse the width height from the FFMPEG output</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">getDimensions(Recording)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)" class="member-name-link">getDimensions(Recording, char)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html#getFeedConnection(java.lang.String)" class="member-name-link">getFeedConnection(String)</a> - Static method in class org.apache.openmeetings.core.rss.<a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#getMessage(org.apache.openmeetings.db.entity.user.User,java.util.List,java.util.function.BiConsumer)" class="member-name-link">getMessage(User, List&lt;ChatMessage&gt;, BiConsumer&lt;JSONObject, User&gt;)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html#getMsg()" class="member-name-link">getMsg()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html#getMsg()" class="member-name-link">getMsg()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html#getMsg()" class="member-name-link">getMsg()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#getPathToConvert()" class="member-name-link">getPathToConvert()</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#getPathToFFMPEG()" class="member-name-link">getPathToFFMPEG()</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#getPathToSoX()" class="member-name-link">getPathToSoX()</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html#getRoomId()" class="member-name-link">getRoomId()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html#getRss()" class="member-name-link">getRss()</a> - Static method in class org.apache.openmeetings.core.rss.<a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#getSipUser(org.apache.openmeetings.db.entity.room.Room)" class="member-name-link">getSipUser(Room)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">getStreamFolder(Recording)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html#getUid()" class="member-name-link">getUid()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html#getUserId()" class="member-name-link">getUserId()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html#getUserId()" class="member-name-link">getUserId()</a> - Method in class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:H">H</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#HALF_STEP" class="member-name-link">HALF_STEP</a> - Static variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#hangup(org.apache.openmeetings.db.entity.room.Room)" class="member-name-link">hangup(Room)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></dt>
+<dd>
+<div class="block">Returns a hash code value for this object.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a></dt>
+<dd>
+<div class="block">Returns a hash code value for this object.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a></dt>
+<dd>
+<div class="block">Returns a hash code value for this object.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html#height()" class="member-name-link">height()</a> - Method in record class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></dt>
+<dd>
+<div class="block">Returns the value of the <code>height</code> record component.</div>
+</dd>
+</dl>
+<h2 class="title" id="I:I">I</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_ALL" class="member-name-link">ID_ALL</a> - Static variable in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_ROOM_PREFIX" class="member-name-link">ID_ROOM_PREFIX</a> - Static variable in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_TAB_PREFIX" class="member-name-link">ID_TAB_PREFIX</a> - Static variable in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#ID_USER_PREFIX" class="member-name-link">ID_USER_PREFIX</a> - Static variable in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ImageConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">ImageConverter</a> - Class in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ImageConverter.html#%3Cinit%3E()" class="member-name-link">ImageConverter()</a> - Constructor for class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html#importUsers(java.lang.Long,boolean)" class="member-name-link">importUsers(Long, boolean)</a> - Method in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#init()" class="member-name-link">init()</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/notifier/INotifier.html" class="type-name-link" title="interface in org.apache.openmeetings.core.notifier">INotifier</a> - Interface in <a href="org/apache/openmeetings/core/notifier/package-summary.html">org.apache.openmeetings.core.notifier</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/InterviewConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a> - Class in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/InterviewConverter.html#%3Cinit%3E()" class="member-name-link">InterviewConverter()</a> - Constructor for class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#invite(org.apache.openmeetings.db.entity.room.Room,java.lang.String)" class="member-name-link">invite(Room, String)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/IRecordingConverter.html" class="type-name-link" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a> - Interface in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/ISipCallbacks.html" class="type-name-link" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a> - Interface in <a href="org/apache/openmeetings/core/sip/package-summary.html">org.apache.openmeetings.core.sip</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:L">L</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" class="type-name-link" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a> - Class in <a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a></dt>
+<dd>
+<div class="block">Management of optional LDAP Login</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html#%3Cinit%3E()" class="member-name-link">LdapLoginManager()</a> - Constructor for class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a> - Enum Class in <a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a> - Enum Class in <a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a> - Enum Class in <a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html" class="type-name-link" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a> - Class in <a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapOptions.html#%3Cinit%3E(java.util.Properties)" class="member-name-link">LdapOptions(Properties)</a> - Constructor for class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/documents/LibraryChartLoader.html" class="type-name-link" title="class in org.apache.openmeetings.core.documents">LibraryChartLoader</a> - Class in <a href="org/apache/openmeetings/core/documents/package-summary.html">org.apache.openmeetings.core.documents</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html" class="type-name-link" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a> - Class in <a href="org/apache/openmeetings/core/rss/package-summary.html">org.apache.openmeetings.core.rss</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/documents/LibraryChartLoader.html#loadChart(java.io.File,java.lang.String)" class="member-name-link">loadChart(File, String)</a> - Static method in class org.apache.openmeetings.core.documents.<a href="org/apache/openmeetings/core/documents/LibraryChartLoader.html" title="class in org.apache.openmeetings.core.documents">LibraryChartLoader</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#logDao" class="member-name-link">logDao</a> - Variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html#login(java.lang.String,java.lang.String,java.lang.Long)" class="member-name-link">login(String, String, Long)</a> - Method in class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></dt>
+<dd>
+<div class="block">Ldap Login
+
+ Connection Data is retrieved from ConfigurationFile</div>
+</dd>
+</dl>
+<h2 class="title" id="I:M">M</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html" class="type-name-link" title="class in org.apache.openmeetings.core.mail">MailHandler</a> - Class in <a href="org/apache/openmeetings/core/mail/package-summary.html">org.apache.openmeetings.core.mail</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#%3Cinit%3E()" class="member-name-link">MailHandler()</a> - Constructor for class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html#msg()" class="member-name-link">msg()</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a></dt>
+<dd>
+<div class="block">Returns the value of the <code>msg</code> record component.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html#msg()" class="member-name-link">msg()</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a></dt>
+<dd>
+<div class="block">Returns the value of the <code>msg</code> record component.</div>
+</dd>
+</dl>
+<h2 class="title" id="I:N">N</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html#NONE" class="member-name-link">NONE</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html#NONE" class="member-name-link">NONE</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html#NONE" class="member-name-link">NONE</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/notifier/NotifierService.html" class="type-name-link" title="class in org.apache.openmeetings.core.notifier">NotifierService</a> - Class in <a href="org/apache/openmeetings/core/notifier/package-summary.html">org.apache.openmeetings.core.notifier</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/notifier/NotifierService.html#%3Cinit%3E()" class="member-name-link">NotifierService()</a> - Constructor for class org.apache.openmeetings.core.notifier.<a href="org/apache/openmeetings/core/notifier/NotifierService.html" title="class in org.apache.openmeetings.core.notifier">NotifierService</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/notifier/INotifier.html#notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)" class="member-name-link">notify(User, Appointment, Invitation)</a> - Method in interface org.apache.openmeetings.core.notifier.<a href="org/apache/openmeetings/core/notifier/INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/notifier/NotifierService.html#notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)" class="member-name-link">notify(User, Appointment, Invitation)</a> - Method in class org.apache.openmeetings.core.notifier.<a href="org/apache/openmeetings/core/notifier/NotifierService.html" title="class in org.apache.openmeetings.core.notifier">NotifierService</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:O">O</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/sip/ISipCallbacks.html#onInviteOk(java.lang.String,java.util.function.Consumer)" class="member-name-link">onInviteOk(String, Consumer&lt;String&gt;)</a> - Method in interface org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/ISipCallbacks.html#onRegisterOk()" class="member-name-link">onRegisterOk()</a> - Method in interface org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a> - package org.apache.openmeetings.core.converter</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/data/file/package-summary.html">org.apache.openmeetings.core.data.file</a> - package org.apache.openmeetings.core.data.file</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/documents/package-summary.html">org.apache.openmeetings.core.documents</a> - package org.apache.openmeetings.core.documents</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a> - package org.apache.openmeetings.core.ldap</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/package-summary.html">org.apache.openmeetings.core.mail</a> - package org.apache.openmeetings.core.mail</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/notifier/package-summary.html">org.apache.openmeetings.core.notifier</a> - package org.apache.openmeetings.core.notifier</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/rss/package-summary.html">org.apache.openmeetings.core.rss</a> - package org.apache.openmeetings.core.rss</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/package-summary.html">org.apache.openmeetings.core.sip</a> - package org.apache.openmeetings.core.sip</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/package-summary.html">org.apache.openmeetings.core.util</a> - package org.apache.openmeetings.core.util</dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a> - package org.apache.openmeetings.core.util.ws</dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:P">P</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#postProcess(java.util.List)" class="member-name-link">postProcess(List&lt;File&gt;)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">postProcess(Recording, ProcessResultList)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)" class="member-name-link">printChunkInfo(RecordingChunk, String)</a> - Static method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#processDialogTerminated(javax.sip.DialogTerminatedEvent)" class="member-name-link">processDialogTerminated(DialogTerminatedEvent)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#processDialogTimeout(gov.nist.javax.sip.DialogTimeoutEvent)" class="member-name-link">processDialogTimeout(DialogTimeoutEvent)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/data/file/FileProcessor.html#processFile(org.apache.openmeetings.db.entity.file.FileItem,java.io.InputStream,java.util.Optional)" class="member-name-link">processFile(FileItem, InputStream, Optional&lt;DoubleConsumer&gt;)</a> - Method in class org.apache.openmeetings.core.data.file.<a href="org/apache/openmeetings/core/data/file/FileProcessor.html" title="class in org.apache.openmeetings.core.data.file">FileProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#processIOException(javax.sip.IOExceptionEvent)" class="member-name-link">processIOException(IOExceptionEvent)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#processRequest(javax.sip.RequestEvent)" class="member-name-link">processRequest(RequestEvent)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#processResponse(javax.sip.ResponseEvent)" class="member-name-link">processResponse(ResponseEvent)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#processTimeout(javax.sip.TimeoutEvent)" class="member-name-link">processTimeout(TimeoutEvent)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#processTransactionTerminated(javax.sip.TransactionTerminatedEvent)" class="member-name-link">processTransactionTerminated(TransactionTerminatedEvent)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#publish(org.apache.openmeetings.util.ws.IClusterWsMessage)" class="member-name-link">publish(IClusterWsMessage)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:Q">Q</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html#QUERY" class="member-name-link">QUERY</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:R">R</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/RecordingConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a> - Class in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/RecordingConverter.html#%3Cinit%3E()" class="member-name-link">RecordingConverter()</a> - Constructor for class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/RecordingConverter.html" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#recordingDao" class="member-name-link">recordingDao</a> - Variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html#register()" class="member-name-link">register()</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#resetSendingStatus()" class="member-name-link">resetSendingStatus()</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/ImageConverter.html#resize(java.io.File,java.io.File,java.lang.Integer,java.lang.Integer)" class="member-name-link">resize(File, File, Integer, Integer)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:S">S</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html#SEARCHANDBIND" class="member-name-link">SEARCHANDBIND</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#send(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">send(String, String, String)</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#send(java.lang.String,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">send(String, String, String, String)</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#send(org.apache.openmeetings.db.entity.basic.MailMessage)" class="member-name-link">send(MailMessage)</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#send(org.apache.openmeetings.db.entity.basic.MailMessage,boolean)" class="member-name-link">send(MailMessage, boolean)</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#send(org.apache.openmeetings.util.ws.IClusterWsMessage)" class="member-name-link">send(IClusterWsMessage)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#send(org.apache.openmeetings.util.ws.IClusterWsMessage)" class="member-name-link">send(IClusterWsMessage)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendAll(java.lang.String)" class="member-name-link">sendAll(String)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#sendAll(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">sendAll(ChatMessage, JSONObject)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,byte%5B%5D)" class="member-name-link">sendClient(IWsClient, byte[])</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,com.github.openjson.JSONObject)" class="member-name-link">sendClient(IWsClient, JSONObject)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">sendClient(IWsClient, RoomMessage)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/mail/MailHandler.html#sendMails()" class="member-name-link">sendMails()</a> - Method in class org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendRoom(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">sendRoom(Long, JSONObject)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendRoom(java.lang.Long,com.github.openjson.JSONObject,java.util.function.Predicate,java.util.function.BiFunction)" class="member-name-link">sendRoom(Long, JSONObject, Predicate&lt;Client&gt;, BiFunction&lt;JSONObject, Client, JSONObject&gt;)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#sendRoom(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">sendRoom(ChatMessage, JSONObject)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendRoom(org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">sendRoom(RoomMessage)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendRoomOthers(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)" class="member-name-link">sendRoomOthers(Long, String, JSONObject)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendServer(org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">sendServer(RoomMessage)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html#sendUser(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">sendUser(Long, JSONObject)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html#sendUser(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">sendUser(Long, ChatMessage, JSONObject)</a> - Static method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html#setRss(com.github.openjson.JSONArray)" class="member-name-link">setRss(JSONArray)</a> - Static method in class org.apache.openmeetings.core.rss.<a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html#setUser(org.apache.openmeetings.db.entity.user.User)" class="member-name-link">setUser(User)</a> - Method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#setUserPicture(java.util.function.Function)" class="member-name-link">setUserPicture(Function&lt;User, String&gt;)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html#SIMPLEBIND" class="member-name-link">SIMPLEBIND</a> - Enum constant in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#SIP_FIRST_NAME" class="member-name-link">SIP_FIRST_NAME</a> - Static variable in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#SIP_USER_NAME" class="member-name-link">SIP_USER_NAME</a> - Static variable in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html" class="type-name-link" title="class in org.apache.openmeetings.core.sip">SipManager</a> - Class in <a href="org/apache/openmeetings/core/sip/package-summary.html">org.apache.openmeetings.core.sip</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#%3Cinit%3E()" class="member-name-link">SipManager()</a> - Constructor for class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" class="type-name-link" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a> - Class in <a href="org/apache/openmeetings/core/sip/package-summary.html">org.apache.openmeetings.core.sip</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/InterviewConverter.html#startConversion(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">startConversion(Recording)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/IRecordingConverter.html#startConversion(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">startConversion(Recording)</a> - Method in interface org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/RecordingConverter.html#startConversion(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">startConversion(Recording)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/RecordingConverter.html" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a> - Class in <a href="org/apache/openmeetings/core/util/package-summary.html">org.apache.openmeetings.core.util</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html#%3Cinit%3E(boolean,org.apache.openmeetings.db.entity.user.User)" class="member-name-link">StrongPasswordValidator(boolean, User)</a> - Constructor for class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html#%3Cinit%3E(org.apache.openmeetings.db.entity.user.User)" class="member-name-link">StrongPasswordValidator(User)</a> - Constructor for class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:T">T</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#TIME_TO_WAIT_FOR_FRAME" class="member-name-link">TIME_TO_WAIT_FOR_FRAME</a> - Static variable in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html#toString()" class="member-name-link">toString()</a> - Method in record class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></dt>
+<dd>
+<div class="block">Returns a string representation of this record class.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html#toString()" class="member-name-link">toString()</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a></dt>
+<dd>
+<div class="block">Returns a string representation of this record class.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html#toString()" class="member-name-link">toString()</a> - Method in record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a></dt>
+<dd>
+<div class="block">Returns a string representation of this record class.</div>
+</dd>
+</dl>
+<h2 class="title" id="I:U">U</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/sip/SipManager.html#update(java.lang.String,java.lang.String)" class="member-name-link">update(String, String)</a> - Method in class org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#updateDuration(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">updateDuration(Recording)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:V">V</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html#validate(org.apache.wicket.validation.IValidatable)" class="member-name-link">validate(IValidatable&lt;String&gt;)</a> - Method in class org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></dt>
+<dd>
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></dt>
+<dd>
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></dt>
+<dd>
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html#values()" class="member-name-link">values()</a> - Static method in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></dt>
+<dd>
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html#values()" class="member-name-link">values()</a> - Static method in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></dt>
+<dd>
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html#values()" class="member-name-link">values()</a> - Static method in enum class org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></dt>
+<dd>
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/converter/VideoConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">VideoConverter</a> - Class in <a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/VideoConverter.html#%3Cinit%3E()" class="member-name-link">VideoConverter()</a> - Constructor for class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/VideoConverter.html" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<h2 class="title" id="I:W">W</h2>
+<dl class="index">
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.html#waitForTheStream(long)" class="member-name-link">waitForTheStream(long)</a> - Method in class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/WebSocketHelper.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a> - Class in <a href="org/apache/openmeetings/core/util/package-summary.html">org.apache.openmeetings.core.util</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html#width()" class="member-name-link">width()</a> - Method in record class org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></dt>
+<dd>
+<div class="block">Returns the value of the <code>width</code> record component.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a> - Record Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html#%3Cinit%3E(java.lang.String)" class="member-name-link">WsMessageAll(String)</a> - Constructor for record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a></dt>
+<dd>
+<div class="block">Creates an instance of a <code>WsMessageAll</code> record class.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a> - Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html#%3Cinit%3E(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">WsMessageChat(ChatMessage, JSONObject)</a> - Constructor for class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat2All.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a> - Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat2All.html#%3Cinit%3E(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">WsMessageChat2All(ChatMessage, JSONObject)</a> - Constructor for class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat2All.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a> - Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html#%3Cinit%3E(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">WsMessageChat2User(Long, ChatMessage, JSONObject)</a> - Constructor for class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a> - Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html#%3Cinit%3E(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">WsMessageRoom(Long, JSONObject)</a> - Constructor for class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a> - Record Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html#%3Cinit%3E(org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">WsMessageRoomMsg(RoomMessage)</a> - Constructor for record class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a></dt>
+<dd>
+<div class="block">Creates an instance of a <code>WsMessageRoomMsg</code> record class.</div>
+</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a> - Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html#%3Cinit%3E(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)" class="member-name-link">WsMessageRoomOthers(Long, String, JSONObject)</a> - Constructor for class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a> - Class in <a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html#%3Cinit%3E(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">WsMessageUser(Long, JSONObject)</a> - Constructor for class org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:Q">Q</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="serialized-form.html">Serialized&nbsp;Form</a></main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/index.html b/openmeetings-core/apidocs/index.html
new file mode 100644
index 0000000..55f3596
--- /dev/null
+++ b/openmeetings-core/apidocs/index.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Overview (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="package index">
+<meta name="generator" content="javadoc/PackageIndexWriter">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-index-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li class="nav-bar-cell1-rev">Overview</li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html#overview">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Openmeetings Core 7.1.0-SNAPSHOT API</h1>
+</div>
+<div id="all-packages-table">
+<div class="caption"><span>Other Packages</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/data/file/package-summary.html">org.apache.openmeetings.core.data.file</a></div>
+<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/documents/package-summary.html">org.apache.openmeetings.core.documents</a></div>
+<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/ldap/package-summary.html">org.apache.openmeetings.core.ldap</a></div>
+<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/mail/package-summary.html">org.apache.openmeetings.core.mail</a></div>
+<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/notifier/package-summary.html">org.apache.openmeetings.core.notifier</a></div>
+<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/rss/package-summary.html">org.apache.openmeetings.core.rss</a></div>
+<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/sip/package-summary.html">org.apache.openmeetings.core.sip</a></div>
+<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/util/package-summary.html">org.apache.openmeetings.core.util</a></div>
+<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
+</div>
+</div>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/jquery-ui.overrides.css b/openmeetings-core/apidocs/jquery-ui.overrides.css
new file mode 100644
index 0000000..facf852
--- /dev/null
+++ b/openmeetings-core/apidocs/jquery-ui.overrides.css
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active,
+a.ui-button:active,
+.ui-button:active,
+.ui-button.ui-state-active:hover {
+    /* Overrides the color of selection used in jQuery UI */
+    background: #F8981D;
+    border: 1px solid #F8981D;
+}
diff --git a/openmeetings-core/apidocs/legal/ASSEMBLY_EXCEPTION b/openmeetings-core/apidocs/legal/ASSEMBLY_EXCEPTION
new file mode 100644
index 0000000..065b8d9
--- /dev/null
+++ b/openmeetings-core/apidocs/legal/ASSEMBLY_EXCEPTION
@@ -0,0 +1,27 @@
+
+OPENJDK ASSEMBLY EXCEPTION
+
+The OpenJDK source code made available by Oracle America, Inc. (Oracle) at
+openjdk.java.net ("OpenJDK Code") is distributed under the terms of the GNU
+General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
+only ("GPL2"), with the following clarification and special exception.
+
+    Linking this OpenJDK Code statically or dynamically with other code
+    is making a combined work based on this library.  Thus, the terms
+    and conditions of GPL2 cover the whole combination.
+
+    As a special exception, Oracle gives you permission to link this
+    OpenJDK Code with certain code licensed by Oracle as indicated at
+    http://openjdk.java.net/legal/exception-modules-2007-05-08.html
+    ("Designated Exception Modules") to produce an executable,
+    regardless of the license terms of the Designated Exception Modules,
+    and to copy and distribute the resulting executable under GPL2,
+    provided that the Designated Exception Modules continue to be
+    governed by the licenses under which they were offered by Oracle.
+
+As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code
+to build an executable that includes those portions of necessary code that
+Oracle could not provide under GPL2 (or that Oracle has provided under GPL2
+with the Classpath exception).  If you modify or add to the OpenJDK code,
+that new GPL2 code may still be combined with Designated Exception Modules
+if the new code is made subject to this exception by its copyright holder.
diff --git a/openmeetings-core/apidocs/legal/jquery.md b/openmeetings-core/apidocs/legal/jquery.md
new file mode 100644
index 0000000..f7b72e3
--- /dev/null
+++ b/openmeetings-core/apidocs/legal/jquery.md
@@ -0,0 +1,72 @@
+## jQuery v3.6.0
+
+### jQuery License
+```
+jQuery v 3.6.0
+Copyright OpenJS Foundation and other contributors, https://openjsf.org/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************
+
+The jQuery JavaScript Library v3.6.0 also includes Sizzle.js
+
+Sizzle.js includes the following license:
+
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/sizzle
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+*********************
+
+```
diff --git a/openmeetings-core/apidocs/legal/jqueryUI.md b/openmeetings-core/apidocs/legal/jqueryUI.md
new file mode 100644
index 0000000..8031bdb
--- /dev/null
+++ b/openmeetings-core/apidocs/legal/jqueryUI.md
@@ -0,0 +1,49 @@
+## jQuery UI v1.12.1
+
+### jQuery UI License
+```
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+```
diff --git a/openmeetings-core/apidocs/member-search-index.js b/openmeetings-core/apidocs/member-search-index.js
new file mode 100644
index 0000000..2f06a84
--- /dev/null
+++ b/openmeetings-core/apidocs/member-search-index.js
@@ -0,0 +1 @@
+memberSearchIndex = [{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"additionalMp4OutParams(Recording)","u":"additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.converter","c":"InterviewConverter","l":"additionalMp4OutParams(Recording)","u":"additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.notifier","c":"NotifierService","l":"addNotifier(INotifier)","u":"addNotifier(org.apache.openmeetings.core.notifier.INotifier)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"alwaysTrue()"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"appendBody(MimeMessage, String)","u":"appendBody(jakarta.mail.internet.MimeMessage,java.lang.String)"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"appendIcsBody(MimeMessage, MailMessage)","u":"appendIcsBody(jakarta.mail.internet.MimeMessage,org.apache.openmeetings.db.entity.basic.MailMessage)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"ASTERISK_OM_FAMILY"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"ASTERISK_OM_KEY"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.GroupMode","l":"ATTRIBUTE"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.Provisionning","l":"AUTOCREATE"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.Provisionning","l":"AUTOUPDATE"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"BaseConverter()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"callExternalNumber(String, Room)","u":"callExternalNumber(java.lang.String,org.apache.openmeetings.db.entity.room.Room)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"cfgDao"},{"p":"org.apache.openmeetings.core.converter","c":"DocumentConverter","l":"cfgDao"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"chunkDao"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_ADMIN_DN"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_ADMIN_PASSWD"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_AUTH_TYPE"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_HOST"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager","l":"CONFIGKEY_LDAP_KEY_PICTURE"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_PICTURE_URI"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_PORT"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_SEARCH_BASE"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"CONFIGKEY_LDAP_SEARCH_SCOPE"},{"p":"org.apache.openmeetings.core.converter","c":"ConversionException","l":"ConversionException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.apache.openmeetings.core.converter","c":"ImageConverter","l":"convertDocument(FileItem, File, ProcessResultList, Optional<DoubleConsumer>)","u":"convertDocument(org.apache.openmeetings.db.entity.file.FileItem,java.io.File,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)"},{"p":"org.apache.openmeetings.core.converter","c":"ImageConverter","l":"convertImage(BaseFileItem, StoredFile, Optional<DoubleConsumer>)","u":"convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,java.util.Optional)"},{"p":"org.apache.openmeetings.core.converter","c":"ImageConverter","l":"convertImage(BaseFileItem, StoredFile, ProcessResultList, Optional<DoubleConsumer>)","u":"convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)"},{"p":"org.apache.openmeetings.core.converter","c":"ImageConverter","l":"convertImageUserProfile(File, Long, boolean)","u":"convertImageUserProfile(java.io.File,java.lang.Long,boolean)"},{"p":"org.apache.openmeetings.core.converter","c":"DocumentConverter","l":"convertPDF(FileItem, StoredFile)","u":"convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile)"},{"p":"org.apache.openmeetings.core.converter","c":"DocumentConverter","l":"convertPDF(FileItem, StoredFile, ProcessResultList, Optional<DoubleConsumer>)","u":"convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"convertToMp4(Recording, List<String>, boolean, ProcessResultList)","u":"convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"convertToPng(BaseFileItem, String, ProcessResultList)","u":"convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)"},{"p":"org.apache.openmeetings.core.converter","c":"VideoConverter","l":"convertVideo(FileItem, StoredFile, ProcessResultList, Optional<DoubleConsumer>)","u":"convertVideo(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"countUsers(String)","u":"countUsers(java.lang.String)"},{"p":"org.apache.openmeetings.core.converter","c":"DocumentConverter","l":"createOfficeManager(String, Function<OfficeManager, ConversionJob>)","u":"createOfficeManager(java.lang.String,java.util.function.Function)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"createSipStackProcessor(String, Room, ISipCallbacks)","u":"createSipStackProcessor(java.lang.String,org.apache.openmeetings.db.entity.room.Room,org.apache.openmeetings.core.sip.ISipCallbacks)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"createWav(Recording, ProcessResultList, File, List<File>, File, List<RecordingChunk>)","u":"createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"delete()"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"delete(String)","u":"delete(java.lang.String)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"deleteFileIfExists(File)","u":"deleteFileIfExists(java.io.File)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"destroy()"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"destroy()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"diff(Date, Date)","u":"diff(java.util.Date,java.util.Date)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"diffSeconds(Date, Date)","u":"diffSeconds(java.util.Date,java.util.Date)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"diffSeconds(long)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter.Dimension","l":"Dimension(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"org.apache.openmeetings.core.converter","c":"DocumentConverter","l":"DocumentConverter()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.converter","c":"DocumentConverter","l":"doJodConvert(File, File)","u":"doJodConvert(java.io.File,java.io.File)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter.Dimension","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageAll","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoomMsg","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"EXEC_EXT"},{"p":"org.apache.openmeetings.core.data.file","c":"FileProcessor","l":"FileProcessor()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"finalizeRec(Recording, String, ProcessResultList)","u":"finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"get(String)","u":"get(java.lang.String)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"getApp()"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"getBasicMimeMessage()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageChat","l":"getChatMessage()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"getDimension(String, BaseConverter.Dimension)","u":"getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"getDimensions(Recording)","u":"getDimensions(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"getDimensions(Recording, char)","u":"getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)"},{"p":"org.apache.openmeetings.core.rss","c":"LoadAtomRssFeed","l":"getFeedConnection(String)","u":"getFeedConnection(java.lang.String)"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"getMessage(User, List<ChatMessage>, BiConsumer<JSONObject, User>)","u":"getMessage(org.apache.openmeetings.db.entity.user.User,java.util.List,java.util.function.BiConsumer)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageChat","l":"getMsg()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoom","l":"getMsg()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageUser","l":"getMsg()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"getPathToConvert()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"getPathToFFMPEG()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"getPathToSoX()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoom","l":"getRoomId()"},{"p":"org.apache.openmeetings.core.rss","c":"LoadAtomRssFeed","l":"getRss()"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"getSipUser(Room)","u":"getSipUser(org.apache.openmeetings.db.entity.room.Room)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"getStreamFolder(Recording)","u":"getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoomOthers","l":"getUid()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageChat2User","l":"getUserId()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageUser","l":"getUserId()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"HALF_STEP"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"hangup(Room)","u":"hangup(org.apache.openmeetings.db.entity.room.Room)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter.Dimension","l":"hashCode()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageAll","l":"hashCode()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoomMsg","l":"hashCode()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter.Dimension","l":"height()"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"ID_ALL"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"ID_ROOM_PREFIX"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"ID_TAB_PREFIX"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"ID_USER_PREFIX"},{"p":"org.apache.openmeetings.core.converter","c":"ImageConverter","l":"ImageConverter()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager","l":"importUsers(Long, boolean)","u":"importUsers(java.lang.Long,boolean)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"init()"},{"p":"org.apache.openmeetings.core.converter","c":"InterviewConverter","l":"InterviewConverter()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"invite(Room, String)","u":"invite(org.apache.openmeetings.db.entity.room.Room,java.lang.String)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager","l":"LdapLoginManager()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapOptions","l":"LdapOptions(Properties)","u":"%3Cinit%3E(java.util.Properties)"},{"p":"org.apache.openmeetings.core.documents","c":"LibraryChartLoader","l":"loadChart(File, String)","u":"loadChart(java.io.File,java.lang.String)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"logDao"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager","l":"login(String, String, Long)","u":"login(java.lang.String,java.lang.String,java.lang.Long)"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"MailHandler()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageAll","l":"msg()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoomMsg","l":"msg()"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.AuthType","l":"NONE"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.GroupMode","l":"NONE"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.Provisionning","l":"NONE"},{"p":"org.apache.openmeetings.core.notifier","c":"NotifierService","l":"NotifierService()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.notifier","c":"INotifier","l":"notify(User, Appointment, Invitation)","u":"notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)"},{"p":"org.apache.openmeetings.core.notifier","c":"NotifierService","l":"notify(User, Appointment, Invitation)","u":"notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)"},{"p":"org.apache.openmeetings.core.sip","c":"ISipCallbacks","l":"onInviteOk(String, Consumer<String>)","u":"onInviteOk(java.lang.String,java.util.function.Consumer)"},{"p":"org.apache.openmeetings.core.sip","c":"ISipCallbacks","l":"onRegisterOk()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"postProcess(List<File>)","u":"postProcess(java.util.List)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"postProcess(Recording, ProcessResultList)","u":"postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"printChunkInfo(RecordingChunk, String)","u":"printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"processDialogTerminated(DialogTerminatedEvent)","u":"processDialogTerminated(javax.sip.DialogTerminatedEvent)"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"processDialogTimeout(DialogTimeoutEvent)","u":"processDialogTimeout(gov.nist.javax.sip.DialogTimeoutEvent)"},{"p":"org.apache.openmeetings.core.data.file","c":"FileProcessor","l":"processFile(FileItem, InputStream, Optional<DoubleConsumer>)","u":"processFile(org.apache.openmeetings.db.entity.file.FileItem,java.io.InputStream,java.util.Optional)"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"processIOException(IOExceptionEvent)","u":"processIOException(javax.sip.IOExceptionEvent)"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"processRequest(RequestEvent)","u":"processRequest(javax.sip.RequestEvent)"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"processResponse(ResponseEvent)","u":"processResponse(javax.sip.ResponseEvent)"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"processTimeout(TimeoutEvent)","u":"processTimeout(javax.sip.TimeoutEvent)"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"processTransactionTerminated(TransactionTerminatedEvent)","u":"processTransactionTerminated(javax.sip.TransactionTerminatedEvent)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"publish(IClusterWsMessage)","u":"publish(org.apache.openmeetings.util.ws.IClusterWsMessage)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.GroupMode","l":"QUERY"},{"p":"org.apache.openmeetings.core.converter","c":"RecordingConverter","l":"RecordingConverter()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"recordingDao"},{"p":"org.apache.openmeetings.core.sip","c":"SipStackProcessor","l":"register()"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"resetSendingStatus()"},{"p":"org.apache.openmeetings.core.converter","c":"ImageConverter","l":"resize(File, File, Integer, Integer)","u":"resize(java.io.File,java.io.File,java.lang.Integer,java.lang.Integer)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.AuthType","l":"SEARCHANDBIND"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"send(IClusterWsMessage)","u":"send(org.apache.openmeetings.util.ws.IClusterWsMessage)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"send(IClusterWsMessage)","u":"send(org.apache.openmeetings.util.ws.IClusterWsMessage)"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"send(MailMessage)","u":"send(org.apache.openmeetings.db.entity.basic.MailMessage)"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"send(MailMessage, boolean)","u":"send(org.apache.openmeetings.db.entity.basic.MailMessage,boolean)"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"send(String, String, String)","u":"send(java.lang.String,java.lang.String,java.lang.String)"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"send(String, String, String, String)","u":"send(java.lang.String,java.lang.String,java.lang.String,java.lang.String)"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"sendAll(ChatMessage, JSONObject)","u":"sendAll(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendAll(String)","u":"sendAll(java.lang.String)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendClient(IWsClient, byte[])","u":"sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,byte[])"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendClient(IWsClient, JSONObject)","u":"sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendClient(IWsClient, RoomMessage)","u":"sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,org.apache.openmeetings.db.util.ws.RoomMessage)"},{"p":"org.apache.openmeetings.core.mail","c":"MailHandler","l":"sendMails()"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"sendRoom(ChatMessage, JSONObject)","u":"sendRoom(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendRoom(Long, JSONObject)","u":"sendRoom(java.lang.Long,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendRoom(Long, JSONObject, Predicate<Client>, BiFunction<JSONObject, Client, JSONObject>)","u":"sendRoom(java.lang.Long,com.github.openjson.JSONObject,java.util.function.Predicate,java.util.function.BiFunction)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendRoom(RoomMessage)","u":"sendRoom(org.apache.openmeetings.db.util.ws.RoomMessage)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendRoomOthers(Long, String, JSONObject)","u":"sendRoomOthers(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendServer(RoomMessage)","u":"sendServer(org.apache.openmeetings.db.util.ws.RoomMessage)"},{"p":"org.apache.openmeetings.core.util","c":"ChatWebSocketHelper","l":"sendUser(Long, ChatMessage, JSONObject)","u":"sendUser(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util","c":"WebSocketHelper","l":"sendUser(Long, JSONObject)","u":"sendUser(java.lang.Long,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.rss","c":"LoadAtomRssFeed","l":"setRss(JSONArray)","u":"setRss(com.github.openjson.JSONArray)"},{"p":"org.apache.openmeetings.core.util","c":"StrongPasswordValidator","l":"setUser(User)","u":"setUser(org.apache.openmeetings.db.entity.user.User)"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"setUserPicture(Function<User, String>)","u":"setUserPicture(java.util.function.Function)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.AuthType","l":"SIMPLEBIND"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"SIP_FIRST_NAME"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"SIP_USER_NAME"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"SipManager()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.converter","c":"InterviewConverter","l":"startConversion(Recording)","u":"startConversion(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.converter","c":"IRecordingConverter","l":"startConversion(Recording)","u":"startConversion(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.converter","c":"RecordingConverter","l":"startConversion(Recording)","u":"startConversion(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.util","c":"StrongPasswordValidator","l":"StrongPasswordValidator(boolean, User)","u":"%3Cinit%3E(boolean,org.apache.openmeetings.db.entity.user.User)"},{"p":"org.apache.openmeetings.core.util","c":"StrongPasswordValidator","l":"StrongPasswordValidator(User)","u":"%3Cinit%3E(org.apache.openmeetings.db.entity.user.User)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"TIME_TO_WAIT_FOR_FRAME"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter.Dimension","l":"toString()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageAll","l":"toString()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoomMsg","l":"toString()"},{"p":"org.apache.openmeetings.core.sip","c":"SipManager","l":"update(String, String)","u":"update(java.lang.String,java.lang.String)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"updateDuration(Recording)","u":"updateDuration(org.apache.openmeetings.db.entity.record.Recording)"},{"p":"org.apache.openmeetings.core.util","c":"StrongPasswordValidator","l":"validate(IValidatable<String>)","u":"validate(org.apache.wicket.validation.IValidatable)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.AuthType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.GroupMode","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.Provisionning","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.AuthType","l":"values()"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.GroupMode","l":"values()"},{"p":"org.apache.openmeetings.core.ldap","c":"LdapLoginManager.Provisionning","l":"values()"},{"p":"org.apache.openmeetings.core.converter","c":"VideoConverter","l":"VideoConverter()","u":"%3Cinit%3E()"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter","l":"waitForTheStream(long)"},{"p":"org.apache.openmeetings.core.converter","c":"BaseConverter.Dimension","l":"width()"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageAll","l":"WsMessageAll(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageChat","l":"WsMessageChat(ChatMessage, JSONObject)","u":"%3Cinit%3E(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageChat2All","l":"WsMessageChat2All(ChatMessage, JSONObject)","u":"%3Cinit%3E(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageChat2User","l":"WsMessageChat2User(Long, ChatMessage, JSONObject)","u":"%3Cinit%3E(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoom","l":"WsMessageRoom(Long, JSONObject)","u":"%3Cinit%3E(java.lang.Long,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoomMsg","l":"WsMessageRoomMsg(RoomMessage)","u":"%3Cinit%3E(org.apache.openmeetings.db.util.ws.RoomMessage)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageRoomOthers","l":"WsMessageRoomOthers(Long, String, JSONObject)","u":"%3Cinit%3E(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)"},{"p":"org.apache.openmeetings.core.util.ws","c":"WsMessageUser","l":"WsMessageUser(Long, JSONObject)","u":"%3Cinit%3E(java.lang.Long,com.github.openjson.JSONObject)"}];updateSearchResults();
\ No newline at end of file
diff --git a/openmeetings-core/apidocs/module-search-index.js b/openmeetings-core/apidocs/module-search-index.js
new file mode 100644
index 0000000..0d59754
--- /dev/null
+++ b/openmeetings-core/apidocs/module-search-index.js
@@ -0,0 +1 @@
+moduleSearchIndex = [];updateSearchResults();
\ No newline at end of file
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/BaseConverter.Dimension.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/BaseConverter.Dimension.html
new file mode 100644
index 0000000..0be0a99
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/BaseConverter.Dimension.html
@@ -0,0 +1,259 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>BaseConverter.Dimension (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: BaseConverter, record: Dimension">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/BaseConverter.Dimension.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Record Class BaseConverter.Dimension" class="title">Record Class BaseConverter.Dimension</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.BaseConverter.Dimension</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>Enclosing class:</dt>
+<dd><a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">protected static record </span><span class="element-name type-name-label">BaseConverter.Dimension</span>(int&nbsp;width, int&nbsp;height)
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier</div>
+<div class="table-header col-second">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>protected </code></div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(int,int)" class="member-name-link">Dimension</a><wbr>(int&nbsp;width,
+ int&nbsp;height)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Creates an instance of a <code>Dimension</code> record class.</div>
+</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Indicates whether some other object is "equal to" this one.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns a hash code value for this object.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#height()" class="member-name-link">height</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns the value of the <code>height</code> record component.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns a string representation of this record class.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#width()" class="member-name-link">width</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns the value of the <code>width</code> record component.</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(int,int)">
+<h3>Dimension</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">Dimension</span><wbr><span class="parameters">(int&nbsp;width,
+ int&nbsp;height)</span></div>
+<div class="block">Creates an instance of a <code>Dimension</code> record class.</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>width</code> - the value for the <code>width</code> record component</dd>
+<dd><code>height</code> - the value for the <code>height</code> record component</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="toString()">
+<h3>toString</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
+<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Returns:</dt>
+<dd>a string representation of this object</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="hashCode()">
+<h3>hashCode</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
+<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Returns:</dt>
+<dd>a hash code value for this object</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="equals(java.lang.Object)">
+<h3>equals</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
+<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Parameters:</dt>
+<dd><code>o</code> - the object with which to compare</dd>
+<dt>Returns:</dt>
+<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="width()">
+<h3>width</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">width</span>()</div>
+<div class="block">Returns the value of the <code>width</code> record component.</div>
+<dl class="notes">
+<dt>Returns:</dt>
+<dd>the value of the <code>width</code> record component</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="height()">
+<h3>height</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">height</span>()</div>
+<div class="block">Returns the value of the <code>height</code> record component.</div>
+<dl class="notes">
+<dt>Returns:</dt>
+<dd>the value of the <code>height</code> record component</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/BaseConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/BaseConverter.html
new file mode 100644
index 0000000..dee0a50
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/BaseConverter.html
@@ -0,0 +1,538 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>BaseConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: BaseConverter">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/BaseConverter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Class BaseConverter" class="title">Class BaseConverter</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.BaseConverter</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>Direct Known Subclasses:</dt>
+<dd><code><a href="ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></code>, <code><a href="InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></code>, <code><a href="RecordingConverter.html" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></code>, <code><a href="VideoConverter.html" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">BaseConverter</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="caption"><span>Nested Classes</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>protected static final record&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="BaseConverter.Dimension.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="caption"><span>Fields</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>protected <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/basic/ConfigurationDao.html" title="class or interface in org.apache.openmeetings.db.dao.basic" class="external-link">ConfigurationDao</a></code></div>
+<div class="col-second even-row-color"><code><a href="#cfgDao" class="member-name-link">cfgDao</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>protected <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/record/RecordingChunkDao.html" title="class or interface in org.apache.openmeetings.db.dao.record" class="external-link">RecordingChunkDao</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#chunkDao" class="member-name-link">chunkDao</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#EXEC_EXT" class="member-name-link">EXEC_EXT</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final double</code></div>
+<div class="col-second odd-row-color"><code><a href="#HALF_STEP" class="member-name-link">HALF_STEP</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>protected <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/file/FileItemLogDao.html" title="class or interface in org.apache.openmeetings.db.dao.file" class="external-link">FileItemLogDao</a></code></div>
+<div class="col-second even-row-color"><code><a href="#logDao" class="member-name-link">logDao</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>protected <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/record/RecordingDao.html" title="class or interface in org.apache.openmeetings.db.dao.record" class="external-link">RecordingDao</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#recordingDao" class="member-name-link">recordingDao</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static final int</code></div>
+<div class="col-second even-row-color"><code><a href="#TIME_TO_WAIT_FOR_FRAME" class="member-name-link">TIME_TO_WAIT_FOR_FRAME</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">BaseConverter</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">additionalMp4OutParams</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">This method should be overridden to supply any additional parameters</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">convertToMp4</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;inArgv,
+ boolean&nbsp;interview,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">convertToPng</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/BaseFileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">BaseFileItem</a>&nbsp;f,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;mp4path,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)" class="member-name-link">createWav</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;streamFolder,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&gt;&nbsp;waveFiles,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;wav,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/RecordingChunk.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">RecordingChunk</a>&gt;&nbsp;chunks)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deleteFileIfExists(java.io.File)" class="member-name-link">deleteFileIfExists</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;f)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected long</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#diff(java.util.Date,java.util.Date)" class="member-name-link">diff</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;from,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;to)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected double</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#diffSeconds(long)" class="member-name-link">diffSeconds</a><wbr>(long&nbsp;val)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected double</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#diffSeconds(java.util.Date,java.util.Date)" class="member-name-link">diffSeconds</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;from,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;to)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">finalizeRec</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;mp4path,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static <a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)" class="member-name-link">getDimension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;txt,
+ <a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a>&nbsp;def)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Parse the width height from the FFMPEG output</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDimensions(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">getDimensions</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)" class="member-name-link">getDimensions</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ char&nbsp;delim)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPathToConvert()" class="member-name-link">getPathToConvert</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPathToFFMPEG()" class="member-name-link">getPathToFFMPEG</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPathToSoX()" class="member-name-link">getPathToSoX</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">getStreamFolder</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;recording)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#postProcess(java.util.List)" class="member-name-link">postProcess</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&gt;&nbsp;waveFiles)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)" class="member-name-link">postProcess</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)" class="member-name-link">printChunkInfo</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/RecordingChunk.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">RecordingChunk</a>&nbsp;chunk,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;prefix)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateDuration(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">updateDuration</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/RecordingChunk.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">RecordingChunk</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitForTheStream(long)" class="member-name-link">waitForTheStream</a><wbr>(long&nbsp;chunkId)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ FIELD DETAIL =========== -->
+<li>
+<section class="field-details" id="field-detail">
+<h2>Field Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="EXEC_EXT">
+<h3>EXEC_EXT</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">EXEC_EXT</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="TIME_TO_WAIT_FOR_FRAME">
+<h3>TIME_TO_WAIT_FOR_FRAME</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">TIME_TO_WAIT_FOR_FRAME</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.converter.BaseConverter.TIME_TO_WAIT_FOR_FRAME">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="HALF_STEP">
+<h3>HALF_STEP</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">HALF_STEP</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.converter.BaseConverter.HALF_STEP">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="cfgDao">
+<h3>cfgDao</h3>
+<div class="member-signature"><span class="annotations">@Autowired
+</span><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/basic/ConfigurationDao.html" title="class or interface in org.apache.openmeetings.db.dao.basic" class="external-link">ConfigurationDao</a></span>&nbsp;<span class="element-name">cfgDao</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="chunkDao">
+<h3>chunkDao</h3>
+<div class="member-signature"><span class="annotations">@Autowired
+</span><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/record/RecordingChunkDao.html" title="class or interface in org.apache.openmeetings.db.dao.record" class="external-link">RecordingChunkDao</a></span>&nbsp;<span class="element-name">chunkDao</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="logDao">
+<h3>logDao</h3>
+<div class="member-signature"><span class="annotations">@Autowired
+</span><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/file/FileItemLogDao.html" title="class or interface in org.apache.openmeetings.db.dao.file" class="external-link">FileItemLogDao</a></span>&nbsp;<span class="element-name">logDao</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="recordingDao">
+<h3>recordingDao</h3>
+<div class="member-signature"><span class="annotations">@Autowired
+</span><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/record/RecordingDao.html" title="class or interface in org.apache.openmeetings.db.dao.record" class="external-link">RecordingDao</a></span>&nbsp;<span class="element-name">recordingDao</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>BaseConverter</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BaseConverter</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getPathToFFMPEG()">
+<h3>getPathToFFMPEG</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPathToFFMPEG</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="getPathToSoX()">
+<h3>getPathToSoX</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPathToSoX</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="getPathToConvert()">
+<h3>getPathToConvert</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPathToConvert</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>getStreamFolder</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a></span>&nbsp;<span class="element-name">getStreamFolder</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;recording)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="diff(java.util.Date,java.util.Date)">
+<h3>diff</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">diff</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;from,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;to)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="diffSeconds(java.util.Date,java.util.Date)">
+<h3>diffSeconds</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">diffSeconds</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;from,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;to)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="diffSeconds(long)">
+<h3>diffSeconds</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">diffSeconds</span><wbr><span class="parameters">(long&nbsp;val)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="updateDuration(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>updateDuration</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateDuration</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="deleteFileIfExists(java.io.File)">
+<h3>deleteFileIfExists</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">deleteFileIfExists</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;f)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)">
+<h3>createWav</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">createWav</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;streamFolder,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&gt;&nbsp;waveFiles,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;wav,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/RecordingChunk.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">RecordingChunk</a>&gt;&nbsp;chunks)</span>
+                  throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)">
+<h3>printChunkInfo</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">printChunkInfo</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/RecordingChunk.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">RecordingChunk</a>&nbsp;chunk,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;prefix)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="waitForTheStream(long)">
+<h3>waitForTheStream</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/RecordingChunk.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">RecordingChunk</a></span>&nbsp;<span class="element-name">waitForTheStream</span><wbr><span class="parameters">(long&nbsp;chunkId)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)">
+<h3>getDimensions</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getDimensions</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ char&nbsp;delim)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="getDimensions(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>getDimensions</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getDimensions</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>additionalMp4OutParams</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">additionalMp4OutParams</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</span></div>
+<div class="block">This method should be overridden to supply any additional parameters</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>r</code> - - recording to get params from</dd>
+<dt>Returns:</dt>
+<dd>additional conversion parameters</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)">
+<h3>convertToMp4</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">convertToMp4</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;inArgv,
+ boolean&nbsp;interview,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</span>
+                       throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">
+<h3>convertToPng</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">convertToPng</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/BaseFileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">BaseFileItem</a>&nbsp;f,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;mp4path,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</span>
+                     throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)">
+<h3>getDimension</h3>
+<div class="member-signature"><span class="modifiers">protected static</span>&nbsp;<span class="return-type"><a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></span>&nbsp;<span class="element-name">getDimension</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;txt,
+ <a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a>&nbsp;def)</span></div>
+<div class="block">Parse the width height from the FFMPEG output</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>txt</code> - FFMPEG output</dd>
+<dt>Returns:</dt>
+<dd><a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter"><code>BaseConverter.Dimension</code></a> parsed</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">
+<h3>finalizeRec</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">finalizeRec</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;mp4path,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</span>
+                    throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)">
+<h3>postProcess</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">postProcess</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="postProcess(java.util.List)">
+<h3>postProcess</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">postProcess</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&gt;&nbsp;waveFiles)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/ConversionException.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/ConversionException.html
new file mode 100644
index 0000000..1c47c4c
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/ConversionException.html
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>ConversionException (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: ConversionException">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/ConversionException.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Class ConversionException" class="title">Class ConversionException</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.ConversionException</div>
+</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ConversionException</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../serialized-form.html#org.apache.openmeetings.core.converter.ConversionException">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">ConversionException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(java.lang.String)">
+<h3>ConversionException</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ConversionException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/DocumentConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/DocumentConverter.html
new file mode 100644
index 0000000..29dd30f
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/DocumentConverter.html
@@ -0,0 +1,257 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>DocumentConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: DocumentConverter">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/DocumentConverter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Class DocumentConverter" class="title">Class DocumentConverter</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.DocumentConverter</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@Component
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">DocumentConverter</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="caption"><span>Fields</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>protected <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/basic/ConfigurationDao.html" title="class or interface in org.apache.openmeetings.db.dao.basic" class="external-link">ConfigurationDao</a></code></div>
+<div class="col-second even-row-color"><code><a href="#cfgDao" class="member-name-link">cfgDao</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DocumentConverter</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResultList</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile)" class="member-name-link">convertPDF</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResultList</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertPDF</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#createOfficeManager(java.lang.String,java.util.function.Function)" class="member-name-link">createOfficeManager</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;officePath,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;org.jodconverter.core.office.OfficeManager,<wbr>org.jodconverter.core.job.ConversionJob&gt;&nbsp;job)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResult</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#doJodConvert(java.io.File,java.io.File)" class="member-name-link">doJodConvert</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;in,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;out)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Generates PDF using JOD Library (external library)</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ FIELD DETAIL =========== -->
+<li>
+<section class="field-details" id="field-detail">
+<h2>Field Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="cfgDao">
+<h3>cfgDao</h3>
+<div class="member-signature"><span class="annotations">@Autowired
+</span><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/dao/basic/ConfigurationDao.html" title="class or interface in org.apache.openmeetings.db.dao.basic" class="external-link">ConfigurationDao</a></span>&nbsp;<span class="element-name">cfgDao</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>DocumentConverter</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DocumentConverter</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile)">
+<h3>convertPDF</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResultList</span>&nbsp;<span class="element-name">convertPDF</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf)</span>
+                                                                  throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="convertPDF(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)">
+<h3>convertPDF</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResultList</span>&nbsp;<span class="element-name">convertPDF</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</span>
+                                                                  throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="createOfficeManager(java.lang.String,java.util.function.Function)">
+<h3>createOfficeManager</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">createOfficeManager</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;officePath,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;org.jodconverter.core.office.OfficeManager,<wbr>org.jodconverter.core.job.ConversionJob&gt;&nbsp;job)</span>
+                                throws <span class="exceptions">org.jodconverter.core.office.OfficeException</span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code>org.jodconverter.core.office.OfficeException</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="doJodConvert(java.io.File,java.io.File)">
+<h3>doJodConvert</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResult</span>&nbsp;<span class="element-name">doJodConvert</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;in,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;out)</span></div>
+<div class="block">Generates PDF using JOD Library (external library)</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>in</code> - - file to convert</dd>
+<dd><code>out</code> - - file to write result</dd>
+<dt>Returns:</dt>
+<dd>- result of the conversion as <code>ProcessResult</code></dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/IRecordingConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/IRecordingConverter.html
new file mode 100644
index 0000000..d500938
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/IRecordingConverter.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>IRecordingConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, interface: IRecordingConverter">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/IRecordingConverter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Interface IRecordingConverter" class="title">Interface IRecordingConverter</h1>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Known Implementing Classes:</dt>
+<dd><code><a href="InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></code>, <code><a href="RecordingConverter.html" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></code></dd>
+</dl>
+<dl class="notes">
+<dt>Functional Interface:</dt>
+<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
+</span><span class="modifiers">public interface </span><span class="element-name type-name-label">IRecordingConverter</span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#startConversion(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">startConversion</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;rec)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
+</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="startConversion(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>startConversion</h3>
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">startConversion</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;rec)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/ImageConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/ImageConverter.html
new file mode 100644
index 0000000..10cf854
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/ImageConverter.html
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>ImageConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: ImageConverter">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/ImageConverter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Class ImageConverter" class="title">Class ImageConverter</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter.BaseConverter</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.ImageConverter</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@Component
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">ImageConverter</span>
+<span class="extends-implements">extends <a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="inherited-list">
+<h2 id="nested-classes-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Nested classes/interfaces inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h2>
+<code><a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+</section>
+</li>
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="inherited-list">
+<h3 id="fields-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Fields inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#cfgDao">cfgDao</a>, <a href="BaseConverter.html#chunkDao">chunkDao</a>, <a href="BaseConverter.html#EXEC_EXT">EXEC_EXT</a>, <a href="BaseConverter.html#HALF_STEP">HALF_STEP</a>, <a href="BaseConverter.html#logDao">logDao</a>, <a href="BaseConverter.html#recordingDao">recordingDao</a>, <a href="BaseConverter.html#TIME_TO_WAIT_FOR_FRAME">TIME_TO_WAIT_FOR_FRAME</a></code></div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ImageConverter</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResultList</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertDocument(org.apache.openmeetings.db.entity.file.FileItem,java.io.File,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertDocument</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;pdf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Converts PDF document to the series of images</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResultList</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,java.util.Optional)" class="member-name-link">convertImage</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/BaseFileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">BaseFileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResultList</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertImage</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/BaseFileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">BaseFileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResultList</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertImageUserProfile(java.io.File,java.lang.Long,boolean)" class="member-name-link">convertImageUserProfile</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;file,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ boolean&nbsp;skipConvertion)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResult</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#resize(java.io.File,java.io.File,java.lang.Integer,java.lang.Integer)" class="member-name-link">resize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;in,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;out,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;width,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;height)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Methods inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)">additionalMp4OutParams</a>, <a href="BaseConverter.html#convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)">convertToMp4</a>, <a href="BaseConverter.html#convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">convertToPng</a>, <a href="BaseConverter.html#createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)">createWav</a>, <a href="BaseConverter.html#deleteFileIfExists(java.io.File)">deleteFileIfExists</a>, <a href="BaseConverter.html#diff(java.util.Date,java.util.Date)">diff</a>, <a href="BaseConverter.html#diffSeconds(long)">diffSeconds</a>, <a href="BaseConverter.html#diffSeconds(java.util.Date,java.util.Date)">diffSeconds</a>, <a href="BaseConverter.html#finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">finalizeRec</a>, <a href="BaseConverter.html#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)">getDimension</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording)">getDimensions</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)">getDimensions</a>, <a href="BaseConverter.html#getPathToConvert()">getPathToConvert</a>, <a href="BaseConverter.html#getPathToFFMPEG()">getPathToFFMPEG</a>, <a href="BaseConverter.html#getPathToSoX()">getPathToSoX</a>, <a href="BaseConverter.html#getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)">getStreamFolder</a>, <a href="BaseConverter.html#postProcess(java.util.List)">postProcess</a>, <a href="BaseConverter.html#postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)">postProcess</a>, <a href="BaseConverter.html#printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)">printChunkInfo</a>, <a href="BaseConverter.html#updateDuration(org.apache.openmeetings.db.entity.record.Recording)">updateDuration</a>, <a href="BaseConverter.html#waitForTheStream(long)">waitForTheStream</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>ImageConverter</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ImageConverter</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,java.util.Optional)">
+<h3>convertImage</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResultList</span>&nbsp;<span class="element-name">convertImage</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/BaseFileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">BaseFileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</span>
+                                                                    throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="convertImage(org.apache.openmeetings.db.entity.file.BaseFileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)">
+<h3>convertImage</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResultList</span>&nbsp;<span class="element-name">convertImage</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/BaseFileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">BaseFileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</span>
+                                                                    throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="convertImageUserProfile(java.io.File,java.lang.Long,boolean)">
+<h3>convertImageUserProfile</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResultList</span>&nbsp;<span class="element-name">convertImageUserProfile</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;file,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ boolean&nbsp;skipConvertion)</span>
+                                                                               throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="resize(java.io.File,java.io.File,java.lang.Integer,java.lang.Integer)">
+<h3>resize</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResult</span>&nbsp;<span class="element-name">resize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;in,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;out,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;width,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;height)</span>
+                                                          throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="convertDocument(org.apache.openmeetings.db.entity.file.FileItem,java.io.File,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)">
+<h3>convertDocument</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResultList</span>&nbsp;<span class="element-name">convertDocument</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;pdf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</span>
+                                                                       throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<div class="block">Converts PDF document to the series of images</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>f</code> - - <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link"><code>FileItem</code></a> object to write number of pages and size</dd>
+<dd><code>pdf</code> - - input PDF document</dd>
+<dd><code>logs</code> - - logs of the conversion</dd>
+<dt>Returns:</dt>
+<dd>- result of conversion</dd>
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - in case IO exception occurred</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/InterviewConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/InterviewConverter.html
new file mode 100644
index 0000000..5723b59
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/InterviewConverter.html
@@ -0,0 +1,216 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>InterviewConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: InterviewConverter">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/InterviewConverter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Class InterviewConverter" class="title">Class InterviewConverter</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter.BaseConverter</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.InterviewConverter</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="annotations">@Component
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">InterviewConverter</span>
+<span class="extends-implements">extends <a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a>
+implements <a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="inherited-list">
+<h2 id="nested-classes-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Nested classes/interfaces inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h2>
+<code><a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+</section>
+</li>
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="inherited-list">
+<h3 id="fields-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Fields inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#cfgDao">cfgDao</a>, <a href="BaseConverter.html#chunkDao">chunkDao</a>, <a href="BaseConverter.html#EXEC_EXT">EXEC_EXT</a>, <a href="BaseConverter.html#HALF_STEP">HALF_STEP</a>, <a href="BaseConverter.html#logDao">logDao</a>, <a href="BaseConverter.html#recordingDao">recordingDao</a>, <a href="BaseConverter.html#TIME_TO_WAIT_FOR_FRAME">TIME_TO_WAIT_FOR_FRAME</a></code></div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">InterviewConverter</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">additionalMp4OutParams</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">This method should be overridden to supply any additional parameters</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#startConversion(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">startConversion</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Methods inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)">convertToMp4</a>, <a href="BaseConverter.html#convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">convertToPng</a>, <a href="BaseConverter.html#createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)">createWav</a>, <a href="BaseConverter.html#deleteFileIfExists(java.io.File)">deleteFileIfExists</a>, <a href="BaseConverter.html#diff(java.util.Date,java.util.Date)">diff</a>, <a href="BaseConverter.html#diffSeconds(long)">diffSeconds</a>, <a href="BaseConverter.html#diffSeconds(java.util.Date,java.util.Date)">diffSeconds</a>, <a href="BaseConverter.html#finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">finalizeRec</a>, <a href="BaseConverter.html#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)">getDimension</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording)">getDimensions</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)">getDimensions</a>, <a href="BaseConverter.html#getPathToConvert()">getPathToConvert</a>, <a href="BaseConverter.html#getPathToFFMPEG()">getPathToFFMPEG</a>, <a href="BaseConverter.html#getPathToSoX()">getPathToSoX</a>, <a href="BaseConverter.html#getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)">getStreamFolder</a>, <a href="BaseConverter.html#postProcess(java.util.List)">postProcess</a>, <a href="BaseConverter.html#postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)">postProcess</a>, <a href="BaseConverter.html#printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)">printChunkInfo</a>, <a href="BaseConverter.html#updateDuration(org.apache.openmeetings.db.entity.record.Recording)">updateDuration</a>, <a href="BaseConverter.html#waitForTheStream(long)">waitForTheStream</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>InterviewConverter</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InterviewConverter</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="startConversion(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>startConversion</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">startConversion</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="IRecordingConverter.html#startConversion(org.apache.openmeetings.db.entity.record.Recording)">startConversion</a></code>&nbsp;in interface&nbsp;<code><a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>additionalMp4OutParams</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">additionalMp4OutParams</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</span></div>
+<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="BaseConverter.html#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)">BaseConverter</a></code></span></div>
+<div class="block">This method should be overridden to supply any additional parameters</div>
+<dl class="notes">
+<dt>Overrides:</dt>
+<dd><code><a href="BaseConverter.html#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)">additionalMp4OutParams</a></code>&nbsp;in class&nbsp;<code><a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></code></dd>
+<dt>Parameters:</dt>
+<dd><code>r</code> - - recording to get params from</dd>
+<dt>Returns:</dt>
+<dd>additional conversion parameters</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/RecordingConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/RecordingConverter.html
new file mode 100644
index 0000000..d5467e8
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/RecordingConverter.html
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>RecordingConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: RecordingConverter">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/RecordingConverter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Class RecordingConverter" class="title">Class RecordingConverter</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter.BaseConverter</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.RecordingConverter</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="annotations">@Component
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">RecordingConverter</span>
+<span class="extends-implements">extends <a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a>
+implements <a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="inherited-list">
+<h2 id="nested-classes-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Nested classes/interfaces inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h2>
+<code><a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+</section>
+</li>
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="inherited-list">
+<h3 id="fields-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Fields inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#cfgDao">cfgDao</a>, <a href="BaseConverter.html#chunkDao">chunkDao</a>, <a href="BaseConverter.html#EXEC_EXT">EXEC_EXT</a>, <a href="BaseConverter.html#HALF_STEP">HALF_STEP</a>, <a href="BaseConverter.html#logDao">logDao</a>, <a href="BaseConverter.html#recordingDao">recordingDao</a>, <a href="BaseConverter.html#TIME_TO_WAIT_FOR_FRAME">TIME_TO_WAIT_FOR_FRAME</a></code></div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">RecordingConverter</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#startConversion(org.apache.openmeetings.db.entity.record.Recording)" class="member-name-link">startConversion</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Methods inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)">additionalMp4OutParams</a>, <a href="BaseConverter.html#convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)">convertToMp4</a>, <a href="BaseConverter.html#convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">convertToPng</a>, <a href="BaseConverter.html#createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)">createWav</a>, <a href="BaseConverter.html#deleteFileIfExists(java.io.File)">deleteFileIfExists</a>, <a href="BaseConverter.html#diff(java.util.Date,java.util.Date)">diff</a>, <a href="BaseConverter.html#diffSeconds(long)">diffSeconds</a>, <a href="BaseConverter.html#diffSeconds(java.util.Date,java.util.Date)">diffSeconds</a>, <a href="BaseConverter.html#finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">finalizeRec</a>, <a href="BaseConverter.html#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)">getDimension</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording)">getDimensions</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)">getDimensions</a>, <a href="BaseConverter.html#getPathToConvert()">getPathToConvert</a>, <a href="BaseConverter.html#getPathToFFMPEG()">getPathToFFMPEG</a>, <a href="BaseConverter.html#getPathToSoX()">getPathToSoX</a>, <a href="BaseConverter.html#getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)">getStreamFolder</a>, <a href="BaseConverter.html#postProcess(java.util.List)">postProcess</a>, <a href="BaseConverter.html#postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)">postProcess</a>, <a href="BaseConverter.html#printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)">printChunkInfo</a>, <a href="BaseConverter.html#updateDuration(org.apache.openmeetings.db.entity.record.Recording)">updateDuration</a>, <a href="BaseConverter.html#waitForTheStream(long)">waitForTheStream</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>RecordingConverter</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RecordingConverter</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="startConversion(org.apache.openmeetings.db.entity.record.Recording)">
+<h3>startConversion</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">startConversion</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/record/Recording.html" title="class or interface in org.apache.openmeetings.db.entity.record" class="external-link">Recording</a>&nbsp;r)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="IRecordingConverter.html#startConversion(org.apache.openmeetings.db.entity.record.Recording)">startConversion</a></code>&nbsp;in interface&nbsp;<code><a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></code></dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/VideoConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/VideoConverter.html
new file mode 100644
index 0000000..76840d9
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/VideoConverter.html
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>VideoConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter, class: VideoConverter">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/VideoConverter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.converter</a></div>
+<h1 title="Class VideoConverter" class="title">Class VideoConverter</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter.BaseConverter</a>
+<div class="inheritance">org.apache.openmeetings.core.converter.VideoConverter</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@Component
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">VideoConverter</span>
+<span class="extends-implements">extends <a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="inherited-list">
+<h2 id="nested-classes-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Nested classes/interfaces inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h2>
+<code><a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+</section>
+</li>
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="inherited-list">
+<h3 id="fields-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Fields inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#cfgDao">cfgDao</a>, <a href="BaseConverter.html#chunkDao">chunkDao</a>, <a href="BaseConverter.html#EXEC_EXT">EXEC_EXT</a>, <a href="BaseConverter.html#HALF_STEP">HALF_STEP</a>, <a href="BaseConverter.html#logDao">logDao</a>, <a href="BaseConverter.html#recordingDao">recordingDao</a>, <a href="BaseConverter.html#TIME_TO_WAIT_FOR_FRAME">TIME_TO_WAIT_FOR_FRAME</a></code></div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">VideoConverter</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertVideo(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)" class="member-name-link">convertVideo</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-org.apache.openmeetings.core.converter.BaseConverter">Methods inherited from class&nbsp;org.apache.openmeetings.core.converter.<a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></h3>
+<code><a href="BaseConverter.html#additionalMp4OutParams(org.apache.openmeetings.db.entity.record.Recording)">additionalMp4OutParams</a>, <a href="BaseConverter.html#convertToMp4(org.apache.openmeetings.db.entity.record.Recording,java.util.List,boolean,org.apache.openmeetings.util.process.ProcessResultList)">convertToMp4</a>, <a href="BaseConverter.html#convertToPng(org.apache.openmeetings.db.entity.file.BaseFileItem,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">convertToPng</a>, <a href="BaseConverter.html#createWav(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList,java.io.File,java.util.List,java.io.File,java.util.List)">createWav</a>, <a href="BaseConverter.html#deleteFileIfExists(java.io.File)">deleteFileIfExists</a>, <a href="BaseConverter.html#diff(java.util.Date,java.util.Date)">diff</a>, <a href="BaseConverter.html#diffSeconds(long)">diffSeconds</a>, <a href="BaseConverter.html#diffSeconds(java.util.Date,java.util.Date)">diffSeconds</a>, <a href="BaseConverter.html#finalizeRec(org.apache.openmeetings.db.entity.record.Recording,java.lang.String,org.apache.openmeetings.util.process.ProcessResultList)">finalizeRec</a>, <a href="BaseConverter.html#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)">getDimension</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording)">getDimensions</a>, <a href="BaseConverter.html#getDimensions(org.apache.openmeetings.db.entity.record.Recording,char)">getDimensions</a>, <a href="BaseConverter.html#getPathToConvert()">getPathToConvert</a>, <a href="BaseConverter.html#getPathToFFMPEG()">getPathToFFMPEG</a>, <a href="BaseConverter.html#getPathToSoX()">getPathToSoX</a>, <a href="BaseConverter.html#getStreamFolder(org.apache.openmeetings.db.entity.record.Recording)">getStreamFolder</a>, <a href="BaseConverter.html#postProcess(java.util.List)">postProcess</a>, <a href="BaseConverter.html#postProcess(org.apache.openmeetings.db.entity.record.Recording,org.apache.openmeetings.util.process.ProcessResultList)">postProcess</a>, <a href="BaseConverter.html#printChunkInfo(org.apache.openmeetings.db.entity.record.RecordingChunk,java.lang.String)">printChunkInfo</a>, <a href="BaseConverter.html#updateDuration(org.apache.openmeetings.db.entity.record.Recording)">updateDuration</a>, <a href="BaseConverter.html#waitForTheStream(long)">waitForTheStream</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>VideoConverter</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">VideoConverter</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="convertVideo(org.apache.openmeetings.db.entity.file.FileItem,org.apache.openmeetings.util.StoredFile,org.apache.openmeetings.util.process.ProcessResultList,java.util.Optional)">
+<h3>convertVideo</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">convertVideo</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ org.apache.openmeetings.util.StoredFile&nbsp;sf,
+ org.apache.openmeetings.util.process.ProcessResultList&nbsp;logs,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/BaseConverter.Dimension.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/BaseConverter.Dimension.html
new file mode 100644
index 0000000..72c52ca
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/BaseConverter.Dimension.html
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Record Class org.apache.openmeetings.core.converter.BaseConverter.Dimension (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: BaseConverter, record: Dimension">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Record Class org.apache.openmeetings.core.converter.BaseConverter.Dimension" class="title">Uses of Record Class<br>org.apache.openmeetings.core.converter.BaseConverter.Dimension</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.converter">
+<h2>Uses of <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a> in <a href="../package-summary.html">org.apache.openmeetings.core.converter</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.converter</a> that return <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>protected static <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">BaseConverter.</span><code><a href="../BaseConverter.html#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)" class="member-name-link">getDimension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;txt,
+ <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a>&nbsp;def)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Parse the width height from the FFMPEG output</div>
+</div>
+</div>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.converter</a> with parameters of type <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>protected static <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">BaseConverter.</span><code><a href="../BaseConverter.html#getDimension(java.lang.String,org.apache.openmeetings.core.converter.BaseConverter.Dimension)" class="member-name-link">getDimension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;txt,
+ <a href="../BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a>&nbsp;def)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Parse the width height from the FFMPEG output</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/BaseConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/BaseConverter.html
new file mode 100644
index 0000000..f8aea04
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/BaseConverter.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.converter.BaseConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: BaseConverter">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../BaseConverter.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.converter.BaseConverter" class="title">Uses of Class<br>org.apache.openmeetings.core.converter.BaseConverter</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.converter">
+<h2>Uses of <a href="../BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a> in <a href="../package-summary.html">org.apache.openmeetings.core.converter</a></h2>
+<div class="caption"><span>Subclasses of <a href="../BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a> in <a href="../package-summary.html">org.apache.openmeetings.core.converter</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>class&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="../ImageConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
+<div class="col-second odd-row-color"><code><a href="../InterviewConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>class&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="../RecordingConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
+<div class="col-second odd-row-color"><code><a href="../VideoConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/ConversionException.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/ConversionException.html
new file mode 100644
index 0000000..07e9493
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/ConversionException.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.converter.ConversionException (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: ConversionException">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../ConversionException.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.converter.ConversionException" class="title">Uses of Class<br>org.apache.openmeetings.core.converter.ConversionException</h1>
+</div>
+No usage of org.apache.openmeetings.core.converter.ConversionException</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/DocumentConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/DocumentConverter.html
new file mode 100644
index 0000000..8593813
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/DocumentConverter.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.converter.DocumentConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: DocumentConverter">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.converter.DocumentConverter" class="title">Uses of Class<br>org.apache.openmeetings.core.converter.DocumentConverter</h1>
+</div>
+No usage of org.apache.openmeetings.core.converter.DocumentConverter</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/IRecordingConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/IRecordingConverter.html
new file mode 100644
index 0000000..2f023c9
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/IRecordingConverter.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Interface org.apache.openmeetings.core.converter.IRecordingConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, interface: IRecordingConverter">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Interface org.apache.openmeetings.core.converter.IRecordingConverter" class="title">Uses of Interface<br>org.apache.openmeetings.core.converter.IRecordingConverter</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.converter">
+<h2>Uses of <a href="../IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a> in <a href="../package-summary.html">org.apache.openmeetings.core.converter</a></h2>
+<div class="caption"><span>Classes in <a href="../package-summary.html">org.apache.openmeetings.core.converter</a> that implement <a href="../IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>class&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="../InterviewConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
+<div class="col-second odd-row-color"><code><a href="../RecordingConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/ImageConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/ImageConverter.html
new file mode 100644
index 0000000..ccc2ed2
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/ImageConverter.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.converter.ImageConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: ImageConverter">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../ImageConverter.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.converter.ImageConverter" class="title">Uses of Class<br>org.apache.openmeetings.core.converter.ImageConverter</h1>
+</div>
+No usage of org.apache.openmeetings.core.converter.ImageConverter</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/InterviewConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/InterviewConverter.html
new file mode 100644
index 0000000..debfdb4
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/InterviewConverter.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.converter.InterviewConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: InterviewConverter">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.converter.InterviewConverter" class="title">Uses of Class<br>org.apache.openmeetings.core.converter.InterviewConverter</h1>
+</div>
+No usage of org.apache.openmeetings.core.converter.InterviewConverter</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/RecordingConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/RecordingConverter.html
new file mode 100644
index 0000000..a7e90ee
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/RecordingConverter.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.converter.RecordingConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: RecordingConverter">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../RecordingConverter.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.converter.RecordingConverter" class="title">Uses of Class<br>org.apache.openmeetings.core.converter.RecordingConverter</h1>
+</div>
+No usage of org.apache.openmeetings.core.converter.RecordingConverter</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/VideoConverter.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/VideoConverter.html
new file mode 100644
index 0000000..a65116f
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/class-use/VideoConverter.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.converter.VideoConverter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter, class: VideoConverter">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../VideoConverter.html" title="class in org.apache.openmeetings.core.converter">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.converter.VideoConverter" class="title">Uses of Class<br>org.apache.openmeetings.core.converter.VideoConverter</h1>
+</div>
+No usage of org.apache.openmeetings.core.converter.VideoConverter</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-summary.html
new file mode 100644
index 0000000..a00ff9f
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-summary.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.converter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.converter">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.converter" class="title">Package org.apache.openmeetings.core.converter</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.converter</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button><button id="class-summary-tab5" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab5', 2)" class="table-tab">Exceptions</button></div>
+<div id="class-summary.tabpanel" role="tabpanel">
+<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="BaseConverter.html" title="class in org.apache.openmeetings.core.converter">BaseConverter</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="BaseConverter.Dimension.html" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab5"><a href="ConversionException.html" title="class in org.apache.openmeetings.core.converter">ConversionException</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab5">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DocumentConverter.html" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ImageConverter.html" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="InterviewConverter.html" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab1"><a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab1">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="RecordingConverter.html" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="VideoConverter.html" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-tree.html
new file mode 100644
index 0000000..f4781c4
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-tree.html
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.converter Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.converter">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.converter</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="BaseConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">BaseConverter</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="ImageConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="InterviewConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a> (implements org.apache.openmeetings.core.converter.<a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a>)</li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="RecordingConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a> (implements org.apache.openmeetings.core.converter.<a href="IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a>)</li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="VideoConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="DocumentConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></li>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="BaseConverter.Dimension.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></li>
+</ul>
+</li>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="ConversionException.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">ConversionException</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</section>
+<section class="hierarchy">
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="IRecordingConverter.html" class="type-name-link" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-use.html
new file mode 100644
index 0000000..499457c
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/converter/package-use.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.converter (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.converter">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.converter" class="title">Uses of Package<br>org.apache.openmeetings.core.converter</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="package-summary.html">org.apache.openmeetings.core.converter</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="package-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.converter">
+<div class="caption"><span>Classes in <a href="package-summary.html">org.apache.openmeetings.core.converter</a> used by <a href="package-summary.html">org.apache.openmeetings.core.converter</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="class-use/BaseConverter.html#org.apache.openmeetings.core.converter">BaseConverter</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="class-use/BaseConverter.Dimension.html#org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><a href="class-use/IRecordingConverter.html#org.apache.openmeetings.core.converter">IRecordingConverter</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/FileProcessor.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/FileProcessor.html
new file mode 100644
index 0000000..2682e82
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/FileProcessor.html
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>FileProcessor (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.data.file, class: FileProcessor">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/FileProcessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.data.file</a></div>
+<h1 title="Class FileProcessor" class="title">Class FileProcessor</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.data.file.FileProcessor</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@Component
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">FileProcessor</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">FileProcessor</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.openmeetings.util.process.ProcessResultList</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processFile(org.apache.openmeetings.db.entity.file.FileItem,java.io.InputStream,java.util.Optional)" class="member-name-link">processFile</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;is,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>FileProcessor</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">FileProcessor</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="processFile(org.apache.openmeetings.db.entity.file.FileItem,java.io.InputStream,java.util.Optional)">
+<h3>processFile</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.openmeetings.util.process.ProcessResultList</span>&nbsp;<span class="element-name">processFile</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/file/FileItem.html" title="class or interface in org.apache.openmeetings.db.entity.file" class="external-link">FileItem</a>&nbsp;f,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;is,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/DoubleConsumer.html" title="class or interface in java.util.function" class="external-link">DoubleConsumer</a>&gt;&nbsp;progress)</span>
+                                                                   throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/class-use/FileProcessor.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/class-use/FileProcessor.html
new file mode 100644
index 0000000..7cd0166
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/class-use/FileProcessor.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.data.file.FileProcessor (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.data.file, class: FileProcessor">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../FileProcessor.html" title="class in org.apache.openmeetings.core.data.file">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.data.file.FileProcessor" class="title">Uses of Class<br>org.apache.openmeetings.core.data.file.FileProcessor</h1>
+</div>
+No usage of org.apache.openmeetings.core.data.file.FileProcessor</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-summary.html
new file mode 100644
index 0000000..fd99f89
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-summary.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.data.file (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.data.file">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.data.file" class="title">Package org.apache.openmeetings.core.data.file</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.data.file</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="caption"><span>Classes</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FileProcessor.html" title="class in org.apache.openmeetings.core.data.file">FileProcessor</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-tree.html
new file mode 100644
index 0000000..d310988
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-tree.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.data.file Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.data.file">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.data.file</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.data.file.<a href="FileProcessor.html" class="type-name-link" title="class in org.apache.openmeetings.core.data.file">FileProcessor</a></li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-use.html
new file mode 100644
index 0000000..ced6342
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/data/file/package-use.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.data.file (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.data.file">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.data.file" class="title">Uses of Package<br>org.apache.openmeetings.core.data.file</h1>
+</div>
+No usage of org.apache.openmeetings.core.data.file</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/LibraryChartLoader.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/LibraryChartLoader.html
new file mode 100644
index 0000000..01b0d7e
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/LibraryChartLoader.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>LibraryChartLoader (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.documents, class: LibraryChartLoader">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/LibraryChartLoader.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.documents</a></div>
+<h1 title="Class LibraryChartLoader" class="title">Class LibraryChartLoader</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.documents.LibraryChartLoader</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LibraryChartLoader</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;?&gt;</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#loadChart(java.io.File,java.lang.String)" class="member-name-link">loadChart</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;dir,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;fileName)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="loadChart(java.io.File,java.lang.String)">
+<h3>loadChart</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;?&gt;</span>&nbsp;<span class="element-name">loadChart</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;dir,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;fileName)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/class-use/LibraryChartLoader.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/class-use/LibraryChartLoader.html
new file mode 100644
index 0000000..0eab785
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/class-use/LibraryChartLoader.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.documents.LibraryChartLoader (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.documents, class: LibraryChartLoader">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../LibraryChartLoader.html" title="class in org.apache.openmeetings.core.documents">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.documents.LibraryChartLoader" class="title">Uses of Class<br>org.apache.openmeetings.core.documents.LibraryChartLoader</h1>
+</div>
+No usage of org.apache.openmeetings.core.documents.LibraryChartLoader</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-summary.html
new file mode 100644
index 0000000..e02b0ce
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-summary.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.documents (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.documents">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.documents" class="title">Package org.apache.openmeetings.core.documents</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.documents</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="caption"><span>Classes</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LibraryChartLoader.html" title="class in org.apache.openmeetings.core.documents">LibraryChartLoader</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-tree.html
new file mode 100644
index 0000000..2ede2ac
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-tree.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.documents Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.documents">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.documents</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.documents.<a href="LibraryChartLoader.html" class="type-name-link" title="class in org.apache.openmeetings.core.documents">LibraryChartLoader</a></li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-use.html
new file mode 100644
index 0000000..a8dbf34
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/documents/package-use.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.documents (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.documents">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.documents" class="title">Uses of Package<br>org.apache.openmeetings.core.documents</h1>
+</div>
+No usage of org.apache.openmeetings.core.documents</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html
new file mode 100644
index 0000000..e9372bf
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html
@@ -0,0 +1,233 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>LdapLoginManager.AuthType (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager, enum: AuthType">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/LdapLoginManager.AuthType.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.ldap</a></div>
+<h1 title="Enum Class LdapLoginManager.AuthType" class="title">Enum Class LdapLoginManager.AuthType</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a>&gt;
+<div class="inheritance">org.apache.openmeetings.core.ldap.LdapLoginManager.AuthType</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
+</dl>
+<dl class="notes">
+<dt>Enclosing class:</dt>
+<dd><a href="LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">LdapLoginManager.AuthType</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a>&gt;</span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="inherited-list">
+<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
+</section>
+</li>
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<li>
+<section class="constants-summary" id="enum-constant-summary">
+<h2>Enum Constant Summary</h2>
+<div class="caption"><span>Enum Constants</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Enum Constant</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code><a href="#NONE" class="member-name-link">NONE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code><a href="#SEARCHANDBIND" class="member-name-link">SEARCHANDBIND</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code><a href="#SIMPLEBIND" class="member-name-link">SIMPLEBIND</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a>[]</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ ENUM CONSTANT DETAIL =========== -->
+<li>
+<section class="constant-details" id="enum-constant-detail">
+<h2>Enum Constant Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="NONE">
+<h3>NONE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></span>&nbsp;<span class="element-name">NONE</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="SEARCHANDBIND">
+<h3>SEARCHANDBIND</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></span>&nbsp;<span class="element-name">SEARCHANDBIND</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="SIMPLEBIND">
+<h3>SIMPLEBIND</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></span>&nbsp;<span class="element-name">SIMPLEBIND</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="values()">
+<h3>values</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+<dl class="notes">
+<dt>Returns:</dt>
+<dd>an array containing the constants of this enum class, in the order they are declared</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="valueOf(java.lang.String)">
+<h3>valueOf</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
+<div class="block">Returns the enum constant of this class with the specified name.
+The string must match <i>exactly</i> an identifier used to declare an
+enum constant in this class.  (Extraneous whitespace characters are 
+not permitted.)</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>name</code> - the name of the enum constant to be returned.</dd>
+<dt>Returns:</dt>
+<dd>the enum constant with the specified name</dd>
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html
new file mode 100644
index 0000000..98329cc
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html
@@ -0,0 +1,233 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>LdapLoginManager.GroupMode (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager, enum: GroupMode">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/LdapLoginManager.GroupMode.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.ldap</a></div>
+<h1 title="Enum Class LdapLoginManager.GroupMode" class="title">Enum Class LdapLoginManager.GroupMode</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a>&gt;
+<div class="inheritance">org.apache.openmeetings.core.ldap.LdapLoginManager.GroupMode</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
+</dl>
+<dl class="notes">
+<dt>Enclosing class:</dt>
+<dd><a href="LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">LdapLoginManager.GroupMode</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a>&gt;</span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="inherited-list">
+<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
+</section>
+</li>
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<li>
+<section class="constants-summary" id="enum-constant-summary">
+<h2>Enum Constant Summary</h2>
+<div class="caption"><span>Enum Constants</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Enum Constant</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code><a href="#ATTRIBUTE" class="member-name-link">ATTRIBUTE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code><a href="#NONE" class="member-name-link">NONE</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code><a href="#QUERY" class="member-name-link">QUERY</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a>[]</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ ENUM CONSTANT DETAIL =========== -->
+<li>
+<section class="constant-details" id="enum-constant-detail">
+<h2>Enum Constant Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="NONE">
+<h3>NONE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></span>&nbsp;<span class="element-name">NONE</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="ATTRIBUTE">
+<h3>ATTRIBUTE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></span>&nbsp;<span class="element-name">ATTRIBUTE</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="QUERY">
+<h3>QUERY</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></span>&nbsp;<span class="element-name">QUERY</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="values()">
+<h3>values</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+<dl class="notes">
+<dt>Returns:</dt>
+<dd>an array containing the constants of this enum class, in the order they are declared</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="valueOf(java.lang.String)">
+<h3>valueOf</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
+<div class="block">Returns the enum constant of this class with the specified name.
+The string must match <i>exactly</i> an identifier used to declare an
+enum constant in this class.  (Extraneous whitespace characters are 
+not permitted.)</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>name</code> - the name of the enum constant to be returned.</dd>
+<dt>Returns:</dt>
+<dd>the enum constant with the specified name</dd>
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html
new file mode 100644
index 0000000..da373f3
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html
@@ -0,0 +1,233 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>LdapLoginManager.Provisionning (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager, enum: Provisionning">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/LdapLoginManager.Provisionning.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.ldap</a></div>
+<h1 title="Enum Class LdapLoginManager.Provisionning" class="title">Enum Class LdapLoginManager.Provisionning</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a>&gt;
+<div class="inheritance">org.apache.openmeetings.core.ldap.LdapLoginManager.Provisionning</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
+</dl>
+<dl class="notes">
+<dt>Enclosing class:</dt>
+<dd><a href="LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">LdapLoginManager.Provisionning</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a>&gt;</span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="inherited-list">
+<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
+</section>
+</li>
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<li>
+<section class="constants-summary" id="enum-constant-summary">
+<h2>Enum Constant Summary</h2>
+<div class="caption"><span>Enum Constants</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Enum Constant</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code><a href="#AUTOCREATE" class="member-name-link">AUTOCREATE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code><a href="#AUTOUPDATE" class="member-name-link">AUTOUPDATE</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code><a href="#NONE" class="member-name-link">NONE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a>[]</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ ENUM CONSTANT DETAIL =========== -->
+<li>
+<section class="constant-details" id="enum-constant-detail">
+<h2>Enum Constant Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="NONE">
+<h3>NONE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></span>&nbsp;<span class="element-name">NONE</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="AUTOUPDATE">
+<h3>AUTOUPDATE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></span>&nbsp;<span class="element-name">AUTOUPDATE</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="AUTOCREATE">
+<h3>AUTOCREATE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></span>&nbsp;<span class="element-name">AUTOCREATE</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="values()">
+<h3>values</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+<dl class="notes">
+<dt>Returns:</dt>
+<dd>an array containing the constants of this enum class, in the order they are declared</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="valueOf(java.lang.String)">
+<h3>valueOf</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
+<div class="block">Returns the enum constant of this class with the specified name.
+The string must match <i>exactly</i> an identifier used to declare an
+enum constant in this class.  (Extraneous whitespace characters are 
+not permitted.)</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>name</code> - the name of the enum constant to be returned.</dd>
+<dt>Returns:</dt>
+<dd>the enum constant with the specified name</dd>
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.html
new file mode 100644
index 0000000..e6c53fc
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapLoginManager.html
@@ -0,0 +1,264 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>LdapLoginManager (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/LdapLoginManager.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.ldap</a></div>
+<h1 title="Class LdapLoginManager" class="title">Class LdapLoginManager</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.ldap.LdapLoginManager</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@Component
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">LdapLoginManager</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Management of optional LDAP Login</div>
+<dl class="notes">
+<dt>Author:</dt>
+<dd>o.becherer</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="caption"><span>Nested Classes</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="LdapLoginManager.AuthType.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static enum&nbsp;</code></div>
+<div class="col-second odd-row-color"><code><a href="LdapLoginManager.GroupMode.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="LdapLoginManager.Provisionning.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="caption"><span>Fields</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#CONFIGKEY_LDAP_KEY_PICTURE" class="member-name-link">CONFIGKEY_LDAP_KEY_PICTURE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">LdapLoginManager</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#importUsers(java.lang.Long,boolean)" class="member-name-link">importUsers</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;domainId,
+ boolean&nbsp;print)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#login(java.lang.String,java.lang.String,java.lang.Long)" class="member-name-link">login</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;inLogin,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;passwd,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;domainId)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Ldap Login
+
+ Connection Data is retrieved from ConfigurationFile</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ FIELD DETAIL =========== -->
+<li>
+<section class="field-details" id="field-detail">
+<h2>Field Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_KEY_PICTURE">
+<h3>CONFIGKEY_LDAP_KEY_PICTURE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_KEY_PICTURE</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapLoginManager.CONFIGKEY_LDAP_KEY_PICTURE">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>LdapLoginManager</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">LdapLoginManager</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="login(java.lang.String,java.lang.String,java.lang.Long)">
+<h3>login</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a></span>&nbsp;<span class="element-name">login</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;inLogin,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;passwd,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;domainId)</span>
+           throws <span class="exceptions">org.apache.openmeetings.util.OmException</span></div>
+<div class="block">Ldap Login
+
+ Connection Data is retrieved from ConfigurationFile</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>inLogin</code> - - user login</dd>
+<dd><code>passwd</code> - - user password</dd>
+<dd><code>domainId</code> - - user domain id</dd>
+<dt>Returns:</dt>
+<dd>- <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link"><code>User</code></a> with this credentials or <code>null</code></dd>
+<dt>Throws:</dt>
+<dd><code>org.apache.openmeetings.util.OmException</code> - - in case of any error</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="importUsers(java.lang.Long,boolean)">
+<h3>importUsers</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">importUsers</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;domainId,
+ boolean&nbsp;print)</span>
+                 throws <span class="exceptions">org.apache.openmeetings.util.OmException</span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code>org.apache.openmeetings.util.OmException</code></dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapOptions.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapOptions.html
new file mode 100644
index 0000000..7855bd4
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/LdapOptions.html
@@ -0,0 +1,287 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>LdapOptions (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.ldap, class: LdapOptions">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/LdapOptions.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.ldap</a></div>
+<h1 title="Class LdapOptions" class="title">Class LdapOptions</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.ldap.LdapOptions</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LdapOptions</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="caption"><span>Fields</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#CONFIGKEY_LDAP_ADMIN_DN" class="member-name-link">CONFIGKEY_LDAP_ADMIN_DN</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#CONFIGKEY_LDAP_ADMIN_PASSWD" class="member-name-link">CONFIGKEY_LDAP_ADMIN_PASSWD</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#CONFIGKEY_LDAP_AUTH_TYPE" class="member-name-link">CONFIGKEY_LDAP_AUTH_TYPE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#CONFIGKEY_LDAP_HOST" class="member-name-link">CONFIGKEY_LDAP_HOST</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#CONFIGKEY_LDAP_PICTURE_URI" class="member-name-link">CONFIGKEY_LDAP_PICTURE_URI</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#CONFIGKEY_LDAP_PORT" class="member-name-link">CONFIGKEY_LDAP_PORT</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#CONFIGKEY_LDAP_SEARCH_BASE" class="member-name-link">CONFIGKEY_LDAP_SEARCH_BASE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#CONFIGKEY_LDAP_SEARCH_SCOPE" class="member-name-link">CONFIGKEY_LDAP_SEARCH_SCOPE</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.Properties)" class="member-name-link">LdapOptions</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;config)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ FIELD DETAIL =========== -->
+<li>
+<section class="field-details" id="field-detail">
+<h2>Field Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_HOST">
+<h3>CONFIGKEY_LDAP_HOST</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_HOST</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_HOST">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_PORT">
+<h3>CONFIGKEY_LDAP_PORT</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_PORT</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_PORT">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_ADMIN_DN">
+<h3>CONFIGKEY_LDAP_ADMIN_DN</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_ADMIN_DN</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_ADMIN_DN">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_ADMIN_PASSWD">
+<h3>CONFIGKEY_LDAP_ADMIN_PASSWD</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_ADMIN_PASSWD</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_ADMIN_PASSWD">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_AUTH_TYPE">
+<h3>CONFIGKEY_LDAP_AUTH_TYPE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_AUTH_TYPE</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_AUTH_TYPE">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_SEARCH_BASE">
+<h3>CONFIGKEY_LDAP_SEARCH_BASE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_SEARCH_BASE</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_SEARCH_BASE">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_SEARCH_SCOPE">
+<h3>CONFIGKEY_LDAP_SEARCH_SCOPE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_SEARCH_SCOPE</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_SEARCH_SCOPE">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="CONFIGKEY_LDAP_PICTURE_URI">
+<h3>CONFIGKEY_LDAP_PICTURE_URI</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CONFIGKEY_LDAP_PICTURE_URI</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.ldap.LdapOptions.CONFIGKEY_LDAP_PICTURE_URI">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(java.util.Properties)">
+<h3>LdapOptions</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">LdapOptions</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;config)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.AuthType.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.AuthType.html
new file mode 100644
index 0000000..bcfe2ff
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.AuthType.html
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Enum Class org.apache.openmeetings.core.ldap.LdapLoginManager.AuthType (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager, enum: AuthType">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Enum Class org.apache.openmeetings.core.ldap.LdapLoginManager.AuthType" class="title">Uses of Enum Class<br>org.apache.openmeetings.core.ldap.LdapLoginManager.AuthType</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.ldap">org.apache.openmeetings.core.ldap</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.ldap">
+<h2>Uses of <a href="../LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a> in <a href="../package-summary.html">org.apache.openmeetings.core.ldap</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.ldap</a> that return <a href="../LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static <a href="../LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">LdapLoginManager.AuthType.</span><code><a href="../LdapLoginManager.AuthType.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</div>
+<div class="col-first odd-row-color"><code>static <a href="../LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a>[]</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">LdapLoginManager.AuthType.</span><code><a href="../LdapLoginManager.AuthType.html#values()" class="member-name-link">values</a>()</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.GroupMode.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.GroupMode.html
new file mode 100644
index 0000000..832d095
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.GroupMode.html
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Enum Class org.apache.openmeetings.core.ldap.LdapLoginManager.GroupMode (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager, enum: GroupMode">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Enum Class org.apache.openmeetings.core.ldap.LdapLoginManager.GroupMode" class="title">Uses of Enum Class<br>org.apache.openmeetings.core.ldap.LdapLoginManager.GroupMode</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.ldap">org.apache.openmeetings.core.ldap</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.ldap">
+<h2>Uses of <a href="../LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a> in <a href="../package-summary.html">org.apache.openmeetings.core.ldap</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.ldap</a> that return <a href="../LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static <a href="../LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">LdapLoginManager.GroupMode.</span><code><a href="../LdapLoginManager.GroupMode.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</div>
+<div class="col-first odd-row-color"><code>static <a href="../LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a>[]</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">LdapLoginManager.GroupMode.</span><code><a href="../LdapLoginManager.GroupMode.html#values()" class="member-name-link">values</a>()</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.Provisionning.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.Provisionning.html
new file mode 100644
index 0000000..8627f23
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.Provisionning.html
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Enum Class org.apache.openmeetings.core.ldap.LdapLoginManager.Provisionning (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager, enum: Provisionning">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Enum Class org.apache.openmeetings.core.ldap.LdapLoginManager.Provisionning" class="title">Uses of Enum Class<br>org.apache.openmeetings.core.ldap.LdapLoginManager.Provisionning</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.ldap">org.apache.openmeetings.core.ldap</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.ldap">
+<h2>Uses of <a href="../LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a> in <a href="../package-summary.html">org.apache.openmeetings.core.ldap</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.ldap</a> that return <a href="../LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static <a href="../LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">LdapLoginManager.Provisionning.</span><code><a href="../LdapLoginManager.Provisionning.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Returns the enum constant of this class with the specified name.</div>
+</div>
+<div class="col-first odd-row-color"><code>static <a href="../LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a>[]</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">LdapLoginManager.Provisionning.</span><code><a href="../LdapLoginManager.Provisionning.html#values()" class="member-name-link">values</a>()</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Returns an array containing the constants of this enum class, in
+the order they are declared.</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.html
new file mode 100644
index 0000000..2ef7dc5
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapLoginManager.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.ldap.LdapLoginManager (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.ldap, class: LdapLoginManager">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.ldap.LdapLoginManager" class="title">Uses of Class<br>org.apache.openmeetings.core.ldap.LdapLoginManager</h1>
+</div>
+No usage of org.apache.openmeetings.core.ldap.LdapLoginManager</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapOptions.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapOptions.html
new file mode 100644
index 0000000..623c11d
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/class-use/LdapOptions.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.ldap.LdapOptions (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.ldap, class: LdapOptions">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.ldap.LdapOptions" class="title">Uses of Class<br>org.apache.openmeetings.core.ldap.LdapOptions</h1>
+</div>
+No usage of org.apache.openmeetings.core.ldap.LdapOptions</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-summary.html
new file mode 100644
index 0000000..c0bf8b2
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-summary.html
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.ldap (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.ldap">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.ldap" class="title">Package org.apache.openmeetings.core.ldap</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.ldap</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
+<div id="class-summary.tabpanel" role="tabpanel">
+<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LdapLoginManager.html" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">
+<div class="block">Management of optional LDAP Login</div>
+</div>
+<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="LdapLoginManager.AuthType.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab3">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab3"><a href="LdapLoginManager.GroupMode.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab3">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="LdapLoginManager.Provisionning.html" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab3">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LdapOptions.html" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-tree.html
new file mode 100644
index 0000000..969a721
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-tree.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.ldap Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.ldap">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.ldap</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="LdapLoginManager.html" class="type-name-link" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></li>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="LdapOptions.html" class="type-name-link" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></li>
+</ul>
+</li>
+</ul>
+</section>
+<section class="hierarchy">
+<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
+<ul>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="LdapLoginManager.AuthType.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></li>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="LdapLoginManager.GroupMode.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></li>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="LdapLoginManager.Provisionning.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-use.html
new file mode 100644
index 0000000..9b1631d
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/ldap/package-use.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.ldap (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.ldap">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.ldap" class="title">Uses of Package<br>org.apache.openmeetings.core.ldap</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="package-summary.html">org.apache.openmeetings.core.ldap</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.ldap">org.apache.openmeetings.core.ldap</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="package-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.ldap">
+<div class="caption"><span>Classes in <a href="package-summary.html">org.apache.openmeetings.core.ldap</a> used by <a href="package-summary.html">org.apache.openmeetings.core.ldap</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="class-use/LdapLoginManager.AuthType.html#org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="class-use/LdapLoginManager.GroupMode.html#org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><a href="class-use/LdapLoginManager.Provisionning.html#org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/MailHandler.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/MailHandler.html
new file mode 100644
index 0000000..cb383f5
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/MailHandler.html
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>MailHandler (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.mail, class: MailHandler">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/MailHandler.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.mail</a></div>
+<h1 title="Class MailHandler" class="title">Class MailHandler</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.mail.MailHandler</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@Component("mailHandler")
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">MailHandler</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<dl class="notes">
+<dt>Author:</dt>
+<dd>swagner
+
+ For a documentation about Javax mail please see for example:
+ http://connector.sourceforge.net/doc-files/Properties.html</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">MailHandler</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>jakarta.mail.internet.MimeMessage</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#appendBody(jakarta.mail.internet.MimeMessage,java.lang.String)" class="member-name-link">appendBody</a><wbr>(jakarta.mail.internet.MimeMessage&nbsp;msg,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;body)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected jakarta.mail.internet.MimeMessage</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#appendIcsBody(jakarta.mail.internet.MimeMessage,org.apache.openmeetings.db.entity.basic.MailMessage)" class="member-name-link">appendIcsBody</a><wbr>(jakarta.mail.internet.MimeMessage&nbsp;msg,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/MailMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">MailMessage</a>&nbsp;m)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>jakarta.mail.internet.MimeMessage</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBasicMimeMessage()" class="member-name-link">getBasicMimeMessage</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#resetSendingStatus()" class="member-name-link">resetSendingStatus</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#send(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">send</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;toEmail,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;subj,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#send(java.lang.String,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">send</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;toEmail,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;replyTo,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;subj,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#send(org.apache.openmeetings.db.entity.basic.MailMessage)" class="member-name-link">send</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/MailMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">MailMessage</a>&nbsp;m)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#send(org.apache.openmeetings.db.entity.basic.MailMessage,boolean)" class="member-name-link">send</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/MailMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">MailMessage</a>&nbsp;m,
+ boolean&nbsp;send)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendMails()" class="member-name-link">sendMails</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>MailHandler</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MailHandler</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="appendIcsBody(jakarta.mail.internet.MimeMessage,org.apache.openmeetings.db.entity.basic.MailMessage)">
+<h3>appendIcsBody</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">jakarta.mail.internet.MimeMessage</span>&nbsp;<span class="element-name">appendIcsBody</span><wbr><span class="parameters">(jakarta.mail.internet.MimeMessage&nbsp;msg,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/MailMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">MailMessage</a>&nbsp;m)</span>
+                                                   throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="appendBody(jakarta.mail.internet.MimeMessage,java.lang.String)">
+<h3>appendBody</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">jakarta.mail.internet.MimeMessage</span>&nbsp;<span class="element-name">appendBody</span><wbr><span class="parameters">(jakarta.mail.internet.MimeMessage&nbsp;msg,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;body)</span>
+                                             throws <span class="exceptions">jakarta.mail.MessagingException</span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code>jakarta.mail.MessagingException</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="getBasicMimeMessage()">
+<h3>getBasicMimeMessage</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">jakarta.mail.internet.MimeMessage</span>&nbsp;<span class="element-name">getBasicMimeMessage</span>()
+                                                      throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="send(java.lang.String,java.lang.String,java.lang.String)">
+<h3>send</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">send</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;toEmail,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;subj,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="send(java.lang.String,java.lang.String,java.lang.String,java.lang.String)">
+<h3>send</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">send</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;toEmail,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;replyTo,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;subj,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="send(org.apache.openmeetings.db.entity.basic.MailMessage)">
+<h3>send</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">send</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/MailMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">MailMessage</a>&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="send(org.apache.openmeetings.db.entity.basic.MailMessage,boolean)">
+<h3>send</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">send</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/MailMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">MailMessage</a>&nbsp;m,
+ boolean&nbsp;send)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="resetSendingStatus()">
+<h3>resetSendingStatus</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">resetSendingStatus</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendMails()">
+<h3>sendMails</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendMails</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/class-use/MailHandler.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/class-use/MailHandler.html
new file mode 100644
index 0000000..751cf8d
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/class-use/MailHandler.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.mail.MailHandler (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.mail, class: MailHandler">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../MailHandler.html" title="class in org.apache.openmeetings.core.mail">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.mail.MailHandler" class="title">Uses of Class<br>org.apache.openmeetings.core.mail.MailHandler</h1>
+</div>
+No usage of org.apache.openmeetings.core.mail.MailHandler</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-summary.html
new file mode 100644
index 0000000..9332654
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-summary.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.mail (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.mail">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.mail" class="title">Package org.apache.openmeetings.core.mail</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.mail</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="caption"><span>Classes</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MailHandler.html" title="class in org.apache.openmeetings.core.mail">MailHandler</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-tree.html
new file mode 100644
index 0000000..d021ae0
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-tree.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.mail Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.mail">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.mail</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.mail.<a href="MailHandler.html" class="type-name-link" title="class in org.apache.openmeetings.core.mail">MailHandler</a></li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-use.html
new file mode 100644
index 0000000..ae31e68
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/mail/package-use.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.mail (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.mail">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.mail" class="title">Uses of Package<br>org.apache.openmeetings.core.mail</h1>
+</div>
+No usage of org.apache.openmeetings.core.mail</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/INotifier.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/INotifier.html
new file mode 100644
index 0000000..c445193
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/INotifier.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>INotifier (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.notifier, interface: INotifier">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/INotifier.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.notifier</a></div>
+<h1 title="Interface INotifier" class="title">Interface INotifier</h1>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>Functional Interface:</dt>
+<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
+</span><span class="modifiers">public interface </span><span class="element-name type-name-label">INotifier</span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)" class="member-name-link">notify</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/calendar/Appointment.html" title="class or interface in org.apache.openmeetings.db.entity.calendar" class="external-link">Appointment</a>&nbsp;a,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Invitation.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Invitation</a>&nbsp;inv)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
+</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)">
+<h3>notify</h3>
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">notify</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/calendar/Appointment.html" title="class or interface in org.apache.openmeetings.db.entity.calendar" class="external-link">Appointment</a>&nbsp;a,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Invitation.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Invitation</a>&nbsp;inv)</span>
+     throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/NotifierService.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/NotifierService.html
new file mode 100644
index 0000000..df341e6
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/NotifierService.html
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>NotifierService (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.notifier, class: NotifierService">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/NotifierService.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.notifier</a></div>
+<h1 title="Class NotifierService" class="title">Class NotifierService</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.notifier.NotifierService</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@Service
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">NotifierService</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<dl class="notes">
+<dt>Author:</dt>
+<dd>iarkh</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NotifierService</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addNotifier(org.apache.openmeetings.core.notifier.INotifier)" class="member-name-link">addNotifier</a><wbr>(<a href="INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a>&nbsp;n)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)" class="member-name-link">notify</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/calendar/Appointment.html" title="class or interface in org.apache.openmeetings.db.entity.calendar" class="external-link">Appointment</a>&nbsp;a,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Invitation.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Invitation</a>&nbsp;inv)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>NotifierService</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NotifierService</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="addNotifier(org.apache.openmeetings.core.notifier.INotifier)">
+<h3>addNotifier</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addNotifier</span><wbr><span class="parameters">(<a href="INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a>&nbsp;n)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="notify(org.apache.openmeetings.db.entity.user.User,org.apache.openmeetings.db.entity.calendar.Appointment,org.apache.openmeetings.db.entity.room.Invitation)">
+<h3>notify</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notify</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/calendar/Appointment.html" title="class or interface in org.apache.openmeetings.db.entity.calendar" class="external-link">Appointment</a>&nbsp;a,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Invitation.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Invitation</a>&nbsp;inv)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/class-use/INotifier.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/class-use/INotifier.html
new file mode 100644
index 0000000..8bb3f65
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/class-use/INotifier.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Interface org.apache.openmeetings.core.notifier.INotifier (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.notifier, interface: INotifier">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../INotifier.html" title="interface in org.apache.openmeetings.core.notifier">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Interface org.apache.openmeetings.core.notifier.INotifier" class="title">Uses of Interface<br>org.apache.openmeetings.core.notifier.INotifier</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.notifier">org.apache.openmeetings.core.notifier</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.notifier">
+<h2>Uses of <a href="../INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a> in <a href="../package-summary.html">org.apache.openmeetings.core.notifier</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.notifier</a> with parameters of type <a href="../INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">NotifierService.</span><code><a href="../NotifierService.html#addNotifier(org.apache.openmeetings.core.notifier.INotifier)" class="member-name-link">addNotifier</a><wbr>(<a href="../INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a>&nbsp;n)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/class-use/NotifierService.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/class-use/NotifierService.html
new file mode 100644
index 0000000..f5cb25f
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/class-use/NotifierService.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.notifier.NotifierService (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.notifier, class: NotifierService">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../NotifierService.html" title="class in org.apache.openmeetings.core.notifier">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.notifier.NotifierService" class="title">Uses of Class<br>org.apache.openmeetings.core.notifier.NotifierService</h1>
+</div>
+No usage of org.apache.openmeetings.core.notifier.NotifierService</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-summary.html
new file mode 100644
index 0000000..929ba3c
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-summary.html
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.notifier (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.notifier">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.notifier" class="title">Package org.apache.openmeetings.core.notifier</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.notifier</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
+<div id="class-summary.tabpanel" role="tabpanel">
+<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab1"><a href="INotifier.html" title="interface in org.apache.openmeetings.core.notifier">INotifier</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab1">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="NotifierService.html" title="class in org.apache.openmeetings.core.notifier">NotifierService</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-tree.html
new file mode 100644
index 0000000..eba5bdb
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-tree.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.notifier Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.notifier">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.notifier</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.notifier.<a href="NotifierService.html" class="type-name-link" title="class in org.apache.openmeetings.core.notifier">NotifierService</a></li>
+</ul>
+</li>
+</ul>
+</section>
+<section class="hierarchy">
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li class="circle">org.apache.openmeetings.core.notifier.<a href="INotifier.html" class="type-name-link" title="interface in org.apache.openmeetings.core.notifier">INotifier</a></li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-use.html
new file mode 100644
index 0000000..959caf7
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/notifier/package-use.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.notifier (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.notifier">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.notifier" class="title">Uses of Package<br>org.apache.openmeetings.core.notifier</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="package-summary.html">org.apache.openmeetings.core.notifier</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.notifier">org.apache.openmeetings.core.notifier</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="package-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.notifier">
+<div class="caption"><span>Classes in <a href="package-summary.html">org.apache.openmeetings.core.notifier</a> used by <a href="package-summary.html">org.apache.openmeetings.core.notifier</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="class-use/INotifier.html#org.apache.openmeetings.core.notifier">INotifier</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/LoadAtomRssFeed.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/LoadAtomRssFeed.html
new file mode 100644
index 0000000..b5c5ecb
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/LoadAtomRssFeed.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>LoadAtomRssFeed (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.rss, class: LoadAtomRssFeed">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/LoadAtomRssFeed.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.rss</a></div>
+<h1 title="Class LoadAtomRssFeed" class="title">Class LoadAtomRssFeed</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.rss.LoadAtomRssFeed</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LoadAtomRssFeed</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/HttpURLConnection.html" title="class or interface in java.net" class="external-link">HttpURLConnection</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getFeedConnection(java.lang.String)" class="member-name-link">getFeedConnection</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;urlStr)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static com.github.openjson.JSONArray</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getRss()" class="member-name-link">getRss</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setRss(com.github.openjson.JSONArray)" class="member-name-link">setRss</a><wbr>(com.github.openjson.JSONArray&nbsp;rss)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getFeedConnection(java.lang.String)">
+<h3>getFeedConnection</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/HttpURLConnection.html" title="class or interface in java.net" class="external-link">HttpURLConnection</a></span>&nbsp;<span class="element-name">getFeedConnection</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;urlStr)</span>
+                                           throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="getRss()">
+<h3>getRss</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">com.github.openjson.JSONArray</span>&nbsp;<span class="element-name">getRss</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="setRss(com.github.openjson.JSONArray)">
+<h3>setRss</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setRss</span><wbr><span class="parameters">(com.github.openjson.JSONArray&nbsp;rss)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/class-use/LoadAtomRssFeed.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/class-use/LoadAtomRssFeed.html
new file mode 100644
index 0000000..6d18bd3
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/class-use/LoadAtomRssFeed.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.rss.LoadAtomRssFeed (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.rss, class: LoadAtomRssFeed">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../LoadAtomRssFeed.html" title="class in org.apache.openmeetings.core.rss">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.rss.LoadAtomRssFeed" class="title">Uses of Class<br>org.apache.openmeetings.core.rss.LoadAtomRssFeed</h1>
+</div>
+No usage of org.apache.openmeetings.core.rss.LoadAtomRssFeed</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-summary.html
new file mode 100644
index 0000000..f31a358
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-summary.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.rss (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.rss">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.rss" class="title">Package org.apache.openmeetings.core.rss</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.rss</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="caption"><span>Classes</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LoadAtomRssFeed.html" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-tree.html
new file mode 100644
index 0000000..1a398fa
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-tree.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.rss Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.rss">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.rss</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.rss.<a href="LoadAtomRssFeed.html" class="type-name-link" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a></li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-use.html
new file mode 100644
index 0000000..d3fc405
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/rss/package-use.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.rss (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.rss">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.rss" class="title">Uses of Package<br>org.apache.openmeetings.core.rss</h1>
+</div>
+No usage of org.apache.openmeetings.core.rss</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/ISipCallbacks.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/ISipCallbacks.html
new file mode 100644
index 0000000..3e1ab08
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/ISipCallbacks.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>ISipCallbacks (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.sip, interface: ISipCallbacks">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/ISipCallbacks.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.sip</a></div>
+<h1 title="Interface ISipCallbacks" class="title">Interface ISipCallbacks</h1>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">ISipCallbacks</span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#onInviteOk(java.lang.String,java.util.function.Consumer)" class="member-name-link">onInviteOk</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;sdp,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;answerConsumer)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#onRegisterOk()" class="member-name-link">onRegisterOk</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
+</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="onRegisterOk()">
+<h3>onRegisterOk</h3>
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">onRegisterOk</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="onInviteOk(java.lang.String,java.util.function.Consumer)">
+<h3>onInviteOk</h3>
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">onInviteOk</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;sdp,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;answerConsumer)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/SipManager.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/SipManager.html
new file mode 100644
index 0000000..6fb1291
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/SipManager.html
@@ -0,0 +1,386 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>SipManager (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.sip, class: SipManager">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/SipManager.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.sip</a></div>
+<h1 title="Class SipManager" class="title">Class SipManager</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.sip.SipManager</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">ISipManager</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="annotations">@Service
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">SipManager</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
+implements <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">ISipManager</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="caption"><span>Fields</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#ASTERISK_OM_FAMILY" class="member-name-link">ASTERISK_OM_FAMILY</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#ASTERISK_OM_KEY" class="member-name-link">ASTERISK_OM_KEY</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#SIP_FIRST_NAME" class="member-name-link">SIP_FIRST_NAME</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#SIP_USER_NAME" class="member-name-link">SIP_USER_NAME</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">SipManager</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#callExternalNumber(java.lang.String,org.apache.openmeetings.db.entity.room.Room)" class="member-name-link">callExternalNumber</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;number,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Perform call to specified phone number and join to conference</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#countUsers(java.lang.String)" class="member-name-link">countUsers</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a>&gt;</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createSipStackProcessor(java.lang.String,org.apache.openmeetings.db.entity.room.Room,org.apache.openmeetings.core.sip.ISipCallbacks)" class="member-name-link">createSipStackProcessor</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r,
+ <a href="ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a>&nbsp;callbacks)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#delete()" class="member-name-link">delete</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#delete(java.lang.String)" class="member-name-link">delete</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#destroy()" class="member-name-link">destroy</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get(java.lang.String)" class="member-name-link">get</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSipUser(org.apache.openmeetings.db.entity.room.Room)" class="member-name-link">getSipUser</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hangup(org.apache.openmeetings.db.entity.room.Room)" class="member-name-link">hangup</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#init()" class="member-name-link">init</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setUserPicture(java.util.function.Function)" class="member-name-link">setUserPicture</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;pictureCreator)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#update(java.lang.String,java.lang.String)" class="member-name-link">update</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;pin)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ FIELD DETAIL =========== -->
+<li>
+<section class="field-details" id="field-detail">
+<h2>Field Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="ASTERISK_OM_FAMILY">
+<h3>ASTERISK_OM_FAMILY</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ASTERISK_OM_FAMILY</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.sip.SipManager.ASTERISK_OM_FAMILY">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="ASTERISK_OM_KEY">
+<h3>ASTERISK_OM_KEY</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ASTERISK_OM_KEY</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.sip.SipManager.ASTERISK_OM_KEY">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="SIP_FIRST_NAME">
+<h3>SIP_FIRST_NAME</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SIP_FIRST_NAME</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.sip.SipManager.SIP_FIRST_NAME">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="SIP_USER_NAME">
+<h3>SIP_USER_NAME</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SIP_USER_NAME</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.sip.SipManager.SIP_USER_NAME">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;()">
+<h3>SipManager</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SipManager</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="init()">
+<h3>init</h3>
+<div class="member-signature"><span class="annotations">@PostConstruct
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">init</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="destroy()">
+<h3>destroy</h3>
+<div class="member-signature"><span class="annotations">@PreDestroy
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">destroy</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="get(java.lang.String)">
+<h3>get</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">get</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="update(java.lang.String,java.lang.String)">
+<h3>update</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">update</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;pin)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html#update(java.lang.String,java.lang.String)" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">update</a></code>&nbsp;in interface&nbsp;<code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">ISipManager</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="delete()">
+<h3>delete</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">delete</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="delete(java.lang.String)">
+<h3>delete</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">delete</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html#delete(java.lang.String)" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">delete</a></code>&nbsp;in interface&nbsp;<code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">ISipManager</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="countUsers(java.lang.String)">
+<h3>countUsers</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">countUsers</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;confno)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="callExternalNumber(java.lang.String,org.apache.openmeetings.db.entity.room.Room)">
+<h3>callExternalNumber</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">callExternalNumber</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;number,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r)</span></div>
+<div class="block">Perform call to specified phone number and join to conference</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>number</code> - number to call</dd>
+<dd><code>r</code> - room to be connected to the call</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="hangup(org.apache.openmeetings.db.entity.room.Room)">
+<h3>hangup</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">hangup</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="setUserPicture(java.util.function.Function)">
+<h3>setUserPicture</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setUserPicture</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;pictureCreator)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="getSipUser(org.apache.openmeetings.db.entity.room.Room)">
+<h3>getSipUser</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a></span>&nbsp;<span class="element-name">getSipUser</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="createSipStackProcessor(java.lang.String,org.apache.openmeetings.db.entity.room.Room,org.apache.openmeetings.core.sip.ISipCallbacks)">
+<h3>createSipStackProcessor</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a>&gt;</span>&nbsp;<span class="element-name">createSipStackProcessor</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r,
+ <a href="ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a>&nbsp;callbacks)</span>
+                                                    throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/SipStackProcessor.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/SipStackProcessor.html
new file mode 100644
index 0000000..8ab9794
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/SipStackProcessor.html
@@ -0,0 +1,251 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>SipStackProcessor (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.sip, class: SipStackProcessor">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/SipStackProcessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.sip</a></div>
+<h1 title="Class SipStackProcessor" class="title">Class SipStackProcessor</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.sip.SipStackProcessor</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code>gov.nist.javax.sip.SipListenerExt</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/EventListener.html" title="class or interface in java.util" class="external-link">EventListener</a></code>, <code>javax.sip.SipListener</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SipStackProcessor</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
+implements gov.nist.javax.sip.SipListenerExt</span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#destroy()" class="member-name-link">destroy</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#invite(org.apache.openmeetings.db.entity.room.Room,java.lang.String)" class="member-name-link">invite</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;sdp)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processDialogTerminated(javax.sip.DialogTerminatedEvent)" class="member-name-link">processDialogTerminated</a><wbr>(javax.sip.DialogTerminatedEvent&nbsp;evt)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processDialogTimeout(gov.nist.javax.sip.DialogTimeoutEvent)" class="member-name-link">processDialogTimeout</a><wbr>(gov.nist.javax.sip.DialogTimeoutEvent&nbsp;timeoutEvent)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processIOException(javax.sip.IOExceptionEvent)" class="member-name-link">processIOException</a><wbr>(javax.sip.IOExceptionEvent&nbsp;evt)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processRequest(javax.sip.RequestEvent)" class="member-name-link">processRequest</a><wbr>(javax.sip.RequestEvent&nbsp;evt)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processResponse(javax.sip.ResponseEvent)" class="member-name-link">processResponse</a><wbr>(javax.sip.ResponseEvent&nbsp;evt)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processTimeout(javax.sip.TimeoutEvent)" class="member-name-link">processTimeout</a><wbr>(javax.sip.TimeoutEvent&nbsp;evt)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processTransactionTerminated(javax.sip.TransactionTerminatedEvent)" class="member-name-link">processTransactionTerminated</a><wbr>(javax.sip.TransactionTerminatedEvent&nbsp;evt)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#register()" class="member-name-link">register</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="processDialogTerminated(javax.sip.DialogTerminatedEvent)">
+<h3>processDialogTerminated</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processDialogTerminated</span><wbr><span class="parameters">(javax.sip.DialogTerminatedEvent&nbsp;evt)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>processDialogTerminated</code>&nbsp;in interface&nbsp;<code>javax.sip.SipListener</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="processIOException(javax.sip.IOExceptionEvent)">
+<h3>processIOException</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processIOException</span><wbr><span class="parameters">(javax.sip.IOExceptionEvent&nbsp;evt)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>processIOException</code>&nbsp;in interface&nbsp;<code>javax.sip.SipListener</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="processTimeout(javax.sip.TimeoutEvent)">
+<h3>processTimeout</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processTimeout</span><wbr><span class="parameters">(javax.sip.TimeoutEvent&nbsp;evt)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>processTimeout</code>&nbsp;in interface&nbsp;<code>javax.sip.SipListener</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="processTransactionTerminated(javax.sip.TransactionTerminatedEvent)">
+<h3>processTransactionTerminated</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processTransactionTerminated</span><wbr><span class="parameters">(javax.sip.TransactionTerminatedEvent&nbsp;evt)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>processTransactionTerminated</code>&nbsp;in interface&nbsp;<code>javax.sip.SipListener</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="processDialogTimeout(gov.nist.javax.sip.DialogTimeoutEvent)">
+<h3>processDialogTimeout</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processDialogTimeout</span><wbr><span class="parameters">(gov.nist.javax.sip.DialogTimeoutEvent&nbsp;timeoutEvent)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>processDialogTimeout</code>&nbsp;in interface&nbsp;<code>gov.nist.javax.sip.SipListenerExt</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="processRequest(javax.sip.RequestEvent)">
+<h3>processRequest</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processRequest</span><wbr><span class="parameters">(javax.sip.RequestEvent&nbsp;evt)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>processRequest</code>&nbsp;in interface&nbsp;<code>javax.sip.SipListener</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="processResponse(javax.sip.ResponseEvent)">
+<h3>processResponse</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processResponse</span><wbr><span class="parameters">(javax.sip.ResponseEvent&nbsp;evt)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>processResponse</code>&nbsp;in interface&nbsp;<code>javax.sip.SipListener</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="register()">
+<h3>register</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">register</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="invite(org.apache.openmeetings.db.entity.room.Room,java.lang.String)">
+<h3>invite</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">invite</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;sdp)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="destroy()">
+<h3>destroy</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">destroy</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/ISipCallbacks.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/ISipCallbacks.html
new file mode 100644
index 0000000..fd9c5c0
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/ISipCallbacks.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Interface org.apache.openmeetings.core.sip.ISipCallbacks (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.sip, interface: ISipCallbacks">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Interface org.apache.openmeetings.core.sip.ISipCallbacks" class="title">Uses of Interface<br>org.apache.openmeetings.core.sip.ISipCallbacks</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.sip">org.apache.openmeetings.core.sip</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.sip">
+<h2>Uses of <a href="../ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a> in <a href="../package-summary.html">org.apache.openmeetings.core.sip</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.sip</a> with parameters of type <a href="../ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="../SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a>&gt;</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">SipManager.</span><code><a href="../SipManager.html#createSipStackProcessor(java.lang.String,org.apache.openmeetings.db.entity.room.Room,org.apache.openmeetings.core.sip.ISipCallbacks)" class="member-name-link">createSipStackProcessor</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r,
+ <a href="../ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a>&nbsp;callbacks)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/SipManager.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/SipManager.html
new file mode 100644
index 0000000..f61aeb3
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/SipManager.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.sip.SipManager (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.sip, class: SipManager">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../SipManager.html" title="class in org.apache.openmeetings.core.sip">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.sip.SipManager" class="title">Uses of Class<br>org.apache.openmeetings.core.sip.SipManager</h1>
+</div>
+No usage of org.apache.openmeetings.core.sip.SipManager</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/SipStackProcessor.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/SipStackProcessor.html
new file mode 100644
index 0000000..2dee951
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/class-use/SipStackProcessor.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.sip.SipStackProcessor (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.sip, class: SipStackProcessor">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.sip.SipStackProcessor" class="title">Uses of Class<br>org.apache.openmeetings.core.sip.SipStackProcessor</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.sip">org.apache.openmeetings.core.sip</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.sip">
+<h2>Uses of <a href="../SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a> in <a href="../package-summary.html">org.apache.openmeetings.core.sip</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.openmeetings.core.sip</a> that return types with arguments of type <a href="../SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="../SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a>&gt;</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">SipManager.</span><code><a href="../SipManager.html#createSipStackProcessor(java.lang.String,org.apache.openmeetings.db.entity.room.Room,org.apache.openmeetings.core.sip.ISipCallbacks)" class="member-name-link">createSipStackProcessor</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/room/Room.html" title="class or interface in org.apache.openmeetings.db.entity.room" class="external-link">Room</a>&nbsp;r,
+ <a href="../ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a>&nbsp;callbacks)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-summary.html
new file mode 100644
index 0000000..7abe177
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-summary.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.sip (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.sip">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li>Related Packages&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.sip" class="title">Package org.apache.openmeetings.core.sip</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.sip</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="class-summary">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
+<div id="class-summary.tabpanel" role="tabpanel">
+<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ISipCallbacks.html" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab1">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SipManager.html" title="class in org.apache.openmeetings.core.sip">SipManager</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SipStackProcessor.html" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-tree.html
new file mode 100644
index 0000000..e595c28
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-tree.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.sip Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.sip">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.sip</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.sip.<a href="SipManager.html" class="type-name-link" title="class in org.apache.openmeetings.core.sip">SipManager</a> (implements org.apache.openmeetings.db.manager.<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">ISipManager</a>)</li>
+<li class="circle">org.apache.openmeetings.core.sip.<a href="SipStackProcessor.html" class="type-name-link" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a> (implements gov.nist.javax.sip.SipListenerExt)</li>
+</ul>
+</li>
+</ul>
+</section>
+<section class="hierarchy">
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li class="circle">org.apache.openmeetings.core.sip.<a href="ISipCallbacks.html" class="type-name-link" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-use.html
new file mode 100644
index 0000000..c8bad55
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/sip/package-use.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.sip (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.sip">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.sip" class="title">Uses of Package<br>org.apache.openmeetings.core.sip</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="package-summary.html">org.apache.openmeetings.core.sip</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.sip">org.apache.openmeetings.core.sip</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="package-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.sip">
+<div class="caption"><span>Classes in <a href="package-summary.html">org.apache.openmeetings.core.sip</a> used by <a href="package-summary.html">org.apache.openmeetings.core.sip</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="class-use/ISipCallbacks.html#org.apache.openmeetings.core.sip">ISipCallbacks</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="class-use/SipStackProcessor.html#org.apache.openmeetings.core.sip">SipStackProcessor</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ChatWebSocketHelper.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ChatWebSocketHelper.html
new file mode 100644
index 0000000..229bec1
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ChatWebSocketHelper.html
@@ -0,0 +1,271 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>ChatWebSocketHelper (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util, class: ChatWebSocketHelper">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/ChatWebSocketHelper.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util</a></div>
+<h1 title="Class ChatWebSocketHelper" class="title">Class ChatWebSocketHelper</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ChatWebSocketHelper</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ChatWebSocketHelper</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="caption"><span>Fields</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#ID_ALL" class="member-name-link">ID_ALL</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#ID_ROOM_PREFIX" class="member-name-link">ID_ROOM_PREFIX</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#ID_TAB_PREFIX" class="member-name-link">ID_TAB_PREFIX</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#ID_USER_PREFIX" class="member-name-link">ID_USER_PREFIX</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static com.github.openjson.JSONObject</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getMessage(org.apache.openmeetings.db.entity.user.User,java.util.List,java.util.function.BiConsumer)" class="member-name-link">getMessage</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;curUser,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&gt;&nbsp;list,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;com.github.openjson.JSONObject,<wbr><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&gt;&nbsp;uFmt)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#send(org.apache.openmeetings.util.ws.IClusterWsMessage)" class="member-name-link">send</a><wbr>(org.apache.openmeetings.util.ws.IClusterWsMessage&nbsp;msg)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendAll(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">sendAll</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendRoom(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">sendRoom</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendUser(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">sendUser</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ FIELD DETAIL =========== -->
+<li>
+<section class="field-details" id="field-detail">
+<h2>Field Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="ID_TAB_PREFIX">
+<h3>ID_TAB_PREFIX</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ID_TAB_PREFIX</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_TAB_PREFIX">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="ID_ALL">
+<h3>ID_ALL</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ID_ALL</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_ALL">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="ID_ROOM_PREFIX">
+<h3>ID_ROOM_PREFIX</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ID_ROOM_PREFIX</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_ROOM_PREFIX">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="ID_USER_PREFIX">
+<h3>ID_USER_PREFIX</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ID_USER_PREFIX</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getMessage(org.apache.openmeetings.db.entity.user.User,java.util.List,java.util.function.BiConsumer)">
+<h3>getMessage</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">com.github.openjson.JSONObject</span>&nbsp;<span class="element-name">getMessage</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;curUser,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&gt;&nbsp;list,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;com.github.openjson.JSONObject,<wbr><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&gt;&nbsp;uFmt)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="send(org.apache.openmeetings.util.ws.IClusterWsMessage)">
+<h3>send</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">send</span><wbr><span class="parameters">(org.apache.openmeetings.util.ws.IClusterWsMessage&nbsp;msg)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendRoom(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)">
+<h3>sendRoom</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendRoom</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendUser(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)">
+<h3>sendUser</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendUser</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendAll(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)">
+<h3>sendAll</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendAll</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/StrongPasswordValidator.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/StrongPasswordValidator.html
new file mode 100644
index 0000000..6124fcc
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/StrongPasswordValidator.html
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>StrongPasswordValidator (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util, class: StrongPasswordValidator">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/StrongPasswordValidator.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util</a></div>
+<h1 title="Class StrongPasswordValidator" class="title">Class StrongPasswordValidator</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.util.StrongPasswordValidator</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.wicket.util.io.IClusterable</code>, <code>org.apache.wicket.validation.IValidator&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StrongPasswordValidator</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
+implements org.apache.wicket.validation.IValidator&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../serialized-form.html#org.apache.openmeetings.core.util.StrongPasswordValidator">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(boolean,org.apache.openmeetings.db.entity.user.User)" class="member-name-link">StrongPasswordValidator</a><wbr>(boolean&nbsp;web,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.openmeetings.db.entity.user.User)" class="member-name-link">StrongPasswordValidator</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u)</code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setUser(org.apache.openmeetings.db.entity.user.User)" class="member-name-link">setUser</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validate(org.apache.wicket.validation.IValidatable)" class="member-name-link">validate</a><wbr>(org.apache.wicket.validation.IValidatable&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;pass)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(org.apache.openmeetings.db.entity.user.User)">
+<h3>StrongPasswordValidator</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">StrongPasswordValidator</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="&lt;init&gt;(boolean,org.apache.openmeetings.db.entity.user.User)">
+<h3>StrongPasswordValidator</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">StrongPasswordValidator</span><wbr><span class="parameters">(boolean&nbsp;web,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="validate(org.apache.wicket.validation.IValidatable)">
+<h3>validate</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validate</span><wbr><span class="parameters">(org.apache.wicket.validation.IValidatable&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;pass)</span></div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code>validate</code>&nbsp;in interface&nbsp;<code>org.apache.wicket.validation.IValidator&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="setUser(org.apache.openmeetings.db.entity.user.User)">
+<h3>setUser</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setUser</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a>&nbsp;u)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/WebSocketHelper.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/WebSocketHelper.html
new file mode 100644
index 0000000..c50f009
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/WebSocketHelper.html
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WebSocketHelper (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util, class: WebSocketHelper">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WebSocketHelper.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util</a></div>
+<h1 title="Class WebSocketHelper" class="title">Class WebSocketHelper</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.util.WebSocketHelper</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WebSocketHelper</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;T&gt;</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#alwaysTrue()" class="member-name-link">alwaysTrue</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/IApplication.html" title="class or interface in org.apache.openmeetings" class="external-link">IApplication</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getApp()" class="member-name-link">getApp</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#publish(org.apache.openmeetings.util.ws.IClusterWsMessage)" class="member-name-link">publish</a><wbr>(org.apache.openmeetings.util.ws.IClusterWsMessage&nbsp;m)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#send(org.apache.openmeetings.util.ws.IClusterWsMessage)" class="member-name-link">send</a><wbr>(org.apache.openmeetings.util.ws.IClusterWsMessage&nbsp;msg)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendAll(java.lang.String)" class="member-name-link">sendAll</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;m)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,byte%5B%5D)" class="member-name-link">sendClient</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/IWsClient.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">IWsClient</a>&nbsp;omClient,
+ byte[]&nbsp;b)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,com.github.openjson.JSONObject)" class="member-name-link">sendClient</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/IWsClient.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">IWsClient</a>&nbsp;omClient,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">sendClient</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/IWsClient.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">IWsClient</a>&nbsp;omClient,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;m)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendRoom(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">sendRoom</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ com.github.openjson.JSONObject&nbsp;m)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendRoom(java.lang.Long,com.github.openjson.JSONObject,java.util.function.Predicate,java.util.function.BiFunction)" class="member-name-link">sendRoom</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ com.github.openjson.JSONObject&nbsp;m,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/Client.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">Client</a>&gt;&nbsp;check,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;com.github.openjson.JSONObject,<wbr><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/Client.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">Client</a>,<wbr>com.github.openjson.JSONObject&gt;&nbsp;func)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendRoom(org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">sendRoom</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;m)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendRoomOthers(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)" class="member-name-link">sendRoomOthers</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;uid,
+ com.github.openjson.JSONObject&nbsp;m)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendServer(org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">sendServer</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;m)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendUser(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">sendUser</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ com.github.openjson.JSONObject&nbsp;m)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="alwaysTrue()">
+<h3>alwaysTrue</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;T&gt;</span>&nbsp;<span class="element-name">alwaysTrue</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,byte[])">
+<h3>sendClient</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendClient</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/IWsClient.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">IWsClient</a>&nbsp;omClient,
+ byte[]&nbsp;b)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,com.github.openjson.JSONObject)">
+<h3>sendClient</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendClient</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/IWsClient.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">IWsClient</a>&nbsp;omClient,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendClient(org.apache.openmeetings.db.entity.basic.IWsClient,org.apache.openmeetings.db.util.ws.RoomMessage)">
+<h3>sendClient</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendClient</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/IWsClient.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">IWsClient</a>&nbsp;omClient,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="getApp()">
+<h3>getApp</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/IApplication.html" title="class or interface in org.apache.openmeetings" class="external-link">IApplication</a></span>&nbsp;<span class="element-name">getApp</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="send(org.apache.openmeetings.util.ws.IClusterWsMessage)">
+<h3>send</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">send</span><wbr><span class="parameters">(org.apache.openmeetings.util.ws.IClusterWsMessage&nbsp;msg)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendRoom(org.apache.openmeetings.db.util.ws.RoomMessage)">
+<h3>sendRoom</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendRoom</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendServer(org.apache.openmeetings.db.util.ws.RoomMessage)">
+<h3>sendServer</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendServer</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendRoom(java.lang.Long,com.github.openjson.JSONObject)">
+<h3>sendRoom</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendRoom</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ com.github.openjson.JSONObject&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendRoomOthers(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)">
+<h3>sendRoomOthers</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendRoomOthers</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;uid,
+ com.github.openjson.JSONObject&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendUser(java.lang.Long,com.github.openjson.JSONObject)">
+<h3>sendUser</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendUser</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ com.github.openjson.JSONObject&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendAll(java.lang.String)">
+<h3>sendAll</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendAll</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="publish(org.apache.openmeetings.util.ws.IClusterWsMessage)">
+<h3>publish</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">publish</span><wbr><span class="parameters">(@Nonnull
+ org.apache.openmeetings.util.ws.IClusterWsMessage&nbsp;m)</span></div>
+</section>
+</li>
+<li>
+<section class="detail" id="sendRoom(java.lang.Long,com.github.openjson.JSONObject,java.util.function.Predicate,java.util.function.BiFunction)">
+<h3>sendRoom</h3>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendRoom</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ com.github.openjson.JSONObject&nbsp;m,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/Client.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">Client</a>&gt;&nbsp;check,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;com.github.openjson.JSONObject,<wbr><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/Client.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">Client</a>,<wbr>com.github.openjson.JSONObject&gt;&nbsp;func)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/ChatWebSocketHelper.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/ChatWebSocketHelper.html
new file mode 100644
index 0000000..797182d
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/ChatWebSocketHelper.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.ChatWebSocketHelper (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util, class: ChatWebSocketHelper">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.ChatWebSocketHelper" class="title">Uses of Class<br>org.apache.openmeetings.core.util.ChatWebSocketHelper</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.ChatWebSocketHelper</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/StrongPasswordValidator.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/StrongPasswordValidator.html
new file mode 100644
index 0000000..4536ba7
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/StrongPasswordValidator.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.StrongPasswordValidator (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util, class: StrongPasswordValidator">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.StrongPasswordValidator" class="title">Uses of Class<br>org.apache.openmeetings.core.util.StrongPasswordValidator</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.StrongPasswordValidator</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/WebSocketHelper.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/WebSocketHelper.html
new file mode 100644
index 0000000..d467ed5
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/class-use/WebSocketHelper.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.WebSocketHelper (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util, class: WebSocketHelper">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.WebSocketHelper" class="title">Uses of Class<br>org.apache.openmeetings.core.util.WebSocketHelper</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.WebSocketHelper</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-summary.html
new file mode 100644
index 0000000..ddb4ae9
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-summary.html
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.util (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.util" class="title">Package org.apache.openmeetings.core.util</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.util</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="related-package-summary">
+<div class="caption"><span>Related Packages</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</div>
+</li>
+<li>
+<div id="class-summary">
+<div class="caption"><span>Classes</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ChatWebSocketHelper.html" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WebSocketHelper.html" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-tree.html
new file mode 100644
index 0000000..86434e7
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-tree.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.util Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.util">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.util</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.util.<a href="ChatWebSocketHelper.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></li>
+<li class="circle">org.apache.openmeetings.core.util.<a href="StrongPasswordValidator.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a> (implements org.apache.wicket.validation.IValidator&lt;T&gt;)</li>
+<li class="circle">org.apache.openmeetings.core.util.<a href="WebSocketHelper.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-use.html
new file mode 100644
index 0000000..0cf307f
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/package-use.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.util (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.util" class="title">Uses of Package<br>org.apache.openmeetings.core.util</h1>
+</div>
+No usage of org.apache.openmeetings.core.util</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageAll.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageAll.html
new file mode 100644
index 0000000..614fbce
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageAll.html
@@ -0,0 +1,247 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageAll (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, record: WsMessageAll">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageAll.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Record Class WsMessageAll" class="title">Record Class WsMessageAll</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageAll</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">WsMessageAll</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a>
+implements org.apache.openmeetings.util.ws.IClusterWsMessage</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageAll">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">WsMessageAll</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Creates an instance of a <code>WsMessageAll</code> record class.</div>
+</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Indicates whether some other object is "equal to" this one.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns a hash code value for this object.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#msg()" class="member-name-link">msg</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns the value of the <code>msg</code> record component.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns a string representation of this record class.</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(java.lang.String)">
+<h3>WsMessageAll</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageAll</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
+<div class="block">Creates an instance of a <code>WsMessageAll</code> record class.</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>msg</code> - the value for the <code>msg</code> record component</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="toString()">
+<h3>toString</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
+<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Returns:</dt>
+<dd>a string representation of this object</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="hashCode()">
+<h3>hashCode</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
+<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Returns:</dt>
+<dd>a hash code value for this object</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="equals(java.lang.Object)">
+<h3>equals</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
+<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Parameters:</dt>
+<dd><code>o</code> - the object with which to compare</dd>
+<dt>Returns:</dt>
+<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="msg()">
+<h3>msg</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">msg</span>()</div>
+<div class="block">Returns the value of the <code>msg</code> record component.</div>
+<dl class="notes">
+<dt>Returns:</dt>
+<dd>the value of the <code>msg</code> record component</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat.html
new file mode 100644
index 0000000..89002b1
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat.html
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageChat (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, class: WsMessageChat">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageChat.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Class WsMessageChat" class="title">Class WsMessageChat</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageChat</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<dl class="notes">
+<dt>Direct Known Subclasses:</dt>
+<dd><code><a href="WsMessageChat2All.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a></code>, <code><a href="WsMessageChat2User.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WsMessageChat</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
+implements org.apache.openmeetings.util.ws.IClusterWsMessage</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageChat">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">WsMessageChat</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getChatMessage()" class="member-name-link">getChatMessage</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>com.github.openjson.JSONObject</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMsg()" class="member-name-link">getMsg</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)">
+<h3>WsMessageChat</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageChat</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getChatMessage()">
+<h3>getChatMessage</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a></span>&nbsp;<span class="element-name">getChatMessage</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="getMsg()">
+<h3>getMsg</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">com.github.openjson.JSONObject</span>&nbsp;<span class="element-name">getMsg</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat2All.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat2All.html
new file mode 100644
index 0000000..9defdf1
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat2All.html
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageChat2All (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, class: WsMessageChat2All">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageChat2All.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Class WsMessageChat2All" class="title">Class WsMessageChat2All</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageChat</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageChat2All</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WsMessageChat2All</span>
+<span class="extends-implements">extends <a href="WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageChat2All">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">WsMessageChat2All</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-org.apache.openmeetings.core.util.ws.WsMessageChat">Methods inherited from class&nbsp;org.apache.openmeetings.core.util.ws.<a href="WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></h3>
+<code><a href="WsMessageChat.html#getChatMessage()">getChatMessage</a>, <a href="WsMessageChat.html#getMsg()">getMsg</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)">
+<h3>WsMessageChat2All</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageChat2All</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat2User.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat2User.html
new file mode 100644
index 0000000..be3b121
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageChat2User.html
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageChat2User (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, class: WsMessageChat2User">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageChat2User.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Class WsMessageChat2User" class="title">Class WsMessageChat2User</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageChat</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageChat2User</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WsMessageChat2User</span>
+<span class="extends-implements">extends <a href="WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageChat2User">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)" class="member-name-link">WsMessageChat2User</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUserId()" class="member-name-link">getUserId</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-org.apache.openmeetings.core.util.ws.WsMessageChat">Methods inherited from class&nbsp;org.apache.openmeetings.core.util.ws.<a href="WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></h3>
+<code><a href="WsMessageChat.html#getChatMessage()">getChatMessage</a>, <a href="WsMessageChat.html#getMsg()">getMsg</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(java.lang.Long,org.apache.openmeetings.db.entity.basic.ChatMessage,com.github.openjson.JSONObject)">
+<h3>WsMessageChat2User</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageChat2User</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ <a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a>&nbsp;m,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getUserId()">
+<h3>getUserId</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a></span>&nbsp;<span class="element-name">getUserId</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoom.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoom.html
new file mode 100644
index 0000000..d621412
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoom.html
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageRoom (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, class: WsMessageRoom">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageRoom.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Class WsMessageRoom" class="title">Class WsMessageRoom</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageRoom</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<dl class="notes">
+<dt>Direct Known Subclasses:</dt>
+<dd><code><a href="WsMessageRoomOthers.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WsMessageRoom</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
+implements org.apache.openmeetings.util.ws.IClusterWsMessage</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageRoom">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">WsMessageRoom</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>com.github.openjson.JSONObject</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMsg()" class="member-name-link">getMsg</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRoomId()" class="member-name-link">getRoomId</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(java.lang.Long,com.github.openjson.JSONObject)">
+<h3>WsMessageRoom</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageRoom</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getRoomId()">
+<h3>getRoomId</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a></span>&nbsp;<span class="element-name">getRoomId</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="getMsg()">
+<h3>getMsg</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">com.github.openjson.JSONObject</span>&nbsp;<span class="element-name">getMsg</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html
new file mode 100644
index 0000000..31f9b1d
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html
@@ -0,0 +1,247 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageRoomMsg (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, record: WsMessageRoomMsg">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageRoomMsg.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Record Class WsMessageRoomMsg" class="title">Record Class WsMessageRoomMsg</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageRoomMsg</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">WsMessageRoomMsg</span>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;msg)
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a>
+implements org.apache.openmeetings.util.ws.IClusterWsMessage</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageRoomMsg">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.openmeetings.db.util.ws.RoomMessage)" class="member-name-link">WsMessageRoomMsg</a><wbr>(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;msg)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Creates an instance of a <code>WsMessageRoomMsg</code> record class.</div>
+</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Indicates whether some other object is "equal to" this one.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns a hash code value for this object.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#msg()" class="member-name-link">msg</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns the value of the <code>msg</code> record component.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Returns a string representation of this record class.</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(org.apache.openmeetings.db.util.ws.RoomMessage)">
+<h3>WsMessageRoomMsg</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageRoomMsg</span><wbr><span class="parameters">(<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a>&nbsp;msg)</span></div>
+<div class="block">Creates an instance of a <code>WsMessageRoomMsg</code> record class.</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>msg</code> - the value for the <code>msg</code> record component</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="toString()">
+<h3>toString</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
+<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Returns:</dt>
+<dd>a string representation of this object</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="hashCode()">
+<h3>hashCode</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
+<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Returns:</dt>
+<dd>a hash code value for this object</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="equals(java.lang.Object)">
+<h3>equals</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
+<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
+<dt>Parameters:</dt>
+<dd><code>o</code> - the object with which to compare</dd>
+<dt>Returns:</dt>
+<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="msg()">
+<h3>msg</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a></span>&nbsp;<span class="element-name">msg</span>()</div>
+<div class="block">Returns the value of the <code>msg</code> record component.</div>
+<dl class="notes">
+<dt>Returns:</dt>
+<dd>the value of the <code>msg</code> record component</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html
new file mode 100644
index 0000000..5f2ab09
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageRoomOthers (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, class: WsMessageRoomOthers">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageRoomOthers.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Class WsMessageRoomOthers" class="title">Class WsMessageRoomOthers</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance"><a href="WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageRoom</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageRoomOthers</div>
+</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WsMessageRoomOthers</span>
+<span class="extends-implements">extends <a href="WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageRoomOthers">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)" class="member-name-link">WsMessageRoomOthers</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;uid,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUid()" class="member-name-link">getUid</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-org.apache.openmeetings.core.util.ws.WsMessageRoom">Methods inherited from class&nbsp;org.apache.openmeetings.core.util.ws.<a href="WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></h3>
+<code><a href="WsMessageRoom.html#getMsg()">getMsg</a>, <a href="WsMessageRoom.html#getRoomId()">getRoomId</a></code></div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(java.lang.Long,java.lang.String,com.github.openjson.JSONObject)">
+<h3>WsMessageRoomOthers</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageRoomOthers</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;roomId,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;uid,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getUid()">
+<h3>getUid</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getUid</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageUser.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageUser.html
new file mode 100644
index 0000000..f9dd5f5
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/WsMessageUser.html
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>WsMessageUser (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws, class: WsMessageUser">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/WsMessageUser.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></div>
+<h1 title="Class WsMessageUser" class="title">Class WsMessageUser</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.openmeetings.core.util.ws.WsMessageUser</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code>org.apache.openmeetings.util.ws.IClusterWsMessage</code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WsMessageUser</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
+implements org.apache.openmeetings.util.ws.IClusterWsMessage</span></div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../../serialized-form.html#org.apache.openmeetings.core.util.ws.WsMessageUser">Serialized Form</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Long,com.github.openjson.JSONObject)" class="member-name-link">WsMessageUser</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ com.github.openjson.JSONObject&nbsp;msg)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel">
+<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>com.github.openjson.JSONObject</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMsg()" class="member-name-link">getMsg</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUserId()" class="member-name-link">getUserId</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="&lt;init&gt;(java.lang.Long,com.github.openjson.JSONObject)">
+<h3>WsMessageUser</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WsMessageUser</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>&nbsp;userId,
+ com.github.openjson.JSONObject&nbsp;msg)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getUserId()">
+<h3>getUserId</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a></span>&nbsp;<span class="element-name">getUserId</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="getMsg()">
+<h3>getMsg</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">com.github.openjson.JSONObject</span>&nbsp;<span class="element-name">getMsg</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageAll.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageAll.html
new file mode 100644
index 0000000..a28db0b
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageAll.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Record Class org.apache.openmeetings.core.util.ws.WsMessageAll (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, record: WsMessageAll">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Record Class org.apache.openmeetings.core.util.ws.WsMessageAll" class="title">Uses of Record Class<br>org.apache.openmeetings.core.util.ws.WsMessageAll</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.ws.WsMessageAll</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat.html
new file mode 100644
index 0000000..0b864a5
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.ws.WsMessageChat (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, class: WsMessageChat">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.ws.WsMessageChat" class="title">Uses of Class<br>org.apache.openmeetings.core.util.ws.WsMessageChat</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.util.ws">
+<h2>Uses of <a href="../WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a> in <a href="../package-summary.html">org.apache.openmeetings.core.util.ws</a></h2>
+<div class="caption"><span>Subclasses of <a href="../WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a> in <a href="../package-summary.html">org.apache.openmeetings.core.util.ws</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>class&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="../WsMessageChat2All.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
+<div class="col-second odd-row-color"><code><a href="../WsMessageChat2User.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat2All.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat2All.html
new file mode 100644
index 0000000..d2a1d07
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat2All.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.ws.WsMessageChat2All (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, class: WsMessageChat2All">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageChat2All.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.ws.WsMessageChat2All" class="title">Uses of Class<br>org.apache.openmeetings.core.util.ws.WsMessageChat2All</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.ws.WsMessageChat2All</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat2User.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat2User.html
new file mode 100644
index 0000000..1c42861
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageChat2User.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.ws.WsMessageChat2User (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, class: WsMessageChat2User">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageChat2User.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.ws.WsMessageChat2User" class="title">Uses of Class<br>org.apache.openmeetings.core.util.ws.WsMessageChat2User</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.ws.WsMessageChat2User</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoom.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoom.html
new file mode 100644
index 0000000..1cd8873
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoom.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.ws.WsMessageRoom (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, class: WsMessageRoom">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.ws.WsMessageRoom" class="title">Uses of Class<br>org.apache.openmeetings.core.util.ws.WsMessageRoom</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.util.ws">
+<h2>Uses of <a href="../WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a> in <a href="../package-summary.html">org.apache.openmeetings.core.util.ws</a></h2>
+<div class="caption"><span>Subclasses of <a href="../WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a> in <a href="../package-summary.html">org.apache.openmeetings.core.util.ws</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>class&nbsp;</code></div>
+<div class="col-second even-row-color"><code><a href="../WsMessageRoomOthers.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoomMsg.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoomMsg.html
new file mode 100644
index 0000000..255c3e4
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoomMsg.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Record Class org.apache.openmeetings.core.util.ws.WsMessageRoomMsg (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, record: WsMessageRoomMsg">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Record Class org.apache.openmeetings.core.util.ws.WsMessageRoomMsg" class="title">Uses of Record Class<br>org.apache.openmeetings.core.util.ws.WsMessageRoomMsg</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.ws.WsMessageRoomMsg</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoomOthers.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoomOthers.html
new file mode 100644
index 0000000..3a9b9b1
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageRoomOthers.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.ws.WsMessageRoomOthers (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, class: WsMessageRoomOthers">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageRoomOthers.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.ws.WsMessageRoomOthers" class="title">Uses of Class<br>org.apache.openmeetings.core.util.ws.WsMessageRoomOthers</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.ws.WsMessageRoomOthers</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageUser.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageUser.html
new file mode 100644
index 0000000..dcf97a2
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/class-use/WsMessageUser.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Class org.apache.openmeetings.core.util.ws.WsMessageUser (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws, class: WsMessageUser">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../WsMessageUser.html" title="class in org.apache.openmeetings.core.util.ws">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.openmeetings.core.util.ws.WsMessageUser" class="title">Uses of Class<br>org.apache.openmeetings.core.util.ws.WsMessageUser</h1>
+</div>
+No usage of org.apache.openmeetings.core.util.ws.WsMessageUser</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-summary.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-summary.html
new file mode 100644
index 0000000..b2ae081
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-summary.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.util.ws (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: org.apache.openmeetings.core.util.ws">
+<meta name="generator" content="javadoc/PackageWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#package">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Package:&nbsp;</li>
+<li>Description&nbsp;|&nbsp;</li>
+<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
+<li><a href="#class-summary">Classes and Interfaces</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Package org.apache.openmeetings.core.util.ws" class="title">Package org.apache.openmeetings.core.util.ws</h1>
+</div>
+<hr>
+<div class="package-signature">package <span class="element-name">org.apache.openmeetings.core.util.ws</span></div>
+<section class="summary">
+<ul class="summary-list">
+<li>
+<div id="related-package-summary">
+<div class="caption"><span>Related Packages</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="../package-summary.html">org.apache.openmeetings.core.util</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</div>
+</li>
+<li>
+<div id="class-summary">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
+<div id="class-summary.tabpanel" role="tabpanel">
+<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color class-summary class-summary-tab4"><a href="WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab4">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WsMessageChat2All.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WsMessageChat2User.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WsMessageRoomOthers.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WsMessageUser.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-tree.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-tree.html
new file mode 100644
index 0000000..2fcf854
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-tree.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>org.apache.openmeetings.core.util.ws Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="tree: package: org.apache.openmeetings.core.util.ws">
+<meta name="generator" content="javadoc/PackageTreeWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-tree-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.openmeetings.core.util.ws</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageAll.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)</li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageRoomMsg.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)</li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageChat.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)
+<ul>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageChat2All.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a></li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageChat2User.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageRoom.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)
+<ul>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageRoomOthers.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="WsMessageUser.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)</li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-use.html b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-use.html
new file mode 100644
index 0000000..9ed1050
--- /dev/null
+++ b/openmeetings-core/apidocs/org/apache/openmeetings/core/util/ws/package-use.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Uses of Package org.apache.openmeetings.core.util.ws (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="use: package: org.apache.openmeetings.core.util.ws">
+<meta name="generator" content="javadoc/PackageUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="package-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Package org.apache.openmeetings.core.util.ws" class="title">Uses of Package<br>org.apache.openmeetings.core.util.ws</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+<section class="package-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.openmeetings.core.util.ws">
+<div class="caption"><span>Classes in <a href="package-summary.html">org.apache.openmeetings.core.util.ws</a> used by <a href="package-summary.html">org.apache.openmeetings.core.util.ws</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="class-use/WsMessageChat.html#org.apache.openmeetings.core.util.ws">WsMessageChat</a></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><a href="class-use/WsMessageRoom.html#org.apache.openmeetings.core.util.ws">WsMessageRoom</a></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/overview-summary.html b/openmeetings-core/apidocs/overview-summary.html
new file mode 100644
index 0000000..3855d9f
--- /dev/null
+++ b/openmeetings-core/apidocs/overview-summary.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Openmeetings Core 7.1.0-SNAPSHOT API</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="index redirect">
+<meta name="generator" content="javadoc/IndexRedirectWriter">
+<link rel="canonical" href="index.html">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript">window.location.replace('index.html')</script>
+<noscript>
+<meta http-equiv="Refresh" content="0;index.html">
+</noscript>
+</head>
+<body class="index-redirect-page">
+<main role="main">
+<noscript>
+<p>JavaScript is disabled on your browser.</p>
+</noscript>
+<p><a href="index.html">index.html</a></p>
+</main>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/overview-tree.html b/openmeetings-core/apidocs/overview-tree.html
new file mode 100644
index 0000000..9f48192
--- /dev/null
+++ b/openmeetings-core/apidocs/overview-tree.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Class Hierarchy (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="class tree">
+<meta name="generator" content="javadoc/TreeWriter">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="tree-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li class="nav-bar-cell1-rev">Tree</li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html#tree">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 class="title">Hierarchy For All Packages</h1>
+<span class="package-hierarchy-label">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="org/apache/openmeetings/core/converter/package-tree.html">org.apache.openmeetings.core.converter</a>, </li>
+<li><a href="org/apache/openmeetings/core/data/file/package-tree.html">org.apache.openmeetings.core.data.file</a>, </li>
+<li><a href="org/apache/openmeetings/core/documents/package-tree.html">org.apache.openmeetings.core.documents</a>, </li>
+<li><a href="org/apache/openmeetings/core/ldap/package-tree.html">org.apache.openmeetings.core.ldap</a>, </li>
+<li><a href="org/apache/openmeetings/core/mail/package-tree.html">org.apache.openmeetings.core.mail</a>, </li>
+<li><a href="org/apache/openmeetings/core/notifier/package-tree.html">org.apache.openmeetings.core.notifier</a>, </li>
+<li><a href="org/apache/openmeetings/core/rss/package-tree.html">org.apache.openmeetings.core.rss</a>, </li>
+<li><a href="org/apache/openmeetings/core/sip/package-tree.html">org.apache.openmeetings.core.sip</a>, </li>
+<li><a href="org/apache/openmeetings/core/util/package-tree.html">org.apache.openmeetings.core.util</a>, </li>
+<li><a href="org/apache/openmeetings/core/util/ws/package-tree.html">org.apache.openmeetings.core.util.ws</a></li>
+</ul>
+</div>
+<section class="hierarchy">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">BaseConverter</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ImageConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">ImageConverter</a></li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/InterviewConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">InterviewConverter</a> (implements org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a>)</li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/RecordingConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">RecordingConverter</a> (implements org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/IRecordingConverter.html" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a>)</li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/VideoConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">VideoConverter</a></li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/ChatWebSocketHelper.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">ChatWebSocketHelper</a></li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/DocumentConverter.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">DocumentConverter</a></li>
+<li class="circle">org.apache.openmeetings.core.data.file.<a href="org/apache/openmeetings/core/data/file/FileProcessor.html" class="type-name-link" title="class in org.apache.openmeetings.core.data.file">FileProcessor</a></li>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.html" class="type-name-link" title="class in org.apache.openmeetings.core.ldap">LdapLoginManager</a></li>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapOptions.html" class="type-name-link" title="class in org.apache.openmeetings.core.ldap">LdapOptions</a></li>
+<li class="circle">org.apache.openmeetings.core.documents.<a href="org/apache/openmeetings/core/documents/LibraryChartLoader.html" class="type-name-link" title="class in org.apache.openmeetings.core.documents">LibraryChartLoader</a></li>
+<li class="circle">org.apache.openmeetings.core.rss.<a href="org/apache/openmeetings/core/rss/LoadAtomRssFeed.html" class="type-name-link" title="class in org.apache.openmeetings.core.rss">LoadAtomRssFeed</a></li>
+<li class="circle">org.apache.openmeetings.core.mail.<a href="org/apache/openmeetings/core/mail/MailHandler.html" class="type-name-link" title="class in org.apache.openmeetings.core.mail">MailHandler</a></li>
+<li class="circle">org.apache.openmeetings.core.notifier.<a href="org/apache/openmeetings/core/notifier/NotifierService.html" class="type-name-link" title="class in org.apache.openmeetings.core.notifier">NotifierService</a></li>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/BaseConverter.Dimension.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">BaseConverter.Dimension</a></li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageAll</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)</li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomMsg</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)</li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipManager.html" class="type-name-link" title="class in org.apache.openmeetings.core.sip">SipManager</a> (implements org.apache.openmeetings.db.manager.<a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/manager/ISipManager.html" title="class or interface in org.apache.openmeetings.db.manager" class="external-link">ISipManager</a>)</li>
+<li class="circle">org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/SipStackProcessor.html" class="type-name-link" title="class in org.apache.openmeetings.core.sip">SipStackProcessor</a> (implements gov.nist.javax.sip.SipListenerExt)</li>
+<li class="circle">org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">StrongPasswordValidator</a> (implements org.apache.wicket.validation.IValidator&lt;T&gt;)</li>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
+<ul>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/ConversionException.html" class="type-name-link" title="class in org.apache.openmeetings.core.converter">ConversionException</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.util.<a href="org/apache/openmeetings/core/util/WebSocketHelper.html" class="type-name-link" title="class in org.apache.openmeetings.core.util">WebSocketHelper</a></li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)
+<ul>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat2All.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2All</a></li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat2User</a></li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)
+<ul>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoomOthers</a></li>
+</ul>
+</li>
+<li class="circle">org.apache.openmeetings.core.util.ws.<a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html" class="type-name-link" title="class in org.apache.openmeetings.core.util.ws">WsMessageUser</a> (implements org.apache.openmeetings.util.ws.IClusterWsMessage)</li>
+</ul>
+</li>
+</ul>
+</section>
+<section class="hierarchy">
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li class="circle">org.apache.openmeetings.core.notifier.<a href="org/apache/openmeetings/core/notifier/INotifier.html" class="type-name-link" title="interface in org.apache.openmeetings.core.notifier">INotifier</a></li>
+<li class="circle">org.apache.openmeetings.core.converter.<a href="org/apache/openmeetings/core/converter/IRecordingConverter.html" class="type-name-link" title="interface in org.apache.openmeetings.core.converter">IRecordingConverter</a></li>
+<li class="circle">org.apache.openmeetings.core.sip.<a href="org/apache/openmeetings/core/sip/ISipCallbacks.html" class="type-name-link" title="interface in org.apache.openmeetings.core.sip">ISipCallbacks</a></li>
+</ul>
+</section>
+<section class="hierarchy">
+<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
+<ul>
+<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
+<ul>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.AuthType.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.AuthType</a></li>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.GroupMode.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.GroupMode</a></li>
+<li class="circle">org.apache.openmeetings.core.ldap.<a href="org/apache/openmeetings/core/ldap/LdapLoginManager.Provisionning.html" class="type-name-link" title="enum class in org.apache.openmeetings.core.ldap">LdapLoginManager.Provisionning</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/package-search-index.js b/openmeetings-core/apidocs/package-search-index.js
new file mode 100644
index 0000000..9abf28d
--- /dev/null
+++ b/openmeetings-core/apidocs/package-search-index.js
@@ -0,0 +1 @@
+packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"org.apache.openmeetings.core.converter"},{"l":"org.apache.openmeetings.core.data.file"},{"l":"org.apache.openmeetings.core.documents"},{"l":"org.apache.openmeetings.core.ldap"},{"l":"org.apache.openmeetings.core.mail"},{"l":"org.apache.openmeetings.core.notifier"},{"l":"org.apache.openmeetings.core.rss"},{"l":"org.apache.openmeetings.core.sip"},{"l":"org.apache.openmeetings.core.util"},{"l":"org.apache.openmeetings.core.util.ws"}];updateSearchResults();
\ No newline at end of file
diff --git a/openmeetings-core/apidocs/resources/glass.png b/openmeetings-core/apidocs/resources/glass.png
new file mode 100644
index 0000000..a7f591f
--- /dev/null
+++ b/openmeetings-core/apidocs/resources/glass.png
Binary files differ
diff --git a/openmeetings-core/apidocs/resources/x.png b/openmeetings-core/apidocs/resources/x.png
new file mode 100644
index 0000000..30548a7
--- /dev/null
+++ b/openmeetings-core/apidocs/resources/x.png
Binary files differ
diff --git a/openmeetings-core/apidocs/script-dir/jquery-3.6.0.min.js b/openmeetings-core/apidocs/script-dir/jquery-3.6.0.min.js
new file mode 100644
index 0000000..c4c6022
--- /dev/null
+++ b/openmeetings-core/apidocs/script-dir/jquery-3.6.0.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
diff --git a/openmeetings-core/apidocs/script-dir/jquery-ui.min.css b/openmeetings-core/apidocs/script-dir/jquery-ui.min.css
new file mode 100644
index 0000000..d64539c
--- /dev/null
+++ b/openmeetings-core/apidocs/script-dir/jquery-ui.min.css
@@ -0,0 +1,6 @@
+/*! jQuery UI - v1.13.1 - 2022-05-12
+* http://jqueryui.com
+* Includes: core.css, autocomplete.css, menu.css
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}
\ No newline at end of file
diff --git a/openmeetings-core/apidocs/script-dir/jquery-ui.min.js b/openmeetings-core/apidocs/script-dir/jquery-ui.min.js
new file mode 100644
index 0000000..55c2832
--- /dev/null
+++ b/openmeetings-core/apidocs/script-dir/jquery-ui.min.js
@@ -0,0 +1,6 @@
+/*! jQuery UI - v1.13.1 - 2022-05-12
+* http://jqueryui.com
+* Includes: widget.js, position.js, keycode.js, unique-id.js, widgets/autocomplete.js, widgets/menu.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.1";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],l.call(s[n],e)&&void 0!==i&&(x.isPlainObject(i)?t[e]=x.isPlainObject(t[e])?x.widget.extend({},t[e],i):x.widget.extend({},i):t[e]=i);return t},x.widget.bridge=function(o,e){var l=e.prototype.widgetFullName||o;x.fn[o]=function(i){var t="string"==typeof i,s=a.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=x.data(this,l);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?x.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:x.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=x.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=x.data(this,l);t?(t.option(i||{}),t._init&&t._init()):x.data(this,l,new e(i,this))})),n}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=x(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],l=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=l.classesElementLookup[t[s]]||x(),i=n.add?(function(){var i=[];n.element.each(function(t,e){x.map(l.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),l._on(x(i),{remove:"_untrackClassesElement"})}(),x(x.uniqueSort(i.get().concat(n.element.get())))):x(i.not(n.element).get()),l.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=x.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;x.each(s.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(s.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var l,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=l=x(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,l=this.widget()),x.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+a.eventNamespace,s=s[2];s?l.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(o,l){x.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||l:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&x.effects&&x.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){x(this)[o](),i&&i.call(e[0]),t()})}});var s,C,E,o,r,u,h,c,k;x.widget;function T(t,e,i){return[parseFloat(t[0])*(c.test(t[0])?e/100:1),parseFloat(t[1])*(c.test(t[1])?i/100:1)]}function A(t,e){return parseInt(x.css(t,e),10)||0}function W(t){return null!=t&&t===t.window}C=Math.max,E=Math.abs,o=/left|center|right/,r=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,h=/^\w+/,c=/%$/,k=x.fn.position,x.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=x("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?x.position.scrollbarWidth():0,height:e?x.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=x(t||window),i=W(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?x(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},x.fn.position=function(c){if(!c||!c.of)return k.apply(this,arguments);var d,f,m,p,v,t,g="string"==typeof(c=x.extend({},c)).of?x(document).find(c.of):x(c.of),_=x.position.getWithinInfo(c.within),y=x.position.getScrollInfo(_),b=(c.collision||"flip").split(" "),w={},e=9===(t=(e=g)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:W(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return g[0].preventDefault&&(c.at="left top"),f=e.width,m=e.height,v=x.extend({},p=e.offset),x.each(["my","at"],function(){var t,e,i=(c[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",t=u.exec(i[0]),e=u.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],c[this]=[h.exec(i[0])[0],h.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===c.at[0]?v.left+=f:"center"===c.at[0]&&(v.left+=f/2),"bottom"===c.at[1]?v.top+=m:"center"===c.at[1]&&(v.top+=m/2),d=T(w.at,f,m),v.left+=d[0],v.top+=d[1],this.each(function(){var i,t,l=x(this),a=l.outerWidth(),r=l.outerHeight(),e=A(this,"marginLeft"),s=A(this,"marginTop"),n=a+e+A(this,"marginRight")+y.width,o=r+s+A(this,"marginBottom")+y.height,u=x.extend({},v),h=T(w.my,l.outerWidth(),l.outerHeight());"right"===c.my[0]?u.left-=a:"center"===c.my[0]&&(u.left-=a/2),"bottom"===c.my[1]?u.top-=r:"center"===c.my[1]&&(u.top-=r/2),u.left+=h[0],u.top+=h[1],i={marginLeft:e,marginTop:s},x.each(["left","top"],function(t,e){x.ui.position[b[t]]&&x.ui.position[b[t]][e](u,{targetWidth:f,targetHeight:m,elemWidth:a,elemHeight:r,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+h[0],d[1]+h[1]],my:c.my,at:c.at,within:_,elem:l})}),c.using&&(t=function(t){var e=p.left-u.left,i=e+f-a,s=p.top-u.top,n=s+m-r,o={target:{element:g,left:p.left,top:p.top,width:f,height:m},element:{element:l,left:u.left,top:u.top,width:a,height:r},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};f<a&&E(e+i)<f&&(o.horizontal="center"),m<r&&E(s+n)<m&&(o.vertical="middle"),C(E(e),E(i))>C(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0<l&&a<=0?(i=t.left+l+e.collisionWidth-n-s,t.left+=l-i):t.left=!(0<a&&l<=0)&&a<l?s+n-e.collisionWidth:s:0<l?t.left+=l:0<a?t.left-=a:t.left=C(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,l=s-o,a=o+e.collisionHeight-n-s;e.collisionHeight>n?0<l&&a<=0?(i=t.top+l+e.collisionHeight-n-s,t.top+=l-i):t.top=!(0<a&&l<=0)&&a<l?s+n-e.collisionHeight:s:0<l?t.top+=l:0<a?t.top-=a:t.top=C(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,l=t.left-e.collisionPosition.marginLeft,a=l-o,r=l+e.collisionWidth-n-o,u="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,l=-2*e.offset[0];a<0?((s=t.left+u+i+l+e.collisionWidth-n-s)<0||s<E(a))&&(t.left+=u+i+l):0<r&&(0<(o=t.left-e.collisionPosition.marginLeft+u+i+l-o)||E(o)<r)&&(t.left+=u+i+l)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,l=t.top-e.collisionPosition.marginTop,a=l-o,r=l+e.collisionHeight-n-o,u="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,l=-2*e.offset[1];a<0?((s=t.top+u+i+l+e.collisionHeight-n-s)<0||s<E(a))&&(t.top+=u+i+l):0<r&&(0<(o=t.top-e.collisionPosition.marginTop+u+i+l-o)||E(o)<r)&&(t.top+=u+i+l)}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}};var t;x.ui.position,x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},x.fn.extend({uniqueId:(t=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}}),x.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=!(i=i||e.body).nodeName?e.body:i},x.widget("ui.menu",{version:"1.13.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=x.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:x(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!x(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===x.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=x(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===x.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=x(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||x(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(x(this).children(".ui-menu-item-wrapper").text()))})}});x.widget("ui.autocomplete",{version:"1.13.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("<div>").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:x.map(t,function(t){return"string"==typeof t?{label:t,value:t}:x.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(x.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;x.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return x("<li>").append(x("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("<div>").text(e))},100))}});x.ui.autocomplete});
\ No newline at end of file
diff --git a/openmeetings-core/apidocs/script.js b/openmeetings-core/apidocs/script.js
new file mode 100644
index 0000000..864989c
--- /dev/null
+++ b/openmeetings-core/apidocs/script.js
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+var moduleSearchIndex;
+var packageSearchIndex;
+var typeSearchIndex;
+var memberSearchIndex;
+var tagSearchIndex;
+function loadScripts(doc, tag) {
+    createElem(doc, tag, 'search.js');
+
+    createElem(doc, tag, 'module-search-index.js');
+    createElem(doc, tag, 'package-search-index.js');
+    createElem(doc, tag, 'type-search-index.js');
+    createElem(doc, tag, 'member-search-index.js');
+    createElem(doc, tag, 'tag-search-index.js');
+}
+
+function createElem(doc, tag, path) {
+    var script = doc.createElement(tag);
+    var scriptElement = doc.getElementsByTagName(tag)[0];
+    script.src = pathtoroot + path;
+    scriptElement.parentNode.insertBefore(script, scriptElement);
+}
+
+function show(tableId, selected, columns) {
+    if (tableId !== selected) {
+        document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
+            .forEach(function(elem) {
+                elem.style.display = 'none';
+            });
+    }
+    document.querySelectorAll('div.' + selected)
+        .forEach(function(elem, index) {
+            elem.style.display = '';
+            var isEvenRow = index % (columns * 2) < columns;
+            elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor);
+            elem.classList.add(isEvenRow ? evenRowColor : oddRowColor);
+        });
+    updateTabs(tableId, selected);
+}
+
+function updateTabs(tableId, selected) {
+    document.querySelector('div#' + tableId +' .summary-table')
+        .setAttribute('aria-labelledby', selected);
+    document.querySelectorAll('button[id^="' + tableId + '"]')
+        .forEach(function(tab, index) {
+            if (selected === tab.id || (tableId === selected && index === 0)) {
+                tab.className = activeTableTab;
+                tab.setAttribute('aria-selected', true);
+                tab.setAttribute('tabindex',0);
+            } else {
+                tab.className = tableTab;
+                tab.setAttribute('aria-selected', false);
+                tab.setAttribute('tabindex',-1);
+            }
+        });
+}
+
+function switchTab(e) {
+    var selected = document.querySelector('[aria-selected=true]');
+    if (selected) {
+        if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
+            // left or up arrow key pressed: move focus to previous tab
+            selected.previousSibling.click();
+            selected.previousSibling.focus();
+            e.preventDefault();
+        } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
+            // right or down arrow key pressed: move focus to next tab
+            selected.nextSibling.click();
+            selected.nextSibling.focus();
+            e.preventDefault();
+        }
+    }
+}
+
+var updateSearchResults = function() {};
+
+function indexFilesLoaded() {
+    return moduleSearchIndex
+        && packageSearchIndex
+        && typeSearchIndex
+        && memberSearchIndex
+        && tagSearchIndex;
+}
+
+// Workaround for scroll position not being included in browser history (8249133)
+document.addEventListener("DOMContentLoaded", function(e) {
+    var contentDiv = document.querySelector("div.flex-content");
+    window.addEventListener("popstate", function(e) {
+        if (e.state !== null) {
+            contentDiv.scrollTop = e.state;
+        }
+    });
+    window.addEventListener("hashchange", function(e) {
+        history.replaceState(contentDiv.scrollTop, document.title);
+    });
+    contentDiv.addEventListener("scroll", function(e) {
+        var timeoutID;
+        if (!timeoutID) {
+            timeoutID = setTimeout(function() {
+                history.replaceState(contentDiv.scrollTop, document.title);
+                timeoutID = null;
+            }, 100);
+        }
+    });
+    if (!location.hash) {
+        history.replaceState(contentDiv.scrollTop, document.title);
+    }
+});
diff --git a/openmeetings-core/apidocs/search.js b/openmeetings-core/apidocs/search.js
new file mode 100644
index 0000000..db3b2f4
--- /dev/null
+++ b/openmeetings-core/apidocs/search.js
@@ -0,0 +1,354 @@
+/*
+ * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+var noResult = {l: "No results found"};
+var loading = {l: "Loading search index..."};
+var catModules = "Modules";
+var catPackages = "Packages";
+var catTypes = "Classes and Interfaces";
+var catMembers = "Members";
+var catSearchTags = "Search Tags";
+var highlight = "<span class=\"result-highlight\">$&</span>";
+var searchPattern = "";
+var fallbackPattern = "";
+var RANKING_THRESHOLD = 2;
+var NO_MATCH = 0xffff;
+var MIN_RESULTS = 3;
+var MAX_RESULTS = 500;
+var UNNAMED = "<Unnamed>";
+function escapeHtml(str) {
+    return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
+}
+function getHighlightedText(item, matcher, fallbackMatcher) {
+    var escapedItem = escapeHtml(item);
+    var highlighted = escapedItem.replace(matcher, highlight);
+    if (highlighted === escapedItem) {
+        highlighted = escapedItem.replace(fallbackMatcher, highlight)
+    }
+    return highlighted;
+}
+function getURLPrefix(ui) {
+    var urlPrefix="";
+    var slash = "/";
+    if (ui.item.category === catModules) {
+        return ui.item.l + slash;
+    } else if (ui.item.category === catPackages && ui.item.m) {
+        return ui.item.m + slash;
+    } else if (ui.item.category === catTypes || ui.item.category === catMembers) {
+        if (ui.item.m) {
+            urlPrefix = ui.item.m + slash;
+        } else {
+            $.each(packageSearchIndex, function(index, item) {
+                if (item.m && ui.item.p === item.l) {
+                    urlPrefix = item.m + slash;
+                }
+            });
+        }
+    }
+    return urlPrefix;
+}
+function createSearchPattern(term) {
+    var pattern = "";
+    var isWordToken = false;
+    term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) {
+        if (index > 0) {
+            // whitespace between identifiers is significant
+            pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*";
+        }
+        var tokens = w.split(/(?=[A-Z,.()<>[\/])/);
+        for (var i = 0; i < tokens.length; i++) {
+            var s = tokens[i];
+            if (s === "") {
+                continue;
+            }
+            pattern += $.ui.autocomplete.escapeRegex(s);
+            isWordToken =  /\w$/.test(s);
+            if (isWordToken) {
+                pattern += "([a-z0-9_$<>\\[\\]]*?)";
+            }
+        }
+    });
+    return pattern;
+}
+function createMatcher(pattern, flags) {
+    var isCamelCase = /[A-Z]/.test(pattern);
+    return new RegExp(pattern, flags + (isCamelCase ? "" : "i"));
+}
+var watermark = 'Search';
+$(function() {
+    var search = $("#search-input");
+    var reset = $("#reset-button");
+    search.val('');
+    search.prop("disabled", false);
+    reset.prop("disabled", false);
+    search.val(watermark).addClass('watermark');
+    search.blur(function() {
+        if ($(this).val().length === 0) {
+            $(this).val(watermark).addClass('watermark');
+        }
+    });
+    search.on('click keydown paste', function() {
+        if ($(this).val() === watermark) {
+            $(this).val('').removeClass('watermark');
+        }
+    });
+    reset.click(function() {
+        search.val('').focus();
+    });
+    search.focus()[0].setSelectionRange(0, 0);
+});
+$.widget("custom.catcomplete", $.ui.autocomplete, {
+    _create: function() {
+        this._super();
+        this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
+    },
+    _renderMenu: function(ul, items) {
+        var rMenu = this;
+        var currentCategory = "";
+        rMenu.menu.bindings = $();
+        $.each(items, function(index, item) {
+            var li;
+            if (item.category && item.category !== currentCategory) {
+                ul.append("<li class=\"ui-autocomplete-category\">" + item.category + "</li>");
+                currentCategory = item.category;
+            }
+            li = rMenu._renderItemData(ul, item);
+            if (item.category) {
+                li.attr("aria-label", item.category + " : " + item.l);
+                li.attr("class", "result-item");
+            } else {
+                li.attr("aria-label", item.l);
+                li.attr("class", "result-item");
+            }
+        });
+    },
+    _renderItem: function(ul, item) {
+        var label = "";
+        var matcher = createMatcher(escapeHtml(searchPattern), "g");
+        var fallbackMatcher = new RegExp(fallbackPattern, "gi")
+        if (item.category === catModules) {
+            label = getHighlightedText(item.l, matcher, fallbackMatcher);
+        } else if (item.category === catPackages) {
+            label = getHighlightedText(item.l, matcher, fallbackMatcher);
+        } else if (item.category === catTypes) {
+            label = (item.p && item.p !== UNNAMED)
+                    ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher)
+                    : getHighlightedText(item.l, matcher, fallbackMatcher);
+        } else if (item.category === catMembers) {
+            label = (item.p && item.p !== UNNAMED)
+                    ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher)
+                    : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher);
+        } else if (item.category === catSearchTags) {
+            label = getHighlightedText(item.l, matcher, fallbackMatcher);
+        } else {
+            label = item.l;
+        }
+        var li = $("<li/>").appendTo(ul);
+        var div = $("<div/>").appendTo(li);
+        if (item.category === catSearchTags && item.h) {
+            if (item.d) {
+                div.html(label + "<span class=\"search-tag-holder-result\"> (" + item.h + ")</span><br><span class=\"search-tag-desc-result\">"
+                                + item.d + "</span><br>");
+            } else {
+                div.html(label + "<span class=\"search-tag-holder-result\"> (" + item.h + ")</span>");
+            }
+        } else {
+            if (item.m) {
+                div.html(item.m + "/" + label);
+            } else {
+                div.html(label);
+            }
+        }
+        return li;
+    }
+});
+function rankMatch(match, category) {
+    if (!match) {
+        return NO_MATCH;
+    }
+    var index = match.index;
+    var input = match.input;
+    var leftBoundaryMatch = 2;
+    var periferalMatch = 0;
+    // make sure match is anchored on a left word boundary
+    if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) {
+        leftBoundaryMatch = 0;
+    } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) {
+        leftBoundaryMatch = 1;
+    }
+    var matchEnd = index + match[0].length;
+    var leftParen = input.indexOf("(");
+    var endOfName = leftParen > -1 ? leftParen : input.length;
+    // exclude peripheral matches
+    if (category !== catModules && category !== catSearchTags) {
+        var delim = category === catPackages ? "/" : ".";
+        if (leftParen > -1 && leftParen < index) {
+            periferalMatch += 2;
+        } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) {
+            periferalMatch += 2;
+        }
+    }
+    var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match
+    for (var i = 1; i < match.length; i++) {
+        // lower ranking if parts of the name are missing
+        if (match[i])
+            delta += match[i].length;
+    }
+    if (category === catTypes) {
+        // lower ranking if a type name contains unmatched camel-case parts
+        if (/[A-Z]/.test(input.substring(matchEnd)))
+            delta += 5;
+        if (/[A-Z]/.test(input.substring(0, index)))
+            delta += 5;
+    }
+    return leftBoundaryMatch + periferalMatch + (delta / 200);
+
+}
+function doSearch(request, response) {
+    var result = [];
+    searchPattern = createSearchPattern(request.term);
+    fallbackPattern = createSearchPattern(request.term.toLowerCase());
+    if (searchPattern === "") {
+        return this.close();
+    }
+    var camelCaseMatcher = createMatcher(searchPattern, "");
+    var fallbackMatcher = new RegExp(fallbackPattern, "i");
+
+    function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) {
+        if (indexArray) {
+            var newResults = [];
+            $.each(indexArray, function (i, item) {
+                item.category = category;
+                var ranking = rankMatch(matcher.exec(nameFunc(item)), category);
+                if (ranking < RANKING_THRESHOLD) {
+                    newResults.push({ranking: ranking, item: item});
+                }
+                return newResults.length <= MAX_RESULTS;
+            });
+            return newResults.sort(function(e1, e2) {
+                return e1.ranking - e2.ranking;
+            }).map(function(e) {
+                return e.item;
+            });
+        }
+        return [];
+    }
+    function searchIndex(indexArray, category, nameFunc) {
+        var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc);
+        result = result.concat(primaryResults);
+        if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) {
+            var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc);
+            result = result.concat(secondaryResults.filter(function (item) {
+                return primaryResults.indexOf(item) === -1;
+            }));
+        }
+    }
+
+    searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; });
+    searchIndex(packageSearchIndex, catPackages, function(item) {
+        return (item.m && request.term.indexOf("/") > -1)
+            ? (item.m + "/" + item.l) : item.l;
+    });
+    searchIndex(typeSearchIndex, catTypes, function(item) {
+        return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l;
+    });
+    searchIndex(memberSearchIndex, catMembers, function(item) {
+        return request.term.indexOf(".") > -1
+            ? item.p + "." + item.c + "." + item.l : item.l;
+    });
+    searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; });
+
+    if (!indexFilesLoaded()) {
+        updateSearchResults = function() {
+            doSearch(request, response);
+        }
+        result.unshift(loading);
+    } else {
+        updateSearchResults = function() {};
+    }
+    response(result);
+}
+$(function() {
+    $("#search-input").catcomplete({
+        minLength: 1,
+        delay: 300,
+        source: doSearch,
+        response: function(event, ui) {
+            if (!ui.content.length) {
+                ui.content.push(noResult);
+            } else {
+                $("#search-input").empty();
+            }
+        },
+        autoFocus: true,
+        focus: function(event, ui) {
+            return false;
+        },
+        position: {
+            collision: "flip"
+        },
+        select: function(event, ui) {
+            if (ui.item.category) {
+                var url = getURLPrefix(ui);
+                if (ui.item.category === catModules) {
+                    url += "module-summary.html";
+                } else if (ui.item.category === catPackages) {
+                    if (ui.item.u) {
+                        url = ui.item.u;
+                    } else {
+                        url += ui.item.l.replace(/\./g, '/') + "/package-summary.html";
+                    }
+                } else if (ui.item.category === catTypes) {
+                    if (ui.item.u) {
+                        url = ui.item.u;
+                    } else if (ui.item.p === UNNAMED) {
+                        url += ui.item.l + ".html";
+                    } else {
+                        url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html";
+                    }
+                } else if (ui.item.category === catMembers) {
+                    if (ui.item.p === UNNAMED) {
+                        url += ui.item.c + ".html" + "#";
+                    } else {
+                        url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#";
+                    }
+                    if (ui.item.u) {
+                        url += ui.item.u;
+                    } else {
+                        url += ui.item.l;
+                    }
+                } else if (ui.item.category === catSearchTags) {
+                    url += ui.item.u;
+                }
+                if (top !== window) {
+                    parent.classFrame.location = pathtoroot + url;
+                } else {
+                    window.location.href = pathtoroot + url;
+                }
+                $("#search-input").focus();
+            }
+        }
+    });
+});
diff --git a/openmeetings-core/apidocs/serialized-form.html b/openmeetings-core/apidocs/serialized-form.html
new file mode 100644
index 0000000..da943d4
--- /dev/null
+++ b/openmeetings-core/apidocs/serialized-form.html
@@ -0,0 +1,300 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Serialized Form (Openmeetings Core 7.1.0-SNAPSHOT API)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="serialized forms">
+<meta name="generator" content="javadoc/SerializedFormWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="serialized-form-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html#serialized-form">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Serialized Form" class="title">Serialized Form</h1>
+</div>
+<ul class="block-list">
+<li>
+<section class="serialized-package-container">
+<h2 title="Package">Package&nbsp;<a href="org/apache/openmeetings/core/converter/package-summary.html">org.apache.openmeetings.core.converter</a></h2>
+<ul class="block-list">
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.converter.ConversionException">
+<h3>Exception&nbsp;<a href="org/apache/openmeetings/core/converter/ConversionException.html" title="class in org.apache.openmeetings.core.converter">org.apache.openmeetings.core.converter.ConversionException</a></h3>
+<div class="type-signature">class ConversionException extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-package-container">
+<h2 title="Package">Package&nbsp;<a href="org/apache/openmeetings/core/util/package-summary.html">org.apache.openmeetings.core.util</a></h2>
+<ul class="block-list">
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.StrongPasswordValidator">
+<h3>Class&nbsp;<a href="org/apache/openmeetings/core/util/StrongPasswordValidator.html" title="class in org.apache.openmeetings.core.util">org.apache.openmeetings.core.util.StrongPasswordValidator</a></h3>
+<div class="type-signature">class StrongPasswordValidator extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>u</h5>
+<pre><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/user/User.html" title="class or interface in org.apache.openmeetings.db.entity.user" class="external-link">User</a> u</pre>
+</li>
+<li class="block-list">
+<h5>web</h5>
+<pre>boolean web</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-package-container">
+<h2 title="Package">Package&nbsp;<a href="org/apache/openmeetings/core/util/ws/package-summary.html">org.apache.openmeetings.core.util.ws</a></h2>
+<ul class="block-list">
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageAll">
+<h3>Record Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageAll.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageAll</a></h3>
+<div class="type-signature">class WsMessageAll extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>msg</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> msg</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageChat">
+<h3>Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageChat</a></h3>
+<div class="type-signature">class WsMessageChat extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>m</h5>
+<pre><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/entity/basic/ChatMessage.html" title="class or interface in org.apache.openmeetings.db.entity.basic" class="external-link">ChatMessage</a> m</pre>
+</li>
+<li class="block-list">
+<h5>msg</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> msg</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageChat2All">
+<h3>Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageChat2All.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageChat2All</a></h3>
+<div class="type-signature">class WsMessageChat2All extends <a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageChat2User">
+<h3>Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageChat2User.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageChat2User</a></h3>
+<div class="type-signature">class WsMessageChat2User extends <a href="org/apache/openmeetings/core/util/ws/WsMessageChat.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageChat</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>userId</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a> userId</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageRoom">
+<h3>Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageRoom</a></h3>
+<div class="type-signature">class WsMessageRoom extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>msg</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> msg</pre>
+</li>
+<li class="block-list">
+<h5>roomId</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a> roomId</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageRoomMsg">
+<h3>Record Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomMsg.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageRoomMsg</a></h3>
+<div class="type-signature">class WsMessageRoomMsg extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>msg</h5>
+<pre><a href="https://openmeetings.apache.org/openmeetings-db/apidocs/org/apache/openmeetings/db/util/ws/RoomMessage.html" title="class or interface in org.apache.openmeetings.db.util.ws" class="external-link">RoomMessage</a> msg</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageRoomOthers">
+<h3>Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageRoomOthers.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageRoomOthers</a></h3>
+<div class="type-signature">class WsMessageRoomOthers extends <a href="org/apache/openmeetings/core/util/ws/WsMessageRoom.html" title="class in org.apache.openmeetings.core.util.ws">WsMessageRoom</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>uid</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> uid</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<li>
+<section class="serialized-class-details" id="org.apache.openmeetings.core.util.ws.WsMessageUser">
+<h3>Class&nbsp;<a href="org/apache/openmeetings/core/util/ws/WsMessageUser.html" title="class in org.apache.openmeetings.core.util.ws">org.apache.openmeetings.core.util.ws.WsMessageUser</a></h3>
+<div class="type-signature">class WsMessageUser extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
+<dl class="name-value">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+<ul class="block-list">
+<li>
+<section class="detail">
+<h4>Serialized Fields</h4>
+<ul class="block-list">
+<li class="block-list">
+<h5>msg</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> msg</pre>
+</li>
+<li class="block-list">
+<h5>userId</h5>
+<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a> userId</pre>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2012&#x2013;2023 <a href="https://apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/openmeetings-core/apidocs/stylesheet.css b/openmeetings-core/apidocs/stylesheet.css
new file mode 100644
index 0000000..4a576bd
--- /dev/null
+++ b/openmeetings-core/apidocs/stylesheet.css
@@ -0,0 +1,869 @@
+/*
+ * Javadoc style sheet
+ */
+
+@import url('resources/fonts/dejavu.css');
+
+/*
+ * Styles for individual HTML elements.
+ *
+ * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
+ * HTML element throughout the page.
+ */
+
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size:14px;
+    margin:0;
+    padding:0;
+    height:100%;
+    width:100%;
+}
+iframe {
+    margin:0;
+    padding:0;
+    height:100%;
+    width:100%;
+    overflow-y:scroll;
+    border:none;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4A6782;
+}
+a[href]:hover, a[href]:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a[name] {
+    color:#353833;
+}
+pre {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+}
+h1 {
+    font-size:20px;
+}
+h2 {
+    font-size:18px;
+}
+h3 {
+    font-size:16px;
+}
+h4 {
+    font-size:15px;
+}
+h5 {
+    font-size:14px;
+}
+h6 {
+    font-size:13px;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-family:'DejaVu Sans Mono', monospace;
+}
+:not(h1, h2, h3, h4, h5, h6) > code,
+:not(h1, h2, h3, h4, h5, h6) > tt {
+    font-size:14px;
+    padding-top:4px;
+    margin-top:8px;
+    line-height:1.4em;
+}
+dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+}
+.summary-table dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    vertical-align:top;
+    padding-top:4px;
+}
+sup {
+    font-size:8px;
+}
+button {
+    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size: 14px;
+}
+/*
+ * Styles for HTML generated by javadoc.
+ *
+ * These are style classes that are used by the standard doclet to generate HTML documentation.
+ */
+
+/*
+ * Styles for document title and copyright.
+ */
+.clear {
+    clear:both;
+    height:0;
+    overflow:hidden;
+}
+.about-language {
+    float:right;
+    padding:0 21px 8px 8px;
+    font-size:11px;
+    margin-top:-9px;
+    height:2.9em;
+}
+.legal-copy {
+    margin-left:.5em;
+}
+.tab {
+    background-color:#0066FF;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+ * Styles for navigation bar.
+ */
+@media screen {
+    .flex-box {
+        position:fixed;
+        display:flex;
+        flex-direction:column;
+        height: 100%;
+        width: 100%;
+    }
+    .flex-header {
+        flex: 0 0 auto;
+    }
+    .flex-content {
+        flex: 1 1 auto;
+        overflow-y: auto;
+    }
+}
+.top-nav {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    min-height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px;
+}
+.sub-nav {
+    background-color:#dee3e9;
+    float:left;
+    width:100%;
+    overflow:hidden;
+    font-size:12px;
+}
+.sub-nav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+    text-transform:uppercase;
+}
+.sub-nav .nav-list {
+    padding-top:5px;
+}
+ul.nav-list {
+    display:block;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.sub-nav-list {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.nav-list li {
+    list-style:none;
+    float:left;
+    padding: 5px 6px;
+    text-transform:uppercase;
+}
+.sub-nav .nav-list-search {
+    float:right;
+    margin:0 0 0 0;
+    padding:5px 6px;
+    clear:none;
+}
+.nav-list-search label {
+    position:relative;
+    right:-16px;
+}
+ul.sub-nav-list li {
+    list-style:none;
+    float:left;
+    padding-top:10px;
+}
+.top-nav a:link, .top-nav a:active, .top-nav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+    text-transform:uppercase;
+}
+.top-nav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+    text-transform:uppercase;
+}
+.nav-bar-cell1-rev {
+    background-color:#F8981D;
+    color:#253441;
+    margin: auto 5px;
+}
+.skip-nav {
+    position:absolute;
+    top:auto;
+    left:-9999px;
+    overflow:hidden;
+}
+/*
+ * Hide navigation links and search box in print layout
+ */
+@media print {
+    ul.nav-list, div.sub-nav  {
+        display:none;
+    }
+}
+/*
+ * Styles for page header and footer.
+ */
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.sub-title {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 15px 0;
+    padding:0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:13px;
+}
+/*
+ * Styles for headings.
+ */
+body.class-declaration-page .summary h2,
+body.class-declaration-page .details h2,
+body.class-use-page  h2,
+body.module-declaration-page  .block-list h2 {
+    font-style: italic;
+    padding:0;
+    margin:15px 0;
+}
+body.class-declaration-page .summary h3,
+body.class-declaration-page .details h3,
+body.class-declaration-page .summary .inherited-list h2 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+/*
+ * Styles for page layout containers.
+ */
+main {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+dl.notes > dt {
+    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size:12px;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+dl.notes > dd {
+    margin:5px 10px 10px 0;
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+dl.name-value > dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+dl.name-value > dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+ * Styles for lists.
+ */
+li.circle {
+    list-style:circle;
+}
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+div.inheritance {
+    margin:0;
+    padding:0;
+}
+div.inheritance div.inheritance {
+    margin-left:2em;
+}
+ul.block-list,
+ul.details-list,
+ul.member-list,
+ul.summary-list {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.block-list > li,
+ul.details-list > li,
+ul.member-list > li,
+ul.summary-list > li {
+    list-style:none;
+    margin-bottom:15px;
+    line-height:1.4;
+}
+.summary-table dl, .summary-table dl dt, .summary-table dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+ul.see-list, ul.see-list-long {
+    padding-left: 0;
+    list-style: none;
+}
+ul.see-list li {
+    display: inline;
+}
+ul.see-list li:not(:last-child):after,
+ul.see-list-long li:not(:last-child):after {
+    content: ", ";
+    white-space: pre-wrap;
+}
+/*
+ * Styles for tables.
+ */
+.summary-table, .details-table {
+    width:100%;
+    border-spacing:0;
+    border-left:1px solid #EEE;
+    border-right:1px solid #EEE;
+    border-bottom:1px solid #EEE;
+    padding:0;
+}
+.caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#253441;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0;
+    padding-top:10px;
+    padding-left:1px;
+    margin:0;
+    white-space:pre;
+}
+.caption a:link, .caption a:visited {
+    color:#1f389c;
+}
+.caption a:hover,
+.caption a:active {
+    color:#FFFFFF;
+}
+.caption span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    padding-bottom:7px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    border: none;
+    height:16px;
+}
+div.table-tabs {
+    padding:10px 0 0 1px;
+    margin:0;
+}
+div.table-tabs > button {
+   border: none;
+   cursor: pointer;
+   padding: 5px 12px 7px 12px;
+   font-weight: bold;
+   margin-right: 3px;
+}
+div.table-tabs > button.active-table-tab {
+   background: #F8981D;
+   color: #253441;
+}
+div.table-tabs > button.table-tab {
+   background: #4D7A97;
+   color: #FFFFFF;
+}
+.two-column-summary {
+    display: grid;
+    grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+}
+.three-column-summary {
+    display: grid;
+    grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto);
+}
+.four-column-summary {
+    display: grid;
+    grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto);
+}
+@media screen and (max-width: 600px) {
+    .two-column-summary {
+        display: grid;
+        grid-template-columns: 1fr;
+    }
+}
+@media screen and (max-width: 800px) {
+    .three-column-summary {
+        display: grid;
+        grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
+    }
+    .three-column-summary .col-last {
+        grid-column-end: span 2;
+    }
+}
+@media screen and (max-width: 1000px) {
+    .four-column-summary {
+        display: grid;
+        grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+    }
+}
+.summary-table > div, .details-table > div {
+    text-align:left;
+    padding: 8px 3px 3px 7px;
+}
+.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
+    vertical-align:top;
+    padding-right:0;
+    padding-top:8px;
+    padding-bottom:3px;
+}
+.table-header {
+    background:#dee3e9;
+    font-weight: bold;
+}
+.col-first, .col-first {
+    font-size:13px;
+}
+.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
+    font-size:13px;
+}
+.col-first, .col-second, .col-constructor-name {
+    vertical-align:top;
+    overflow: auto;
+}
+.col-last {
+    white-space:normal;
+}
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-constructor-name a:link, .col-constructor-name a:visited,
+.col-summary-item-name a:link, .col-summary-item-name a:visited,
+.constant-values-container a:link, .constant-values-container a:visited,
+.all-classes-container a:link, .all-classes-container a:visited,
+.all-packages-container a:link, .all-packages-container a:visited {
+    font-weight:bold;
+}
+.table-sub-heading-color {
+    background-color:#EEEEFF;
+}
+.even-row-color, .even-row-color .table-header {
+    background-color:#FFFFFF;
+}
+.odd-row-color, .odd-row-color .table-header {
+    background-color:#EEEEEF;
+}
+/*
+ * Styles for contents.
+ */
+.deprecated-content {
+    margin:0;
+    padding:10px 0;
+}
+div.block {
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+.col-last div {
+    padding-top:0;
+}
+.col-last a {
+    padding-bottom:3px;
+}
+.module-signature,
+.package-signature,
+.type-signature,
+.member-signature {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    margin:14px 0;
+    white-space: pre-wrap;
+}
+.module-signature,
+.package-signature,
+.type-signature {
+    margin-top: 0;
+}
+.member-signature .type-parameters-long,
+.member-signature .parameters,
+.member-signature .exceptions {
+    display: inline-block;
+    vertical-align: top;
+    white-space: pre;
+}
+.member-signature .type-parameters {
+    white-space: normal;
+}
+/*
+ * Styles for formatting effect.
+ */
+.source-line-no {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:10px;
+}
+.block {
+    display:block;
+    margin:0 10px 5px 0;
+    color:#474747;
+}
+.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link,
+.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type,
+.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
+    font-weight:bold;
+}
+.deprecation-comment, .help-footnote, .preview-comment {
+    font-style:italic;
+}
+.deprecation-block {
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+    border-style:solid;
+    border-width:thin;
+    border-radius:10px;
+    padding:10px;
+    margin-bottom:10px;
+    margin-right:10px;
+    display:inline-block;
+}
+.preview-block {
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+    border-style:solid;
+    border-width:thin;
+    border-radius:10px;
+    padding:10px;
+    margin-bottom:10px;
+    margin-right:10px;
+    display:inline-block;
+}
+div.block div.deprecation-comment {
+    font-style:normal;
+}
+/*
+ * Styles specific to HTML5 elements.
+ */
+main, nav, header, footer, section {
+    display:block;
+}
+/*
+ * Styles for javadoc search.
+ */
+.ui-autocomplete-category {
+    font-weight:bold;
+    font-size:15px;
+    padding:7px 0 7px 3px;
+    background-color:#4D7A97;
+    color:#FFFFFF;
+}
+.result-item {
+    font-size:13px;
+}
+.ui-autocomplete {
+    max-height:85%;
+    max-width:65%;
+    overflow-y:scroll;
+    overflow-x:scroll;
+    white-space:nowrap;
+    box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+ul.ui-autocomplete {
+    position:fixed;
+    z-index:999999;
+    background-color: #FFFFFF;
+}
+ul.ui-autocomplete  li {
+    float:left;
+    clear:both;
+    width:100%;
+}
+.result-highlight {
+    font-weight:bold;
+}
+.ui-autocomplete .result-item {
+    font-size: inherit;
+}
+#search-input {
+    background-image:url('resources/glass.png');
+    background-size:13px;
+    background-repeat:no-repeat;
+    background-position:2px 3px;
+    padding-left:20px;
+    position:relative;
+    right:-18px;
+    width:400px;
+}
+#reset-button {
+    background-color: rgb(255,255,255);
+    background-image:url('resources/x.png');
+    background-position:center;
+    background-repeat:no-repeat;
+    background-size:12px;
+    border:0 none;
+    width:16px;
+    height:16px;
+    position:relative;
+    left:-4px;
+    top:-4px;
+    font-size:0px;
+}
+.watermark {
+    color:#545454;
+}
+.search-tag-desc-result {
+    font-style:italic;
+    font-size:11px;
+}
+.search-tag-holder-result {
+    font-style:italic;
+    font-size:12px;
+}
+.search-tag-result:target {
+    background-color:yellow;
+}
+.module-graph span {
+    display:none;
+    position:absolute;
+}
+.module-graph:hover span {
+    display:block;
+    margin: -100px 0 0 100px;
+    z-index: 1;
+}
+.inherited-list {
+    margin: 10px 0 10px 0;
+}
+section.class-description {
+    line-height: 1.4;
+}
+.summary section[class$="-summary"], .details section[class$="-details"],
+.class-uses .detail, .serialized-class-details {
+    padding: 0px 20px 5px 10px;
+    border: 1px solid #ededed;
+    background-color: #f8f8f8;
+}
+.inherited-list, section[class$="-details"] .detail {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:none;
+}
+.vertical-separator {
+    padding: 0 5px;
+}
+ul.help-section-list {
+    margin: 0;
+}
+ul.help-subtoc > li {
+  display: inline-block;
+  padding-right: 5px;
+  font-size: smaller;
+}
+ul.help-subtoc > li::before {
+  content: "\2022" ;
+  padding-right:2px;
+}
+span.help-note {
+    font-style: italic;
+}
+/*
+ * Indicator icon for external links.
+ */
+main a[href*="://"]::after {
+    content:"";
+    display:inline-block;
+    background-image:url('data:image/svg+xml; utf8, \
+      <svg xmlns="http://www.w3.org/2000/svg" width="768" height="768">\
+        <path d="M584 664H104V184h216V80H0v688h688V448H584zM384 0l132 \
+        132-240 240 120 120 240-240 132 132V0z" fill="%234a6782"/>\
+      </svg>');
+    background-size:100% 100%;
+    width:7px;
+    height:7px;
+    margin-left:2px;
+    margin-bottom:4px;
+}
+main a[href*="://"]:hover::after,
+main a[href*="://"]:focus::after {
+    background-image:url('data:image/svg+xml; utf8, \
+      <svg xmlns="http://www.w3.org/2000/svg" width="768" height="768">\
+        <path d="M584 664H104V184h216V80H0v688h688V448H584zM384 0l132 \
+        132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\
+      </svg>');
+}
+
+/*
+ * Styles for user-provided tables.
+ *
+ * borderless:
+ *      No borders, vertical margins, styled caption.
+ *      This style is provided for use with existing doc comments.
+ *      In general, borderless tables should not be used for layout purposes.
+ *
+ * plain:
+ *      Plain borders around table and cells, vertical margins, styled caption.
+ *      Best for small tables or for complex tables for tables with cells that span
+ *      rows and columns, when the "striped" style does not work well.
+ *
+ * striped:
+ *      Borders around the table and vertical borders between cells, striped rows,
+ *      vertical margins, styled caption.
+ *      Best for tables that have a header row, and a body containing a series of simple rows.
+ */
+
+table.borderless,
+table.plain,
+table.striped {
+    margin-top: 10px;
+    margin-bottom: 10px;
+}
+table.borderless > caption,
+table.plain > caption,
+table.striped > caption {
+    font-weight: bold;
+    font-size: smaller;
+}
+table.borderless th, table.borderless td,
+table.plain th, table.plain td,
+table.striped th, table.striped td {
+    padding: 2px 5px;
+}
+table.borderless,
+table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
+table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
+    border: none;
+}
+table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
+    background-color: transparent;
+}
+table.plain {
+    border-collapse: collapse;
+    border: 1px solid black;
+}
+table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
+    background-color: transparent;
+}
+table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
+table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
+    border: 1px solid black;
+}
+table.striped {
+    border-collapse: collapse;
+    border: 1px solid black;
+}
+table.striped > thead {
+    background-color: #E3E3E3;
+}
+table.striped > thead > tr > th, table.striped > thead > tr > td {
+    border: 1px solid black;
+}
+table.striped > tbody > tr:nth-child(even) {
+    background-color: #EEE
+}
+table.striped > tbody > tr:nth-child(odd) {
+    background-color: #FFF
+}
+table.striped > tbody > tr > th, table.striped > tbody > tr > td {
+    border-left: 1px solid black;
+    border-right: 1px solid black;
+}
+table.striped > tbody > tr > th {
+    font-weight: normal;
+}
+/**
+ * Tweak font sizes and paddings for small screens.
+ */
+@media screen and (max-width: 1050px) {
+    #search-input {
+        width: 300px;
+    }
+}
+@media screen and (max-width: 800px) {
+    #search-input {
+        width: 200px;
+    }
+    .top-nav,
+    .bottom-nav {
+        font-size: 11px;
+        padding-top: 6px;
+    }
+    .sub-nav {
+        font-size: 11px;
+    }
+    .about-language {
+        padding-right: 16px;
+    }
+    ul.nav-list li,
+    .sub-nav .nav-list-search {
+        padding: 6px;
+    }
+    ul.sub-nav-list li {
+        padding-top: 5px;
+    }
+    main {
+        padding: 10px;
+    }
+    .summary section[class$="-summary"], .details section[class$="-details"],
+    .class-uses .detail, .serialized-class-details {
+        padding: 0 8px 5px 8px;
+    }
+    body {
+        -webkit-text-size-adjust: none;
+    }
+}
+@media screen and (max-width: 500px) {
+    #search-input {
+        width: 150px;
+    }
+    .top-nav,
+    .bottom-nav {
+        font-size: 10px;
+    }
+    .sub-nav {
+        font-size: 10px;
+    }
+    .about-language {
+        font-size: 10px;
+        padding-right: 12px;
+    }
+}
diff --git a/openmeetings-core/apidocs/tag-search-index.js b/openmeetings-core/apidocs/tag-search-index.js
new file mode 100644
index 0000000..bf10aaf
--- /dev/null
+++ b/openmeetings-core/apidocs/tag-search-index.js
@@ -0,0 +1 @@
+tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"},{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults();
\ No newline at end of file
diff --git a/openmeetings-core/apidocs/type-search-index.js b/openmeetings-core/apidocs/type-search-index.js
new file mode 100644
index 0000000..39ce439
--- /dev/null
+++ b/openmeetings-core/apidocs/type-search-index.js
@@ -0,0 +1 @@
+typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"org.apache.openmeetings.core.ldap","l":"LdapLoginManager.AuthType"},{"p":"org.apache.openmeetings.core.converter","l":"BaseConverter"},{"p":"org.apache.openmeetings.core.util","l":"ChatWebSocketHelper"},{"p":"org.apache.openmeetings.core.converter","l":"ConversionException"},{"p":"org.apache.openmeetings.core.converter","l":"BaseConverter.Dimension"},{"p":"org.apache.openmeetings.core.converter","l":"DocumentConverter"},{"p":"org.apache.openmeetings.core.data.file","l":"FileProcessor"},{"p":"org.apache.openmeetings.core.ldap","l":"LdapLoginManager.GroupMode"},{"p":"org.apache.openmeetings.core.converter","l":"ImageConverter"},{"p":"org.apache.openmeetings.core.notifier","l":"INotifier"},{"p":"org.apache.openmeetings.core.converter","l":"InterviewConverter"},{"p":"org.apache.openmeetings.core.converter","l":"IRecordingConverter"},{"p":"org.apache.openmeetings.core.sip","l":"ISipCallbacks"},{"p":"org.apache.openmeetings.core.ldap","l":"LdapLoginManager"},{"p":"org.apache.openmeetings.core.ldap","l":"LdapOptions"},{"p":"org.apache.openmeetings.core.documents","l":"LibraryChartLoader"},{"p":"org.apache.openmeetings.core.rss","l":"LoadAtomRssFeed"},{"p":"org.apache.openmeetings.core.mail","l":"MailHandler"},{"p":"org.apache.openmeetings.core.notifier","l":"NotifierService"},{"p":"org.apache.openmeetings.core.ldap","l":"LdapLoginManager.Provisionning"},{"p":"org.apache.openmeetings.core.converter","l":"RecordingConverter"},{"p":"org.apache.openmeetings.core.sip","l":"SipManager"},{"p":"org.apache.openmeetings.core.sip","l":"SipStackProcessor"},{"p":"org.apache.openmeetings.core.util","l":"StrongPasswordValidator"},{"p":"org.apache.openmeetings.core.converter","l":"VideoConverter"},{"p":"org.apache.openmeetings.core.util","l":"WebSocketHelper"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageAll"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageChat"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageChat2All"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageChat2User"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageRoom"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageRoomMsg"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageRoomOthers"},{"p":"org.apache.openmeetings.core.util.ws","l":"WsMessageUser"}];updateSearchResults();
\ No newline at end of file
diff --git a/security.html b/security.html
index c15e377..e3566d6 100644
--- a/security.html
+++ b/security.html
@@ -3,7 +3,8 @@
 
   <!doctype html>
 <!--
- Generated by Apache Maven Doxia  at 02/14/23  Rendered using Reflow Maven Skin 2.3.2 (http://devacfr.github.io/reflow-maven-skin)
+Generated by Apache Maven Doxia 2023-03-28
+, Rendered using Reflow Maven Skin 2.3.3 (http://devacfr.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
         <head>
@@ -217,7 +218,8 @@
         <main class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-8" role="main">
     <nav aria-label="breadcrumb">
         <ol class="breadcrumb">
-            <li class="publishDate version-date">    Last Published: 2023-02-14</li>
+            <li class="publishDate version-date">Last Published: 2023-03-28
+</li>
         </ol>
     </nav>
         <section>
@@ -232,10 +234,19 @@
  <p>Please report any security errors to security@openmeetings.apache.org<br> <br> Please NOTE: only security issues should be reported to this list.</p>
 </section>
 <section>
+ <h1 id="cve-2023-28326-apache-openmeetings-allows-user-imp">CVE-2023-28326: Apache OpenMeetings: allows user impersonation</h1>
+ <p>Severity: Critical</p>
+ <p>Vendor: The Apache Software Foundation</p>
+ <p>Versions Affected: from 2.0.0 before 7.0.0</p>
+ <p>Description: Attacker can elevate their privileges in any room<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-28326" class="externalLink">CVE-2023-28326</a></p>
+ <p>The issue was fixed in 7.0.0<br> All users are recommended to upgrade to Apache OpenMeetings 7.0.0</p>
+ <p>Credit: This issue was identified by Dennis Zimmt</p>
+</section>
+<section>
  <h1 id="cve-2021-27576---apache-openmeetings-bandwidth-can">CVE-2021-27576 - Apache OpenMeetings: bandwidth can be overloaded with public web service</h1>
  <p>Severity: Low</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: 4.0.0 - 5.1.0</p>
+ <p>Versions Affected: from 4.0.0 before 6.0.0</p>
  <p>Description: NetTest web service can be used to overload the bandwidth of the server<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27576" class="externalLink">CVE-2021-27576</a></p>
  <p>The issue was fixed in 6.0.0<br> All users are recommended to upgrade to Apache OpenMeetings 6.0.0</p>
  <p>Credit: This issue was identified by Trung Le, Chi Tran, Linh Cua</p>
@@ -244,7 +255,7 @@
  <h1 id="cve-2020-13951---apache-openmeetings-dos-via-publi">CVE-2020-13951 - Apache Openmeetings: DoS via public web service</h1>
  <p>Severity: High</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: 4.0.0 - 5.0.0</p>
+ <p>Versions Affected: from 4.0.0 before 5.0.1</p>
  <p>Description: NetTest web service can be used to perform Denial of Service attack<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13951" class="externalLink">CVE-2020-13951</a></p>
  <p>The issue was fixed in 5.0.1<br> All users are recommended to upgrade to Apache OpenMeetings 5.0.1</p>
  <p>Credit: This issue was identified by Trung Le, Chi Tran, Ngo Van Thien</p>
@@ -271,7 +282,7 @@
  <h1 id="cve-2018-1286---apache-openmeetings---insufficient">CVE-2018-1286 - Apache OpenMeetings - Insufficient Access Controls</h1>
  <p>Severity: Medium</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 3.0.0 - 4.0.1</p>
+ <p>Versions Affected: from 3.0.0 before 4.0.2</p>
  <p>Description: CRUD operations on privileged users are not password protected allowing an authenticated attacker to deny service for privileged users.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1286" class="externalLink">CVE-2018-1286</a></p>
  <p>The issue was fixed in 4.0.2<br> All users are recommended to upgrade to Apache OpenMeetings 4.0.2</p>
  <p>Credit: This issue was identified by Sahil Dhar of Security Innovation Inc</p>
@@ -280,7 +291,7 @@
  <h1 id="cve-2017-7663---apache-openmeetings---xss-in-chat">CVE-2017-7663 - Apache OpenMeetings - XSS in chat</h1>
  <p>Severity: High</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 3.2.0</p>
+ <p>Versions Affected: 3.2.0</p>
  <p>Description: Both global and Room chat are vulnerable to XSS attack<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7663" class="externalLink">CVE-2017-7663</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -289,7 +300,7 @@
  <h1 id="cve-2017-7664---apache-openmeetings---missing-xml-">CVE-2017-7664 - Apache OpenMeetings - Missing XML Validation</h1>
  <p>Severity: High</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 3.1.0</p>
+ <p>Versions Affected: from 3.1.0 before 3.3.0</p>
  <p>Description: Uploaded XML documents were not correctly validated<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7664" class="externalLink">CVE-2017-7664</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -298,7 +309,7 @@
  <h1 id="cve-2017-7666---apache-openmeetings-missing-secure">CVE-2017-7666 - Apache OpenMeetings Missing Secure Headers</h1>
  <p>Severity: High</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache Openmeetings is vulnerable to Cross-Site Request Forgery (CSRF) attacks, XSS attacks, click-jacking, and MIME based attacks<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7666" class="externalLink">CVE-2017-7666</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -307,7 +318,7 @@
  <h1 id="cve-2017-7673---apache-openmeetings-insufficient-c">CVE-2017-7673 - Apache OpenMeetings Insufficient check in dialogs with passwords</h1>
  <p>Severity: High</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache OpenMeetings uses not very strong cryptographic storage, captcha is not used in registration and forget password dialogs and auth forms missing brute force protection<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7673" class="externalLink">CVE-2017-7673</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -316,7 +327,7 @@
  <h1 id="cve-2017-7680---apache-openmeetings---insecure-cro">CVE-2017-7680 - Apache OpenMeetings - Insecure crossdomain.xml policy</h1>
  <p>Severity: Low</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache OpenMeetings has an overly permissive crossdomain.xml file. This allows for flash content to be loaded from untrusted domains.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7680" class="externalLink">CVE-2017-7680</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -325,7 +336,7 @@
  <h1 id="cve-2017-7681---apache-openmeetings---sql-injectio">CVE-2017-7681 - Apache OpenMeetings - SQL injection in web services</h1>
  <p>Severity: High</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache OpenMeetings is vulnerable to SQL injection This allows authenticated users to modify the structure of the existing query and leak the structure of other queries being made by the application in the back-end<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7681" class="externalLink">CVE-2017-7681</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -334,7 +345,7 @@
  <h1 id="cve-2017-7682---apache-openmeetings---business-log">CVE-2017-7682 - Apache OpenMeetings - Business Logic Bypass</h1>
  <p>Severity: Medium</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 3.2.0</p>
+ <p>Versions Affected: 3.2.0</p>
  <p>Description: Apache OpenMeetings is vulnerable to parameter manipulation attacks, as a result attacker has access to restricted areas.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7682" class="externalLink">CVE-2017-7682</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -343,7 +354,7 @@
  <h1 id="cve-2017-7683---apache-openmeetings---information-">CVE-2017-7683 - Apache OpenMeetings - Information Disclosure</h1>
  <p>Severity: Lowest</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache OpenMeetings displays Tomcat version and detailed error stack trace which is not secure.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7683" class="externalLink">CVE-2017-7683</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -352,7 +363,7 @@
  <h1 id="cve-2017-7684---apache-openmeetings---insecure-fil">CVE-2017-7684 - Apache OpenMeetings - Insecure File Upload</h1>
  <p>Severity: Low</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache OpenMeetings doesn't check contents of files being uploaded. An attacker can cause a denial of service by uploading multiple large files to the server<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7684" class="externalLink">CVE-2017-7684</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -361,7 +372,7 @@
  <h1 id="cve-2017-7685---apache-openmeetings---insecure-htt">CVE-2017-7685 - Apache OpenMeetings - Insecure HTTP Methods</h1>
  <p>Severity: Lowest</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache OpenMeetingsrespond to the following insecure HTTP Methods: PUT, DELETE, HEAD, and PATCH.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7685" class="externalLink">CVE-2017-7685</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -370,7 +381,7 @@
  <h1 id="cve-2017-7688---apache-openmeetings---insecure-pas">CVE-2017-7688 - Apache OpenMeetings - Insecure Password Update</h1>
  <p>Severity: Low</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.0.0</p>
+ <p>Versions Affected: from 1.0.0 before 3.3.0</p>
  <p>Description: Apache OpenMeetings updates user password in insecure manner.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7688" class="externalLink">CVE-2017-7688</a></p>
  <p>The issue was fixed in 3.3.0<br> All users are recommended to upgrade to Apache OpenMeetings 3.3.0</p>
  <p>Credit: This issue was identified by Security Innovation</p>
@@ -379,7 +390,7 @@
  <h1 id="cve-2017-5878---red5amf-unmarshalling-rce">CVE-2017-5878 - RED5/AMF Unmarshalling RCE</h1>
  <p>Severity: Critical</p>
  <p>Vendor: Red5</p>
- <p>Versions Affected: Apache OpenMeetings 3.1.3 and earlier</p>
+ <p>Versions Affected: before 3.1.4</p>
  <p>Description: The AMF unmarshallers in Red5 Media Server before 1.0.8 do not restrict the classes for which it performs deserialization, which allows remote attackers to execute arbitrary code via crafted serialized Java data.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5878" class="externalLink">CVE-2017-5878</a></p>
  <p>The issue was fixed in 3.1.4<br> All users are recommended to upgrade to Apache OpenMeetings 3.1.4</p>
  <p>Credit: This issue was identified by Moritz Bechler</p>
@@ -388,7 +399,7 @@
  <h1 id="cve-2016-8736---apache-openmeetings-rmi-registry-j">CVE-2016-8736 - Apache Openmeetings RMI Registry Java Deserialization RCE</h1>
  <p>Severity: Moderate</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 3.1.0</p>
+ <p>Versions Affected: from 3.1.0 before 3.1.2</p>
  <p>Description: Apache Openmeetings is vulnerable to Remote Code Execution via RMI deserialization attack<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8736" class="externalLink">CVE-2016-8736</a></p>
  <p>The issue was fixed in 3.1.2<br> All users are recommended to upgrade to Apache OpenMeetings 3.1.3</p>
  <p>Credit: This issue was identified by Jacob Baines, Tenable Network Security</p>
@@ -397,7 +408,7 @@
  <h1 id="cve-2016-3089---apache-openmeetings-xss-in-swf-pan">CVE-2016-3089 - Apache OpenMeetings XSS in SWF panel</h1>
  <p>Severity: Moderate</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 3.1.0</p>
+ <p>Versions Affected: from 3.1.0 before 3.1.2</p>
  <p>Description: The value of the URL's "swf" query parameter is interpolated into the JavaScript tag without being escaped, leading to the reflected XSS.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3089" class="externalLink">CVE-2016-3089</a></p>
  <p>All users are recommended to upgrade to Apache OpenMeetings 3.1.2</p>
  <p>Credit: This issue was identified by Matthew Daley</p>
@@ -406,7 +417,7 @@
  <h1 id="cve-2016-0783---predictable-password-reset-token">CVE-2016-0783 - Predictable password reset token</h1>
  <p>Severity: Critical</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.9.x - 3.1.0</p>
+ <p>Versions Affected: from 1.9.x before 3.1.1</p>
  <p>Description: The hash generated by the external password reset function is generated by concatenating the user name and the current system time, and then hashing it using MD5. This is highly predictable and can be cracked in seconds by an attacker with knowledge of the user name of an OpenMeetings user.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0783" class="externalLink">CVE-2016-0783</a></p>
  <p>All users are recommended to upgrade to Apache OpenMeetings 3.1.1</p>
  <p>Credit: This issue was identified by Andreas Lindh</p>
@@ -415,7 +426,7 @@
  <h1 id="cve-2016-0784---zip-file-path-traversal">CVE-2016-0784 - ZIP file path traversal</h1>
  <p>Severity: Moderate</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.9.x - 3.1.0</p>
+ <p>Versions Affected: from 1.9.x before 3.1.1</p>
  <p>Description: The Import/Export System Backups functionality in the OpenMeetings Administration menu (http://domain:5080/openmeetings/#admin/backup) is vulnerable to path traversal via specially crafted file names within ZIP archives. By uploading an archive containing a file named ../../../public/hello.txt will write the file “hello.txt” to the http://domain:5080/openmeetings/public/ directory. This could be used to, for example, overwrite the /usr/bin/convert file (or any other 3 rd party integrated executable) with a shell script, which would be executed the next time an image file is uploaded and imagemagick is invoked.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0784" class="externalLink">CVE-2016-0784</a></p>
  <p>All users are recommended to upgrade to Apache OpenMeetings 3.1.1</p>
  <p>Credit: This issue was identified by Andreas Lindh</p>
@@ -424,7 +435,7 @@
  <h1 id="cve-2016-2163---stored-cross-site-scripting-in-eve">CVE-2016-2163 - Stored Cross Site Scripting in Event description</h1>
  <p>Severity: Moderate</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.9.x - 3.0.7</p>
+ <p>Versions Affected: from 1.9.x before 3.1.1</p>
  <p>Description: When creating an event, it is possible to create clickable URL links in the event description. These links will be present inside the event details once a participant enters the room via the event. It is possible to create a link like "javascript:alert('xss')", which will execute once the link is clicked. As the link is placed within an &lt;a&gt; tag, the actual link is not visible to the end user which makes it hard to tell if the link is legit or not.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2163" class="externalLink">CVE-2016-2163</a></p>
  <p>All users are recommended to upgrade to Apache OpenMeetings 3.1.1</p>
  <p>Credit: This issue was identified by Andreas Lindh</p>
@@ -433,7 +444,7 @@
  <h1 id="cve-2016-2164---arbitrary-file-read-via-soap-api">CVE-2016-2164 - Arbitrary file read via SOAP API</h1>
  <p>Severity: Critical</p>
  <p>Vendor: The Apache Software Foundation</p>
- <p>Versions Affected: Apache OpenMeetings 1.9.x - 3.0.7</p>
+ <p>Versions Affected: from 1.9.x before 3.1.1</p>
  <p>Description: When attempting to upload a file via the API using the importFileByInternalUserId or importFile methods in the FileService, it is possible to read arbitrary files from the system. This is due to that Java's URL class is used without checking what protocol handler is specified in the API call.<br> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2164" class="externalLink">CVE-2016-2164</a></p>
  <p>All users are recommended to upgrade to Apache OpenMeetings 3.1.1</p>
  <p>Credit: This issue was identified by Andreas Lindh</p>
@@ -449,6 +460,9 @@
         <a class="nav-link" href="#reporting-new-security-problems" title="Reporting New Security Problems">Reporting New Security Problems</a>
     </li>
         <li class="h1">
+        <a class="nav-link" href="#cve-2023-28326-apache-openmeetings-allows-user-imp" title="CVE-2023-28326: Apache OpenMeetings: allows user impersonation">CVE-2023-28326: Apache OpenMeetings: allows user impersonation</a>
+    </li>
+        <li class="h1">
         <a class="nav-link" href="#cve-2021-27576---apache-openmeetings-bandwidth-can" title="CVE-2021-27576 - Apache OpenMeetings: bandwidth can be overloaded with public web service">CVE-2021-27576 - Apache OpenMeetings: bandwidth can be overloaded with public web service</a>
     </li>
         <li class="h1">