Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Feb 2023 15:44:46 GMT
From:      Guido Falsi <madpilot@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: e65d3de319a7 - main - deskutils/calibre: Update to 6.12.0
Message-ID:  <202302151544.31FFiknA016371@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by madpilot:

URL: https://cgit.FreeBSD.org/ports/commit/?id=e65d3de319a7f795e28cfc4f9dcef6e1a5ec396b

commit e65d3de319a7f795e28cfc4f9dcef6e1a5ec396b
Author:     Guido Falsi <madpilot@FreeBSD.org>
AuthorDate: 2023-02-15 15:43:21 +0000
Commit:     Guido Falsi <madpilot@FreeBSD.org>
CommitDate: 2023-02-15 15:43:21 +0000

    deskutils/calibre: Update to 6.12.0
    
    With this release upstream has decided not to include some prebuilt
    and bundled parts. So the port now needs to download some extra
    files, to be able to compile.
    
    Also while building calibre now needs to launch parts of itself
    which creates a temporary directory in LOCALBASE, if it is writable,
    so clean that up after the build.
    
    - Use DIST_SUBDIR, since the port is downloading multiple files
      now.
    - Add new dependencies for things not embedded anymore
    - Remove unneeded EXTRACT_BEFORE_ARGS
    - Remove references to python2
    - Bundle predigested user-agent-data.json file, adding a utility
      target to easily regenerate it
    - Move from dead upstream textproc/cchardet to drop-in-ready
      textproc/py-charset-normalizer [1]
    
    Submitted by:   fluffy [1]
---
 deskutils/calibre/Makefile                         |  54 +-
 deskutils/calibre/distinfo                         |  12 +-
 deskutils/calibre/files/patch-setup_build.py       |   6 +-
 deskutils/calibre/files/patch-setup_install.py     |  33 +
 deskutils/calibre/files/patch-setup_resources.py   |  35 +
 .../files/patch-src_calibre_ebooks_chardet.py      |  11 +
 deskutils/calibre/files/user-agent-data.json       | 770 +++++++++++++++++++++
 deskutils/calibre/pkg-plist                        |   3 +
 8 files changed, 905 insertions(+), 19 deletions(-)

diff --git a/deskutils/calibre/Makefile b/deskutils/calibre/Makefile
index c6bc86aa1140..b7fe3c684eb3 100644
--- a/deskutils/calibre/Makefile
+++ b/deskutils/calibre/Makefile
@@ -1,8 +1,12 @@
 PORTNAME=	calibre
-PORTVERSION=	6.11.0
-PORTREVISION=	1
+PORTVERSION=	6.12.0
 CATEGORIES=	deskutils python
-MASTER_SITES=	http://download.calibre-ebook.com/${PORTVERSION}/
+MASTER_SITES=	http://download.calibre-ebook.com/${PORTVERSION}/ \
+		https://curl.haxx.se/ca/:cacert
+DISTFILES=	${DISTNAME}${EXTRACT_SUFX} \
+		cacert.pem:cacert
+DIST_SUBDIR=	${PORTNAME}
+EXTRACT_ONLY=	${DISTFILES:C/:[^:]+$//:Ncacert.pem}
 
 MAINTAINER=	madpilot@FreeBSD.org
 COMMENT=	Ebook management application
@@ -25,7 +29,9 @@ LIB_DEPENDS=	libfontconfig.so:x11-fonts/fontconfig \
 		libuchardet.so:textproc/uchardet
 BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sqlite3>=0:databases/py-sqlite3@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}dateutil>=0:devel/py-dateutil@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}beautifulsoup>=0:www/py-beautifulsoup@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}mechanize>=0:www/py-mechanize@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}css-parser>=1.0.4:www/py-css-parser@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}apsw>=0:databases/py-apsw@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}msgpack>=0.3:devel/py-msgpack@${PY_FLAVOR} \
@@ -33,7 +39,10 @@ BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sqlite3>=0:databases/py-sqlite3@${PY_FLAVO
 		${PYTHON_PKGNAMEPREFIX}html5-parser>=0.4.3:www/py-html5-parser@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}zeroconf>0:net/py-zeroconf@${PY_FLAVOR} \
