summaryrefslogtreecommitdiff
path: root/www/onlyoffice-documentserver
diff options
context:
space:
mode:
Diffstat (limited to 'www/onlyoffice-documentserver')
-rw-r--r--www/onlyoffice-documentserver/Makefile159
-rw-r--r--www/onlyoffice-documentserver/distinfo62
-rw-r--r--www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch1014
-rw-r--r--www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch192
-rw-r--r--www/onlyoffice-documentserver/files/npm4
-rw-r--r--www/onlyoffice-documentserver/files/package-lock.json16
-rw-r--r--www/onlyoffice-documentserver/files/package.json2
-rw-r--r--www/onlyoffice-documentserver/files/patch-build__tools_scripts_build__server.py9
-rw-r--r--www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_make__common.py9
-rw-r--r--www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py2
-rw-r--r--www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_iwork.py4
-rw-r--r--www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8.py12
-rw-r--r--www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8__89.py10
-rw-r--r--www/onlyoffice-documentserver/files/patch-clang1942
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Apple_IWork.cpp4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Apple_IWork.pro8
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx109
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_brotli_make.py11
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py3
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_openssl_openssl.pri4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8__89_v8_build_config_clang_BUILD.gn4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_build_config_compiler_BUILD.gn25
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_src_base_macros.h4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_testing_gmock_BUILD.gn4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_DesktopEditor_common_Directory.cpp10
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_doctrenderer.pri6
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_hash.cpp4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_TextShaper.cpp4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_js_cpp_text.cpp6
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_DesktopEditor_freetype-2.10.4_src_autofit_afshaper.h4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_DesktopEditor_pluginsmanager_main.cpp4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_MsBinaryFile_XlsFile_Format_Logic_Biff__structures_BitMarkedStructs.h4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_OOXML_Base_Types__32.h4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_OOXML_Binary_Sheets_Reader_ChartFromToBinary.cpp6
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Chart_ChartSerialize.cpp4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Common.cpp4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_OfficeUtils_src_zlib-1.2.11_gzguts.h4
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_PdfFile_PdfFile.pro6
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_PdfFile_SrcWriter_Types.h6
-rw-r--r--www/onlyoffice-documentserver/files/patch-document-server-package_Makefile6
-rw-r--r--www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-flush-cache.sh.m44
-rw-r--r--www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m43
-rw-r--r--www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf10
-rw-r--r--www/onlyoffice-documentserver/files/patch-server_Metrics_patches_modern-syslog11
-rw-r--r--www/onlyoffice-documentserver/files/patch-server_package.json18
-rw-r--r--www/onlyoffice-documentserver/files/pkg-message.in2
-rw-r--r--www/onlyoffice-documentserver/pkg-plist67
47 files changed, 657 insertions, 1253 deletions
diff --git a/www/onlyoffice-documentserver/Makefile b/www/onlyoffice-documentserver/Makefile
index d887e2e9f95f..a41f0027e3d5 100644
--- a/www/onlyoffice-documentserver/Makefile
+++ b/www/onlyoffice-documentserver/Makefile
@@ -1,12 +1,12 @@
PORTNAME= onlyoffice-documentserver
DISTVERSIONPREFIX= v
-DISTVERSION= 9.0.2.16
+DISTVERSION= 9.0.4
CATEGORIES= www
MASTER_SITES+= LOCAL/mikael/v8/:source1 \
- https://nodejs.org/dist/v${NODE_VERSION_PKGFETCH}/:source3 \
+ https://nodejs.org/dist/v${PKGFETCH_NODE_VERSION}/:source3 \
SF/optipng/OptiPNG/optipng-0.7.8/:source4
DISTFILES+= v8-8.9.255.25_all.tar.gz:source1 \
- node-v${NODE_VERSION_PKGFETCH}.tar.gz:source3 \
+ node-v${PKGFETCH_NODE_VERSION}.tar.gz:source3 \
optipng-0.7.8.tar.gz:source4
MAINTAINER= fsbruva@yahoo.com
@@ -16,7 +16,13 @@ WWW= https://www.onlyoffice.com/
LICENSE= AGPLv3
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
-BROKEN_i386= fails to build
+ONLY_FOR_ARCHS= aarch64 amd64
+ONLY_FOR_ARCHS_REASON= "Upstream only supports amd64 and arm64"
+
+# node version used with "npm install @yao-pkg/pkg@6.6.0"
+# keep in sync with patch-build__tools_scripts_build__server.py and patch-document-server-package_Makefile
+PKGFETCH_NODE_VERSION= 20.19.4
+DS_BUILD= 50
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \
boost-libs>0:devel/boost-libs \
@@ -24,16 +30,17 @@ BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \
gn:devel/gn \
java:java/openjdk11 \
ninja:devel/ninja \
- npm:www/npm-node20 \
- ${LOCALBASE}/lib/libcrypto.a:security/openssl
+ npm:www/npm-node20
+
LIB_DEPENDS= libboost_regex.so:devel/boost-libs \
libetonyek-0.1.so:graphics/libetonyek01 \
libcurl.so:ftp/curl \
libharfbuzz.so:print/harfbuzz \
libiconv.so:converters/libiconv \
- libicutu.so:devel/icu \
+ libicuuc.so:devel/icu \
libodfgen-0.1.so:textproc/libodfgen01 \
librevenge-0.0.so:textproc/librevenge
+
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}supervisor>0:sysutils/py-supervisor@${PY_FLAVOR} \
${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss \
gsed:textproc/gsed \
@@ -42,55 +49,60 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}supervisor>0:sysutils/py-supervisor@${PY_FLA
rabbitmq>0:net/rabbitmq \
webfonts>=0:x11-fonts/webfonts
-USES= autoreconf:build dos2unix fakeroot gmake gnome iconv localbase nodejs:22,build pkgconfig \
- python:3.9+,build qt:5 trigger
-USE_QT= qmake:build
+USES= autoreconf:build dos2unix fakeroot gmake gnome iconv localbase pkgconfig \
+ python:3.9+,build qt:5 ssl:build trigger
+
+DOS2UNIX_FILES= document-server-package/common/documentserver/nginx/includes/http-common.conf.m4
+
USE_GITHUB= yes
GH_ACCOUNT= ONLYOFFICE
GH_PROJECT= DocumentServer
-GH_TAGNAME= v${DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/}
-GH_TUPLE= ONLYOFFICE:core:v${DISTVERSION}:core/core \
- ONLYOFFICE:core-fonts:v${DISTVERSION}:corefonts/core-fonts \
- ONLYOFFICE:dictionaries:v${DISTVERSION}:dictionaries/dictionaries \
- ONLYOFFICE:document-server-integration:v${DISTVERSION}:dsi/document-server-integration \
- ONLYOFFICE:document-templates:v${DISTVERSION}:dt/document-templates \
- ONLYOFFICE:sdkjs:v${DISTVERSION}:sdkjs/sdkjs \
- ONLYOFFICE:server:v${DISTVERSION}:server/server \
- ONLYOFFICE:web-apps:v${DISTVERSION}:webapps/web-apps \
- ONLYOFFICE:build_tools:v${DISTVERSION}:buildtools/build_tools \
+DS_TAGNAME= ${DISTVERSIONPREFIX}${DISTVERSION}.${DS_BUILD}
+GH_TUPLE= ONLYOFFICE:core:${DS_TAGNAME}:core/core \
+ ONLYOFFICE:core-fonts:${DS_TAGNAME}:corefonts/core-fonts \
+ ONLYOFFICE:dictionaries:${DS_TAGNAME}:dictionaries/dictionaries \
+ ONLYOFFICE:document-server-integration:${DS_TAGNAME}:dsi/document-server-integration \
+ ONLYOFFICE:document-templates:${DS_TAGNAME}:dt/document-templates \
+ ONLYOFFICE:sdkjs:${DS_TAGNAME}:sdkjs/sdkjs \
+ ONLYOFFICE:server:${DS_TAGNAME}:server/server \
+ ONLYOFFICE:web-apps:${DS_TAGNAME}:webapps/web-apps \
+ ONLYOFFICE:build_tools:${DS_TAGNAME}:buildtools/build_tools \
ONLYOFFICE:DocumentBuilder:626d1e44db3d06ceb8298215a67ef0475912d89a:document_builder/DocumentBuilder \
ONLYOFFICE:onlyoffice.github.io:b26d001664d771df4f663d2d3ba7dd4a188b6cab:sdkjs_plugins_v1/onlyoffice.github.io \
- ONLYOFFICE:document-server-package:v${DISTVERSION}:dsp/document-server-package \
+ ONLYOFFICE:document-server-package:${DS_TAGNAME}:dsp/document-server-package \
jasenhuang:katana-parser:be6df45:jasenhuang_katana/core/Common/3dParty/html/katana-parser \
google:gumbo-parser:aa91b27:google_gumbo/core/Common/3dParty/html/gumbo-parser \
+ google:brotli:a47d747:google_brotli/core/Common/3dParty/brotli/brotli \
hunspell:hyphen:73dd296:hunspell_hyphen/core/Common/3dParty/hyphen/hyphen \
mity:md4c:481fbfb:mity_md4c/core/Common/3dParty/md/md4c \
- fsbruva:onlyoffice-DS-pkg-cache:v${NODE_VERSION_PKGFETCH}:pkg_cache/ \
- fsbruva:onlyoffice-DS-npm-cache:v${DISTVERSION}-20250701:npm_cache/
+ fsbruva:onlyoffice-DS-pkg-cache:v${PKGFETCH_NODE_VERSION}:pkg_cache/ \
+ fsbruva:onlyoffice-DS-npm-cache:${DS_TAGNAME}-20250831:npm_cache/
-OPTIONS_SINGLE= DB
-OPTIONS_SINGLE_DB= MYSQL PGSQL
-OPTIONS_DEFAULT= PGSQL
+USE_LDCONFIG= yes
+USE_QT= qmake:build
-MYSQL_USES+= mysql:client
-PGSQL_USES+= pgsql
-PGSQL_VARS= WANT_PGSQL=client
+MAKE_ENV= BUILD_NUMBER=${DS_BUILD} \
+ npm_package_config_node_gyp_nodedir=${LOCALBASE} \
+ npm_package_config_node_gyp_python=${PYTHON_CMD} \
+ PKG_CACHE_PATH=${WRKDIR}/.pkg-cache \
+ PRODUCT_VERSION=${DISTVERSION} \
+ PYTHON=${PYTHON_CMD}
-BINARY_ALIAS= python=${PYTHON_CMD} \
- strip=true
-USE_LDCONFIG= yes
+# Don't create __pycache__ directory when executing node-gyp
+# This is a workaround to avoid filesystem violations during poudriere build
+MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1
-WWWDIR= ${PREFIX}/www/onlyoffice
-ETCDIR= ${PREFIX}/etc/onlyoffice
+CONFLICTS_BUILD= devel/googletest
-DS_USERNAME= onlyoffice
-DS_GROUPNAME= onlyoffice
+# do not strip docservice, converter, metrics and json
+STRIP=
-USERS= ${DS_USERNAME}
-GROUPS= ${DS_GROUPNAME}
+ETCDIR= ${PREFIX}/etc/onlyoffice
+WWWDIR= ${PREFIX}/www/onlyoffice
+
+BINARY_ALIAS= python=${PYTHON_CMD} \
+ strip=true
-PLIST_SUB= DS_GROUPNAME=${DS_GROUPNAME} \
- DS_USERNAME=${DS_USERNAME}
SUB_FILES= pkg-message \
onlyoffice.newsyslog.sample
SUB_LIST= DS_GROUPNAME=${DS_GROUPNAME} \
@@ -99,32 +111,32 @@ SUB_LIST= DS_GROUPNAME=${DS_GROUPNAME} \
PREFIX=${PREFIX} \
WWWDIR=${WWWDIR}
-# node version used with "npm install @yao-pkg/pkg@6.5.1"
-# keep in sync with patch-build__tools_scripts_build__server.py and patch-document-server-package_Makefile
-NODE_VERSION_PKGFETCH= 20.19.1
+DS_USERNAME= onlyoffice
+DS_GROUPNAME= onlyoffice
-MAKE_ENV= BUILD_NUMBER="36" \
- PKG_CACHE_PATH=${WRKDIR}/.pkg-cache \
- PRODUCT_VERSION=${DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/} \
- BUILD_NUMBER=${DISTVERSION:C/^[0-9]+\.[0-9]+\.[0-9]+\.([0-9]+)/\1/}
+USERS= ${DS_USERNAME}
+GROUPS= ${DS_GROUPNAME}
-# Don't create __pycache__ directory when executing node-gyp
-# This is a workaround to avoid filesystem violations during poudriere build
-MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1
+PLIST_SUB= DS_GROUPNAME=${DS_GROUPNAME} \
+ DS_USERNAME=${DS_USERNAME}
-DOS2UNIX_FILES= document-server-package/common/documentserver/nginx/includes/http-common.conf.m4
+OPTIONS_DEFAULT= PGSQL
+OPTIONS_SINGLE= DB
+OPTIONS_SINGLE_DB= MYSQL PGSQL
-CONFLICTS_BUILD=devel/googletest
+MYSQL_USES+= mysql:client
+PGSQL_USES+= pgsql
+PGSQL_VARS= WANT_PGSQL=client
.include <bsd.port.pre.mk>
.if ${ARCH} == aarch64
BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT}
-BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \
- cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \
+BINARY_ALIAS+= ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \
c++=${LOCALBASE}/bin/clang++${LLVM_DEFAULT} \
- ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \
- nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT} \
- ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT}
+ cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \
+ cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \
+ ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} \
+ nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT}
.endif
post-extract:
@@ -132,7 +144,7 @@ post-extract:
@${LN} -s ${WRKSRC_npm_cache} ${WRKDIR}/.npm
@${LN} -s ${WRKSRC_pkg_cache} ${WRKDIR}/.pkg-cache
- @${CP} ${DISTDIR}/node-v${NODE_VERSION_PKGFETCH}.tar.gz ${WRKDIR}/.pkg-cache/node
+ @${CP} ${DISTDIR}/node-v${PKGFETCH_NODE_VERSION}.tar.gz ${WRKDIR}/.pkg-cache/node
@${MKDIR} ${WRKSRC}/sdkjs-plugins/v1
@${CP} ${WRKSRC}/onlyoffice.github.io/sdkjs-plugins/v1/* ${WRKSRC}/sdkjs-plugins/v1
@@ -147,7 +159,7 @@ post-extract:
${WRKSRC}/document-server-package/common/documentserver/supervisor
.endfor
-post-patch:
+pre-configure:
@${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' \
${WRKSRC}/build_tools/tools/freebsd/automate.py \
${WRKSRC}/core/Apple/IWork.pro \
@@ -164,7 +176,8 @@ post-patch:
${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-update-securelink.sh.m4 \
${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-converter.conf \
${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-docservice.conf \
- ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-metrics.conf
+ ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-metrics.conf \
+ ${WRKSRC}/server/Metrics/patches/modern-syslog+1.2.0.patch
@${REINPLACE_CMD} -e 's|%%CC%%|${CC}|' -e 's|%%CXX%%|${CXX}|' \
${WRKSRC}/core/Common/3dParty/v8_89/v8/build/toolchain/gcc_toolchain.gni \
${WRKSRC}/core/Common/base.pri
@@ -174,6 +187,9 @@ post-patch:
${WRKSRC}/build_tools/scripts/build_js.py \
${WRKSRC}/build_tools/scripts/build_server.py \
${WRKSRC}/document-server-package/Makefile
+ @${REINPLACE_CMD} 's|%%PKGFETCH_NODE_MAJOR_VERSION%%|${PKGFETCH_NODE_VERSION:C/^([0-9]+)\..*/\1/}|' \
+ ${WRKSRC}/build_tools/scripts/build_server.py \
+ ${WRKSRC}/document-server-package/Makefile
@${REINPLACE_CMD} -e 's|/var/lib|/var/db|' -e 's|/var/www|${LOCALBASE}/www|' \
-e 's|/usr/share|${LOCALBASE}/share|' -e 's|/etc|${LOCALBASE}/etc|' \
${WRKSRC}/server/Common/config/production-freebsd.json \
@@ -184,6 +200,7 @@ post-patch:
${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-flush-cache.sh.m4 \
${WRKSRC}/document-server-package/Makefile
@${RM} ${WRKSRC}/web-apps/build/patches/optipng-bin+5.1.0.patch.orig
+ @${RM} ${WRKSRC}/server/Metrics/patches/modern-syslog+1.2.0.patch.orig
@${FIND} ${WRKSRC}/server -type f -name npm-shrinkwrap.json -delete
@@ -202,15 +219,19 @@ do-build:
@cd ${WRKSRC}/server ; ${SETENV} ${MAKE_ENV} npm install grunt-cli
@cd ${WRKSRC}/server ; ${SETENV} ${MAKE_ENV} npm install grunt
+ @cd ${WRKSRC}/server/Metrics ; ${SETENV} ${MAKE_ENV} npm install modern-syslog@1.2.0 --ignore-scripts
+ @cd ${WRKSRC}/server/Metrics ; ${SETENV} ${MAKE_ENV} npm install patch-package
+ @cd ${WRKSRC}/server/Metrics ; node_modules/.bin/patch-package
+ @cd ${WRKSRC}/server/Metrics/node_modules/modern-syslog ; ${SETENV} ${MAKE_ENV} ${GMAKE}
@cd ${WRKSRC}/sdkjs ; ${SETENV} ${MAKE_ENV} npm install grunt-cli
@cd ${WRKSRC}/sdkjs ; ${SETENV} ${MAKE_ENV} npm install grunt
@${MKDIR} ${WRKSRC}/yao-pkg
@${CP} ${FILESDIR}/package* ${WRKSRC}/yao-pkg
- @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.5.1
+ @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.6.0
@cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_lib-es5_build.js || ${TRUE}
- @cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_patches_node.v${NODE_VERSION_PKGFETCH}.cpp.patch || ${TRUE}
+ @cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_patches_node.v${PKGFETCH_NODE_VERSION}.cpp.patch || ${TRUE}
cd ${WRKSRC}/build_tools/tools/freebsd ; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} automate.py
cd ${WRKSRC}/document-server-package ; ${SETENV} ${MAKE_ENV} ${GMAKE} freebsd
@@ -236,7 +257,9 @@ do-install:
cd ${WRKSRC}/document-server-package/common/documentserver/supervisor && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver/supervisor "-name *\.conf"
cd ${WRKSRC}/document-server-package/common/documentserver/logrotate && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver/logrotate "-name *\.conf"
@${CP} ${WRKSRC}/document-server-package/common/documentserver/nginx/ds-ssl.conf.tmpl ${WRKSRC}/document-server-package/common/documentserver/nginx/ds-ssl.conf
-.for f in ds.conf ds-ssl.conf includes/http-common.conf includes/ds-common.conf includes/ds-docservice.conf includes/ds-letsencrypt.conf includes/ds-mime.types.conf
+.for f in ds.conf ds-ssl.conf includes/http-common.conf includes/ds-common.conf \
+ includes/ds-docservice.conf includes/ds-letsencrypt.conf \
+ includes/ds-mime.types.conf
${INSTALL_DATA} ${WRKSRC}/document-server-package/common/documentserver/nginx/${f} ${STAGEDIR}${ETCDIR}/documentserver/nginx/${f}.sample
.endfor
@echo "# Production ds-cache.conf is created automatically by documentserver-flush-cache.sh" > ${STAGEDIR}${ETCDIR}/documentserver/nginx/includes/ds-cache.conf.sample
@@ -262,11 +285,11 @@ do-install:
create-caches-tarball:
# do some cleanup first
${RM} -r ${WRKDIR}/.npm/_logs ${WRKDIR}/.npm/_update-notifier-last-checked ${WRKDIR}/.cache/yarn/v6/.tmp ${WRKDIR}/.cache/node-gyp
-# ${FIND} ${WRKDIR}/.cache -type f -perm 755 -exec file {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
- ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 755 -exec file {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
- ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 644 -exec file {} \; | ${EGREP} -v "${NODE_VERSION_PKGFETCH}" | ${EGREP} "built-v|node-v" | ${EGREP} "tar.gz|sha256sum" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
+# ${FIND} ${WRKDIR}/.cache -type f -perm 755 -exec ${FILE} {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
+ ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 755 -exec ${FILE} {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
+ ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 644 -exec ${FILE} {} \; | ${EGREP} -v "${PKGFETCH_NODE_VERSION}" | ${EGREP} "built-v|node-v" | ${EGREP} "tar.gz|sha256sum" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
- cd ${WRKDIR} && \
- ${TAR} czf ${PORTNAME}-${DISTVERSION}_`date +%Y%m%d`-npm-cache.tar.gz .npm .pkg-cache
+# cd ${WRKDIR} && \
+# ${TAR} czf ${PORTNAME}-${DISTVERSION}_`date +%Y%m%d`-npm-cache.tar.gz .npm .pkg-cache
.include <bsd.port.post.mk>
diff --git a/www/onlyoffice-documentserver/distinfo b/www/onlyoffice-documentserver/distinfo
index 432711cf408e..7fd9dbac7c4d 100644
--- a/www/onlyoffice-documentserver/distinfo
+++ b/www/onlyoffice-documentserver/distinfo
@@ -1,47 +1,47 @@
-TIMESTAMP = 1751344944
+TIMESTAMP = 1756745621
SHA256 (v8-8.9.255.25_all.tar.gz) = 54853ef93accc063a82a0dc29457b25c9b6d88315431d62e06ab1f84797c5f80
SIZE (v8-8.9.255.25_all.tar.gz) = 72818814
-SHA256 (node-v20.19.1.tar.gz) = 691011ddb85c9ab86afb7ead2b6db2ddd45592f1c8fd26687d152dcadc182229
-SIZE (node-v20.19.1.tar.gz) = 88078477
+SHA256 (node-v20.19.4.tar.gz) = cc363c0a90fe5025939175c1c29ab67235f36ebe4b5d78506634da27a73eef5d
+SIZE (node-v20.19.4.tar.gz) = 89308973
SHA256 (optipng-0.7.8.tar.gz) = 25a3bd68481f21502ccaa0f4c13f84dcf6b20338e4c4e8c51f2cefbd8513398c
SIZE (optipng-0.7.8.tar.gz) = 3294014
-SHA256 (onlyoffice-documentserver-9.0.2.16_20250630-npm-cache.tar.gz) = 11738d912f93adb7bf401ae06cb70d2357a4b35177cae7ceb5915fa5267e3522
-SIZE (onlyoffice-documentserver-9.0.2.16_20250630-npm-cache.tar.gz) = 249461250
-SHA256 (ONLYOFFICE-DocumentServer-v9.0.2.16-v9.0.2_GH0.tar.gz) = 272dc092623ca12964c09aa0893676aa508bf0900a5ab04215d7086306d2583d
-SIZE (ONLYOFFICE-DocumentServer-v9.0.2.16-v9.0.2_GH0.tar.gz) = 972017
-SHA256 (ONLYOFFICE-core-v9.0.2.16_GH0.tar.gz) = 79d7aaf8b591017911febef0e141f9c3735faa33d1e68d605e80237082805f14
-SIZE (ONLYOFFICE-core-v9.0.2.16_GH0.tar.gz) = 205184118
-SHA256 (ONLYOFFICE-core-fonts-v9.0.2.16_GH0.tar.gz) = 56ba5c76d053d2ae625d2f4a01a955ecb2f1d25b9bef896313281588879f676a
-SIZE (ONLYOFFICE-core-fonts-v9.0.2.16_GH0.tar.gz) = 95376454
-SHA256 (ONLYOFFICE-dictionaries-v9.0.2.16_GH0.tar.gz) = c1665cd8de6a528b255b5d0d200f689a53c72bb36218dbf8ac046c4b04a7fe85
-SIZE (ONLYOFFICE-dictionaries-v9.0.2.16_GH0.tar.gz) = 57973827
-SHA256 (ONLYOFFICE-document-server-integration-v9.0.2.16_GH0.tar.gz) = 61759413e2c63ca94117b30442e985e2ea5d3e559b1e6d740adfa916e55a6074
-SIZE (ONLYOFFICE-document-server-integration-v9.0.2.16_GH0.tar.gz) = 6128854
-SHA256 (ONLYOFFICE-document-templates-v9.0.2.16_GH0.tar.gz) = ba8288f4c67ce21d8c4f3ec995b02c5df43464314770805c7c57860b79e31756
-SIZE (ONLYOFFICE-document-templates-v9.0.2.16_GH0.tar.gz) = 3914530
-SHA256 (ONLYOFFICE-sdkjs-v9.0.2.16_GH0.tar.gz) = ecdb6c32c426e86b1bca71fc129f283430a14abc3e747464b8b9167ba08e264b
-SIZE (ONLYOFFICE-sdkjs-v9.0.2.16_GH0.tar.gz) = 37688710
-SHA256 (ONLYOFFICE-server-v9.0.2.16_GH0.tar.gz) = 4d1dc02e4be3546bb6c1bbf6547eb4c46262e0554cacf81314ff741ce2ed5027
-SIZE (ONLYOFFICE-server-v9.0.2.16_GH0.tar.gz) = 4082601
-SHA256 (ONLYOFFICE-web-apps-v9.0.2.16_GH0.tar.gz) = 6befc028e52e4176e2007274915efc3354aa474ef7df6bdad0299204fb1ebf2b
-SIZE (ONLYOFFICE-web-apps-v9.0.2.16_GH0.tar.gz) = 443520777
-SHA256 (ONLYOFFICE-build_tools-v9.0.2.16_GH0.tar.gz) = fe7b82477a78ed2a272c841d75c8a6383506a194b3893547ee70a86193943f50
-SIZE (ONLYOFFICE-build_tools-v9.0.2.16_GH0.tar.gz) = 33870057
+SHA256 (ONLYOFFICE-DocumentServer-v9.0.4_GH0.tar.gz) = 3315ceaa8b2e07359838d6119a48bf917e60faca8a4480129d5609a217e96f7d
+SIZE (ONLYOFFICE-DocumentServer-v9.0.4_GH0.tar.gz) = 974618
+SHA256 (ONLYOFFICE-core-v9.0.4.50_GH0.tar.gz) = eef733db5a8a1b9dfef972eff1c067ab28d1bc22151a0873dfc46dfcb897f22c
+SIZE (ONLYOFFICE-core-v9.0.4.50_GH0.tar.gz) = 205212964
+SHA256 (ONLYOFFICE-core-fonts-v9.0.4.50_GH0.tar.gz) = cde61fa272da392386d4055e9df27175e20e9b8d2a352b4b878746b2159d1a3d
+SIZE (ONLYOFFICE-core-fonts-v9.0.4.50_GH0.tar.gz) = 95376498
+SHA256 (ONLYOFFICE-dictionaries-v9.0.4.50_GH0.tar.gz) = 5d001458ca1632fcddcfc9b521047d5c1de443bd1ca458ed323540c592d8a3c6
+SIZE (ONLYOFFICE-dictionaries-v9.0.4.50_GH0.tar.gz) = 57973408
+SHA256 (ONLYOFFICE-document-server-integration-v9.0.4.50_GH0.tar.gz) = 3d000d2e82fed9d65b3642cfaa080178175e166698e218651f56f591cadb8e14
+SIZE (ONLYOFFICE-document-server-integration-v9.0.4.50_GH0.tar.gz) = 6129159
+SHA256 (ONLYOFFICE-document-templates-v9.0.4.50_GH0.tar.gz) = 958ce54f58f0d8f36149e62ee395e7c68e536a7d7320b02b135325d2c297be49
+SIZE (ONLYOFFICE-document-templates-v9.0.4.50_GH0.tar.gz) = 3914529
+SHA256 (ONLYOFFICE-sdkjs-v9.0.4.50_GH0.tar.gz) = fd620863636d6de8c1c7e8643f1b0fc29f3fb19f5128bc06ad06d97796f35d36
+SIZE (ONLYOFFICE-sdkjs-v9.0.4.50_GH0.tar.gz) = 37960532
+SHA256 (ONLYOFFICE-server-v9.0.4.50_GH0.tar.gz) = 14f392a47a6084c4b57bdcf7811577699f9297a54ac43e1ff99fed7508ffdb20
+SIZE (ONLYOFFICE-server-v9.0.4.50_GH0.tar.gz) = 4213827
+SHA256 (ONLYOFFICE-web-apps-v9.0.4.50_GH0.tar.gz) = 3d4e8a7df920ed8eb283bb03fec9fb0785d0f6a201a9980ad4be1893fa39b6f7
+SIZE (ONLYOFFICE-web-apps-v9.0.4.50_GH0.tar.gz) = 444518582
+SHA256 (ONLYOFFICE-build_tools-v9.0.4.50_GH0.tar.gz) = d52aacc9d97ed5a0b1174150e5b5b708e44d72718d6d43707ff76bf8ab56a375
+SIZE (ONLYOFFICE-build_tools-v9.0.4.50_GH0.tar.gz) = 33885000
SHA256 (ONLYOFFICE-DocumentBuilder-626d1e44db3d06ceb8298215a67ef0475912d89a_GH0.tar.gz) = 275c3a8c993528fa56c69aedb11dd74a6fba9c3bd372874004584ae9cbb190b5
SIZE (ONLYOFFICE-DocumentBuilder-626d1e44db3d06ceb8298215a67ef0475912d89a_GH0.tar.gz) = 31659
SHA256 (ONLYOFFICE-onlyoffice.github.io-b26d001664d771df4f663d2d3ba7dd4a188b6cab_GH0.tar.gz) = 347b8f1d3c21b1f61a3f1fcae86f402b27ce4f8b826e18158834251046d83cf5
SIZE (ONLYOFFICE-onlyoffice.github.io-b26d001664d771df4f663d2d3ba7dd4a188b6cab_GH0.tar.gz) = 17009005
-SHA256 (ONLYOFFICE-document-server-package-v9.0.2.16_GH0.tar.gz) = c3153d922b38362146a209eade7f645e72504e19d5eb760354c57c223c4b637f
-SIZE (ONLYOFFICE-document-server-package-v9.0.2.16_GH0.tar.gz) = 186621
+SHA256 (ONLYOFFICE-document-server-package-v9.0.4.50_GH0.tar.gz) = a94e3a4558afc09ff9e7fab1bb4e334015b0e5e0ff723334b714358f820c684a
+SIZE (ONLYOFFICE-document-server-package-v9.0.4.50_GH0.tar.gz) = 186664
SHA256 (jasenhuang-katana-parser-be6df45_GH0.tar.gz) = 363ede45ba6d125fdb7323c43d34acd3d0ae9028ac18aec632eb6a623160f09a
SIZE (jasenhuang-katana-parser-be6df45_GH0.tar.gz) = 97712
SHA256 (google-gumbo-parser-aa91b27_GH0.tar.gz) = 1360f85c02fb2573a10f00abcddebc8f1ff277a16f66553439193af93afae335
SIZE (google-gumbo-parser-aa91b27_GH0.tar.gz) = 2119417
+SHA256 (google-brotli-a47d747_GH0.tar.gz) = 695f229d346b006a335d0fe38290af986785d57f3b2a42654e2bc103823f5dd8
+SIZE (google-brotli-a47d747_GH0.tar.gz) = 638096
SHA256 (hunspell-hyphen-73dd296_GH0.tar.gz) = 93e80ad69ee7afd507b12f0b58ca34a6a78347dcbb5fe5d9b6f0e19b02397ef7
SIZE (hunspell-hyphen-73dd296_GH0.tar.gz) = 292528
SHA256 (mity-md4c-481fbfb_GH0.tar.gz) = 04e03a69a2783ab5f2449f8864499dabb150092d5f48415a5e423f762a209d54
SIZE (mity-md4c-481fbfb_GH0.tar.gz) = 238753
-SHA256 (fsbruva-onlyoffice-DS-pkg-cache-v20.19.1_GH0.tar.gz) = df466a0ea8365d10089d3169b224b079bb0ec409c57f2ff79c4f6048f8c5d29c
-SIZE (fsbruva-onlyoffice-DS-pkg-cache-v20.19.1_GH0.tar.gz) = 1288
-SHA256 (fsbruva-onlyoffice-DS-npm-cache-v9.0.2.16-20250701_GH0.tar.gz) = c8a355fe7941a29ba6ba51c97c52808ef5cfe3047cb4f31335a2e03cdfd84354
-SIZE (fsbruva-onlyoffice-DS-npm-cache-v9.0.2.16-20250701_GH0.tar.gz) = 161979161
+SHA256 (fsbruva-onlyoffice-DS-pkg-cache-v20.19.4_GH0.tar.gz) = d3b6a1ad3afdfd53b57809980ae83434ae727d421e9e383ae69c32e37a570918
+SIZE (fsbruva-onlyoffice-DS-pkg-cache-v20.19.4_GH0.tar.gz) = 1292
+SHA256 (fsbruva-onlyoffice-DS-npm-cache-v9.0.4.50-20250831_GH0.tar.gz) = 3f25ca729d9ec2f58342376f4be9e6d545364495f2dce0fc0dd0bdb0d5f7a6f0
+SIZE (fsbruva-onlyoffice-DS-npm-cache-v9.0.4.50-20250831_GH0.tar.gz) = 163105782
diff --git a/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch b/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch
deleted file mode 100644
index 44c114f57dd6..000000000000
--- a/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch
+++ /dev/null
@@ -1,1014 +0,0 @@
-https://github.com/yao-pkg/pkg-fetch/raw/refs/tags/v3.5.23/patches/node.v20.19.1.cpp.patch
-+ local FreeBSD patches
-
---- yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch
-+++ yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch
-@@ -11,6 +11,24 @@ index d3c17d47bc..7970af6ea4 100644
- }],
- ],
- },
-+@@ -426,7 +426,7 @@
-+ 'ldflags': [ '-m32' ],
-+ }],
-+ [ 'host_arch=="ppc64" and OS not in "aix os400"', {
-+- 'cflags': [ '-m64', '-mminimal-toc' ],
-++ 'cflags': [ '-m64' ],
-+ 'ldflags': [ '-m64' ],
-+ }],
-+ [ 'host_arch=="s390x" and OS=="linux"', {
-+@@ -450,7 +450,7 @@
-+ 'ldflags': [ '-m32' ],
-+ }],
-+ [ 'target_arch=="ppc64" and OS not in "aix os400"', {
-+- 'cflags': [ '-m64', '-mminimal-toc' ],
-++ 'cflags': [ '-m64' ],
-+ 'ldflags': [ '-m64' ],
-+ }],
-+ [ 'target_arch=="s390x" and OS=="linux"', {
- diff --git node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
- index 5e7775f1a5..eeebf67796 100644
- --- node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-@@ -600,3 +618,375 @@ index 2655b9e694..1d951571c7 100644
- 'cflags_cc!': [ '-fno-rtti' ],
- }],
- [ 'OS == "mac" or OS == "ios"', {
-+--- node/Makefile.orig 2025-05-14 12:22:41 UTC
-++++ node/Makefile
-+@@ -171,8 +171,7 @@ out/Makefile: config.gypi common.gypi node.gyp \
-+ $(warning '$@' target is a noop)
-+
-+ out/Makefile: config.gypi common.gypi node.gyp \
-+- deps/uv/uv.gyp deps/llhttp/llhttp.gyp deps/zlib/zlib.gyp \
-+- deps/simdutf/simdutf.gyp deps/ada/ada.gyp \
-++ deps/*/*.gyp \
-+ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
-+ tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
-+ $(PYTHON) tools/gyp_node.py -f make
-+--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi.orig 2023-05-16 06:58:19 UTC
-++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi
-+@@ -13,7 +13,7 @@
-+ '-Wall -O3 -fomit-frame-pointer',
-+ ],
-+ 'openssl_ex_libs_linux-elf': [
-+- '-ldl -pthread',
-++ '-pthread',
-+ ],
-+ 'openssl_cli_srcs_linux-elf': [
-+ 'openssl/apps/lib/cmp_mock_srv.c',
-+--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi.orig 2023-05-16 06:58:19 UTC
-++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi
-+@@ -977,7 +977,7 @@
-+ '-Wall -O3 -fomit-frame-pointer',
-+ ],
-+ 'openssl_ex_libs_linux-elf': [
-+- '-ldl -pthread',
-++ '-pthread',
-+ ],
-+ },
-+ 'include_dirs': [
-+--- node/deps/openssl/openssl-cl_no_asm.gypi.orig 2023-11-22 10:13:54 UTC
-++++ node/deps/openssl/openssl-cl_no_asm.gypi
-+@@ -1,4 +1,5 @@
-+ {
-++ 'defines': ['OPENSSL_NO_ASM'],
-+ 'conditions': [
-+ ['target_arch=="ppc64" and OS in ("aix", "os400")', {
-+ 'includes': ['config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi'],
-+@@ -45,7 +46,7 @@
-+ 'includes': ['config/archs/linux64-loongarch64/no-asm/openssl-cl.gypi'],
-+ }, {
-+ # Other architectures don't use assembly
-+- 'includes': ['config/archs/linux-x86_64/no-asm/openssl-cl.gypi'],
-++ 'includes': ['config/archs/linux-elf/no-asm/openssl-cl.gypi'],
-+ }],
-+ ],
-+ }
-+--- node/deps/openssl/openssl_no_asm.gypi.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/openssl/openssl_no_asm.gypi
-+@@ -44,7 +44,7 @@
-+ 'includes': ['config/archs/linux64-riscv64/no-asm/openssl.gypi'],
-+ }, {
-+ # Other architectures don't use assembly
-+- 'includes': ['config/archs/linux-x86_64/no-asm/openssl.gypi'],
-++ 'includes': ['config/archs/linux-elf/no-asm/openssl.gypi'],
-+ }],
-+ ],
-+ }
-+--- node/deps/v8/src/base/macros.h.orig 2021-04-12 21:00:33.000000000 +0000
-++++ node/deps/v8/src/base/macros.h 2025-06-20 09:42:18.838769000 +0000
-+@@ -203,7 +203,8 @@
-+ // base::is_trivially_copyable will differ for these cases.
-+ template <typename T>
-+ struct is_trivially_copyable {
-+-#if V8_CC_MSVC
-++#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2) || \
-++ (defined(__clang__) && __clang_major__ <= 17)
-+ // Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can
-+ // be false even though it should be true according to the standard.
-+ // (status at 2018-02-26, observed on the msvc waterfall bot).
-+--- node/deps/v8/src/base/platform/platform-freebsd.cc.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/base/platform/platform-freebsd.cc
-+@@ -82,8 +82,8 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
-+ lib_name = std::string(path);
-+ }
-+ result.push_back(SharedLibraryAddress(
-+- lib_name, reinterpret_cast<uintptr_t>(map->kve_start),
-+- reinterpret_cast<uintptr_t>(map->kve_end)));
-++ lib_name, static_cast<uintptr_t>(map->kve_start),
-++ static_cast<uintptr_t>(map->kve_end)));
-+ }
-+
-+ start += ssize;
-+--- node/deps/v8/src/codegen/arm/cpu-arm.cc.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/codegen/arm/cpu-arm.cc
-+@@ -2,12 +2,15 @@
-+ // Use of this source code is governed by a BSD-style license that can be
-+ // found in the LICENSE file.
-+
-++#include "include/v8config.h"
-++
-+ // CPU specific code for arm independent of OS goes here.
-+ #ifdef __arm__
-+ #ifdef __QNXNTO__
-+ #include <sys/mman.h> // for cache flushing.
-+ #undef MAP_TYPE
-+ #elif V8_OS_FREEBSD
-++#include <sys/cdefs.h>
-+ #include <machine/sysarch.h> // for cache flushing
-+ #include <sys/types.h>
-+ #elif V8_OS_STARBOARD
-+--- node/deps/v8/src/codegen/ppc/constants-ppc.h.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/codegen/ppc/constants-ppc.h
-+@@ -36,7 +36,7 @@
-+ #endif
-+
-+ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || !V8_TARGET_ARCH_PPC64 || \
-+- V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)
-++ (defined(_CALL_ELF) && _CALL_ELF == 2)
-+ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1
-+ #else
-+ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0
-+@@ -44,7 +44,7 @@
-+
-+ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || \
-+ (V8_TARGET_ARCH_PPC64 && \
-+- (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)))
-++ (defined(_CALL_ELF) && _CALL_ELF == 2))
-+ #define ABI_CALL_VIA_IP 1
-+ #else
-+ #define ABI_CALL_VIA_IP 0
-+--- node/deps/v8/src/libsampler/sampler.cc.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/libsampler/sampler.cc
-+@@ -511,6 +511,10 @@ void SignalHandler::FillRegisterState(void* context, R
-+ state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_PC]);
-+ state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]);
-+ state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]);
-++#elif V8_TARGET_ARCH_PPC64
-++ state->pc = reinterpret_cast<void*>(mcontext.mc_srr0);
-++ state->sp = reinterpret_cast<void*>(mcontext.mc_frame[1]);
-++ state->fp = reinterpret_cast<void*>(mcontext.mc_frame[31]);
-+ #endif // V8_HOST_ARCH_*
-+ #elif V8_OS_NETBSD
-+ #if V8_HOST_ARCH_IA32
-+Obtained from: https://chromium.googlesource.com/v8/v8.git/+/182d9c05e78b1ddb1cb8242cd3628a7855a0336f
-+
-+commit 182d9c05e78b1ddb1cb8242cd3628a7855a0336f
-+Author: Andrey Kosyakov <caseq@chromium.org>
-+Date: 2023-08-17T13:50:11-07:00
-+
-+ Define UChar as char16_t
-+
-+ We used to have UChar defined as uint16_t which does not go along
-+ with STL these days if you try to have an std::basic_string<> of it,
-+ as there are no standard std::char_traits<> specialization for uint16_t.
-+
-+ This switches UChar to char16_t where practical, introducing a few
-+ compatibility shims to keep CL size small, as (1) this would likely
-+ have to be back-ported and (2) crdtp extensively uses uint16_t for
-+ wide chars.
-+
-+ Bug: b:296390693
-+ Change-Id: I66a32d8f0050915225b187de56896c26dd76163d
-+ Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4789966
-+ Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
-+ Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
-+ Auto-Submit: Andrey Kosyakov <caseq@chromium.org>
-+ Cr-Commit-Position: refs/heads/main@{#89559}
-+
-+diff --git node/deps/v8/src/inspector/string-16.cc node/deps/v8/src/inspector/string-16.cc
-+index a8b786a8166..6df9963e970 100644
-+--- node/deps/v8/src/inspector/string-16.cc
-++++ node/deps/v8/src/inspector/string-16.cc
-+@@ -27,7 +27,7 @@ bool isSpaceOrNewLine(UChar c) {
-+ return isASCII(c) && c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9));
-+ }
-+
-+-int64_t charactersToInteger(const UChar* characters, size_t length,
-++int64_t charactersToInteger(const uint16_t* characters, size_t length,
-+ bool* ok = nullptr) {
-+ std::vector<char> buffer;
-+ buffer.reserve(length + 1);
-+@@ -50,6 +50,8 @@ int64_t charactersToInteger(const UChar* characters, size_t length,
-+
-+ String16::String16(const UChar* characters, size_t size)
-+ : m_impl(characters, size) {}
-++String16::String16(const uint16_t* characters, size_t size)
-++ : m_impl(reinterpret_cast<const UChar*>(characters), size) {}
-+
-+ String16::String16(const UChar* characters) : m_impl(characters) {}
-+
-+@@ -241,6 +243,10 @@ String16 String16::fromUTF16LE(const UChar* stringStart, size_t length) {
-+ #endif // V8_TARGET_BIG_ENDIAN
-+ }
-+
-++String16 String16::fromUTF16LE(const uint16_t* stringStart, size_t length) {
-++ return fromUTF16LE(reinterpret_cast<const UChar*>(stringStart), length);
-++}
-++
-+ std::string String16::utf8() const {
-+ return UTF16ToUTF8(m_impl.data(), m_impl.size());
-+ }
-+diff --git node/deps/v8/src/inspector/string-16.h node/deps/v8/src/inspector/string-16.h
-+index 1678ffb2e1e..d9f6c466ab1 100644
-+--- node/deps/v8/src/inspector/string-16.h
-++++ node/deps/v8/src/inspector/string-16.h
-+@@ -6,6 +6,7 @@
-+ #define V8_INSPECTOR_STRING_16_H_
-+
-+ #include <stdint.h>
-++#include <uchar.h>
-+
-+ #include <cctype>
-+ #include <climits>
-+@@ -18,7 +19,7 @@
-+
-+ namespace v8_inspector {
-+
-+-using UChar = uint16_t;
-++using UChar = char16_t;
-+
-+ class String16 {
-+ public:
-+@@ -28,6 +29,7 @@ class String16 {
-+ String16(const String16&) V8_NOEXCEPT = default;
-+ String16(String16&&) V8_NOEXCEPT = default;
-+ String16(const UChar* characters, size_t size);
-++ String16(const uint16_t* characters, size_t size);
-+ V8_EXPORT String16(const UChar* characters);
-+ V8_EXPORT String16(const char* characters);
-+ String16(const char* characters, size_t size);
-+@@ -49,7 +51,9 @@ class String16 {
-+ int toInteger(bool* ok = nullptr) const;
-+ std::pair<size_t, size_t> getTrimmedOffsetAndLength() const;
-+ String16 stripWhiteSpace() const;
-+- const UChar* characters16() const { return m_impl.c_str(); }
-++ const uint16_t* characters16() const {
-++ return reinterpret_cast<const uint16_t*>(m_impl.c_str());
-++ }
-+ size_t length() const { return m_impl.length(); }
-+ bool isEmpty() const { return !m_impl.length(); }
-+ UChar operator[](size_t index) const { return m_impl[index]; }
-+@@ -79,6 +83,8 @@ class String16 {
-+ // On Big endian architectures, byte order needs to be flipped.
-+ V8_EXPORT static String16 fromUTF16LE(const UChar* stringStart,
-+ size_t length);
-++ V8_EXPORT static String16 fromUTF16LE(const uint16_t* stringStart,
-++ size_t length);
-+
-+ std::size_t hash() const {
-+ if (!hash_code) {
-+diff --git node/deps/v8/src/inspector/v8-string-conversions.cc node/deps/v8/src/inspector/v8-string-conversions.cc
-+index 0c75e66b972..8cf19be816c 100644
-+--- node/deps/v8/src/inspector/v8-string-conversions.cc
-++++ node/deps/v8/src/inspector/v8-string-conversions.cc
-+@@ -12,7 +12,7 @@
-+
-+ namespace v8_inspector {
-+ namespace {
-+-using UChar = uint16_t;
-++using UChar = char16_t;
-+ using UChar32 = uint32_t;
-+
-+ bool isASCII(UChar c) { return !(c & ~0x7F); }
-+@@ -386,7 +386,7 @@ std::string UTF16ToUTF8(const UChar* stringStart, size_t length) {
-+
-+ std::basic_string<UChar> UTF8ToUTF16(const char* stringStart, size_t length) {
-+ if (!stringStart || !length) return std::basic_string<UChar>();
-+- std::vector<uint16_t> buffer(length);
-++ std::vector<UChar> buffer(length);
-+ UChar* bufferStart = buffer.data();
-+
-+ UChar* bufferCurrent = bufferStart;
-+@@ -395,7 +395,7 @@ std::basic_string<UChar> UTF8ToUTF16(const char* stringStart, size_t length) {
-+ reinterpret_cast<const char*>(stringStart + length),
-+ &bufferCurrent, bufferCurrent + buffer.size(), nullptr,
-+ true) != conversionOK)
-+- return std::basic_string<uint16_t>();
-++ return std::basic_string<UChar>();
-+ size_t utf16Length = bufferCurrent - bufferStart;
-+ return std::basic_string<UChar>(bufferStart, bufferStart + utf16Length);
-+ }
-+diff --git node/deps/v8/src/inspector/v8-string-conversions.h node/deps/v8/src/inspector/v8-string-conversions.h
-+index eb33c6816a5..1126255dac2 100644
-+--- node/deps/v8/src/inspector/v8-string-conversions.h
-++++ node/deps/v8/src/inspector/v8-string-conversions.h
-+@@ -5,14 +5,16 @@
-+ #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
-+ #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
-+
-++#include <uchar.h>
-++
-+ #include <cstdint>
-+ #include <string>
-+
-+ // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may
-+ // want to use string-16.h directly rather than these.
-+ namespace v8_inspector {
-+-std::basic_string<uint16_t> UTF8ToUTF16(const char* stringStart, size_t length);
-+-std::string UTF16ToUTF8(const uint16_t* stringStart, size_t length);
-++std::basic_string<char16_t> UTF8ToUTF16(const char* stringStart, size_t length);
-++std::string UTF16ToUTF8(const char16_t* stringStart, size_t length);
-+ } // namespace v8_inspector
-+
-+ #endif // V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
-+diff --git node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
-+index c9d89eaa42f..1a46d781b89 100644
-+--- node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
-++++ node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
-+@@ -11,13 +11,16 @@
-+ namespace v8_crdtp {
-+
-+ std::string UTF16ToUTF8(span<uint16_t> in) {
-+- return v8_inspector::UTF16ToUTF8(in.data(), in.size());
-++ return v8_inspector::UTF16ToUTF8(reinterpret_cast<const char16_t*>(in.data()),
-++ in.size());
-+ }
-+
-+ std::vector<uint16_t> UTF8ToUTF16(span<uint8_t> in) {
-+- std::basic_string<uint16_t> utf16 = v8_inspector::UTF8ToUTF16(
-++ std::basic_string<char16_t> utf16 = v8_inspector::UTF8ToUTF16(
-+ reinterpret_cast<const char*>(in.data()), in.size());
-+- return std::vector<uint16_t>(utf16.begin(), utf16.end());
-++ return std::vector<uint16_t>(
-++ reinterpret_cast<const uint16_t*>(utf16.data()),
-++ reinterpret_cast<const uint16_t*>(utf16.data()) + utf16.size());
-+ }
-+
-+ } // namespace v8_crdtp
-+--- node/node.gypi.orig 2023-05-16 06:58:21 UTC
-++++ node/node.gypi
-+@@ -349,6 +349,9 @@
-+ [ 'node_use_openssl=="true"', {
-+ 'defines': [ 'HAVE_OPENSSL=1' ],
-+ 'conditions': [
-++ ['openssl_no_asm==1', {
-++ 'defines': [ 'OPENSSL_NO_ASM' ],
-++ }],
-+ [ 'node_shared_openssl=="false"', {
-+ 'defines': [ 'OPENSSL_API_COMPAT=0x10100000L', ],
-+ 'dependencies': [
-+--- node/src/crypto/crypto_util.cc.orig 2023-05-16 06:58:21 UTC
-++++ node/src/crypto/crypto_util.cc
-+@@ -205,10 +205,12 @@ void InitCryptoOnce() {
-+ // No-op with OPENSSL_NO_COMP builds of OpenSSL.
-+ sk_SSL_COMP_zero(SSL_COMP_get_compression_methods());
-+
-++#if OPENSSL_VERSION_MAJOR < 3
-+ #ifndef OPENSSL_NO_ENGINE
-+ ERR_load_ENGINE_strings();
-+ ENGINE_load_builtin_engines();
-+ #endif // !OPENSSL_NO_ENGINE
-++#endif
-+ }
-+
-+ void GetFipsCrypto(const FunctionCallbackInfo<Value>& args) {
-+--- node/src/cares_wrap.h.orig 2023-05-16 06:58:21 UTC
-++++ node/src/cares_wrap.h
-+@@ -23,7 +23,7 @@
-+ # include <netdb.h>
-+ #endif // __POSIX__
-+
-+-# include <ares_nameser.h>
-++# include <arpa/nameser.h>
-+
-+ namespace node {
-+ namespace cares_wrap {
-+--- node/tools/v8_gypfiles/v8.gyp.orig 2023-05-16 06:58:22 UTC
-++++ node/tools/v8_gypfiles/v8.gyp
-+@@ -1091,7 +1091,7 @@
-+ }],
-+ # Platforms that don't have Compare-And-Swap (CAS) support need to link atomic library
-+ # to implement atomic memory access
-+- ['v8_current_cpu in ["mips64", "mips64el", "ppc", "arm", "riscv64", "loong64"]', {
-++ ['v8_current_cpu in ["mips64", "mips64el", "ppc", "riscv64", "loong64"]', {
-+ 'link_settings': {
-+ 'libraries': ['-latomic', ],
-+ },
-diff --git a/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch.orig b/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch.orig
-new file mode 100644
-index 0000000..6b9de6d
---- /dev/null
-+++ b/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch.orig
-@@ -0,0 +1,602 @@
-+diff --git node/common.gypi node/common.gypi
-+index d3c17d47bc..7970af6ea4 100644
-+--- node/common.gypi
-++++ node/common.gypi
-+@@ -184,7 +184,7 @@
-+ ['clang==1', {
-+ 'lto': ' -flto ', # Clang
-+ }, {
-+- 'lto': ' -flto=4 -fuse-linker-plugin -ffat-lto-objects ', # GCC
-++ 'lto': ' -flto=4 -ffat-lto-objects ', # GCC
-+ }],
-+ ],
-+ },
-+diff --git node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-+index 5e7775f1a5..eeebf67796 100644
-+--- node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-++++ node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-+@@ -33,16 +33,6 @@
-+
-+ #include "nghttp3_macro.h"
-+
-+-#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))
-+-unsigned int __popcnt(unsigned int x) {
-+- unsigned int c = 0;
-+- for (; x; ++c) {
-+- x &= x - 1;
-+- }
-+- return c;
-+-}
-+-#endif
-+-
-+ int nghttp3_ringbuf_init(nghttp3_ringbuf *rb, size_t nmemb, size_t size,
-+ const nghttp3_mem *mem) {
-+ if (nmemb) {
-+diff --git node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c
-+index 74e488bce7..36ca05e80e 100644
-+--- node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c
-++++ node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c
-+@@ -31,16 +31,6 @@
-+
-+ #include "ngtcp2_macro.h"
-+
-+-#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))
-+-unsigned int __popcnt(unsigned int x) {
-+- unsigned int c = 0;
-+- for (; x; ++c) {
-+- x &= x - 1;
-+- }
-+- return c;
-+-}
-+-#endif
-+-
-+ int ngtcp2_ringbuf_init(ngtcp2_ringbuf *rb, size_t nmemb, size_t size,
-+ const ngtcp2_mem *mem) {
-+ uint8_t *buf = ngtcp2_mem_malloc(mem, nmemb * size);
-+diff --git node/deps/v8/include/v8-initialization.h node/deps/v8/include/v8-initialization.h
-+index d3e35d6ec5..6e9bbe3849 100644
-+--- node/deps/v8/include/v8-initialization.h
-++++ node/deps/v8/include/v8-initialization.h
-+@@ -89,6 +89,10 @@ class V8_EXPORT V8 {
-+ static void SetFlagsFromCommandLine(int* argc, char** argv,
-+ bool remove_flags);
-+
-++ static void EnableCompilationForSourcelessUse();
-++ static void DisableCompilationForSourcelessUse();
-++ static void FixSourcelessScript(Isolate* v8_isolate, Local<UnboundScript> script);
-++
-+ /** Get the version string. */
-+ static const char* GetVersion();
-+
-+diff --git node/deps/v8/src/api/api.cc node/deps/v8/src/api/api.cc
-+index a06394e6c1..154b7a82a8 100644
-+--- node/deps/v8/src/api/api.cc
-++++ node/deps/v8/src/api/api.cc
-+@@ -806,6 +806,28 @@ void V8::SetFlagsFromCommandLine(int* argc, char** argv, bool remove_flags) {
-+ HelpOptions(HelpOptions::kDontExit));
-+ }
-+
-++bool save_lazy;
-++bool save_predictable;
-++
-++void V8::EnableCompilationForSourcelessUse() {
-++ save_lazy = i::v8_flags.lazy;
-++ i::v8_flags.lazy = false;
-++ save_predictable = i::v8_flags.predictable;
-++ i::v8_flags.predictable = true;
-++}
-++
-++void V8::DisableCompilationForSourcelessUse() {
-++ i::v8_flags.lazy = save_lazy;
-++ i::v8_flags.predictable = save_predictable;
-++}
-++
-++void V8::FixSourcelessScript(Isolate* v8_isolate, Local<UnboundScript> unbound_script) {
-++ auto isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-++ auto function_info = i::Handle<i::SharedFunctionInfo>::cast(Utils::OpenHandle(*unbound_script));
-++ i::Handle<i::Script> script(i::Script::cast(function_info->script()), isolate);
-++ script->set_source(i::ReadOnlyRoots(isolate).undefined_value());
-++}
-++
-+ RegisteredExtension* RegisteredExtension::first_extension_ = nullptr;
-+
-+ RegisteredExtension::RegisteredExtension(std::unique_ptr<Extension> extension)
-+diff --git node/deps/v8/src/codegen/compiler.cc node/deps/v8/src/codegen/compiler.cc
-+index 31c5acceeb..56cad8671f 100644
-+--- node/deps/v8/src/codegen/compiler.cc
-++++ node/deps/v8/src/codegen/compiler.cc
-+@@ -3475,7 +3475,7 @@ MaybeHandle<SharedFunctionInfo> GetSharedFunctionInfoForScriptImpl(
-+ maybe_script = lookup_result.script();
-+ maybe_result = lookup_result.toplevel_sfi();
-+ is_compiled_scope = lookup_result.is_compiled_scope();
-+- if (!maybe_result.is_null()) {
-++ if (!maybe_result.is_null() && source->length()) {
-+ compile_timer.set_hit_isolate_cache();
-+ } else if (can_consume_code_cache) {
-+ compile_timer.set_consuming_code_cache();
-+diff --git node/deps/v8/src/objects/js-function.cc node/deps/v8/src/objects/js-function.cc
-+index 94f7a672a7..57bb3fc7f1 100644
-+--- node/deps/v8/src/objects/js-function.cc
-++++ node/deps/v8/src/objects/js-function.cc
-+@@ -1280,6 +1280,9 @@ Handle<String> JSFunction::ToString(Handle<JSFunction> function) {
-+ Handle<Object> maybe_class_positions = JSReceiver::GetDataProperty(
-+ isolate, function, isolate->factory()->class_positions_symbol());
-+ if (maybe_class_positions->IsClassPositions()) {
-++ if (String::cast(Script::cast(shared_info->script()).source()).IsUndefined(isolate)) {
-++ return isolate->factory()->NewStringFromAsciiChecked("class {}");
-++ }
-+ ClassPositions class_positions =
-+ ClassPositions::cast(*maybe_class_positions);
-+ int start_position = class_positions.start();
-+diff --git node/deps/v8/src/objects/shared-function-info-inl.h node/deps/v8/src/objects/shared-function-info-inl.h
-+index 5621b15d98..722e1d18cb 100644
-+--- node/deps/v8/src/objects/shared-function-info-inl.h
-++++ node/deps/v8/src/objects/shared-function-info-inl.h
-+@@ -635,6 +635,14 @@ bool SharedFunctionInfo::ShouldFlushCode(
-+ }
-+ if (!data.IsBytecodeArray()) return false;
-+
-++ Object script_obj = script();
-++ if (!script_obj.IsUndefined()) {
-++ Script script = Script::cast(script_obj);
-++ if (script.source().IsUndefined()) {
-++ return false;
-++ }
-++ }
-++
-+ if (IsStressFlushingEnabled(code_flush_mode)) return true;
-+
-+ BytecodeArray bytecode = BytecodeArray::cast(data);
-+diff --git node/deps/v8/src/parsing/parsing.cc node/deps/v8/src/parsing/parsing.cc
-+index 8c55a6fb6e..70bf82a57d 100644
-+--- node/deps/v8/src/parsing/parsing.cc
-++++ node/deps/v8/src/parsing/parsing.cc
-+@@ -42,6 +42,7 @@ bool ParseProgram(ParseInfo* info, Handle<Script> script,
-+ Isolate* isolate, ReportStatisticsMode mode) {
-+ DCHECK(info->flags().is_toplevel());
-+ DCHECK_NULL(info->literal());
-++ if (String::cast(script->source()).IsUndefined(isolate)) return false;
-+
-+ VMState<PARSER> state(isolate);
-+
-+@@ -75,6 +76,7 @@ bool ParseFunction(ParseInfo* info, Handle<SharedFunctionInfo> shared_info,
-+
-+ // Create a character stream for the parser.
-+ Handle<Script> script(Script::cast(shared_info->script()), isolate);
-++ if (String::cast(script->source()).IsUndefined(isolate)) return false;
-+ Handle<String> source(String::cast(script->source()), isolate);
-+ std::unique_ptr<Utf16CharacterStream> stream(
-+ ScannerStream::For(isolate, source, shared_info->StartPosition(),
-+diff --git node/deps/v8/src/snapshot/code-serializer.cc node/deps/v8/src/snapshot/code-serializer.cc
-+index c83e8e4581..8cb451e147 100644
-+--- node/deps/v8/src/snapshot/code-serializer.cc
-++++ node/deps/v8/src/snapshot/code-serializer.cc
-+@@ -659,10 +659,6 @@ SerializedCodeSanityCheckResult SerializedCodeData::SanityCheck(
-+
-+ SerializedCodeSanityCheckResult SerializedCodeData::SanityCheckJustSource(
-+ uint32_t expected_source_hash) const {
-+- uint32_t source_hash = GetHeaderValue(kSourceHashOffset);
-+- if (source_hash != expected_source_hash) {
-+- return SerializedCodeSanityCheckResult::kSourceMismatch;
-+- }
-+ return SerializedCodeSanityCheckResult::kSuccess;
-+ }
-+
-+@@ -679,10 +675,6 @@ SerializedCodeSanityCheckResult SerializedCodeData::SanityCheckWithoutSource()
-+ if (version_hash != Version::Hash()) {
-+ return SerializedCodeSanityCheckResult::kVersionMismatch;
-+ }
-+- uint32_t flags_hash = GetHeaderValue(kFlagHashOffset);
-+- if (flags_hash != FlagList::Hash()) {
-+- return SerializedCodeSanityCheckResult::kFlagsMismatch;
-+- }
-+ uint32_t payload_length = GetHeaderValue(kPayloadLengthOffset);
-+ uint32_t max_payload_length = this->size_ - kHeaderSize;
-+ if (payload_length > max_payload_length) {
-+diff --git node/lib/child_process.js node/lib/child_process.js
-+index cc81cb373d..e06da1048a 100644
-+--- node/lib/child_process.js
-++++ node/lib/child_process.js
-+@@ -169,7 +169,7 @@ function fork(modulePath, args = [], options) {
-+ throw new ERR_CHILD_PROCESS_IPC_REQUIRED('options.stdio');
-+ }
-+
-+- return spawn(options.execPath, args, options);
-++ return module.exports.spawn(options.execPath, args, options);
-+ }
-+
-+ function _forkChild(fd, serializationMode) {
-+diff --git node/lib/internal/bootstrap/pkg.js node/lib/internal/bootstrap/pkg.js
-+new file mode 100644
-+index 0000000000..a697294fdf
-+--- /dev/null
-++++ node/lib/internal/bootstrap/pkg.js
-+@@ -0,0 +1,49 @@
-++'use strict';
-++
-++const {
-++ prepareWorkerThreadExecution,
-++ prepareMainThreadExecution
-++} = require('internal/process/pre_execution');
-++
-++if (internalBinding('worker').isMainThread) {
-++ prepareMainThreadExecution(true);
-++} else {
-++ prepareWorkerThreadExecution();
-++}
-++
-++(function () {
-++ var __require__ = require;
-++ var fs = __require__('fs');
-++ var vm = __require__('vm');
-++ function readPrelude (fd) {
-++ var PAYLOAD_POSITION = '// PAYLOAD_POSITION //' | 0;
-++ var PAYLOAD_SIZE = '// PAYLOAD_SIZE //' | 0;
-++ var PRELUDE_POSITION = '// PRELUDE_POSITION //' | 0;
-++ var PRELUDE_SIZE = '// PRELUDE_SIZE //' | 0;
-++ if (!PRELUDE_POSITION) {
-++ // no prelude - remove entrypoint from argv[1]
-++ process.argv.splice(1, 1);
-++ return { undoPatch: true };
-++ }
-++ var prelude = Buffer.alloc(PRELUDE_SIZE);
-++ var read = fs.readSync(fd, prelude, 0, PRELUDE_SIZE, PRELUDE_POSITION);
-++ if (read !== PRELUDE_SIZE) {
-++ console.error('Pkg: Error reading from file.');
-++ process.exit(1);
-++ }
-++ var s = new vm.Script(prelude, { filename: 'pkg/prelude/bootstrap.js' });
-++ var fn = s.runInThisContext();
-++ return fn(process, __require__,
-++ console, fd, PAYLOAD_POSITION, PAYLOAD_SIZE);
-++ }
-++ (function () {
-++ var fd = fs.openSync(process.execPath, 'r');
-++ var result = readPrelude(fd);
-++ if (result && result.undoPatch) {
-++ var bindingFs = process.binding('fs');
-++ fs.internalModuleStat = bindingFs.internalModuleStat;
-++ fs.internalModuleReadJSON = bindingFs.internalModuleReadJSON;
-++ fs.closeSync(fd);
-++ }
-++ }());
-++}());
-+diff --git node/lib/internal/modules/cjs/loader.js node/lib/internal/modules/cjs/loader.js
-+index ebccdb2825..178299c752 100644
-+--- node/lib/internal/modules/cjs/loader.js
-++++ node/lib/internal/modules/cjs/loader.js
-+@@ -141,7 +141,7 @@ const {
-+ const assert = require('internal/assert');
-+ const fs = require('fs');
-+ const path = require('path');
-+-const { internalModuleStat } = internalBinding('fs');
-++const internalModuleStat = function (f) { return require('fs').internalModuleStat(f); }
-+ const { safeGetenv } = internalBinding('credentials');
-+ const {
-+ privateSymbols: {
-+diff --git node/lib/internal/modules/package_json_reader.js node/lib/internal/modules/package_json_reader.js
-+index 88c079d10d..a7eaca0574 100644
-+--- node/lib/internal/modules/package_json_reader.js
-++++ node/lib/internal/modules/package_json_reader.js
-+@@ -12,7 +12,7 @@ const {
-+ const {
-+ ERR_INVALID_PACKAGE_CONFIG,
-+ } = require('internal/errors').codes;
-+-const { internalModuleReadJSON } = internalBinding('fs');
-++const internalModuleReadJSON = function (f) { return require('fs').internalModuleReadJSON(f); }
-+ const { resolve, sep, toNamespacedPath } = require('path');
-+ const permission = require('internal/process/permission');
-+ const { kEmptyObject } = require('internal/util');
-+diff --git node/lib/internal/process/pre_execution.js node/lib/internal/process/pre_execution.js
-+index 0bbabb80c2..5dd097b69e 100644
-+--- node/lib/internal/process/pre_execution.js
-++++ node/lib/internal/process/pre_execution.js
-+@@ -50,7 +50,11 @@ const {
-+ },
-+ } = require('internal/v8/startup_snapshot');
-+
-++let _alreadyPrepared = false;
-++
-+ function prepareMainThreadExecution(expandArgv1 = false, initializeModules = true) {
-++ if (_alreadyPrepared === true) return;
-++ _alreadyPrepared = true;
-+ return prepareExecution({
-+ expandArgv1,
-+ initializeModules,
-+@@ -243,7 +247,12 @@ function patchProcessObject(expandArgv1) {
-+ let mainEntry;
-+ // If requested, update process.argv[1] to replace whatever the user provided with the resolved absolute file path of
-+ // the entry point.
-+- if (expandArgv1 && process.argv[1] && process.argv[1][0] !== '-') {
-++ if (
-++ expandArgv1 &&
-++ process.argv[1] &&
-++ process.argv[1][0] !== '-' &&
-++ process.argv[1] !== 'PKG_DUMMY_ENTRYPOINT'
-++ ) {
-+ // Expand process.argv[1] into a full path.
-+ const path = require('path');
-+ try {
-+@@ -739,6 +748,7 @@ function loadPreloadModules() {
-+ // For user code, we preload modules if `-r` is passed
-+ const preloadModules = getOptionValue('--require');
-+ if (preloadModules && preloadModules.length > 0) {
-++ assert(false, '--require is not supported');
-+ const {
-+ Module: {
-+ _preloadModules,
-+diff --git node/lib/vm.js node/lib/vm.js
-+index a12e932d8d..931a996330 100644
-+--- node/lib/vm.js
-++++ node/lib/vm.js
-+@@ -98,6 +98,7 @@ class Script extends ContextifyScript {
-+ produceCachedData = false,
-+ importModuleDynamically,
-+ [kParsingContext]: parsingContext,
-++ sourceless = false,
-+ } = options;
-+
-+ validateString(filename, 'options.filename');
-+@@ -121,7 +122,8 @@ class Script extends ContextifyScript {
-+ cachedData,
-+ produceCachedData,
-+ parsingContext,
-+- hostDefinedOptionId);
-++ hostDefinedOptionId,
-++ sourceless);
-+ } catch (e) {
-+ throw e; /* node-do-not-add-exception-line */
-+ }
-+diff --git node/src/inspector_agent.cc node/src/inspector_agent.cc
-+index bb39a0cb42..5fa6cb65cc 100644
-+--- node/src/inspector_agent.cc
-++++ node/src/inspector_agent.cc
-+@@ -766,11 +766,6 @@ bool Agent::Start(const std::string& path,
-+ StartIoThreadAsyncCallback));
-+ uv_unref(reinterpret_cast<uv_handle_t*>(&start_io_thread_async));
-+ start_io_thread_async.data = this;
-+- if (parent_env_->should_start_debug_signal_handler()) {
-+- // Ignore failure, SIGUSR1 won't work, but that should not block node
-+- // start.
-+- StartDebugSignalHandler();
-+- }
-+
-+ parent_env_->AddCleanupHook([](void* data) {
-+ Environment* env = static_cast<Environment*>(data);
-+diff --git node/src/node.cc node/src/node.cc
-+index 4ad2c8b804..ab6174fab6 100644
-+--- node/src/node.cc
-++++ node/src/node.cc
-+@@ -389,6 +389,8 @@ MaybeLocal<Value> StartExecution(Environment* env, StartExecutionCallback cb) {
-+ return env->RunSnapshotDeserializeMain();
-+ }
-+
-++ StartExecution(env, "internal/bootstrap/pkg");
-++
-+ if (env->worker_context() != nullptr) {
-+ return StartExecution(env, "internal/main/worker_thread");
-+ }
-+@@ -613,14 +615,6 @@ static void PlatformInit(ProcessInitializationFlags::Flags flags) {
-+ }
-+
-+ if (!(flags & ProcessInitializationFlags::kNoDefaultSignalHandling)) {
-+-#if HAVE_INSPECTOR
-+- sigset_t sigmask;
-+- sigemptyset(&sigmask);
-+- sigaddset(&sigmask, SIGUSR1);
-+- const int err = pthread_sigmask(SIG_SETMASK, &sigmask, nullptr);
-+- CHECK_EQ(err, 0);
-+-#endif // HAVE_INSPECTOR
-+-
-+ ResetSignalHandlers();
-+ }
-+
-+diff --git node/src/node_contextify.cc node/src/node_contextify.cc
-+index 7f82bca746..62705f04c5 100644
-+--- node/src/node_contextify.cc
-++++ node/src/node_contextify.cc
-+@@ -79,6 +79,7 @@ using v8::String;
-+ using v8::Symbol;
-+ using v8::Uint32;
-+ using v8::UnboundScript;
-++using v8::V8;
-+ using v8::Value;
-+ using v8::WeakCallbackInfo;
-+
-+@@ -817,13 +818,14 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ Local<ArrayBufferView> cached_data_buf;
-+ bool produce_cached_data = false;
-+ Local<Context> parsing_context = context;
-++ bool sourceless = false;
-+
-+ Local<Symbol> id_symbol;
-+ if (argc > 2) {
-+ // new ContextifyScript(code, filename, lineOffset, columnOffset,
-+ // cachedData, produceCachedData, parsingContext,
-+- // hostDefinedOptionId)
-+- CHECK_EQ(argc, 8);
-++ // hostDefinedOptionId, sourceless)
-++ CHECK_GE(argc, 8);
-+ CHECK(args[2]->IsNumber());
-+ line_offset = args[2].As<Int32>()->Value();
-+ CHECK(args[3]->IsNumber());
-+@@ -844,6 +846,10 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ }
-+ CHECK(args[7]->IsSymbol());
-+ id_symbol = args[7].As<Symbol>();
-++ if (argc > 8) {
-++ CHECK(args[8]->IsBoolean());
-++ sourceless = args[8]->IsTrue();
-++ }
-+ }
-+
-+ ContextifyScript* contextify_script =
-+@@ -892,6 +898,10 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ ShouldNotAbortOnUncaughtScope no_abort_scope(env);
-+ Context::Scope scope(parsing_context);
-+
-++ if (sourceless && produce_cached_data) {
-++ V8::EnableCompilationForSourcelessUse();
-++ }
-++
-+ MaybeLocal<UnboundScript> maybe_v8_script =
-+ ScriptCompiler::CompileUnboundScript(isolate, &source, compile_options);
-+
-+@@ -906,6 +916,11 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ return;
-+ }
-+
-++ if (sourceless && compile_options == ScriptCompiler::kConsumeCodeCache) {
-++ if (!source.GetCachedData()->rejected) {
-++ V8::FixSourcelessScript(env->isolate(), v8_script);
-++ }
-++ }
-+ contextify_script->script_.Reset(isolate, v8_script);
-+ contextify_script->script_.SetWeak();
-+ contextify_script->object()->SetInternalFieldForNodeCore(kUnboundScriptSlot,
-+@@ -939,6 +954,10 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ .IsNothing())
-+ return;
-+
-++ if (sourceless && produce_cached_data) {
-++ V8::DisableCompilationForSourcelessUse();
-++ }
-++
-+ TRACE_EVENT_END0(TRACING_CATEGORY_NODE2(vm, script), "ContextifyScript::New");
-+ }
-+
-+diff --git node/src/node_main.cc node/src/node_main.cc
-+index f66099a557..4048f6bd93 100644
-+--- node/src/node_main.cc
-++++ node/src/node_main.cc
-+@@ -22,6 +22,8 @@
-+ #include "node.h"
-+ #include <cstdio>
-+
-++int reorder(int argc, char** argv);
-++
-+ #ifdef _WIN32
-+ #include <windows.h>
-+ #include <VersionHelpers.h>
-+@@ -88,12 +90,95 @@ int wmain(int argc, wchar_t* wargv[]) {
-+ }
-+ argv[argc] = nullptr;
-+ // Now that conversion is done, we can finally start.
-+- return node::Start(argc, argv);
-++ return reorder(argc, argv);
-+ }
-+ #else
-+ // UNIX
-+
-+ int main(int argc, char* argv[]) {
-++ return reorder(argc, argv);
-++}
-++#endif
-++
-++#include <string.h>
-++
-++int strlen2 (char* s) {
-++ int len = 0;
-++ while (*s) {
-++ len += 1;
-++ s += 1;
-++ }
-++ return len;
-++}
-++
-++bool should_set_dummy() {
-++#ifdef _WIN32
-++ #define MAX_ENV_LENGTH 32767
-++ wchar_t execpath_env[MAX_ENV_LENGTH];
-++ DWORD result = GetEnvironmentVariableW(L"PKG_EXECPATH", execpath_env, MAX_ENV_LENGTH);
-++ if (result == 0 && GetLastError() != ERROR_SUCCESS) return true;
-++ return wcscmp(execpath_env, L"PKG_INVOKE_NODEJS") != 0;
-++#else
-++ const char* execpath_env = getenv("PKG_EXECPATH");
-++ if (!execpath_env) return true;
-++ return strcmp(execpath_env, "PKG_INVOKE_NODEJS") != 0;
-++#endif
-++}
-++
-++// for uv_setup_args
-++int adjacent(int argc, char** argv) {
-++ size_t size = 0;
-++ for (int i = 0; i < argc; i++) {
-++ size += strlen(argv[i]) + 1;
-++ }
-++ char* args = new char[size];
-++ size_t pos = 0;
-++ for (int i = 0; i < argc; i++) {
-++ memcpy(&args[pos], argv[i], strlen(argv[i]) + 1);
-++ argv[i] = &args[pos];
-++ pos += strlen(argv[i]) + 1;
-++ }
-+ return node::Start(argc, argv);
-+ }
-++
-++volatile char* BAKERY = (volatile char*) "\0// BAKERY // BAKERY " \
-++ "// BAKERY // BAKERY // BAKERY // BAKERY // BAKERY // BAKERY " \
-++ "// BAKERY // BAKERY // BAKERY // BAKERY // BAKERY // BAKERY " \
-++ "// BAKERY // BAKERY // BAKERY // BAKERY // BAKERY // BAKERY ";
-++
-++#ifdef __clang__
-++__attribute__((optnone))
-++#elif defined(__GNUC__)
-++__attribute__((optimize(0)))
-+ #endif
-++
-++int load_baked(char** nargv) {
-++ int c = 1;
-++
-++ char* bakery = (char*) BAKERY;
-++ while (true) {
-++ size_t width = strlen2(bakery);
-++ if (width == 0) break;
-++ nargv[c++] = bakery;
-++ bakery += width + 1;
-++ }
-++
-++ return c;
-++}
-++
-++int reorder(int argc, char** argv) {
-++ char** nargv = new char*[argc + 64];
-++
-++ nargv[0] = argv[0];
-++ int c = load_baked(nargv);
-++
-++ if (should_set_dummy()) {
-++ nargv[c++] = (char*) "PKG_DUMMY_ENTRYPOINT";
-++ }
-++
-++ for (int i = 1; i < argc; i++) {
-++ nargv[c++] = argv[i];
-++ }
-++
-++ return adjacent(c, nargv);
-++}
-+diff --git node/src/node_options.cc node/src/node_options.cc
-+index 9d5accc3eb..8e3c304a13 100644
-+--- node/src/node_options.cc
-++++ node/src/node_options.cc
-+@@ -316,6 +316,7 @@ void Parse(
-+ // TODO(addaleax): Make that unnecessary.
-+
-+ DebugOptionsParser::DebugOptionsParser() {
-++ return;
-+ #ifndef DISABLE_SINGLE_EXECUTABLE_APPLICATION
-+ if (sea::IsSingleExecutable()) return;
-+ #endif
-+diff --git node/tools/icu/icu-generic.gyp node/tools/icu/icu-generic.gyp
-+index 2655b9e694..1d951571c7 100644
-+--- node/tools/icu/icu-generic.gyp
-++++ node/tools/icu/icu-generic.gyp
-+@@ -52,7 +52,7 @@
-+ 'conditions': [
-+ [ 'os_posix == 1 and OS != "mac" and OS != "ios"', {
-+ 'cflags': [ '-Wno-deprecated-declarations', '-Wno-strict-aliasing' ],
-+- 'cflags_cc': [ '-frtti' ],
-++ 'cflags_cc': [ '-frtti', '-fno-lto' ],
-+ 'cflags_cc!': [ '-fno-rtti' ],
-+ }],
-+ [ 'OS == "mac" or OS == "ios"', {
diff --git a/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch b/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch
new file mode 100644
index 000000000000..0940e6667edd
--- /dev/null
+++ b/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch
@@ -0,0 +1,192 @@
+https://github.com/yao-pkg/pkg-fetch/raw/refs/tags/v3.5.24/patches/node.v20.19.4.cpp.patch
++ local FreeBSD patches
+
+--- yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.4.cpp.patch
++++ yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.4.cpp.patch
+@@ -600,3 +600,186 @@ index 2655b9e694..1d951571c7 100644
+ 'cflags_cc!': [ '-fno-rtti' ],
+ }],
+ [ 'OS == "mac" or OS == "ios"', {
++--- node/common.gypi.orig 2023-07-20 18:27:37 UTC
+++++ node/common.gypi
++@@ -426,7 +426,7 @@
++ 'ldflags': [ '-m32' ],
++ }],
++ [ 'host_arch=="ppc64" and OS not in "aix os400"', {
++- 'cflags': [ '-m64', '-mminimal-toc' ],
+++ 'cflags': [ '-m64' ],
++ 'ldflags': [ '-m64' ],
++ }],
++ [ 'host_arch=="s390x" and OS=="linux"', {
++@@ -450,7 +450,7 @@
++ 'ldflags': [ '-m32' ],
++ }],
++ [ 'target_arch=="ppc64" and OS not in "aix os400"', {
++- 'cflags': [ '-m64', '-mminimal-toc' ],
+++ 'cflags': [ '-m64' ],
++ 'ldflags': [ '-m64' ],
++ }],
++ [ 'target_arch=="s390x" and OS=="linux"', {
++--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi.orig 2023-05-16 06:58:19 UTC
+++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi
++@@ -13,7 +13,7 @@
++ '-Wall -O3 -fomit-frame-pointer',
++ ],
++ 'openssl_ex_libs_linux-elf': [
++- '-ldl -pthread',
+++ '-pthread',
++ ],
++ 'openssl_cli_srcs_linux-elf': [
++ 'openssl/apps/lib/cmp_mock_srv.c',
++--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi.orig 2023-05-16 06:58:19 UTC
+++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi
++@@ -977,7 +977,7 @@
++ '-Wall -O3 -fomit-frame-pointer',
++ ],
++ 'openssl_ex_libs_linux-elf': [
++- '-ldl -pthread',
+++ '-pthread',
++ ],
++ },
++ 'include_dirs': [
++--- node/deps/openssl/openssl-cl_no_asm.gypi.orig 2023-11-22 10:13:54 UTC
+++++ node/deps/openssl/openssl-cl_no_asm.gypi
++@@ -1,4 +1,5 @@
++ {
+++ 'defines': ['OPENSSL_NO_ASM'],
++ 'conditions': [
++ ['target_arch=="ppc64" and OS in ("aix", "os400")', {
++ 'includes': ['config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi'],
++@@ -45,7 +46,7 @@
++ 'includes': ['config/archs/linux64-loongarch64/no-asm/openssl-cl.gypi'],
++ }, {
++ # Other architectures don't use assembly
++- 'includes': ['config/archs/linux-x86_64/no-asm/openssl-cl.gypi'],
+++ 'includes': ['config/archs/linux-elf/no-asm/openssl-cl.gypi'],
++ }],
++ ],
++ }
++--- node/deps/openssl/openssl_no_asm.gypi.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/openssl/openssl_no_asm.gypi
++@@ -44,7 +44,7 @@
++ 'includes': ['config/archs/linux64-riscv64/no-asm/openssl.gypi'],
++ }, {
++ # Other architectures don't use assembly
++- 'includes': ['config/archs/linux-x86_64/no-asm/openssl.gypi'],
+++ 'includes': ['config/archs/linux-elf/no-asm/openssl.gypi'],
++ }],
++ ],
++ }
++--- node/deps/v8/src/base/platform/platform-freebsd.cc.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/base/platform/platform-freebsd.cc
++@@ -82,8 +82,8 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
++ lib_name = std::string(path);
++ }
++ result.push_back(SharedLibraryAddress(
++- lib_name, reinterpret_cast<uintptr_t>(map->kve_start),
++- reinterpret_cast<uintptr_t>(map->kve_end)));
+++ lib_name, static_cast<uintptr_t>(map->kve_start),
+++ static_cast<uintptr_t>(map->kve_end)));
++ }
++
++ start += ssize;
++--- node/deps/v8/src/codegen/arm/cpu-arm.cc.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/codegen/arm/cpu-arm.cc
++@@ -2,12 +2,15 @@
++ // Use of this source code is governed by a BSD-style license that can be
++ // found in the LICENSE file.
++
+++#include "include/v8config.h"
+++
++ // CPU specific code for arm independent of OS goes here.
++ #ifdef __arm__
++ #ifdef __QNXNTO__
++ #include <sys/mman.h> // for cache flushing.
++ #undef MAP_TYPE
++ #elif V8_OS_FREEBSD
+++#include <sys/cdefs.h>
++ #include <machine/sysarch.h> // for cache flushing
++ #include <sys/types.h>
++ #elif V8_OS_STARBOARD
++--- node/deps/v8/src/codegen/ppc/constants-ppc.h.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/codegen/ppc/constants-ppc.h
++@@ -36,7 +36,7 @@
++ #endif
++
++ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || !V8_TARGET_ARCH_PPC64 || \
++- V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)
+++ (defined(_CALL_ELF) && _CALL_ELF == 2)
++ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1
++ #else
++ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0
++@@ -44,7 +44,7 @@
++
++ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || \
++ (V8_TARGET_ARCH_PPC64 && \
++- (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)))
+++ (defined(_CALL_ELF) && _CALL_ELF == 2))
++ #define ABI_CALL_VIA_IP 1
++ #else
++ #define ABI_CALL_VIA_IP 0
++--- node/deps/v8/src/libsampler/sampler.cc.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/libsampler/sampler.cc
++@@ -511,6 +511,10 @@ void SignalHandler::FillRegisterState(void* context, R
++ state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_PC]);
++ state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]);
++ state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]);
+++#elif V8_TARGET_ARCH_PPC64
+++ state->pc = reinterpret_cast<void*>(mcontext.mc_srr0);
+++ state->sp = reinterpret_cast<void*>(mcontext.mc_frame[1]);
+++ state->fp = reinterpret_cast<void*>(mcontext.mc_frame[31]);
++ #endif // V8_HOST_ARCH_*
++ #elif V8_OS_NETBSD
++ #if V8_HOST_ARCH_IA32
++--- node.gypi.orig 2023-05-16 06:58:21 UTC
+++++ node.gypi
++@@ -349,6 +349,9 @@
++ [ 'node_use_openssl=="true"', {
++ 'defines': [ 'HAVE_OPENSSL=1' ],
++ 'conditions': [
+++ ['openssl_no_asm==1', {
+++ 'defines': [ 'OPENSSL_NO_ASM' ],
+++ }],
++ [ 'node_shared_openssl=="false"', {
++ 'defines': [ 'OPENSSL_API_COMPAT=0x10100000L', ],
++ 'dependencies': [
++--- node/src/crypto/crypto_util.cc.orig 2023-05-16 06:58:21 UTC
+++++ node/src/crypto/crypto_util.cc
++@@ -205,10 +205,12 @@ void InitCryptoOnce() {
++ // No-op with OPENSSL_NO_COMP builds of OpenSSL.
++ sk_SSL_COMP_zero(SSL_COMP_get_compression_methods());
++
+++#if OPENSSL_VERSION_MAJOR < 3
++ #ifndef OPENSSL_NO_ENGINE
++ ERR_load_ENGINE_strings();
++ ENGINE_load_builtin_engines();
++ #endif // !OPENSSL_NO_ENGINE
+++#endif
++ }
++
++ void GetFipsCrypto(const FunctionCallbackInfo<Value>& args) {
++--- node/src/cares_wrap.h.orig 2023-05-16 06:58:21 UTC
+++++ node/src/cares_wrap.h
++@@ -23,7 +23,7 @@
++ # include <netdb.h>
++ #endif // __POSIX__
++
++-# include <ares_nameser.h>
+++# include <arpa/nameser.h>
++
++ namespace node {
++ namespace cares_wrap {
++--- node/tools/v8_gypfiles/v8.gyp.orig 2023-05-16 06:58:22 UTC
+++++ node/tools/v8_gypfiles/v8.gyp
++@@ -1091,7 +1091,7 @@
++ }],
++ # Platforms that don't have Compare-And-Swap (CAS) support need to link atomic library
++ # to implement atomic memory access
++- ['v8_current_cpu in ["mips64", "mips64el", "ppc", "arm", "riscv64", "loong64"]', {
+++ ['v8_current_cpu in ["mips64", "mips64el", "ppc", "riscv64", "loong64"]', {
++ 'link_settings': {
++ 'libraries': ['-latomic', ],
++ },
diff --git a/www/onlyoffice-documentserver/files/npm b/www/onlyoffice-documentserver/files/npm
index 63b3d2d821f1..303b86ba9102 100644
--- a/www/onlyoffice-documentserver/files/npm
+++ b/www/onlyoffice-documentserver/files/npm
@@ -1,3 +1,3 @@
#!/bin/sh
-exec %%LOCALBASE%%/bin/npm --offline --nodedir=%%LOCALBASE%% "$@"
-#exec %%LOCALBASE%%/bin/npm --nodedir=%%LOCALBASE%% "$@"
+exec %%LOCALBASE%%/bin/npm --offline "$@"
+#exec %%LOCALBASE%%/bin/npm "$@"
diff --git a/www/onlyoffice-documentserver/files/package-lock.json b/www/onlyoffice-documentserver/files/package-lock.json
index 3894802eb620..59035f286384 100644
--- a/www/onlyoffice-documentserver/files/package-lock.json
+++ b/www/onlyoffice-documentserver/files/package-lock.json
@@ -5,7 +5,7 @@
"packages": {
"": {
"dependencies": {
- "@yao-pkg/pkg": "^6.5.1"
+ "@yao-pkg/pkg": "^6.6.0"
}
},
"node_modules/@babel/generator": {
@@ -118,15 +118,15 @@
}
},
"node_modules/@yao-pkg/pkg": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.5.1.tgz",
- "integrity": "sha512-z6XlySYfnqfm1AfVlBN8A3yeAQniIwL7TKQfDCGsswYSVYLt2snbRefQYsfQQ3pw5lVXrZdLqgTjzaqID9IkWA==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.6.0.tgz",
+ "integrity": "sha512-3/oiaSm7fS0Fc7dzp22r9B7vFaguGhO9vERgEReRYj2EUzdi5ssyYhe1uYJG4ec/dmo2GG6RRHOUAT8savl79Q==",
"license": "MIT",
"dependencies": {
"@babel/generator": "^7.23.0",
"@babel/parser": "^7.23.0",
"@babel/types": "^7.23.0",
- "@yao-pkg/pkg-fetch": "3.5.23",
+ "@yao-pkg/pkg-fetch": "3.5.24",
"into-stream": "^6.0.0",
"minimist": "^1.2.6",
"multistream": "^4.1.0",
@@ -147,9 +147,9 @@
}
},
"node_modules/@yao-pkg/pkg-fetch": {
- "version": "3.5.23",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.23.tgz",
- "integrity": "sha512-rn45sqVQSkcJNSBdTnYze3n+kyub4CN8aiWYlPgA9yp9FZeEF+BlpL68kSIm3HaVuANniF+7RBMH5DkC4zlHZA==",
+ "version": "3.5.24",
+ "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.24.tgz",
+ "integrity": "sha512-FPESCH1uXCYui6jeDp2aayWuFHR39w+uU1r88nI6JWRvPYOU64cHPUV/p6GSFoQdpna7ip92HnrZKbBC60l0gA==",
"license": "MIT",
"dependencies": {
"https-proxy-agent": "^5.0.0",
diff --git a/www/onlyoffice-documentserver/files/package.json b/www/onlyoffice-documentserver/files/package.json
index 942f29ed7251..9251e320859a 100644
--- a/www/onlyoffice-documentserver/files/package.json
+++ b/www/onlyoffice-documentserver/files/package.json
@@ -1,5 +1,5 @@
{
"dependencies": {
- "@yao-pkg/pkg": "^6.5.1"
+ "@yao-pkg/pkg": "^6.6.0"
}
}
diff --git a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_build__server.py b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_build__server.py
index 74dddee61746..4d6a198f38f6 100644
--- a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_build__server.py
+++ b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_build__server.py
@@ -1,8 +1,11 @@
--- build_tools/scripts/build_server.py.orig 2025-06-11 12:56:35 UTC
+++ build_tools/scripts/build_server.py
-@@ -41,6 +41,10 @@ def make():
+@@ -39,8 +39,12 @@
+ base.copy_file(custom_public_key, server_dir + '/Common/sources')
+
#node22 packaging has issue https://github.com/yao-pkg/pkg/issues/87
- pkg_target = "node20"
+- pkg_target = "node20"
++ pkg_target = "node%%PKGFETCH_NODE_MAJOR_VERSION%%"
+ if ("freebsd" == base.host_platform()):
+ pkg_target += "-freebsd"
@@ -11,7 +14,7 @@
if ("linux" == base.host_platform()):
pkg_target += "-linux"
if (-1 != config.option("platform").find("linux_arm64")):
-@@ -49,14 +53,15 @@ def make():
+@@ -49,14 +53,15 @@
if ("windows" == base.host_platform()):
pkg_target += "-win"
diff --git a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_make__common.py b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_make__common.py
index c1fbe9c44b38..cea340cf686e 100644
--- a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_make__common.py
+++ b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_make__common.py
@@ -1,6 +1,6 @@
---- build_tools/scripts/core_common/make_common.py.orig 2025-06-11 12:56:35 UTC
+--- build_tools/scripts/core_common/make_common.py.orig 2025-08-05 15:06:08 UTC
+++ build_tools/scripts/core_common/make_common.py
-@@ -8,21 +8,21 @@ import config
+@@ -8,22 +8,22 @@ import config
import base
import glob
@@ -22,6 +22,7 @@
+#import hunspell
import glew
import harfbuzz
+ import oo_brotli
-import hyphen
-import googletest
+#import hyphen
@@ -29,7 +30,7 @@
import libvlc
def check_android_ndk_macos_arm(dir):
-@@ -38,19 +38,19 @@ def make():
+@@ -39,19 +39,19 @@ def make():
if base.is_dir(toolchain):
check_android_ndk_macos_arm(toolchain + "/prebuilt")
@@ -54,6 +55,6 @@
- googletest.make()
+# hyphen.make()
+# googletest.make()
+ oo_brotli.make()
if config.check_option("build-libvlc", "1"):
- libvlc.make()
diff --git a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py
index df8c9dc3c87b..f7392a57031b 100644
--- a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py
+++ b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py
@@ -5,7 +5,7 @@
old_cur_dir = os.getcwd()
- print("[fetch]: html")
-+ print("[path & build]: html")
++ print("[patch & build]: html")
base_dir = base.get_script_dir() + "/../../core/Common/3dParty/html"
diff --git a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_iwork.py b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_iwork.py
index fc7d27d3fabf..74b86c964128 100644
--- a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_iwork.py
+++ b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_iwork.py
@@ -1,5 +1,5 @@
---- build_tools/scripts/core_common/modules/iwork.py.orig 2025-03-08 16:01:52.467009000 +0100
-+++ build_tools/scripts/core_common/modules/iwork.py 2025-03-08 16:19:57.046228000 +0100
+--- build_tools/scripts/core_common/modules/iwork.py.orig 2025-08-05 15:06:08 UTC
++++ build_tools/scripts/core_common/modules/iwork.py
@@ -30,9 +30,9 @@ def make(use_gperf = True):
if use_gperf:
cmd_args.append("--gperf")
diff --git a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8.py b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8.py
index b2204a037714..2b9632e8092f 100644
--- a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8.py
+++ b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8.py
@@ -1,14 +1,14 @@
---- build_tools/scripts/core_common/modules/v8.py.orig 2024-02-07 10:44:24.000000000 +0100
-+++ build_tools/scripts/core_common/modules/v8.py 2024-03-01 10:40:07.626578000 +0100
-@@ -9,6 +9,7 @@ def clean():
+--- build_tools/scripts/core_common/modules/v8.py.orig 2025-08-05 15:06:08 UTC
++++ build_tools/scripts/core_common/modules/v8.py
+@@ -9,6 +9,7 @@ import subprocess
import v8_89
def clean():
+ return
if base.is_dir("depot_tools"):
- base.delete_dir_with_access_error("depot_tools");
+ base.delete_dir_with_access_error("depot_tools")
base.delete_dir("depot_tools")
-@@ -26,6 +27,8 @@ def is_main_platform():
+@@ -26,6 +27,8 @@ def clean():
def is_main_platform():
if (config.check_option("platform", "win_64") or config.check_option("platform", "win_32")):
return True
@@ -44,7 +44,7 @@
if not base.is_dir("v8"):
@@ -121,8 +109,8 @@ def make():
base.delete_dir_with_access_error("v8/buildtools/win")
- base.cmd("git", ["config", "--system", "core.longpaths", "true"])
+ base.cmd("git", ["config", "--system", "core.longpaths", "true"], True)
base.cmd("gclient", ["sync", "--force"], True)
- else:
- base.cmd("gclient", ["sync"], True)
diff --git a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8__89.py b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8__89.py
index 187eb0d78e41..23d05d781124 100644
--- a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8__89.py
+++ b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_v8__89.py
@@ -1,6 +1,6 @@
---- build_tools/scripts/core_common/modules/v8_89.py.orig 2024-02-07 10:44:24.000000000 +0100
-+++ build_tools/scripts/core_common/modules/v8_89.py 2024-03-01 10:42:06.847661000 +0100
-@@ -115,46 +115,7 @@ def make():
+--- build_tools/scripts/core_common/modules/v8_89.py.orig 2025-08-05 15:06:08 UTC
++++ build_tools/scripts/core_common/modules/v8_89.py
+@@ -123,46 +123,7 @@ def make():
base.cmd("git", ["config", "--global", "http.postBuffer", "157286400"], True)
os.chdir(base_dir)
@@ -47,9 +47,9 @@
os.chdir("v8")
gn_args = ["v8_static_library=true",
-@@ -163,6 +124,11 @@ def make():
+@@ -170,6 +131,11 @@ def make():
+ "v8_monolithic=true",
"v8_use_external_startup_data=false",
- "use_custom_libcxx=false",
"treat_warnings_as_errors=false"]
+
+ if config.check_option("platform", "freebsd_64"):
diff --git a/www/onlyoffice-documentserver/files/patch-clang19 b/www/onlyoffice-documentserver/files/patch-clang19
index a17acc4bf5f9..b095611d738d 100644
--- a/www/onlyoffice-documentserver/files/patch-clang19
+++ b/www/onlyoffice-documentserver/files/patch-clang19
@@ -21,9 +21,7 @@ Date: 2023-08-17T13:50:11-07:00
Auto-Submit: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/main@{#89559}
-diff --git deps/v8/src/inspector/string-16.cc deps/v8/src/inspector/string-16.cc
-index a8b786a8166..6df9963e970 100644
---- core/Common/3dParty/v8_89/v8/src/inspector/string-16.cc
+--- core/Common/3dParty/v8_89/v8/src/inspector/string-16.cc.orig 2021-04-12 21:00:33 UTC
+++ core/Common/3dParty/v8_89/v8/src/inspector/string-16.cc
@@ -27,7 +27,7 @@ bool isSpaceOrNewLine(UChar c) {
return isASCII(c) && c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9));
@@ -34,7 +32,7 @@ index a8b786a8166..6df9963e970 100644
bool* ok = nullptr) {
std::vector<char> buffer;
buffer.reserve(length + 1);
-@@ -50,6 +50,8 @@ int64_t charactersToInteger(const UChar* characters, size_t length,
+@@ -50,6 +50,8 @@ int64_t charactersToInteger(const UChar* characters, s
String16::String16(const UChar* characters, size_t size)
: m_impl(characters, size) {}
@@ -43,21 +41,18 @@ index a8b786a8166..6df9963e970 100644
String16::String16(const UChar* characters) : m_impl(characters) {}
-@@ -241,6 +243,10 @@ String16 String16::fromUTF16LE(const UChar* stringStart, size_t length) {
+@@ -231,6 +233,10 @@ String16 String16::fromUTF16LE(const UChar* stringStar
+ // No need to do anything on little endian machines.
+ return String16(stringStart, length);
#endif // V8_TARGET_BIG_ENDIAN
- }
-
-+String16 String16::fromUTF16LE(const uint16_t* stringStart, size_t length) {
-+ return fromUTF16LE(reinterpret_cast<const UChar*>(stringStart), length);
+}
+
- std::string String16::utf8() const {
- return UTF16ToUTF8(m_impl.data(), m_impl.size());
++String16 String16::fromUTF16LE(const uint16_t* stringStart, size_t length) {
++ return fromUTF16LE(reinterpret_cast<const UChar*>(stringStart), length);
}
-
-diff --git deps/v8/src/inspector/string-16.h deps/v8/src/inspector/string-16.h
-index 1678ffb2e1e..d9f6c466ab1 100644
---- core/Common/3dParty/v8_89/v8/src/inspector/string-16.h
+
+ std::string String16::utf8() const {
+--- core/Common/3dParty/v8_89/v8/src/inspector/string-16.h.orig 2021-04-12 21:00:33 UTC
+++ core/Common/3dParty/v8_89/v8/src/inspector/string-16.h
@@ -6,6 +6,7 @@
#define V8_INSPECTOR_STRING_16_H_
@@ -67,7 +62,7 @@ index 1678ffb2e1e..d9f6c466ab1 100644
#include <cctype>
#include <climits>
#include <cstring>
-@@ -17,7 +18,7 @@ namespace v8_inspector {
+@@ -17,7 +18,7 @@
namespace v8_inspector {
@@ -104,10 +99,7 @@ index 1678ffb2e1e..d9f6c466ab1 100644
size_t length);
std::size_t hash() const {
-
-diff --git deps/v8/src/inspector/v8-string-conversions.cc deps/v8/src/inspector/v8-string-conversions.cc
-index 0c75e66b972..8cf19be816c 100644
---- core/Common/3dParty/v8_89/v8/src/inspector/v8-string-conversions.cc
+--- core/Common/3dParty/v8_89/v8/src/inspector/v8-string-conversions.cc.orig 2021-04-12 21:00:33 UTC
+++ core/Common/3dParty/v8_89/v8/src/inspector/v8-string-conversions.cc
@@ -12,7 +12,7 @@
@@ -118,7 +110,7 @@ index 0c75e66b972..8cf19be816c 100644
using UChar32 = uint32_t;
bool isASCII(UChar c) { return !(c & ~0x7F); }
-@@ -386,7 +386,7 @@ std::string UTF16ToUTF8(const UChar* stringStart, size_t length) {
+@@ -389,7 +389,7 @@ std::string UTF16ToUTF8(const UChar* stringStart, size
std::basic_string<UChar> UTF8ToUTF16(const char* stringStart, size_t length) {
if (!stringStart || !length) return std::basic_string<UChar>();
@@ -127,7 +119,7 @@ index 0c75e66b972..8cf19be816c 100644
UChar* bufferStart = buffer.data();
UChar* bufferCurrent = bufferStart;
-@@ -395,7 +395,7 @@ std::basic_string<UChar> UTF8ToUTF16(const char* stringStart, size_t length) {
+@@ -398,7 +398,7 @@ std::basic_string<UChar> UTF8ToUTF16(const char* strin
reinterpret_cast<const char*>(stringStart + length),
&bufferCurrent, bufferCurrent + buffer.size(), nullptr,
true) != conversionOK)
@@ -136,9 +128,7 @@ index 0c75e66b972..8cf19be816c 100644
size_t utf16Length = bufferCurrent - bufferStart;
return std::basic_string<UChar>(bufferStart, bufferStart + utf16Length);
}
-diff --git deps/v8/src/inspector/v8-string-conversions.h deps/v8/src/inspector/v8-string-conversions.h
-index eb33c6816a5..1126255dac2 100644
---- core/Common/3dParty/v8_89/v8/src/inspector/v8-string-conversions.h
+--- core/Common/3dParty/v8_89/v8/src/inspector/v8-string-conversions.h.orig 2021-04-12 21:00:33 UTC
+++ core/Common/3dParty/v8_89/v8/src/inspector/v8-string-conversions.h
@@ -5,13 +5,15 @@
#ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
@@ -158,7 +148,7 @@ index eb33c6816a5..1126255dac2 100644
} // namespace v8_inspector
#endif // V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
---- core/Common/3dParty/v8_89/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
+--- core/Common/3dParty/v8_89/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc.orig 2021-04-12 21:00:33 UTC
+++ core/Common/3dParty/v8_89/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
@@ -11,13 +11,16 @@
namespace v8_crdtp {
diff --git a/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.cpp b/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.cpp
index 3ee3b46a22d5..1ff708a7590b 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.cpp
@@ -1,5 +1,5 @@
---- core/Apple/IWork.cpp.orig 2025-03-08 16:26:16.590289000 +0100
-+++ core/Apple/IWork.cpp 2025-03-08 16:45:14.932729000 +0100
+--- core/Apple/IWork.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/Apple/IWork.cpp
@@ -6,7 +6,8 @@
#include <libodfgen/OdtGenerator.hxx>
#include <libodfgen/OdsGenerator.hxx>
diff --git a/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.pro b/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.pro
index 49dbd6d80585..ae16f66a185b 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.pro
+++ b/www/onlyoffice-documentserver/files/patch-core_Apple_IWork.pro
@@ -1,6 +1,6 @@
---- core/Apple/IWork.pro.orig 2025-03-08 16:31:03.447633000 +0100
-+++ core/Apple/IWork.pro 2025-03-08 17:07:58.170674000 +0100
-@@ -10,6 +10,14 @@ DEFINES += IWORK_USE_DYNAMIC_LIBRARY
+--- core/Apple/IWork.pro.orig 2025-08-02 18:33:34 UTC
++++ core/Apple/IWork.pro
+@@ -10,6 +10,14 @@ CONFIG += plugin
DEFINES += IWORK_USE_DYNAMIC_LIBRARY
@@ -15,7 +15,7 @@
CORE_ROOT_DIR = $$PWD/..
PWD_ROOT_DIR = $$PWD
include($$CORE_ROOT_DIR/Common/base.pri)
-@@ -38,8 +46,8 @@ include($$CORE_ROOT_DIR/Common/3dParty/apple/apple.pri
+@@ -38,8 +46,8 @@ include($$PWD/../DesktopEditor/xml/build/qt/libxml2.pr
include($$CORE_ROOT_DIR/Common/3dParty/apple/apple.pri)
# TEST
diff --git a/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx b/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx
index 2ba2e7398244..47c1e5bbbbd7 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx
+++ b/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx
@@ -1,6 +1,6 @@
---- core/Apple/StringDocumentHandler.hxx.orig 2025-03-08 17:38:58.104116000 +0100
-+++ core/Apple/StringDocumentHandler.hxx 2025-03-08 16:45:03.144938000 +0100
-@@ -0,0 +1,51 @@
+--- core/Apple/StringDocumentHandler.hxx.orig 2025-08-08 19:00:43 UTC
++++ core/Apple/StringDocumentHandler.hxx
+@@ -0,0 +1,154 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* writerperfect
+ * Version: MPL 2.0 / LGPLv2.1+
@@ -52,3 +52,106 @@
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
++/* writerperfect
++ * Version: MPL 2.0 / LGPLv2.1+
++ *
++ * This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
++ *
++ * Major Contributor(s):
++ * Copyright (C) 2002-2004 William Lachance (wrlach@gmail.com)
++ * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
++ *
++ * For minor contributions see the git repository.
++ *
++ * Alternatively, the contents of this file may be used under the terms
++ * of the GNU Lesser General Public License Version 2.1 or later
++ * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
++ * applicable instead of those above.
++ *
++ * For further information visit http://libwpd.sourceforge.net
++ */
++
++#include <string.h>
++
++
++StringDocumentHandler::StringDocumentHandler() : m_data(""), m_isTagOpened(false), m_openedTagName("")
++{
++ m_data.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
++}
++
++void StringDocumentHandler::endDocument()
++{
++ if (!m_isTagOpened) return;
++ m_data.append(">");
++ m_isTagOpened = false;
++}
++
++void StringDocumentHandler::startElement(const char *psName, const librevenge::RVNGPropertyList &xPropList)
++{
++ if (m_isTagOpened)
++ {
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++ m_data.append("<");
++ m_data.append(psName);
++ librevenge::RVNGPropertyList::Iter i(xPropList);
++ for (i.rewind(); i.next();)
++ {
++ // filter out librevenge elements
++ if (!strncmp(i.key(), "librevenge:", 11)) continue;
++
++ m_data.append(" ");
++ m_data.append(i.key());
++ m_data.append("=\"");
++ if (i()->getStr().len()>0)
++ m_data.append(i()->getStr().cstr());
++ m_data.append("\"");
++ }
++ m_isTagOpened = true;
++ m_openedTagName.sprintf("%s", psName);
++}
++void StringDocumentHandler::endElement(const char *psName)
++{
++ if (m_isTagOpened)
++ {
++ if (m_openedTagName == psName)
++ {
++ m_data.append("/>");
++ m_isTagOpened = false;
++ }
++ else // should not happen, but handle it
++ {
++ m_data.append(">");
++ m_data.append("</");
++ m_data.append(psName);
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++ }
++ else
++ {
++ m_data.append("</");
++ m_data.append(psName);
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++}
++
++void StringDocumentHandler::characters(const librevenge::RVNGString &sCharacters)
++{
++ if (m_isTagOpened)
++ {
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++ librevenge::RVNGString sEscapedCharacters;
++ sEscapedCharacters.appendEscapedXML(sCharacters);
++ if (sEscapedCharacters.len() > 0)
++ m_data.append(sEscapedCharacters.cstr());
++}
++
++/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_brotli_make.py b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_brotli_make.py
new file mode 100644
index 000000000000..5313593d9366
--- /dev/null
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_brotli_make.py
@@ -0,0 +1,11 @@
+--- core/Common/3dParty/brotli/make.py.orig 2025-08-02 18:33:34 UTC
++++ core/Common/3dParty/brotli/make.py
+@@ -10,7 +10,7 @@ def clear_module():
+ base.delete_dir_with_access_error("brotli")
+ return
+
+-base.check_module_version("1", clear_module)
++#base.check_module_version("1", clear_module)
+
+ # fetch harfbuzz
+ if not base.is_dir("brotli"):
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py
index 6cc05be7d649..bc0ee48515bc 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py
@@ -14,9 +14,10 @@
# fix gumbo
base.replaceInFile(base_directory + "/gumbo-parser/src/tag.c", "isspace(*c)", "isspace((unsigned char)*c)")
- if not base.is_dir("katana-parser"):
+-if not base.is_dir("katana-parser"):
- base.cmd("git", ["clone", "https://github.com/jasenhuang/katana-parser.git"])
- base.cmd_in_dir("katana-parser", "git", ["checkout", "be6df458d4540eee375c513958dcb862a391cdd1"])
++if base.is_dir("katana-parser"):
+# base.cmd("git", ["clone", "https://github.com/jasenhuang/katana-parser.git"])
+# base.cmd_in_dir("katana-parser", "git", ["checkout", "be6df458d4540eee375c513958dcb862a391cdd1"])
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_openssl_openssl.pri b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_openssl_openssl.pri
index dc322326cf8e..bdd57c356f17 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_openssl_openssl.pri
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_openssl_openssl.pri
@@ -1,5 +1,5 @@
---- core/Common/3dParty/openssl/openssl.pri.orig 2023-06-14 14:31:26.960051000 +0200
-+++ core/Common/3dParty/openssl/openssl.pri 2023-06-14 14:31:00.960232000 +0200
+--- core/Common/3dParty/openssl/openssl.pri.orig 2025-08-02 18:33:34 UTC
++++ core/Common/3dParty/openssl/openssl.pri
@@ -32,8 +32,8 @@ core_windows {
LIBS += $$OPENSSL_LIBS_DIRECTORY/libssl.lib
LIBS += $$OPENSSL_LIBS_DIRECTORY/libcrypto.lib
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8__89_v8_build_config_clang_BUILD.gn b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8__89_v8_build_config_clang_BUILD.gn
index 179516c183f5..c58ca9dcf1f7 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8__89_v8_build_config_clang_BUILD.gn
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8__89_v8_build_config_clang_BUILD.gn
@@ -1,7 +1,7 @@
Fix build with llvm16
---- core/Common/3dParty/v8_89/v8/build/config/clang/BUILD.gn.orig 2023-07-17 10:46:22.246271000 +0200
-+++ core/Common/3dParty/v8_89/v8/build/config/clang/BUILD.gn 2023-07-17 10:46:59.136940000 +0200
+--- core/Common/3dParty/v8_89/v8/build/config/clang/BUILD.gn.orig 2022-05-13 11:39:36 UTC
++++ core/Common/3dParty/v8_89/v8/build/config/clang/BUILD.gn
@@ -38,5 +38,6 @@ config("extra_warnings") {
"-Wstring-conversion",
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_build_config_compiler_BUILD.gn b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_build_config_compiler_BUILD.gn
index cf77653a481b..42e4830a4c7a 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_build_config_compiler_BUILD.gn
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_build_config_compiler_BUILD.gn
@@ -1,4 +1,4 @@
---- core/Common/3dParty/v8_89/v8/build/config/compiler/BUILD.gn.orig 2022-04-04 20:12:27 UTC
+--- core/Common/3dParty/v8_89/v8/build/config/compiler/BUILD.gn.orig 2022-05-13 11:39:36 UTC
+++ core/Common/3dParty/v8_89/v8/build/config/compiler/BUILD.gn
@@ -132,7 +132,7 @@ declare_args() {
#
@@ -27,7 +27,18 @@
cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
cflags += [
-@@ -799,7 +799,7 @@ config("compiler_cpu_abi") {
+@@ -785,10 +785,6 @@ config("compiler_cpu_abi") {
+ ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_clang && !is_android && !is_nacl) {
+- cflags += [ "--target=arm-linux-gnueabihf" ]
+- ldflags += [ "--target=arm-linux-gnueabihf" ]
+- }
+ if (!is_nacl) {
+ cflags += [
+ "-march=$arm_arch",
+@@ -799,7 +795,7 @@ config("compiler_cpu_abi") {
cflags += [ "-mtune=$arm_tune" ]
}
} else if (current_cpu == "arm64") {
@@ -36,7 +47,7 @@
cflags += [ "--target=aarch64-linux-gnu" ]
ldflags += [ "--target=aarch64-linux-gnu" ]
}
-@@ -1149,7 +1149,7 @@ config("compiler_deterministic") {
+@@ -1149,7 +1145,7 @@ config("compiler_deterministic") {
"-Xclang",
".",
]
@@ -45,7 +56,7 @@
# We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
}
-@@ -1177,7 +1177,7 @@ config("clang_revision") {
+@@ -1177,7 +1173,7 @@ config("clang_revision") {
}
config("clang_revision") {
@@ -54,7 +65,7 @@
update_args = [
"--print-revision",
"--verify-version=$clang_version",
-@@ -1526,7 +1526,7 @@ config("default_warnings") {
+@@ -1526,7 +1522,7 @@ config("default_warnings") {
"-Wno-undefined-var-template",
]
@@ -63,7 +74,7 @@
# TODO(thakis): https://crbug.com/617318
# Currently goma can not handle case sensitiveness for windows well.
cflags += [ "-Wno-nonportable-include-path" ]
-@@ -1780,7 +1780,7 @@ config("thin_archive") {
+@@ -1780,7 +1776,7 @@ config("thin_archive") {
config("thin_archive") {
# The macOS and iOS default linker ld64 does not support reading thin
# archives.
@@ -72,7 +83,7 @@
arflags = [ "-T" ]
} else if (is_win && use_lld) {
arflags = [ "/llvmlibthin" ]
-@@ -2321,11 +2321,11 @@ config("symbols") {
+@@ -2321,11 +2317,11 @@ config("symbols") {
# flag, so we can use use -g1 for pnacl and nacl-clang compiles.
# gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
if (!is_nacl || is_clang) {
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_src_base_macros.h b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_src_base_macros.h
index 156b89cc28f9..2a60db707302 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_src_base_macros.h
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_src_base_macros.h
@@ -1,5 +1,5 @@
---- core/Common/3dParty/v8_89/v8/src/base/macros.h.orig 2021-04-12 21:00:33.000000000 +0000
-+++ core/Common/3dParty/v8_89/v8/src/base/macros.h 2025-06-20 09:42:18.838769000 +0000
+--- core/Common/3dParty/v8_89/v8/src/base/macros.h.orig 2021-04-12 21:00:33 UTC
++++ core/Common/3dParty/v8_89/v8/src/base/macros.h
@@ -203,7 +203,8 @@
// base::is_trivially_copyable will differ for these cases.
template <typename T>
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_testing_gmock_BUILD.gn b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_testing_gmock_BUILD.gn
index 6cc129f1398e..121d7547862b 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_testing_gmock_BUILD.gn
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_v8_v8_testing_gmock_BUILD.gn
@@ -1,5 +1,5 @@
---- core/Common/3dParty/v8_89/v8/testing/gmock/BUILD.gn.orig 2022-05-13 18:53:22.198863000 +0200
-+++ core/Common/3dParty/v8_89/v8/testing/gmock/BUILD.gn 2022-05-13 18:53:05.169357000 +0200
+--- core/Common/3dParty/v8_89/v8/testing/gmock/BUILD.gn.orig 2022-05-13 20:53:22 UTC
++++ core/Common/3dParty/v8_89/v8/testing/gmock/BUILD.gn
@@ -15,12 +15,13 @@ source_set("gmock") {
"include/gmock/gmock-matchers.h",
"include/gmock/gmock.h",
diff --git a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_common_Directory.cpp b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_common_Directory.cpp
index 8677840d1541..b227bfc3e1fa 100644
--- a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_common_Directory.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_common_Directory.cpp
@@ -45,7 +45,7 @@
BYTE* pUtf8 = NULL;
LONG lLen = 0;
NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strSrc.c_str(), strSrc.length(), pUtf8, lLen, false);
-@@ -495,14 +495,14 @@ namespace NSDirectory
+@@ -495,7 +495,7 @@ namespace NSDirectory
}
#if defined(_WIN32) || defined (_WIN64)
if (deleteRoot) RemoveDirectoryW(strDirectory.c_str());
@@ -54,11 +54,3 @@
BYTE* pUtf8 = NULL;
LONG lLen = 0;
NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strDirectory.c_str(), strDirectory.length(), pUtf8, lLen, false);
- rmdir((char*)pUtf8);
- delete [] pUtf8;
-
-- if (deleteRoot = false)CreateDirectory(strDirectory);
-+ if (deleteRoot == false)CreateDirectory(strDirectory);
- #elif MAC
- BYTE* pUtf8 = NULL;
- LONG lLen = 0;
diff --git a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_doctrenderer.pri b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_doctrenderer.pri
index fff991f7c095..a04a6f66f14c 100644
--- a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_doctrenderer.pri
+++ b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_doctrenderer.pri
@@ -1,6 +1,6 @@
---- ./core/DesktopEditor/doctrenderer/doctrenderer.pri.orig 2025-03-07 15:39:12.468049000 +0100
-+++ ./core/DesktopEditor/doctrenderer/doctrenderer.pri 2025-03-07 15:38:54.771039000 +0100
-@@ -22,6 +22,10 @@ core_android:DEFINES += DISABLE_MEMORY_LIMITATION
+--- core/DesktopEditor/doctrenderer/doctrenderer.pri.orig 2025-08-02 18:33:34 UTC
++++ core/DesktopEditor/doctrenderer/doctrenderer.pri
+@@ -22,6 +22,10 @@ ADD_DEPENDENCY(graphics, kernel, UnicodeConverter, ker
#CONFIG += v8_version_60
core_android:DEFINES += DISABLE_MEMORY_LIMITATION
diff --git a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_hash.cpp b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_hash.cpp
index c0d1ba12e105..c3be6a05a0db 100644
--- a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_hash.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_doctrenderer_hash.cpp
@@ -1,5 +1,5 @@
---- core/DesktopEditor/doctrenderer/hash.cpp.orig 2023-06-14 12:14:26.656325000 +0200
-+++ core/DesktopEditor/doctrenderer/hash.cpp 2023-06-14 14:23:39.149523000 +0200
+--- core/DesktopEditor/doctrenderer/hash.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/DesktopEditor/doctrenderer/hash.cpp
@@ -4,12 +4,12 @@
#include "../common/Base64.h"
#endif
diff --git a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_TextShaper.cpp b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_TextShaper.cpp
index c87f8a976e29..41272dabf360 100644
--- a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_TextShaper.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_TextShaper.cpp
@@ -1,5 +1,5 @@
---- core/DesktopEditor/fontengine/TextShaper.cpp.orig 2022-09-27 21:25:17.640269000 +0200
-+++ core/DesktopEditor/fontengine/TextShaper.cpp 2022-09-27 21:21:12.793630000 +0200
+--- core/DesktopEditor/fontengine/TextShaper.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/DesktopEditor/fontengine/TextShaper.cpp
@@ -649,9 +649,9 @@ namespace NSShaper
#ifdef SUPPORT_HARFBUZZ_SHAPER
diff --git a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_js_cpp_text.cpp b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_js_cpp_text.cpp
index b25ccec02bb0..7600e5857aae 100644
--- a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_js_cpp_text.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_fontengine_js_cpp_text.cpp
@@ -1,6 +1,6 @@
---- core/DesktopEditor/fontengine/js/cpp/text.cpp.orig 2022-09-27 21:25:17.640548000 +0200
-+++ core/DesktopEditor/fontengine/js/cpp/text.cpp 2022-09-27 21:22:11.216341000 +0200
-@@ -532,9 +532,9 @@ WASM_EXPORT unsigned char* ASC_FT_Get_Glyph_Render_Buf
+--- core/DesktopEditor/fontengine/js/cpp/text.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/DesktopEditor/fontengine/js/cpp/text.cpp
+@@ -558,9 +558,9 @@ WASM_EXPORT unsigned char* ASC_FT_Get_Glyph_Render_Buf
// ------------------------------------------------------------
// HARFBUZZ
diff --git a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_freetype-2.10.4_src_autofit_afshaper.h b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_freetype-2.10.4_src_autofit_afshaper.h
index a8b84e99b90a..aa02570df4ef 100644
--- a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_freetype-2.10.4_src_autofit_afshaper.h
+++ b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_freetype-2.10.4_src_autofit_afshaper.h
@@ -1,5 +1,5 @@
---- core/DesktopEditor/freetype-2.10.4/src/autofit/afshaper.h.orig 2022-09-27 21:25:17.639848000 +0200
-+++ core/DesktopEditor/freetype-2.10.4/src/autofit/afshaper.h 2022-09-27 21:21:29.147465000 +0200
+--- core/DesktopEditor/freetype-2.10.4/src/autofit/afshaper.h.orig 2025-08-02 18:33:34 UTC
++++ core/DesktopEditor/freetype-2.10.4/src/autofit/afshaper.h
@@ -25,9 +25,9 @@
#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
diff --git a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_pluginsmanager_main.cpp b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_pluginsmanager_main.cpp
index 0388d97191e9..2274a7dc29a9 100644
--- a/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_pluginsmanager_main.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_DesktopEditor_pluginsmanager_main.cpp
@@ -1,5 +1,5 @@
---- core/DesktopEditor/pluginsmanager/main.cpp.orig 2023-06-19 10:50:14.262222000 +0200
-+++ core/DesktopEditor/pluginsmanager/main.cpp 2023-06-19 10:50:48.083404000 +0200
+--- core/DesktopEditor/pluginsmanager/main.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/DesktopEditor/pluginsmanager/main.cpp
@@ -52,7 +52,7 @@
#undef GetTempPath
#endif
diff --git a/www/onlyoffice-documentserver/files/patch-core_MsBinaryFile_XlsFile_Format_Logic_Biff__structures_BitMarkedStructs.h b/www/onlyoffice-documentserver/files/patch-core_MsBinaryFile_XlsFile_Format_Logic_Biff__structures_BitMarkedStructs.h
index 93c92cc9fcba..9e69da74cb0a 100644
--- a/www/onlyoffice-documentserver/files/patch-core_MsBinaryFile_XlsFile_Format_Logic_Biff__structures_BitMarkedStructs.h
+++ b/www/onlyoffice-documentserver/files/patch-core_MsBinaryFile_XlsFile_Format_Logic_Biff__structures_BitMarkedStructs.h
@@ -1,5 +1,5 @@
---- core/MsBinaryFile/XlsFile/Format/Logic/Biff_structures/BitMarkedStructs.h.orig 2023-01-27 21:00:04.000000000 +0100
-+++ core/MsBinaryFile/XlsFile/Format/Logic/Biff_structures/BitMarkedStructs.h 2023-02-13 11:18:01.384933000 +0100
+--- core/MsBinaryFile/XlsFile/Format/Logic/Biff_structures/BitMarkedStructs.h.orig 2025-08-02 18:33:34 UTC
++++ core/MsBinaryFile/XlsFile/Format/Logic/Biff_structures/BitMarkedStructs.h
@@ -31,7 +31,7 @@
*/
#pragma once
diff --git a/www/onlyoffice-documentserver/files/patch-core_OOXML_Base_Types__32.h b/www/onlyoffice-documentserver/files/patch-core_OOXML_Base_Types__32.h
index 8e3814ae3609..e81ae497b6ec 100644
--- a/www/onlyoffice-documentserver/files/patch-core_OOXML_Base_Types__32.h
+++ b/www/onlyoffice-documentserver/files/patch-core_OOXML_Base_Types__32.h
@@ -1,5 +1,5 @@
---- ./core/OOXML/Base/Types_32.h.orig 2023-02-13 11:19:10.378060000 +0100
-+++ ./core/OOXML/Base/Types_32.h 2023-02-13 11:19:35.144374000 +0100
+--- core/OOXML/Base/Types_32.h.orig 2025-08-02 18:33:34 UTC
++++ core/OOXML/Base/Types_32.h
@@ -38,7 +38,7 @@
typedef unsigned __int16 _UINT16;
typedef unsigned __int32 _UINT32;
diff --git a/www/onlyoffice-documentserver/files/patch-core_OOXML_Binary_Sheets_Reader_ChartFromToBinary.cpp b/www/onlyoffice-documentserver/files/patch-core_OOXML_Binary_Sheets_Reader_ChartFromToBinary.cpp
index 839338642d3b..efc36eda738f 100644
--- a/www/onlyoffice-documentserver/files/patch-core_OOXML_Binary_Sheets_Reader_ChartFromToBinary.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_OOXML_Binary_Sheets_Reader_ChartFromToBinary.cpp
@@ -1,6 +1,6 @@
---- core/OOXML/Binary/Sheets/Reader/ChartFromToBinary.cpp.orig 2023-06-14 14:53:55.376306000 +0200
-+++ core/OOXML/Binary/Sheets/Reader/ChartFromToBinary.cpp 2023-06-14 14:54:16.425588000 +0200
-@@ -10010,7 +10010,7 @@ namespace BinXlsxRW
+--- core/OOXML/Binary/Sheets/Reader/ChartFromToBinary.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/OOXML/Binary/Sheets/Reader/ChartFromToBinary.cpp
+@@ -10121,7 +10121,7 @@ namespace BinXlsxRW
WriteCT_String(*oVal.m_gapDepth);
m_oBcw.WriteItemEnd(nCurPos);
}
diff --git a/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Chart_ChartSerialize.cpp b/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Chart_ChartSerialize.cpp
index 3e627ca23ed7..74fa1aabd8e0 100644
--- a/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Chart_ChartSerialize.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Chart_ChartSerialize.cpp
@@ -1,5 +1,5 @@
---- core/OOXML/XlsxFormat/Chart/ChartSerialize.cpp.orig 2023-06-14 14:33:42.265435000 +0200
-+++ core/OOXML/XlsxFormat/Chart/ChartSerialize.cpp 2023-06-14 14:33:54.354616000 +0200
+--- core/OOXML/XlsxFormat/Chart/ChartSerialize.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/OOXML/XlsxFormat/Chart/ChartSerialize.cpp
@@ -1282,7 +1282,7 @@ xmlns:c16r2=\"http://schemas.microsoft.com/office/draw
{
writer.WriteString(L"<");
diff --git a/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Common.cpp b/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Common.cpp
index 7ed08a65819b..b56bb6c6e380 100644
--- a/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Common.cpp
+++ b/www/onlyoffice-documentserver/files/patch-core_OOXML_XlsxFormat_Common.cpp
@@ -1,5 +1,5 @@
---- core/OOXML/XlsxFormat/Common.cpp.orig 2023-02-13 11:53:45.780601000 +0100
-+++ core/OOXML/XlsxFormat/Common.cpp 2023-02-13 11:54:15.232608000 +0100
+--- core/OOXML/XlsxFormat/Common.cpp.orig 2025-08-02 18:33:34 UTC
++++ core/OOXML/XlsxFormat/Common.cpp
@@ -48,6 +48,10 @@ char* gcvt(double x, int n, char* b)
#define _gcvt gcvt
#endif
diff --git a/www/onlyoffice-documentserver/files/patch-core_OfficeUtils_src_zlib-1.2.11_gzguts.h b/www/onlyoffice-documentserver/files/patch-core_OfficeUtils_src_zlib-1.2.11_gzguts.h
index 89f4e678060d..f69125a7034c 100644
--- a/www/onlyoffice-documentserver/files/patch-core_OfficeUtils_src_zlib-1.2.11_gzguts.h
+++ b/www/onlyoffice-documentserver/files/patch-core_OfficeUtils_src_zlib-1.2.11_gzguts.h
@@ -1,5 +1,5 @@
---- core/OfficeUtils/src/zlib-1.2.11/gzguts.h.orig 2025-04-16 08:37:24.000000000 +0000
-+++ core/OfficeUtils/src/zlib-1.2.11/gzguts.h 2025-06-19 20:31:01.755367000 +0000
+--- core/OfficeUtils/src/zlib-1.2.11/gzguts.h.orig 2025-04-16 08:37:24 UTC
++++ core/OfficeUtils/src/zlib-1.2.11/gzguts.h
@@ -33,6 +33,8 @@
#ifdef _WIN32
diff --git a/www/onlyoffice-documentserver/files/patch-core_PdfFile_PdfFile.pro b/www/onlyoffice-documentserver/files/patch-core_PdfFile_PdfFile.pro
index 08b3375f3170..5f6e12410a78 100644
--- a/www/onlyoffice-documentserver/files/patch-core_PdfFile_PdfFile.pro
+++ b/www/onlyoffice-documentserver/files/patch-core_PdfFile_PdfFile.pro
@@ -1,6 +1,6 @@
---- core/PdfFile/PdfFile.pro.orig 2023-02-13 12:29:53.978119000 +0100
-+++ core/PdfFile/PdfFile.pro 2023-02-13 12:30:22.230355000 +0100
-@@ -113,6 +113,11 @@ LIBS += -L$$CORE_BUILDS_LIBRARIES_PATH -lCryptoPPLib
+--- core/PdfFile/PdfFile.pro.orig 2025-08-02 18:33:34 UTC
++++ core/PdfFile/PdfFile.pro
+@@ -110,6 +110,11 @@ DEFINES += CRYPTOPP_DISABLE_ASM \
NOMINMAX
LIBS += -L$$CORE_BUILDS_LIBRARIES_PATH -lCryptoPPLib
diff --git a/www/onlyoffice-documentserver/files/patch-core_PdfFile_SrcWriter_Types.h b/www/onlyoffice-documentserver/files/patch-core_PdfFile_SrcWriter_Types.h
index 7d9f7fb7ca52..19d91074ad5f 100644
--- a/www/onlyoffice-documentserver/files/patch-core_PdfFile_SrcWriter_Types.h
+++ b/www/onlyoffice-documentserver/files/patch-core_PdfFile_SrcWriter_Types.h
@@ -1,6 +1,6 @@
---- core/PdfFile/SrcWriter/Types.h.orig 2023-02-13 11:25:36.702286000 +0100
-+++ core/PdfFile/SrcWriter/Types.h 2023-02-13 11:25:55.342494000 +0100
-@@ -46,7 +46,7 @@
+--- core/PdfFile/SrcWriter/Types.h.orig 2025-08-02 18:33:34 UTC
++++ core/PdfFile/SrcWriter/Types.h
+@@ -47,7 +47,7 @@
#include <algorithm>
#include <math.h>
diff --git a/www/onlyoffice-documentserver/files/patch-document-server-package_Makefile b/www/onlyoffice-documentserver/files/patch-document-server-package_Makefile
index ba4ae3c069d7..dba479793706 100644
--- a/www/onlyoffice-documentserver/files/patch-document-server-package_Makefile
+++ b/www/onlyoffice-documentserver/files/patch-document-server-package_Makefile
@@ -1,5 +1,5 @@
---- document-server-package/Makefile.orig 2024-02-12 13:46:57.000000000 +0100
-+++ document-server-package/Makefile 2024-03-01 10:49:36.212407000 +0100
+--- document-server-package/Makefile.orig 2024-02-12 14:46:57 UTC
++++ document-server-package/Makefile
@@ -23,6 +23,7 @@ PACKAGE_VERSION := $(PRODUCT_VERSION)-$(BUILD_NUMBER)
PACKAGE_NAME := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME_LOW)
PACKAGE_VERSION := $(PRODUCT_VERSION)-$(BUILD_NUMBER)
@@ -26,7 +26,7 @@
+ DS_FILES := /var/db/$(DS_PREFIX)
+ DS_EXAMLE := %%LOCALBASE%%/www/$(DS_PREFIX)-example
+ DEV_NULL := /dev/null
-+ PKG_TARGET := node20
++ PKG_TARGET := node%%PKGFETCH_NODE_MAJOR_VERSION%%
+ endif
ifeq ($(UNAME_S),Linux)
PLATFORM := linux
diff --git a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-flush-cache.sh.m4 b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-flush-cache.sh.m4
index 92cb656f9917..deea13716080 100644
--- a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-flush-cache.sh.m4
+++ b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-flush-cache.sh.m4
@@ -1,6 +1,6 @@
---- document-server-package/common/documentserver/bin/documentserver-flush-cache.sh.m4.orig 2024-11-05 14:03:05.897987000 +0100
+--- document-server-package/common/documentserver/bin/documentserver-flush-cache.sh.m4.orig 2025-07-18 12:53:25 UTC
+++ document-server-package/common/documentserver/bin/documentserver-flush-cache.sh.m4
-@@ -24,18 +24,16 @@ HASH=${HASH:-$(date +'%Y.%m.%d-%H%M' | openssl md5 | a
+@@ -24,18 +24,16 @@ done
HASH=${HASH:-$(date +'%Y.%m.%d-%H%M' | openssl md5 | awk '{print $2}')}
# Save the hash to a variable in the configuration file
diff --git a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4 b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4
index 231a6247a51a..6d40dfa72b4c 100644
--- a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4
+++ b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4
@@ -46,7 +46,8 @@
+LOCAL_CONF=%%LOCALBASE%%/etc/M4_DS_PREFIX/local.json
+JSON="%%LOCALBASE%%/www/M4_DS_PREFIX/npm/json -q -f ${LOCAL_CONF}"
- SECURE_LINK_SECRET=${SECURE_LINK_SECRET:-$(tr -dc A-Za-z0-9 </dev/urandom | head -c 20)}
+-SECURE_LINK_SECRET=${SECURE_LINK_SECRET:-$(tr -dc A-Za-z0-9 </dev/urandom | head -c 20)}
++SECURE_LINK_SECRET=${SECURE_LINK_SECRET:-$(pwgen -s 20)}
-sed "s,\(set \+\$secure_link_secret\).*,\1 "${SECURE_LINK_SECRET}";," -i ${NGINX_CONF}
-${JSON} -I -e 'this.storage={fs: {secretString: "'${SECURE_LINK_SECRET}'" }}' && chown ds:ds $LOCAL_CONF
diff --git a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf
index c8a9eedfa80e..0208f79889d0 100644
--- a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf
+++ b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf
@@ -1,8 +1,9 @@
https://raw.githubusercontent.com/nginx/nginx/master/conf/mime.types
++ IWork filetypes
---- document-server-package/common/documentserver/nginx/includes/ds-mime.types.conf.orig 2022-05-15 11:09:53.906141000 +0200
-+++ document-server-package/common/documentserver/nginx/includes/ds-mime.types.conf 2022-05-15 11:10:02.802873000 +0200
-@@ -0,0 +1,99 @@
+--- document-server-package/common/documentserver/nginx/includes/ds-mime.types.conf.orig 2025-08-08 19:00:44 UTC
++++ document-server-package/common/documentserver/nginx/includes/ds-mime.types.conf
+@@ -0,0 +1,102 @@
+
+types {
+ text/html html htm shtml;
@@ -40,6 +41,9 @@ https://raw.githubusercontent.com/nginx/nginx/master/conf/mime.types
+ application/pdf pdf;
+ application/postscript ps eps ai;
+ application/rtf rtf;
++ application/vnd.apple.keynote key kth;
++ application/vnd.apple.pages pages template;
++ application/vnd.apple.numbers numbers nmbtemplate;
+ application/vnd.apple.mpegurl m3u8;
+ application/vnd.google-earth.kml+xml kml;
+ application/vnd.google-earth.kmz kmz;
diff --git a/www/onlyoffice-documentserver/files/patch-server_Metrics_patches_modern-syslog b/www/onlyoffice-documentserver/files/patch-server_Metrics_patches_modern-syslog
new file mode 100644
index 000000000000..7a10ecbd0a4e
--- /dev/null
+++ b/www/onlyoffice-documentserver/files/patch-server_Metrics_patches_modern-syslog
@@ -0,0 +1,11 @@
+--- server/Metrics/patches/modern-syslog+1.2.0.patch.orig 2025-08-31 16:23:19 UTC
++++ server/Metrics/patches/modern-syslog+1.2.0.patch
+@@ -0,0 +1,8 @@
++diff --git a/node_modules/modern-syslog/Makefile b/node_modules/modern-syslog/Makefile
++index 8d2ec3a..125d526 100644
++--- a/node_modules/modern-syslog/Makefile
+++++ b/node_modules/modern-syslog/Makefile
++@@ -1,2 +1,2 @@
++ rebuild:
++- node-gyp rebuild
+++ node-gyp --nodedir=%%LOCALBASE%% rebuild
diff --git a/www/onlyoffice-documentserver/files/patch-server_package.json b/www/onlyoffice-documentserver/files/patch-server_package.json
index d1a485701de7..3fa6a4cd95b3 100644
--- a/www/onlyoffice-documentserver/files/patch-server_package.json
+++ b/www/onlyoffice-documentserver/files/patch-server_package.json
@@ -1,6 +1,6 @@
--- server/package.json.orig 2025-06-16 18:22:18 UTC
+++ server/package.json
-@@ -4,6 +4,8 @@
+@@ -4,9 +4,11 @@
"homepage": "https://www.onlyoffice.com",
"private": true,
"dependencies": {
@@ -8,8 +8,12 @@
+ "grunt-cli": "^1.5.0",
"license-downloader": "1.0.8",
"license-report": "6.5.0",
- "npm-run-all": "4.1.5"
-@@ -25,10 +25,10 @@
+- "npm-run-all": "4.1.5"
++ "concurrently": "^9.2.0"
+ },
+ "devDependencies": {
+ "@jest/globals": "29.7.0",
+@@ -23,10 +25,10 @@
"integration database tests": "cd ./DocService && jest integration/databaseTests --inject-globals=false --config=../tests/jest.config.js",
"tests": "cd ./DocService && jest --inject-globals=false --config=../tests/jest.config.js",
"tests:dev": "cd ./DocService && jest --inject-globals=false --config=../tests/jest.config.js --watch",
@@ -24,3 +28,11 @@
"3d-party-lic-json:Common": "license-report --output=json --package=./Common/package.json --config ./3d-party-lic-report/license-report-config.json > ./3d-party-lic-report/license-report.json",
"3d-party-lic-json:DocService": "license-report --output=json --package=./DocService/package.json --config ./3d-party-lic-report/license-report-config.json > ./3d-party-lic-report/license-report.json",
"3d-party-lic-json:FileConverter": "license-report --output=json --package=./FileConverter/package.json --config ./3d-party-lic-report/license-report-config.json > ./3d-party-lic-report/license-report.json",
+@@ -39,6 +41,6 @@
+ "3d-party-lic-report:FileConverter": "run-s 3d-party-lic-json:FileConverter 3d-party-lic-downloader 3d-party-lic-md",
+ "3d-party-lic-report:Metrics": "run-s 3d-party-lic-json:Metrics 3d-party-lic-downloader 3d-party-lic-md",
+ "3d-party-lic-report": "run-s 3d-party-lic-md-header 3d-party-lic-report:*",
+- "build": "run-p install:*"
++ "build": "concurrently \"npm run install:Common\" \"npm run install:DocService\" \"npm run install:FileConverter\" \"npm run install:Metrics\""
+ }
+ }
diff --git a/www/onlyoffice-documentserver/files/pkg-message.in b/www/onlyoffice-documentserver/files/pkg-message.in
index 9bf36aae43ac..1e04f7732830 100644
--- a/www/onlyoffice-documentserver/files/pkg-message.in
+++ b/www/onlyoffice-documentserver/files/pkg-message.in
@@ -59,7 +59,7 @@ files = %%ETCDIR%%/documentserver/supervisor/*.conf
include %%ETCDIR%%/documentserver/nginx/ds.conf;
NOTE: documentserver-update-securelink.sh will only update ./nginx/ds.conf and local.json under %%ETCDIR%%/documentserver/!
- - run documentserver-update-securelink.sh once for creationg a verysecretstring
+ - run documentserver-update-securelink.sh once for creating a verysecretstring
- start nginx:
# service nginx start
diff --git a/www/onlyoffice-documentserver/pkg-plist b/www/onlyoffice-documentserver/pkg-plist
index 8c1f22b765b3..5f23f55a295f 100644
--- a/www/onlyoffice-documentserver/pkg-plist
+++ b/www/onlyoffice-documentserver/pkg-plist
@@ -1156,7 +1156,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/ja-JA.json
%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/pt-BR.json
%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/ru-RU.json
-%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/zh-ZH.json
+%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/zh-CN.json
%%WWWDIR%%/documentserver/sdkjs/pdf/src/engine/cmap.bin
%%WWWDIR%%/documentserver/sdkjs/pdf/src/engine/drawingfile.js
%%WWWDIR%%/documentserver/sdkjs/pdf/src/engine/drawingfile.wasm
@@ -1215,18 +1215,23 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/server/Metrics/node_modules/modern-syslog/build/Release/core.node
%%WWWDIR%%/documentserver/server/dictionaries/update.py
%%WWWDIR%%/documentserver/server/info/ai/CHANGELOG.md
+%%WWWDIR%%/documentserver/server/info/ai/LICENSE.txt
%%WWWDIR%%/documentserver/server/info/ai/aiModelEdit.html
%%WWWDIR%%/documentserver/server/info/ai/aiModelsList.html
%%WWWDIR%%/documentserver/server/info/ai/chat.html
+%%WWWDIR%%/documentserver/server/info/ai/codeDesktop.js
%%WWWDIR%%/documentserver/server/info/ai/components/ListView/script.js
%%WWWDIR%%/documentserver/server/info/ai/components/ListView/style.css
%%WWWDIR%%/documentserver/server/info/ai/components/Tooltip/script.js
%%WWWDIR%%/documentserver/server/info/ai/components/Tooltip/style.css
%%WWWDIR%%/documentserver/server/info/ai/config.json
+%%WWWDIR%%/documentserver/server/info/ai/configDesktop.json
%%WWWDIR%%/documentserver/server/info/ai/customProviders.html
%%WWWDIR%%/documentserver/server/info/ai/deploy/ai.plugin
+%%WWWDIR%%/documentserver/server/info/ai/helper.html
%%WWWDIR%%/documentserver/server/info/ai/hyperlink.html
%%WWWDIR%%/documentserver/server/info/ai/index.html
+%%WWWDIR%%/documentserver/server/info/ai/indexDesktop.html
%%WWWDIR%%/documentserver/server/info/ai/resources/dark/icon.png
%%WWWDIR%%/documentserver/server/info/ai/resources/dark/icon@1.25x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/dark/icon@1.5x.png
@@ -1402,6 +1407,11 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/info@1.5x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/info@1.75x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/info@2x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/ocr.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/ocr@1.25x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/ocr@1.5x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/ocr@1.75x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/ocr@2x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/summarization.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/summarization@1.25x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/dark/summarization@1.5x.png
@@ -1597,6 +1607,11 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/info@1.5x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/info@1.75x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/info@2x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/ocr.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/ocr@1.25x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/ocr@1.5x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/ocr@1.75x.png
+%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/ocr@2x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/summarization.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/summarization@1.25x.png
%%WWWDIR%%/documentserver/server/info/ai/resources/icons/light/summarization@1.5x.png
@@ -1714,6 +1729,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/google-gemini.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/gpt4all.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/groq.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/lmstudio.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/mistral.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/ollama.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/open-ai-models.txt
@@ -1723,15 +1739,23 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/together-ai-models.txt
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/together.ai.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/xAI.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/internal/zhipu.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/preinstall-example.json
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/providers/provider.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/register.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/engine/storage.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/helper.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/helperFuncs.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/helpers/cell.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/helpers/slide.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/helpers/word.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/hyperlink.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/settings.js
%%WWWDIR%%/documentserver/server/info/ai/scripts/summarization.js
+%%WWWDIR%%/documentserver/server/info/ai/scripts/utils/theme.js
%%WWWDIR%%/documentserver/server/info/ai/settings.html
%%WWWDIR%%/documentserver/server/info/ai/summarization.html
+%%WWWDIR%%/documentserver/server/info/ai/translations/ar-SA.json
%%WWWDIR%%/documentserver/server/info/ai/translations/cs-CS.json
%%WWWDIR%%/documentserver/server/info/ai/translations/de-DE.json
%%WWWDIR%%/documentserver/server/info/ai/translations/es-ES.json
@@ -2469,6 +2493,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/documenteditor/main/resources/help/de/images/customtable.png
%%WWWDIR%%/documentserver/web-apps/apps/documenteditor/main/resources/help/de/images/darkmode_oform.png
%%WWWDIR%%/documentserver/web-apps/apps/documenteditor/main/resources/help/de/images/date_time.png
+%%WWWDIR%%/documentserver/web-apps/apps/documenteditor/main/resources/help/de/images/date_time_settings.png
%%WWWDIR%%/documentserver/web-apps/apps/documenteditor/main/resources/help/de/images/datecontentcontrol2.png
%%WWWDIR%%/documentserver/web-apps/apps/documenteditor/main/resources/help/de/images/datesettings.png
%%WWWDIR%%/documentserver/web-apps/apps/documenteditor/main/resources/help/de/images/drawio_diagram.png
@@ -8285,6 +8310,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/help/de/images/lookup_function.gif
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/help/de/images/lower.png
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/help/de/images/managerules.png
+%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/help/de/images/margins.png
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/help/de/images/match.png
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/help/de/images/max.png
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/help/de/images/maxa.png
@@ -17705,7 +17731,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/img/v2/iconssmall@2.5x.svg
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/img/v2/iconssmall@2x.png
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/main/resources/symboltable/ru.json
-%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/mobile/css/611.2ad5c287215269bcc9de.css
+%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/mobile/css/611.219690714751ff3c27cf.css
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/mobile/css/app.43cfb55a2bbb45252e03.css
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/mobile/css/framework7-rtl.css
%%WWWDIR%%/documentserver/web-apps/apps/spreadsheeteditor/mobile/css/framework7.css
@@ -17894,9 +17920,12 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/fr.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/he.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/hu.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/hy.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/id.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/it.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/ja.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/ko.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/pl.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/pt.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/ro.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/embed/locale/ru.json
@@ -17914,6 +17943,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/index.html
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/index_loader.html
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/ar.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/cs.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/de.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/el.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/en.json
@@ -17924,6 +17954,8 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/hy.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/it.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/ja.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/ko.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/pl.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/pt.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/ro.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/ru.json
@@ -17934,18 +17966,46 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/ur.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/locale/zh.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/css/app.css
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/Contents.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/HelpfulHints/About.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/HelpfulHints/AdvancedSettings.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/HelpfulHints/Communicating.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/HelpfulHints/KeyboardShortcuts.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/HelpfulHints/Navigation.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/HelpfulHints/SupportedFormats.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/ProgramInterface/FileTab.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/ProgramInterface/ProgramInterface.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/ProgramInterface/ViewTab.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/UsageInstructions/SavePrintDownload.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/UsageInstructions/ViewDiagramViewerInfo.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/callback.js
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/interface/desktop_editorwindow.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/interface/desktop_filetab.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/interface/desktop_viewtab.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/interface/editorwindow.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/interface/filetab.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/interface/viewtab.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/keytips1.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/keytips2.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/images/printsettingswindow.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/search/indexes.js
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/de/search/search.html
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/Contents.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/HelpfulHints/About.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/HelpfulHints/AdvancedSettings.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/HelpfulHints/Communicating.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/HelpfulHints/KeyboardShortcuts.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/HelpfulHints/Navigation.htm
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/HelpfulHints/SupportedFormats.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/ProgramInterface/FileTab.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/ProgramInterface/ProgramInterface.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/ProgramInterface/ViewTab.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/UsageInstructions/SavePrintDownload.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/UsageInstructions/ViewDiagramViewerInfo.htm
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/callback.js
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/images/interface/desktop_editorwindow.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/images/interface/desktop_filetab.png
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/images/interface/desktop_viewtab.png
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/images/interface/editorwindow.png
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/images/interface/filetab.png
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/main/resources/help/en/images/interface/viewtab.png
@@ -18017,6 +18077,8 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/hy.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/it.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/ja.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/ko.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/pl.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/pt-pt.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/pt.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/ro.json
@@ -18025,6 +18087,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/sq.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/sr-cyrl.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/sr.json
+%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/sv.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/ur.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/locale/zh.json
%%WWWDIR%%/documentserver/web-apps/apps/visioeditor/mobile/resources/img/about/logo-new-white.svg