-		${LOCALBASE}/bin/cmake:devel/cmake-core
+		${PYTHON_PKGNAMEPREFIX}pyicu>0:devel/py-pyicu@${PY_FLAVOR} \
+		${LOCALBASE}/bin/cmake:devel/cmake-core \
+		liberation-fonts-ttf>=2.1.3:x11-fonts/liberation-fonts-ttf \
+		MathJax3>0:www/mathjax3
 RUN_DEPENDS=	xdg-open:devel/xdg-utils \
 		${PYTHON_PKGNAMEPREFIX}css-parser>=1.0.4:www/py-css-parser@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}dnspython>=0:dns/py-dnspython@${PY_FLAVOR} \
@@ -49,14 +58,16 @@ RUN_DEPENDS=	xdg-open:devel/xdg-utils \
 		${PYTHON_PKGNAMEPREFIX}msgpack>=0.3:devel/py-msgpack@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}regex>=0:textproc/py-regex@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}markdown>=0:textproc/py-markdown@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}cchardet>=0:textproc/py-cchardet@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}charset-normalizer>=0:textproc/py-charset-normalizer@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}html5-parser>=0.4.3:www/py-html5-parser@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}feedparser>=6.0.8:textproc/py-feedparser@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}jeepney>=0.6:devel/py-jeepney@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} \
 		pdftohtml:graphics/poppler-utils \
 		${PYTHON_PKGNAMEPREFIX}zeroconf>0:net/py-zeroconf@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pycryptodome>0:security/py-pycryptodome@${PY_FLAVOR}
+		${PYTHON_PKGNAMEPREFIX}pycryptodome>0:security/py-pycryptodome@${PY_FLAVOR} \
+		liberation-fonts-ttf>=2.1.3:x11-fonts/liberation-fonts-ttf\
+		MathJax3>0:www/mathjax3
 
 USES=		desktop-file-utils gettext-runtime gl gnome localbase:ldflags \
 		pkgconfig pyqt:6 python:3.8+ qt:6 shared-mime-info shebangfix \
@@ -69,11 +80,12 @@ USE_GL=		egl gl
 USE_GNOME=	glib20
 USE_XORG=	xrender xext x11
 
-EXTRACT_BEFORE_ARGS=	-x -s '/^calibre/~-src/' -f
+USE_GITHUB=	nodefault
+GH_TUPLE=	kovidgoyal:calibre-translations:cdd2a2e:translations \
+		LibreOffice:dictionaries:1b6575d:hypenation
+
 SHEBANG_GLOB=	*.sh *.py *.recipe
-python_OLD_CMD=	"/usr/bin/env python2" "/usr/bin/env  python2" "/usr/bin/env  python" /bin/python2 \
-		/usr/bin/python2 ${LOCALBASE}/bin/python3
-WRKSRC=		${WRKDIR}/${PORTNAME}-src-${PORTVERSION}
+python_OLD_CMD=	"/usr/bin/env  python" ${LOCALBASE}/bin/python3
 MAKE_ENV+=	FC_INC_DIR="${LOCALBASE}/include/fontconfig" \
 		FC_LIB_DIR="${LOCALBASE}/lib" \
 		OVERRIDE_CFLAGS="${CFLAGS}" \
@@ -88,11 +100,15 @@ MAKE_ENV+=	FC_INC_DIR="${LOCALBASE}/include/fontconfig" \
 		QMAKE=${QMAKE} \
 		SIP_BIN=${SIP} \
 		SIP_DIR=${PYQT_SIPDIR} \
-		CALIBRE_PY3_PORT=1
+		PYTHONDONTWRITEBYTECODE=true
+
+post-extract:
+	@${MV} ${WRKSRC_translations} ${WRKSRC}/src/translations
+	@${CP} ${DISTDIR}/${DIST_SUBDIR}/cacert.pem ${WRKSRC}/resources/mozilla-ca-certs.pem
+	@${CP} ${FILESDIR}/user-agent-data.json ${WRKSRC}/resources
 
 post-patch:
 	@${REINPLACE_CMD} -e "s|#!/usr/bin/env python{py_major_version}|#!${PYTHON_CMD}|" \
-			-e "s|#!/usr/bin/env python2|#!${PYTHON_CMD}|" \
 			-e "s|#!/usr/bin/env python|#!${PYTHON_CMD}|" \
 		${WRKSRC}/setup/install.py \
 		${WRKSRC}/src/calibre/gui2/dialogs/custom_recipes.py \
@@ -104,7 +120,14 @@ do-configure:
 do-build:
 	@${MKDIR} ${WRKDIR}/calibre-config ${WRKDIR}/xdg-config
 	@(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} \
-		${PYSETUP} build)
+		${PYSETUP} bootstrap \
+		--system-liberation_fonts \
+		--path-to-liberation_fonts=${LOCALBASE}/share/fonts/Liberation \
+		--system-mathjax \
+		--path-to-mathjax=${LOCALBASE}/www/MathJax3 \
+		--path-to-hyphenation=${WRKSRC_hypenation} \
+	)
+	@${RMDIR} ${LOCALBASE}/libexec/qt6/locales 2>/dev/null || ${TRUE}
 
 do-install:
 	@${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PYTHON_VERSION}/site-packages \
@@ -122,4 +145,9 @@ do-install:
 	@${RMDIR} ${STAGEDIR}${PREFIX}/share/desktop-directories
 	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/calibre/calibre/plugins/*
 
+update-recent-uas:
+	@(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} \
+		${PYSETUP} recent_uas)
+	${CP} ${BUILD_WRKSRC}/resources/user-agent-data.json ${FILESDIR}
+
 .include <bsd.port.mk>
diff --git a/deskutils/calibre/distinfo b/deskutils/calibre/distinfo
index 78a81a53ffa5..1fd87701b5b5 100644
--- a/deskutils/calibre/distinfo
+++ b/deskutils/calibre/distinfo
@@ -1,3 +1,9 @@
-TIMESTAMP = 1673519124
-SHA256 (calibre-6.11.0.tar.xz) = ca5399e658c0e6e05bd9b5ffa8586c98f416e9d255107f63c50691daef02e167
-SIZE (calibre-6.11.0.tar.xz) = 42603028
+TIMESTAMP = 1676140665
+SHA256 (calibre/calibre-6.12.0.tar.xz) = 34718a92ad7aa53549ef80dfaa042e2ff162c418aa0420978a6efd626757757c
+SIZE (calibre/calibre-6.12.0.tar.xz) = 22753352
+SHA256 (calibre/cacert.pem) = fb1ecd641d0a02c01bc9036d513cb658bbda62a75e246bedbc01764560a639f0
+SIZE (calibre/cacert.pem) = 216583
+SHA256 (calibre/kovidgoyal-calibre-translations-cdd2a2e_GH0.tar.gz) = 8a436edccd5b01078083637a00e86045bc446b44065b66e67490f5bb544a42b0
+SIZE (calibre/kovidgoyal-calibre-translations-cdd2a2e_GH0.tar.gz) = 71153222
+SHA256 (calibre/LibreOffice-dictionaries-1b6575d_GH0.tar.gz) = 7e2587b75d06cad20ce887910f09ae0ef323369069206971c6cf4f6f3fcadae6
+SIZE (calibre/LibreOffice-dictionaries-1b6575d_GH0.tar.gz) = 94695879
diff --git a/deskutils/calibre/files/patch-setup_build.py b/deskutils/calibre/files/patch-setup_build.py
index bda38070c980..e5115425aed6 100644
--- a/deskutils/calibre/files/patch-setup_build.py
+++ b/deskutils/calibre/files/patch-setup_build.py
@@ -1,8 +1,8 @@
---- setup/build.py.orig	2020-12-12 08:56:45 UTC
+--- setup/build.py.orig	2023-02-03 02:11:49 UTC
 +++ setup/build.py
-@@ -495,6 +495,7 @@ exceptions = {needs_exceptions}
+@@ -682,6 +682,7 @@ sip-file = "{os.path.basename(sipf)}"
  include-dirs = {ext.inc_dirs}
- qmake-QT = ["widgets"]
+ qmake-QT = {ext.qt_modules}
  sip-file = "{os.path.basename(sipf)}"
 +tags = ["WS_X11"]
  ''')
diff --git a/deskutils/calibre/files/patch-setup_install.py b/deskutils/calibre/files/patch-setup_install.py
new file mode 100644
index 000000000000..a7083c0da5fb
--- /dev/null
+++ b/deskutils/calibre/files/patch-setup_install.py
@@ -0,0 +1,33 @@
+--- setup/install.py.orig	2023-02-03 02:11:49 UTC
++++ setup/install.py
+@@ -357,29 +357,11 @@ class Bootstrap(Command):
+ 
+     description = 'Bootstrap a fresh checkout of calibre from git to a state where it can be installed. Requires various development tools/libraries/headers'
+     TRANSLATIONS_REPO = 'kovidgoyal/calibre-translations'
+-    sub_commands = 'build iso639 iso3166 translations gui resources cacerts recent_uas'.split()
++    sub_commands = 'build iso639 iso3166 translations gui resources cacerts'.split()
+ 
+     def add_options(self, parser):
+         parser.add_option('--ephemeral', default=False, action='store_true',
+             help='Do not download all history for the translations. Speeds up first time download but subsequent downloads will be slower.')
+-
+-    def pre_sub_commands(self, opts):
+-        tdir = self.j(self.d(self.SRC), 'translations')
+-        clone_cmd = [
+-            'git', 'clone', f'https://github.com/{self.TRANSLATIONS_REPO}.git', 'translations']
+-        if opts.ephemeral:
+-            if os.path.exists(tdir):
+-                shutil.rmtree(tdir)
+-
+-            st = time.time()
+-            clone_cmd.insert(2, '--depth=1')
+-            subprocess.check_call(clone_cmd, cwd=self.d(self.SRC))
+-            print('Downloaded translations in %d seconds' % int(time.time() - st))
+-        else:
+-            if os.path.exists(tdir):
+-                subprocess.check_call(['git', 'pull'], cwd=tdir)
+-            else:
+-                subprocess.check_call(clone_cmd, cwd=self.d(self.SRC))
+ 
+     def run(self, opts):
+         self.info('\n\nAll done! You should now be able to run "%s setup.py install" to install calibre' % sys.executable)
diff --git a/deskutils/calibre/files/patch-setup_resources.py b/deskutils/calibre/files/patch-setup_resources.py
new file mode 100644
index 000000000000..de06cd017327
--- /dev/null
+++ b/deskutils/calibre/files/patch-setup_resources.py
@@ -0,0 +1,35 @@
+--- setup/resources.py.orig	2023-02-03 02:11:49 UTC
++++ setup/resources.py
+@@ -142,19 +142,19 @@ class CACerts(Command):  # {{{
+         except OSError as err:
+             if err.errno != errno.ENOENT:
+                 raise
+-            raw = b''
+-        nraw = download_securely('https://curl.haxx.se/ca/cacert.pem')
+-        if not nraw:
+-            raise RuntimeError('Failed to download CA cert bundle')
+-        if nraw != raw:
+-            self.info('Updating Mozilla CA certificates')
+-            with open(self.CA_PATH, 'wb') as f:
+-                f.write(nraw)
+-            self.verify_ca_certs()
+-
+-    def verify_ca_certs(self):
+-        from calibre.utils.https import get_https_resource_securely
+-        get_https_resource_securely('https://calibre-ebook.com', cacerts=self.b(self.CA_PATH))
++#            raw = b''
++#        nraw = download_securely('https://curl.haxx.se/ca/cacert.pem')
++#        if not nraw:
++#            raise RuntimeError('Failed to download CA cert bundle')
++#        if nraw != raw:
++#            self.info('Updating Mozilla CA certificates')
++#            with open(self.CA_PATH, 'wb') as f:
++#                f.write(nraw)
++#            self.verify_ca_certs()
++#
++#    def verify_ca_certs(self):
++#        from calibre.utils.https import get_https_resource_securely
++#        get_https_resource_securely('https://calibre-ebook.com', cacerts=self.b(self.CA_PATH))
+ # }}}
+ 
+ 
diff --git a/deskutils/calibre/files/patch-src_calibre_ebooks_chardet.py b/deskutils/calibre/files/patch-src_calibre_ebooks_chardet.py
new file mode 100644
index 000000000000..d71ea85d0ae6
--- /dev/null
+++ b/deskutils/calibre/files/patch-src_calibre_ebooks_chardet.py
@@ -0,0 +1,11 @@
+--- src/calibre/ebooks/chardet.py.orig	2023-01-17 15:04:24 UTC
++++ src/calibre/ebooks/chardet.py
+@@ -109,7 +109,7 @@ def detect(bytestring):
+         from calibre_extensions.uchardet import detect as implementation
+     except ImportError:
+         # People running from source without updated binaries
+-        from cchardet import detect as cdi
++        from charset_normalizer import detect as cdi
+ 
+         def implementation(x):
+             return cdi(x).get('encoding') or ''
diff --git a/deskutils/calibre/files/user-agent-data.json b/deskutils/calibre/files/user-agent-data.json
new file mode 100644
index 000000000000..5e9c8978acd2
--- /dev/null
+++ b/deskutils/calibre/files/user-agent-data.json
@@ -0,0 +1,770 @@
+{
+  "chrome_versions": [
+    {
+      "chrome_version": "110.0.5481",
+      "date": "2023-02-07",
+      "webkit_version": "110"
+    },
+    {
+      "chrome_version": "109.0.5414",
+      "date": "2023-01-10",
+      "webkit_version": "109"
+    },
+    {
+      "chrome_version": "108.0.5359",
+      "date": "2022-11-29",
+      "webkit_version": "108"
+    },
+    {
+      "chrome_version": "107.0.5304",
+      "date": "2022-10-24",
+      "webkit_version": "107"
+    },
+    {
+      "chrome_version": "106.0.5249",
+      "date": "2022-09-27",
+      "webkit_version": "106"
+    },
+    {
+      "chrome_version": "105.0.5195",
+      "date": "2022-08-30",
+      "webkit_version": "105"
+    },
+    {
+      "chrome_version": "104.0.5112",
+      "date": "2022-08-02",
+      "webkit_version": "104"
+    },
+    {
+      "chrome_version": "103.0.5060",
+      "date": "2022-06-21",
+      "webkit_version": "103"
+    },
+    {
+      "chrome_version": "102.0.5005",
+      "date": "2022-05-24",
+      "webkit_version": "102"
+    },
+    {
+      "chrome_version": "101.0.4951",
+      "date": "2022-04-26",
+      "webkit_version": "101"
+    },
+    {
+      "chrome_version": "100.0.4896",
+      "date": "2022-03-29",
+      "webkit_version": "100"
+    },
+    {
+      "chrome_version": "99.0.4844",
+      "date": "2022-03-01",
+      "webkit_version": "99"
+    },
+    {
+      "chrome_version": "98.0.4758",
+      "date": "2022-02-01",
+      "webkit_version": "98"
+    },
+    {
+      "chrome_version": "97.0.4692",
+      "date": "2022-01-04",
+      "webkit_version": "97"
+    },
+    {
+      "chrome_version": "96.0.4664",
+      "date": "2021-11-09",
+      "webkit_version": "96"
+    },
+    {
+      "chrome_version": "95.0.4638",
+      "date": "2021-10-19",
+      "webkit_version": "95"
+    },
+    {
+      "chrome_version": "94.0.4606",
+      "date": "2021-09-21",
+      "webkit_version": "94"
+    },
+    {
+      "chrome_version": "93.0.4577",
+      "date": "2021-08-31",
+      "webkit_version": "93"
+    },
+    {
+      "chrome_version": "92.0.4515",
+      "date": "2021-07-20",
+      "webkit_version": "92"
+    },
+    {
+      "chrome_version": "91.0.4472",
+      "date": "2021-05-25",
+      "webkit_version": "91"
+    },
+    {
+      "chrome_version": "90.0.4430",
+      "date": "2021-04-13",
+      "webkit_version": "90"
+    },
+    {
+      "chrome_version": "89.0.4389",
+      "date": "2021-03-02",
+      "webkit_version": "89"
+    },
+    {
+      "chrome_version": "88.0.4324",
+      "date": "2021-01-19",
+      "webkit_version": "88"
+    },
+    {
+      "chrome_version": "87.0.4280",
+      "date": "2020-11-17",
+      "webkit_version": "87"
+    },
+    {
+      "chrome_version": "86.0.4240",
+      "date": "2020-09-30",
+      "webkit_version": "86"
+    },
+    {
+      "chrome_version": "85.0.4183",
+      "date": "2020-08-25",
+      "webkit_version": "85"
+    },
+    {
+      "chrome_version": "84.0.4147",
+      "date": "2020-07-14",
+      "webkit_version": "84"
+    },
+    {
+      "chrome_version": "83.0.4103",
+      "date": "2020-05-19",
+      "webkit_version": "83"
+    },
+    {
+      "chrome_version": "81.0.4044",
+      "date": "2020-04-07",
+      "webkit_version": "81"
+    },
+    {
+      "chrome_version": "80.0.3987",
+      "date": "2020-02-04",
+      "webkit_version": "80"
+    },
+    {
+      "chrome_version": "79.0.3945",
+      "date": "2019-12-10",
+      "webkit_version": "79"
+    },
+    {
+      "chrome_version": "78.0.3904",
+      "date": "2019-10-22",
+      "webkit_version": "78"
+    },
+    {
+      "chrome_version": "77.0.3865",
+      "date": "2019-09-10",
+      "webkit_version": "77"
+    },
+    {
+      "chrome_version": "76.0.3809",
+      "date": "2019-07-30",
+      "webkit_version": "76"
+    },
+    {
+      "chrome_version": "75.0.3770",
+      "date": "2019-06-04",
+      "webkit_version": "75"
+    },
+    {
+      "chrome_version": "74.0.3729",
+      "date": "2019-04-23",
+      "webkit_version": "74"
+    },
+    {
+      "chrome_version": "73.0.3683",
+      "date": "2019-03-12",
+      "webkit_version": "73"
+    },
+    {
+      "chrome_version": "72.0.3626",
+      "date": "2019-01-29",
+      "webkit_version": "72"
+    },
+    {
+      "chrome_version": "71.0.3578",
+      "date": "2018-12-04",
+      "webkit_version": "71"
+    },
+    {
+      "chrome_version": "70.0.3538",
+      "date": "2018-10-16",
+      "webkit_version": "70"
+    },
+    {
+      "chrome_version": "69.0.3497",
+      "date": "2018-09-04",
+      "webkit_version": "69"
+    },
+    {
+      "chrome_version": "68.0.3440",
+      "date": "2018-07-24",
+      "webkit_version": "68"
+    },
+    {
+      "chrome_version": "67.0.3396",
+      "date": "2018-05-29",
+      "webkit_version": "67"
+    },
+    {
+      "chrome_version": "66.0.3359",
+      "date": "2018-04-17",
+      "webkit_version": "66"
+    },
+    {
+      "chrome_version": "65.0.3325",
+      "date": "2018-03-06",
+      "webkit_version": "65"
+    },
+    {
+      "chrome_version": "64.0.3282",
+      "date": "2018-01-23",
+      "webkit_version": "64"
+    },
+    {
+      "chrome_version": "63.0.3239",
+      "date": "2017-12-05",
+      "webkit_version": "63"
+    },
+    {
+      "chrome_version": "62.0.3202",
+      "date": "2017-10-17",
+      "webkit_version": "62"
+    },
+    {
+      "chrome_version": "61.0.3163",
+      "date": "2017-09-05",
+      "webkit_version": "61"
+    },
+    {
+      "chrome_version": "60.0.3112",
+      "date": "2017-07-25",
+      "webkit_version": "60"
+    },
+    {
+      "chrome_version": "59.0.3071",
+      "date": "2017-06-05",
+      "webkit_version": "59"
+    },
+    {
+      "chrome_version": "58.0.3029",
+      "date": "2017-04-19",
+      "webkit_version": "58"
+    },
+    {
+      "chrome_version": "57.0.2987",
+      "date": "2017-03-09",
+      "webkit_version": "57"
+    },
+    {
+      "chrome_version": "56.0.2924",
+      "date": "2017-01-25",
+      "webkit_version": "56"
+    },
+    {
+      "chrome_version": "55.0.2883",
+      "date": "2016-12-01",
+      "webkit_version": "55"
+    },
+    {
+      "chrome_version": "54.0.2840",
+      "date": "2016-10-12",
+      "webkit_version": "54"
+    },
+    {
+      "chrome_version": "53.0.2785",
+      "date": "2016-08-31",
+      "webkit_version": "53"
+    },
+    {
+      "chrome_version": "52.0.2743",
+      "date": "2016-07-20",
+      "webkit_version": "52"
+    },
+    {
+      "chrome_version": "51.0.2704",
+      "date": "2016-05-25",
+      "webkit_version": "51"
+    },
+    {
+      "chrome_version": "50.0.2661",
+      "date": "2016-04-13",
+      "webkit_version": "50"
+    },
+    {
+      "chrome_version": "49.0.2623",
+      "date": "2016-03-02",
+      "webkit_version": "49"
+    },
+    {
+      "chrome_version": "48.0.2564",
+      "date": "2016-01-20",
+      "webkit_version": "48"
+    },
+    {
+      "chrome_version": "47.0.2526",
+      "date": "2015-12-01",
+      "webkit_version": "47"
+    },
+    {
+      "chrome_version": "46.0.2490",
+      "date": "2015-10-13",
+      "webkit_version": "46"
+    },
+    {
+      "chrome_version": "45.0.2454",
+      "date": "2015-09-01",
+      "webkit_version": "45"
+    },
+    {
+      "chrome_version": "44.0.2403",
+      "date": "2015-07-21",
+      "webkit_version": "44"
+    },
+    {
+      "chrome_version": "43.0.2357",
+      "date": "2015-05-19",
+      "webkit_version": "43"
+    },
+    {
+      "chrome_version": "42.0.2311",
+      "date": "2015-04-14",
+      "webkit_version": "42"
+    },
+    {
+      "chrome_version": "41.0.2272",
+      "date": "2015-03-03",
+      "webkit_version": "41"
+    },
+    {
+      "chrome_version": "40.0.2214",
+      "date": "2015-01-20",
+      "webkit_version": "40"
+    },
+    {
+      "chrome_version": "39.0.2171",
+      "date": "2014-11-12",
+      "webkit_version": "39"
+    },
+    {
+      "chrome_version": "38.0.2125",
+      "date": "2014-10-07",
+      "webkit_version": "38"
+    },
+    {
+      "chrome_version": "37.0.2062",
+      "date": "2014-08-26",
+      "webkit_version": "37"
+    },
+    {
+      "chrome_version": "36.0.1985",
+      "date": "2014-07-15",
+      "webkit_version": "36"
+    },
+    {
+      "chrome_version": "35.0.1916",
+      "date": "2014-05-20",
+      "webkit_version": "35"
+    },
+    {
+      "chrome_version": "34.0.1847",
+      "date": "2014-04-02",
+      "webkit_version": "34"
+    },
+    {
+      "chrome_version": "33.0.1750",
+      "date": "2014-02-18",
+      "webkit_version": "33"
+    },
+    {
+      "chrome_version": "32.0.1700",
+      "date": "2014-01-14",
+      "webkit_version": "32"
+    },
+    {
+      "chrome_version": "31.0.1650",
+      "date": "2013-11-12",
+      "webkit_version": "31"
+    },
+    {
+      "chrome_version": "30.0.1599",
+      "date": "2013-09-18",
+      "webkit_version": "30"
+    },
+    {
+      "chrome_version": "29.0.1547",
+      "date": "2013-08-20",
+      "webkit_version": "29"
+    },
+    {
+      "chrome_version": "27.0.1453",
+      "date": "2013-05-21",
+      "webkit_version": "537.36"
+    },
+    {
+      "chrome_version": "26.0.1410",
+      "date": "2013-03-26",
+      "webkit_version": "537.31"
+    },
+    {
+      "chrome_version": "25.0.1364",
+      "date": "2013-02-21",
+      "webkit_version": "537.22"
+    },
+    {
+      "chrome_version": "24.0.1312",
+      "date": "2013-01-10",
+      "webkit_version": "537.17"
+    },
+    {
+      "chrome_version": "23.0.1271",
+      "date": "2012-11-06",
+      "webkit_version": "537.11"
+    },
+    {
+      "chrome_version": "22.0.1229",
+      "date": "2012-09-25",
+      "webkit_version": "537.4"
+    },
+    {
+      "chrome_version": "21.0.1180",
+      "date": "2012-07-31",
+      "webkit_version": "537.1"
+    },
+    {
+      "chrome_version": "20.0.1132",
+      "date": "2012-06-26",
+      "webkit_version": "536.10"
+    },
+    {
+      "chrome_version": "19.0.1084",
+      "date": "2012-05-15",
+      "webkit_version": "536.5"
+    },
+    {
+      "chrome_version": "18.0.1025",
+      "date": "2012-03-28",
+      "webkit_version": "535.19"
+    },
+    {
+      "chrome_version": "17.0.963",
+      "date": "2012-02-08",
+      "webkit_version": "535.11"
+    },
+    {
+      "chrome_version": "16.0.912",
+      "date": "2011-12-13",
+      "webkit_version": "535.7"
+    },
+    {
+      "chrome_version": "15.0.874",
+      "date": "2011-10-25",
+      "webkit_version": "535.2"
+    },
+    {
+      "chrome_version": "13.0.782",
+      "date": "2011-08-02",
+      "webkit_version": "535.1"
+    },
+    {
+      "chrome_version": "12.0.742",
+      "date": "2011-06-07",
+      "webkit_version": "534.30"
+    },
+    {
+      "chrome_version": "11.0.696",
+      "date": "2011-04-27",
+      "webkit_version": "534.24"
+    },
+    {
+      "chrome_version": "10.0.648",
+      "date": "2011-03-08",
+      "webkit_version": "534.16"
+    },
+    {
+      "chrome_version": "9.0.597",
+      "date": "2011-02-03",
+      "webkit_version": "534.13"
+    },
+    {
+      "chrome_version": "8.0.552",
+      "date": "2010-12-02",
+      "webkit_version": "534.10"
+    },
+    {
+      "chrome_version": "7.0.517",
+      "date": "2010-10-21",
+      "webkit_version": "534.7"
+    },
+    {
+      "chrome_version": "6.0.472",
+      "date": "2010-09-02",
+      "webkit_version": "534.3"
+    },
+    {
+      "chrome_version": "5.0.375",
+      "date": "2010-05-21",
+      "webkit_version": "533"
+    },
+    {
+      "chrome_version": "4.0.249",
+      "date": "2010-01-25",
+      "webkit_version": "532.5"
+    },
+    {
+      "chrome_version": "3.0.195",
+      "date": "2009-10-12",
+      "webkit_version": "532"
+    },
+    {
+      "chrome_version": "2.0.172",
+      "date": "2009-05-24",
+      "webkit_version": "530"
+    },
+    {
+      "chrome_version": "1.0.154",
+      "date": "2008-12-11",
+      "webkit_version": "528"
+    },
+    {
+      "chrome_version": "0.4.154",
+      "date": "2008-11-24",
+      "webkit_version": "525"
+    }
+  ],
+  "common_user_agents": [
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36",
+    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
+    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36",
+    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0",
+    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36",
+    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0",
+    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15",
+    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
+    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
+    "Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63"
+  ],
+  "desktop_platforms": [
+    "Windows NT 10.0; WOW64",
+    "Linux; Android",
+    "Windows NT 10.0",
+    "Windows NT 6.1; WOW64",
+    "Windows NT 10.0; Win64; x64"
+  ],
+  "firefox_versions": [
+    "109.0",
+    "108.0",
+    "107.0",
+    "106.0",
+    "105.0",
+    "104.0",
+    "103.0",
+    "102.0",
+    "101.0",
+    "100.0",
+    "99.0",
+    "98.0",
+    "97.0",
+    "96.0",
+    "95.0",
+    "94.0",
+    "93.0",
+    "92.0",
+    "91.0",
+    "90.0",
+    "89.0",
+    "88.0",
+    "87.0",
+    "86.0",
+    "85.0",
+    "84.0",
+    "83.0",
+    "82.0",
+    "81.0",
+    "80.0",
+    "79.0",
+    "78.0",
+    "77.0",
+    "76.0",
+    "75.0",
+    "74.0",
+    "73.0",
+    "72.0",
+    "71.0",
+    "70.0",
+    "69.0",
+    "68.0",
+    "67.0",
+    "66.0",
+    "65.0",
+    "64.0",
+    "63.0",
+    "62.0",
+    "61.0",
+    "60.0",
+    "59.0",
+    "58.0",
+    "57.0",
+    "56.0",
+    "55.0",
+    "54.0",
+    "53.0",
+    "52.0",
+    "51.0",
+    "50.0",
+    "49.0",
+    "48.0",
+    "47.0",
+    "46.0",
+    "45.0",
+    "44.0",
+    "43.0",
+    "42.0",
+    "41.0",
+    "40.0",
+    "39.0",
+    "38.0",
+    "37.0",
+    "36.0",
+    "35.0",
+    "34.0",
+    "33.1",
+    "33.0",
+    "32.0",
+    "31.0",
+    "30.0",
+    "29.0",
+    "28.0",
+    "27.0",
+    "26.0",
*** 104 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202302151544.31FFiknA016371>