diff options
Diffstat (limited to 'src')
101 files changed, 2771 insertions, 1756 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtAccessibilityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtAccessibilityDelegate.java index 542d05627c9..61f8f4b8d53 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtAccessibilityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtAccessibilityDelegate.java @@ -28,10 +28,6 @@ class QtAccessibilityDelegate extends View.AccessibilityDelegate // all low positive ints should be fine. static final int INVALID_ID = 333; // half evil - // The platform might ask for the class implementing the "view". - // Pretend to be an inner class of the QtSurface. - private static final String DEFAULT_CLASS_NAME = "$VirtualChild"; - private View m_view = null; private AccessibilityManager m_manager; private QtLayout m_layout; @@ -247,7 +243,7 @@ class QtAccessibilityDelegate extends View.AccessibilityDelegate AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT); event.setEnabled(true); - event.setClassName(m_view.getClass().getName() + DEFAULT_CLASS_NAME); + event.setClassName(getNodeForVirtualViewId(viewId).getClassName()); event.setContentDescription(value); @@ -323,7 +319,7 @@ class QtAccessibilityDelegate extends View.AccessibilityDelegate final AccessibilityEvent event = AccessibilityEvent.obtain(eventType); event.setEnabled(true); - event.setClassName(m_view.getClass().getName() + DEFAULT_CLASS_NAME); + event.setClassName(getNodeForVirtualViewId(virtualViewId).getClassName()); event.setContentDescription(QtNativeAccessibility.descriptionForAccessibleObject(virtualViewId)); if (event.getText().isEmpty() && TextUtils.isEmpty(event.getContentDescription())) @@ -419,7 +415,6 @@ class QtAccessibilityDelegate extends View.AccessibilityDelegate final AccessibilityNodeInfo node = AccessibilityNodeInfo.obtain(); - node.setClassName(m_view.getClass().getName() + DEFAULT_CLASS_NAME); node.setPackageName(m_view.getContext().getPackageName()); if (m_layout.getChildCount() == 0 || !QtNativeAccessibility.populateNode(virtualViewId, node)) { diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 3f5f9180805..7b522f99abb 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -3799,7 +3799,7 @@ function(qt6_generate_deploy_app_script) qt6_generate_deploy_script(${generate_args} CONTENT " qt6_deploy_runtime_dependencies( - EXECUTABLE $<TARGET_FILE_NAME:${arg_TARGET}>.app + EXECUTABLE \"$<TARGET_FILE_NAME:${arg_TARGET}>.app\" ${common_deploy_args}) ") @@ -3807,7 +3807,7 @@ ${common_deploy_args}) qt6_generate_deploy_script(${generate_args} CONTENT " qt6_deploy_runtime_dependencies( - EXECUTABLE $<TARGET_FILE:${arg_TARGET}> + EXECUTABLE \"$<TARGET_FILE:${arg_TARGET}>\" GENERATE_QT_CONF ${common_deploy_args}) ") @@ -3817,7 +3817,7 @@ ${common_deploy_args}) qt6_generate_deploy_script(${generate_args} CONTENT " qt6_deploy_runtime_dependencies( - EXECUTABLE $<TARGET_FILE:${arg_TARGET}> + EXECUTABLE \"$<TARGET_FILE:${arg_TARGET}>\" GENERATE_QT_CONF ${common_deploy_args}) ") diff --git a/src/corelib/doc/src/cmake/qt_add_resources.qdoc b/src/corelib/doc/src/cmake/qt_add_resources.qdoc index 570272c6097..445e37e000a 100644 --- a/src/corelib/doc/src/cmake/qt_add_resources.qdoc +++ b/src/corelib/doc/src/cmake/qt_add_resources.qdoc @@ -111,5 +111,9 @@ resources linked into the final target. This especially affects static builds. There, the same resource name in different static libraries conflict in the consuming target. +In contrast to \l{qmake}'s \c{RESOURCES}, \c qt_add_resources does not +attempt to compile any QML or JavaScript files using \l{qmlcachegen}. Use +\l{qt_add_qml_module} for this. + \sa {qt6_add_big_resources}{qt_add_big_resources()} */ diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index 1ecec63aed4..d1fc672564f 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -1,6 +1,7 @@ // Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2021 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:execute-external-code #include "qdir.h" #include "qstringlist.h" diff --git a/src/corelib/global/qnumeric.cpp b/src/corelib/global/qnumeric.cpp index 16b2b7ca408..8b153bcdb84 100644 --- a/src/corelib/global/qnumeric.cpp +++ b/src/corelib/global/qnumeric.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2019 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:data-parser #include "qnumeric.h" #include "qnumeric_p.h" diff --git a/src/corelib/global/qnumeric.h b/src/corelib/global/qnumeric.h index 2c7110c97a6..bc2bbf9e53e 100644 --- a/src/corelib/global/qnumeric.h +++ b/src/corelib/global/qnumeric.h @@ -1,6 +1,7 @@ // Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2025 Klarälvdalens Datakonsult AB, a KDAB Group company, [email protected], author Giuseppe D'Angelo <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:data-parser #ifndef QNUMERIC_H #define QNUMERIC_H diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp index fd742898f81..dab903f51fb 100644 --- a/src/corelib/global/qrandom.cpp +++ b/src/corelib/global/qrandom.cpp @@ -1,6 +1,7 @@ // Copyright (C) 2021 Intel Corporation. // Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:cryptography // for rand_s #define _CRT_RAND_S diff --git a/src/corelib/global/qrandom.h b/src/corelib/global/qrandom.h index 5ac864e79ef..30599413d75 100644 --- a/src/corelib/global/qrandom.h +++ b/src/corelib/global/qrandom.h @@ -1,5 +1,6 @@ // Copyright (C) 2020 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:cryptography #ifndef QRANDOM_H #define QRANDOM_H diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 6f995fe082e..5a0be1d895e 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -893,6 +893,12 @@ bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemM { Q_CHECK_FILE_NAME(entry, false); + // Detection of WasDeletedAttribute is imperfect: in general, if we can + // successfully stat() or access() a file, it hasn't been deleted (though + // there are exceptions, like /proc/XXX/fd/ entries on Linux). So we have + // to restore this flag in case we fail to stat() anything. + auto hadBeenDeleted = data.entryFlags & QFileSystemMetaData::WasDeletedAttribute; + #if defined(Q_OS_DARWIN) if (what & (QFileSystemMetaData::BundleType | QFileSystemMetaData::CaseSensitive)) { if (!data.hasFlags(QFileSystemMetaData::DirectoryType)) @@ -1103,6 +1109,11 @@ bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemM if (entryErrno != 0) { what &= ~QFileSystemMetaData::LinkType; // don't clear link: could be broken symlink data.clearFlags(what); + + // see comment at the top + data.entryFlags |= hadBeenDeleted; + data.knownFlagsMask |= hadBeenDeleted; + return false; } return true; diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp index 064be4c2112..cd72f21acdf 100644 --- a/src/corelib/io/qfilesystemwatcher.cpp +++ b/src/corelib/io/qfilesystemwatcher.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qfilesystemwatcher.h" #include "qfilesystemwatcher_p.h" diff --git a/src/corelib/io/qfilesystemwatcher.h b/src/corelib/io/qfilesystemwatcher.h index 668bc143b20..9523945435e 100644 --- a/src/corelib/io/qfilesystemwatcher.h +++ b/src/corelib/io/qfilesystemwatcher.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QFILESYSTEMWATCHER_H #define QFILESYSTEMWATCHER_H diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.mm b/src/corelib/io/qfilesystemwatcher_fsevents.mm index 0d9b84890ae..0f49d43bc02 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents.mm +++ b/src/corelib/io/qfilesystemwatcher_fsevents.mm @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include <qplatformdefs.h> diff --git a/src/corelib/io/qfilesystemwatcher_fsevents_p.h b/src/corelib/io/qfilesystemwatcher_fsevents_p.h index d6ce176a30f..2fc95a99931 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents_p.h +++ b/src/corelib/io/qfilesystemwatcher_fsevents_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QFILESYSTEMWATCHER_FSEVENTS_P_H #define QFILESYSTEMWATCHER_FSEVENTS_P_H diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp index e60f6881109..4971b41c102 100644 --- a/src/corelib/io/qfilesystemwatcher_inotify.cpp +++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qfilesystemwatcher.h" #include "qfilesystemwatcher_inotify_p.h" diff --git a/src/corelib/io/qfilesystemwatcher_inotify_p.h b/src/corelib/io/qfilesystemwatcher_inotify_p.h index 05f87df14c1..705fe71725a 100644 --- a/src/corelib/io/qfilesystemwatcher_inotify_p.h +++ b/src/corelib/io/qfilesystemwatcher_inotify_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QFILESYSTEMWATCHER_INOTIFY_P_H #define QFILESYSTEMWATCHER_INOTIFY_P_H diff --git a/src/corelib/io/qfilesystemwatcher_kqueue.cpp b/src/corelib/io/qfilesystemwatcher_kqueue.cpp index 7a9be337bf8..bc331c9dd2a 100644 --- a/src/corelib/io/qfilesystemwatcher_kqueue.cpp +++ b/src/corelib/io/qfilesystemwatcher_kqueue.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include <qplatformdefs.h> diff --git a/src/corelib/io/qfilesystemwatcher_kqueue_p.h b/src/corelib/io/qfilesystemwatcher_kqueue_p.h index 05844d5be95..a460da6882e 100644 --- a/src/corelib/io/qfilesystemwatcher_kqueue_p.h +++ b/src/corelib/io/qfilesystemwatcher_kqueue_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QFILESYSTEMWATCHER_KQUEUE_P_H #define QFILESYSTEMWATCHER_KQUEUE_P_H diff --git a/src/corelib/io/qfilesystemwatcher_p.h b/src/corelib/io/qfilesystemwatcher_p.h index c34e3e2408f..79cf7443e37 100644 --- a/src/corelib/io/qfilesystemwatcher_p.h +++ b/src/corelib/io/qfilesystemwatcher_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QFILESYSTEMWATCHER_P_H #define QFILESYSTEMWATCHER_P_H diff --git a/src/corelib/io/qfilesystemwatcher_polling.cpp b/src/corelib/io/qfilesystemwatcher_polling.cpp index 5ec13a77f6c..ea374141563 100644 --- a/src/corelib/io/qfilesystemwatcher_polling.cpp +++ b/src/corelib/io/qfilesystemwatcher_polling.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qfilesystemwatcher_polling_p.h" diff --git a/src/corelib/io/qfilesystemwatcher_polling_p.h b/src/corelib/io/qfilesystemwatcher_polling_p.h index 80d7b7d1526..2ace2947be4 100644 --- a/src/corelib/io/qfilesystemwatcher_polling_p.h +++ b/src/corelib/io/qfilesystemwatcher_polling_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QFILESYSTEMWATCHER_POLLING_P_H #define QFILESYSTEMWATCHER_POLLING_P_H diff --git a/src/corelib/io/qfilesystemwatcher_win.cpp b/src/corelib/io/qfilesystemwatcher_win.cpp index 5418265ba2c..3a2cb02c3d7 100644 --- a/src/corelib/io/qfilesystemwatcher_win.cpp +++ b/src/corelib/io/qfilesystemwatcher_win.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qfilesystemwatcher.h" #include "qfilesystemwatcher_win_p.h" diff --git a/src/corelib/io/qfilesystemwatcher_win_p.h b/src/corelib/io/qfilesystemwatcher_win_p.h index f6c6fd6c923..0687080b0ed 100644 --- a/src/corelib/io/qfilesystemwatcher_win_p.h +++ b/src/corelib/io/qfilesystemwatcher_win_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QFILESYSTEMWATCHER_WIN_P_H #define QFILESYSTEMWATCHER_WIN_P_H diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 585a07158ea..9c1bb45dd2d 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:network-protocol //#define QIODEVICE_DEBUG @@ -1308,8 +1309,11 @@ QByteArray QIODevice::readAll() The newline character ('\\n') is included in the buffer. If a newline is not encountered before maxSize - 1 bytes are read, a - newline will not be inserted into the buffer. On windows newline - characters are replaced with '\\n'. + newline will not be inserted into the buffer. + + \note Newline translation(e.g., converting \r to \n) is performed + only when the device is opened for reading with QIODevice::Text + flag. Note that on sequential devices, data may not be immediately available, which may result in a partial line being returned. By calling the diff --git a/src/corelib/io/qiodevice.h b/src/corelib/io/qiodevice.h index 6bf7149e9af..263214ff012 100644 --- a/src/corelib/io/qiodevice.h +++ b/src/corelib/io/qiodevice.h @@ -1,5 +1,6 @@ // Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:header-decls-only #ifndef QIODEVICE_H #define QIODEVICE_H diff --git a/src/corelib/io/qiodevice_p.h b/src/corelib/io/qiodevice_p.h index 151548fb04e..6a1a91e1dea 100644 --- a/src/corelib/io/qiodevice_p.h +++ b/src/corelib/io/qiodevice_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:network-protocol #ifndef QIODEVICE_P_H #define QIODEVICE_P_H diff --git a/src/corelib/io/qstorageinfo.cpp b/src/corelib/io/qstorageinfo.cpp index 950af69ab82..aa7c67e8596 100644 --- a/src/corelib/io/qstorageinfo.cpp +++ b/src/corelib/io/qstorageinfo.cpp @@ -1,6 +1,7 @@ // Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2015 Ivan Komissarov <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qstorageinfo.h" #include "qstorageinfo_p.h" @@ -12,6 +13,7 @@ QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(lcStorageInfo, "qt.core.qstorageinfo", QtWarningMsg) QT_IMPL_METATYPE_EXTERN(QStorageInfo) +QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QStorageInfoPrivate) /*! \class QStorageInfo @@ -75,7 +77,7 @@ QStorageInfo::QStorageInfo() \sa setPath() */ QStorageInfo::QStorageInfo(const QString &path) - : d(new QStorageInfoPrivate) + : QStorageInfo() { setPath(path); } @@ -85,39 +87,45 @@ QStorageInfo::QStorageInfo(const QString &path) containing the \a dir folder. */ QStorageInfo::QStorageInfo(const QDir &dir) - : d(new QStorageInfoPrivate) + : QStorageInfo(dir.absolutePath()) { - setPath(dir.absolutePath()); } /*! Constructs a new QStorageInfo object that is a copy of the \a other QStorageInfo object. */ QStorageInfo::QStorageInfo(const QStorageInfo &other) - : d(other.d) -{ -} + = default; + +/*! + \since 6.10 + \fn QStorageInfo::QStorageInfo(QStorageInfo &&other) + + Move-constructs a new QStorageInfo from \a other. + + The moved-from object \a other is placed in a partially-formed state, in + which the only valid operations are destruction and assignment of a new + value. +*/ /*! Destroys the QStorageInfo object and frees its resources. */ QStorageInfo::~QStorageInfo() -{ -} + = default; /*! Makes a copy of the QStorageInfo object \a other and assigns it to this QStorageInfo object. */ QStorageInfo &QStorageInfo::operator=(const QStorageInfo &other) -{ - d = other.d; - return *this; -} + = default; /*! \fn QStorageInfo &QStorageInfo::operator=(QStorageInfo &&other) - Assigns \a other to this QStorageInfo instance. + Move-assigns \a other to this QStorageInfo instance. + + The moved-from object \a other is placed in a valid, but unspecified state. */ /*! diff --git a/src/corelib/io/qstorageinfo.h b/src/corelib/io/qstorageinfo.h index 2d7c60ec915..846cfaf4f41 100644 --- a/src/corelib/io/qstorageinfo.h +++ b/src/corelib/io/qstorageinfo.h @@ -1,5 +1,6 @@ // Copyright (C) 2014 Ivan Komissarov <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QSTORAGEINFO_H #define QSTORAGEINFO_H @@ -17,6 +18,7 @@ QT_BEGIN_NAMESPACE class QDebug; class QStorageInfoPrivate; +QT_DECLARE_QESDP_SPECIALIZATION_DTOR(QStorageInfoPrivate) class Q_CORE_EXPORT QStorageInfo { public: @@ -24,6 +26,7 @@ public: explicit QStorageInfo(const QString &path); explicit QStorageInfo(const QDir &dir); QStorageInfo(const QStorageInfo &other); + QStorageInfo(QStorageInfo &&) noexcept = default; ~QStorageInfo(); QStorageInfo &operator=(const QStorageInfo &other); diff --git a/src/corelib/io/qstorageinfo_linux.cpp b/src/corelib/io/qstorageinfo_linux.cpp index 00331a57127..f706650c637 100644 --- a/src/corelib/io/qstorageinfo_linux.cpp +++ b/src/corelib/io/qstorageinfo_linux.cpp @@ -3,6 +3,7 @@ // Copyright (C) 2016 Intel Corporation. // Copyright (C) 2023 Ahmad Samir <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qstorageinfo_linux_p.h" diff --git a/src/corelib/io/qstorageinfo_linux_p.h b/src/corelib/io/qstorageinfo_linux_p.h index 8f92b9e9783..26a60dcbc13 100644 --- a/src/corelib/io/qstorageinfo_linux_p.h +++ b/src/corelib/io/qstorageinfo_linux_p.h @@ -3,6 +3,7 @@ // Copyright (C) 2016 Intel Corporation. // Copyright (C) 2023 Ahmad Samir <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QSTORAGEINFO_LINUX_P_H #define QSTORAGEINFO_LINUX_P_H diff --git a/src/corelib/io/qstorageinfo_mac.cpp b/src/corelib/io/qstorageinfo_mac.cpp index c6c0f501dab..acfa21d8146 100644 --- a/src/corelib/io/qstorageinfo_mac.cpp +++ b/src/corelib/io/qstorageinfo_mac.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2014 Ivan Komissarov <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qstorageinfo_p.h" diff --git a/src/corelib/io/qstorageinfo_p.h b/src/corelib/io/qstorageinfo_p.h index a917763fe36..0e3f81151e7 100644 --- a/src/corelib/io/qstorageinfo_p.h +++ b/src/corelib/io/qstorageinfo_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2014 Ivan Komissarov <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QSTORAGEINFO_P_H #define QSTORAGEINFO_P_H diff --git a/src/corelib/io/qstorageinfo_stub.cpp b/src/corelib/io/qstorageinfo_stub.cpp index f2f7d2eb656..805b66b893c 100644 --- a/src/corelib/io/qstorageinfo_stub.cpp +++ b/src/corelib/io/qstorageinfo_stub.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qstorageinfo_p.h" diff --git a/src/corelib/io/qstorageinfo_unix.cpp b/src/corelib/io/qstorageinfo_unix.cpp index 40580e3be17..34ba7b9682b 100644 --- a/src/corelib/io/qstorageinfo_unix.cpp +++ b/src/corelib/io/qstorageinfo_unix.cpp @@ -2,6 +2,7 @@ // Copyright (C) 2014 Ivan Komissarov <[email protected]> // Copyright (C) 2016 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qstorageinfo_p.h" diff --git a/src/corelib/io/qstorageinfo_win.cpp b/src/corelib/io/qstorageinfo_win.cpp index 3582612508c..cbaf01848e2 100644 --- a/src/corelib/io/qstorageinfo_win.cpp +++ b/src/corelib/io/qstorageinfo_win.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2014 Ivan Komissarov <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qstorageinfo_p.h" diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index c1f01267949..73e25c85ddf 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -1,6 +1,7 @@ // Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2017 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:critical reason:data-parser #include "qtemporaryfile.h" diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 565ce04c6ce..a4fbf69da8b 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -3660,17 +3660,29 @@ QList<QUrl> QUrl::fromStringList(const QStringList &urls, ParsingMode mode) */ size_t qHash(const QUrl &url, size_t seed) noexcept { + QtPrivate::QHashCombineWithSeed hasher(seed); + + // non-commutative, we must hash the port first if (!url.d) - return qHash(-1, seed); // the hash of an unset port (-1) - - return qHash(url.d->scheme) ^ - qHash(url.d->userName) ^ - qHash(url.d->password) ^ - qHash(url.d->host) ^ - qHash(url.d->port, seed) ^ - qHash(url.d->path) ^ - qHash(url.d->query) ^ - qHash(url.d->fragment); + return hasher(0, -1); + size_t state = hasher(0, url.d->port); + + if (url.d->hasScheme()) + state = hasher(state, url.d->scheme); + if (url.d->hasUserInfo()) { + // see presentSections(), appendUserName(), etc. + state = hasher(state, url.d->userName); + state = hasher(state, url.d->password); + } + if (url.d->hasHost() || url.d->isLocalFile()) // for XDG compatibility + state = hasher(state, url.d->host); + if (url.d->hasPath()) + state = hasher(state, url.d->path); + if (url.d->hasQuery()) + state = hasher(state, url.d->query); + if (url.d->hasFragment()) + state = hasher(state, url.d->fragment); + return state; } static QUrl adjustFtpPath(QUrl url) diff --git a/src/corelib/ipc/qsharedmemory.cpp b/src/corelib/ipc/qsharedmemory.cpp index a2f6e42579e..7345753ce5b 100644 --- a/src/corelib/ipc/qsharedmemory.cpp +++ b/src/corelib/ipc/qsharedmemory.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsharedmemory.h" #include "qsharedmemory_p.h" diff --git a/src/corelib/ipc/qsharedmemory.h b/src/corelib/ipc/qsharedmemory.h index ab448b15c16..eec7d82160c 100644 --- a/src/corelib/ipc/qsharedmemory.h +++ b/src/corelib/ipc/qsharedmemory.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QSHAREDMEMORY_H #define QSHAREDMEMORY_H diff --git a/src/corelib/ipc/qsharedmemory_p.h b/src/corelib/ipc/qsharedmemory_p.h index 82cce8919ac..df0a6963598 100644 --- a/src/corelib/ipc/qsharedmemory_p.h +++ b/src/corelib/ipc/qsharedmemory_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QSHAREDMEMORY_P_H #define QSHAREDMEMORY_P_H diff --git a/src/corelib/ipc/qsharedmemory_posix.cpp b/src/corelib/ipc/qsharedmemory_posix.cpp index 582c6628e19..fa215c3b538 100644 --- a/src/corelib/ipc/qsharedmemory_posix.cpp +++ b/src/corelib/ipc/qsharedmemory_posix.cpp @@ -2,6 +2,7 @@ // Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, [email protected], author Tobias Koenig <[email protected]> // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsharedmemory.h" #include "qsharedmemory_p.h" diff --git a/src/corelib/ipc/qsharedmemory_systemv.cpp b/src/corelib/ipc/qsharedmemory_systemv.cpp index dc9de11091d..1777236bacc 100644 --- a/src/corelib/ipc/qsharedmemory_systemv.cpp +++ b/src/corelib/ipc/qsharedmemory_systemv.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsharedmemory.h" #include "qsharedmemory_p.h" diff --git a/src/corelib/ipc/qsharedmemory_win.cpp b/src/corelib/ipc/qsharedmemory_win.cpp index 472f34f9a18..b46d0da0c8c 100644 --- a/src/corelib/ipc/qsharedmemory_win.cpp +++ b/src/corelib/ipc/qsharedmemory_win.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsharedmemory.h" #include "qsharedmemory_p.h" diff --git a/src/corelib/ipc/qsystemsemaphore.cpp b/src/corelib/ipc/qsystemsemaphore.cpp index 24f4789f975..67e8c4bf757 100644 --- a/src/corelib/ipc/qsystemsemaphore.cpp +++ b/src/corelib/ipc/qsystemsemaphore.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsystemsemaphore.h" #include "qsystemsemaphore_p.h" diff --git a/src/corelib/ipc/qsystemsemaphore.h b/src/corelib/ipc/qsystemsemaphore.h index 0981a7eecee..2d80955b85c 100644 --- a/src/corelib/ipc/qsystemsemaphore.h +++ b/src/corelib/ipc/qsystemsemaphore.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QSYSTEMSEMAPHORE_H #define QSYSTEMSEMAPHORE_H diff --git a/src/corelib/ipc/qsystemsemaphore_p.h b/src/corelib/ipc/qsystemsemaphore_p.h index 788c4fb7844..5b4630a20a8 100644 --- a/src/corelib/ipc/qsystemsemaphore_p.h +++ b/src/corelib/ipc/qsystemsemaphore_p.h @@ -1,6 +1,7 @@ // Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2022 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QSYSTEMSEMAPHORE_P_H #define QSYSTEMSEMAPHORE_P_H diff --git a/src/corelib/ipc/qsystemsemaphore_posix.cpp b/src/corelib/ipc/qsystemsemaphore_posix.cpp index 7df9593513c..89a75048b4c 100644 --- a/src/corelib/ipc/qsystemsemaphore_posix.cpp +++ b/src/corelib/ipc/qsystemsemaphore_posix.cpp @@ -3,6 +3,7 @@ // Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, [email protected], author Tobias Koenig <[email protected]> // Copyright (C) 2022 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsystemsemaphore.h" #include "qsystemsemaphore_p.h" diff --git a/src/corelib/ipc/qsystemsemaphore_systemv.cpp b/src/corelib/ipc/qsystemsemaphore_systemv.cpp index e5d231d1d42..54e62c615cf 100644 --- a/src/corelib/ipc/qsystemsemaphore_systemv.cpp +++ b/src/corelib/ipc/qsystemsemaphore_systemv.cpp @@ -1,6 +1,7 @@ // Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2022 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsystemsemaphore.h" #include "qsystemsemaphore_p.h" diff --git a/src/corelib/ipc/qsystemsemaphore_win.cpp b/src/corelib/ipc/qsystemsemaphore_win.cpp index f42fecf71f6..a157dec0dd2 100644 --- a/src/corelib/ipc/qsystemsemaphore_win.cpp +++ b/src/corelib/ipc/qsystemsemaphore_win.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qsystemsemaphore.h" #include "qsystemsemaphore_p.h" diff --git a/src/corelib/ipc/qtipccommon.cpp b/src/corelib/ipc/qtipccommon.cpp index 355f6fbc602..e56046497c5 100644 --- a/src/corelib/ipc/qtipccommon.cpp +++ b/src/corelib/ipc/qtipccommon.cpp @@ -1,5 +1,6 @@ // Copyright (C) 2022 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #include "qtipccommon.h" #include "qtipccommon_p.h" diff --git a/src/corelib/ipc/qtipccommon.h b/src/corelib/ipc/qtipccommon.h index 658a426914f..375100f9837 100644 --- a/src/corelib/ipc/qtipccommon.h +++ b/src/corelib/ipc/qtipccommon.h @@ -1,5 +1,6 @@ // Copyright (C) 2022 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QTIPCCOMMON_H #define QTIPCCOMMON_H diff --git a/src/corelib/ipc/qtipccommon_p.h b/src/corelib/ipc/qtipccommon_p.h index 8836cd64421..dc8619299fc 100644 --- a/src/corelib/ipc/qtipccommon_p.h +++ b/src/corelib/ipc/qtipccommon_p.h @@ -1,5 +1,6 @@ // Copyright (C) 2022 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QTIPCCOMMON_P_H #define QTIPCCOMMON_P_H diff --git a/src/corelib/itemmodels/qrangemodel_impl.h b/src/corelib/itemmodels/qrangemodel_impl.h index 849d6084b80..38378fdcc64 100644 --- a/src/corelib/itemmodels/qrangemodel_impl.h +++ b/src/corelib/itemmodels/qrangemodel_impl.h @@ -952,7 +952,7 @@ public: if constexpr (multi_role::int_key) return std::as_const(value).find(Qt::ItemDataRole(role)); else - return std::as_const(value).find(roleNames().value(role)); + return std::as_const(value).find(itemModel().roleNames().value(role)); }(); if (it != value.cend()) { result = QRangeModelDetails::value(it); @@ -981,13 +981,20 @@ public: if constexpr (std::is_convertible_v<value_type, decltype(result)>) { result = value; } else { + const auto roleNames = [this]() -> QHash<int, QByteArray> { + Q_UNUSED(this); + if constexpr (!multi_role::int_key) + return itemModel().roleNames(); + else + return {}; + }(); for (auto it = std::cbegin(value); it != std::cend(value); ++it) { - int role = [this, key = QRangeModelDetails::key(it)]() { - Q_UNUSED(this); + const int role = [&roleNames, key = QRangeModelDetails::key(it)]() { + Q_UNUSED(roleNames); if constexpr (multi_role::int_key) return int(key); else - return roleNames().key(key.toUtf8(), -1); + return roleNames.key(key.toUtf8(), -1); }(); if (role != -1) @@ -999,7 +1006,7 @@ public: tried = true; using meta_type = QRangeModelDetails::wrapped_t<value_type>; const QMetaObject &mo = meta_type::staticMetaObject; - for (auto &&[role, roleName] : roleNames().asKeyValueRange()) { + for (auto &&[role, roleName] : itemModel().roleNames().asKeyValueRange()) { QVariant data; if constexpr (std::is_base_of_v<QObject, meta_type>) { if (value) @@ -1064,19 +1071,26 @@ public: Qt::ItemDataRole roleToSet = Qt::ItemDataRole(role); // If there is an entry for EditRole, overwrite that; otherwise, // set the entry for DisplayRole. + const auto roleNames = [this]() -> QHash<int, QByteArray> { + Q_UNUSED(this); + if constexpr (!multi_role::int_key) + return itemModel().roleNames(); + else + return {}; + }(); if (role == Qt::EditRole) { if constexpr (multi_role::int_key) { if (target.find(roleToSet) == target.end()) roleToSet = Qt::DisplayRole; } else { - if (target.find(roleNames().value(roleToSet)) == target.end()) + if (target.find(roleNames.value(roleToSet)) == target.end()) roleToSet = Qt::DisplayRole; } } if constexpr (multi_role::int_key) return write(target[roleToSet], data); else - return write(target[roleNames().value(roleToSet)], data); + return write(target[roleNames.value(roleToSet)], data); } else if (role == Qt::DisplayRole || role == Qt::EditRole) { return write(target, data); } @@ -1108,7 +1122,9 @@ public: if constexpr (multi_role()) { using key_type = typename value_type::key_type; tried = true; - const auto roleName = [map = roleNames()](int role) { return map.value(role); }; + const auto roleName = [map = itemModel().roleNames()](int role) { + return map.value(role); + }; // transactional: only update target if all values from data // can be stored. Storing never fails with int-keys. @@ -1148,8 +1164,9 @@ public: else // can't copy - targetCopy is now a pointer return &origin; }(target); + const auto roleNames = itemModel().roleNames(); for (auto &&[role, value] : data.asKeyValueRange()) { - const QByteArray roleName = roleNames().value(role); + const QByteArray roleName = roleNames.value(role); bool written = false; if constexpr (std::is_base_of_v<QObject, meta_type>) { if (targetCopy) @@ -1547,7 +1564,7 @@ protected: QMetaProperty roleProperty(int role) const { const QMetaObject *mo = &ItemType::staticMetaObject; - const QByteArray roleName = roleNames().value(role); + const QByteArray roleName = itemModel().roleNames().value(role); if (const int index = mo->indexOfProperty(roleName.data()); index >= 0) return mo->property(index); return {}; diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index a19e39685f1..3b92c5f48f2 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -2189,7 +2189,7 @@ bool QCoreApplication::installTranslator(QTranslator *translationFile) QCoreApplicationPrivate *d = self->d_func(); { - QMutexLocker locker(&d->translateMutex); + QWriteLocker locker(&d->translateMutex); d->translators.prepend(translationFile); } @@ -2221,7 +2221,7 @@ bool QCoreApplication::removeTranslator(QTranslator *translationFile) if (!QCoreApplicationPrivate::checkInstance("removeTranslator")) return false; QCoreApplicationPrivate *d = self->d_func(); - QMutexLocker locker(&d->translateMutex); + QWriteLocker locker(&d->translateMutex); if (d->translators.removeAll(translationFile)) { #ifndef QT_NO_QOBJECT locker.unlock(); @@ -2306,7 +2306,7 @@ QString QCoreApplication::translate(const char *context, const char *sourceText, if (self) { QCoreApplicationPrivate *d = self->d_func(); - QMutexLocker locker(&d->translateMutex); + QReadLocker locker(&d->translateMutex); if (!d->translators.isEmpty()) { QList<QTranslator*>::ConstIterator it; QTranslator *translationFile; @@ -2332,23 +2332,13 @@ QString qtTrId(const char *id, int n) return QCoreApplication::translate(nullptr, id, nullptr, n); } -/*! - \internal - Returns a locked mutex handle if \a translator is registered in QCoreApplication, - and might be therefore queried for translations from other threads. - Returns an unlocked/dummy QMutexLocker otherwise. - */ -std::unique_lock<QMutex> QCoreApplicationPrivate::mutexLockerForTranslator(QTranslator *translator) +bool QCoreApplicationPrivate::isTranslatorInstalled(QTranslator *translator) { if (!QCoreApplication::self) - return std::unique_lock<QMutex>(); - + return false; QCoreApplicationPrivate *d = QCoreApplication::self->d_func(); - std::unique_lock<QMutex> locker(d->translateMutex); - if (!d->translators.contains(translator)) - locker.unlock(); - - return locker; + QReadLocker locker(&d->translateMutex); + return d->translators.contains(translator); } #else diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h index 4cb6254e98d..0027b1ad57f 100644 --- a/src/corelib/kernel/qcoreapplication_p.h +++ b/src/corelib/kernel/qcoreapplication_p.h @@ -30,12 +30,10 @@ #include "private/qcore_mac_p.h" #endif -#ifndef QT_NO_TRANSLATION -#include <mutex> -#endif - QT_BEGIN_NAMESPACE +typedef QList<QTranslator*> QTranslatorList; + class QAbstractEventDispatcher; #ifndef QT_NO_QOBJECT @@ -149,9 +147,9 @@ public: static bool is_app_closing; #endif #ifndef QT_NO_TRANSLATION - QList<QTranslator*> translators; - QMutex translateMutex; - static std::unique_lock<QMutex> mutexLockerForTranslator(QTranslator *translator); + QTranslatorList translators; + QReadWriteLock translateMutex; + static bool isTranslatorInstalled(QTranslator *translator); #endif static bool setuidAllowed; diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index b48922daeab..2356611a5cf 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -2362,7 +2362,7 @@ QList<QByteArray> QMetaMethod::parameterNames() const \note In Qt 7, this function will return a null pointer for constructors. - \sa returnType(), QMetaType::type() + \sa returnType(), QMetaType::name() */ const char *QMetaMethod::typeName() const { diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp index 60bcdedba13..7fe36d37bce 100644 --- a/src/corelib/kernel/qmetaobjectbuilder.cpp +++ b/src/corelib/kernel/qmetaobjectbuilder.cpp @@ -2080,6 +2080,17 @@ bool QMetaPropertyBuilder::isBindable() const else return false; } +/*! + Returns \c true if the property is required. + The default is \c false. + */ +bool QMetaPropertyBuilder::isRequired() const +{ + if (auto d = d_func()) + return d->flag(Bindable); + else + return false; +} /*! Sets this property to readable if \a value is true. @@ -2236,6 +2247,15 @@ void QMetaPropertyBuilder::setBindable(bool value) } /*! + Sets the\c REQUIRED flag on this property to \a value + */ +void QMetaPropertyBuilder::setRequired(bool value) +{ + if (auto d = d_func()) + d->setFlag(Required, value); +} + +/*! Returns the revision of this property. \sa setRevision() diff --git a/src/corelib/kernel/qmetaobjectbuilder_p.h b/src/corelib/kernel/qmetaobjectbuilder_p.h index cf64e51c30c..36cd08d908c 100644 --- a/src/corelib/kernel/qmetaobjectbuilder_p.h +++ b/src/corelib/kernel/qmetaobjectbuilder_p.h @@ -216,6 +216,7 @@ public: bool isFinal() const; bool isAlias() const; bool isBindable() const; + bool isRequired() const; void setReadable(bool value); void setWritable(bool value); @@ -230,6 +231,7 @@ public: void setFinal(bool value); void setAlias(bool value); void setBindable(bool value); + void setRequired(bool value); int revision() const; void setRevision(int revision); diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp index 384253265be..7368af2df6e 100644 --- a/src/corelib/kernel/qproperty.cpp +++ b/src/corelib/kernel/qproperty.cpp @@ -1385,6 +1385,7 @@ QString QPropertyBindingError::description() const /*! \fn template <typename T> template <typename Functor> QPropertyBinding<T> QProperty<T>::setBinding(Functor f) \overload + \since 6.0 Associates the value of this property with the provided functor \a f and returns the previously associated binding. The property's value is set to the @@ -1442,6 +1443,7 @@ QString QPropertyBindingError::description() const /*! \fn template <typename T> template <typename Functor> QPropertyChangeHandler<T, Functor> QProperty<T>::subscribe(Functor f) + \since 6.0 Subscribes the given functor \a f as a callback that is called immediately and whenever the value of the property changes in the future. On each value @@ -1459,6 +1461,7 @@ QString QPropertyBindingError::description() const /*! \fn template <typename T> template <typename Functor> QPropertyNotifier QProperty<T>::addNotifier(Functor f) + \since 6.2 Subscribes the given functor \a f as a callback that is called whenever the value of the property changes. @@ -1948,6 +1951,7 @@ QString QPropertyBindingError::description() const \brief The QPropertyNotifier class controls the lifecycle of change callback installed on a QProperty. \ingroup tools + \since 6.2 QPropertyNotifier is created when registering a callback on a QProperty to listen to changes to the property's value, using QProperty::addNotifier. As diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp index 47483dc6470..6b68cb7a513 100644 --- a/src/corelib/kernel/qtranslator.cpp +++ b/src/corelib/kernel/qtranslator.cpp @@ -463,12 +463,6 @@ bool QTranslator::load(const QString & filename, const QString & directory, const QString & suffix) { Q_D(QTranslator); - - std::unique_lock locker = QCoreApplicationPrivate::mutexLockerForTranslator(this); - if (locker.owns_lock()) - QCoreApplication::postEvent(QCoreApplication::instance(), - new QEvent(QEvent::LanguageChange)); - d->clear(); QString prefix; @@ -744,12 +738,6 @@ bool QTranslator::load(const QLocale & locale, const QString & suffix) { Q_D(QTranslator); - - std::unique_lock locker = QCoreApplicationPrivate::mutexLockerForTranslator(this); - if (locker.owns_lock()) - QCoreApplication::postEvent(QCoreApplication::instance(), - new QEvent(QEvent::LanguageChange)); - d->clear(); return d->load_translation(locale, filename, prefix, directory, suffix); } @@ -769,12 +757,6 @@ bool QTranslator::load(const QLocale & locale, bool QTranslator::load(const uchar *data, int len, const QString &directory) { Q_D(QTranslator); - - std::unique_lock locker = QCoreApplicationPrivate::mutexLockerForTranslator(this); - if (locker.owns_lock()) - QCoreApplication::postEvent(QCoreApplication::instance(), - new QEvent(QEvent::LanguageChange)); - d->clear(); if (!data || len < MagicLength || memcmp(data, magic, MagicLength)) @@ -1048,6 +1030,7 @@ searchDependencies: void QTranslatorPrivate::clear() { + Q_Q(QTranslator); if (unmapPointer && unmapLength) { #if defined(QT_USE_MMAP) if (used_mmap) { @@ -1075,6 +1058,10 @@ void QTranslatorPrivate::clear() language.clear(); filePath.clear(); + + if (QCoreApplicationPrivate::isTranslatorInstalled(q)) + QCoreApplication::postEvent(QCoreApplication::instance(), + new QEvent(QEvent::LanguageChange)); } /*! diff --git a/src/corelib/serialization/qcborarray.cpp b/src/corelib/serialization/qcborarray.cpp index e00b7a4571f..9a566b999b4 100644 --- a/src/corelib/serialization/qcborarray.cpp +++ b/src/corelib/serialization/qcborarray.cpp @@ -98,6 +98,17 @@ QCborArray::QCborArray(const QCborArray &other) noexcept } /*! + \fn QCborArray::QCborArray(QCborArray &&other) + \since 6.10 + + Move-constructor. + + The moved-from object \a other is placed in the default-constructed state. + + \sa QCborArray::QCborArray() +*/ + +/*! \fn QCborArray::QCborArray(std::initializer_list<QCborValue> args) Initializes this QCborArray from the C++ brace-enclosed list found in \a @@ -126,6 +137,15 @@ QCborArray &QCborArray::operator=(const QCborArray &other) noexcept } /*! + \fn QCborArray &QCborArray::operator=(QCborArray &&other) + \since 6.10 + + Move-assignment operator. + + The moved-from object \a other is placed in a valid, but unspecified state. +*/ + +/*! \fn void QCborArray::swap(QCborArray &other) \memberswap{array} */ diff --git a/src/corelib/serialization/qcborarray.h b/src/corelib/serialization/qcborarray.h index dd24e5604c0..208d5bcc9a1 100644 --- a/src/corelib/serialization/qcborarray.h +++ b/src/corelib/serialization/qcborarray.h @@ -204,7 +204,9 @@ public: QCborArray() noexcept; QCborArray(const QCborArray &other) noexcept; + QCborArray(QCborArray &&other) noexcept = default; QCborArray &operator=(const QCborArray &other) noexcept; + QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCborArray) QCborArray(std::initializer_list<QCborValue> args) : QCborArray() { diff --git a/src/corelib/serialization/qcborcommon.h b/src/corelib/serialization/qcborcommon.h index b9f7a66ae2f..5183a90937f 100644 --- a/src/corelib/serialization/qcborcommon.h +++ b/src/corelib/serialization/qcborcommon.h @@ -7,6 +7,7 @@ #include <QtCore/qobjectdefs.h> #include <QtCore/qmetatype.h> +#include <QtCore/qshareddata.h> #if 0 #pragma qt_class(QtCborCommon) @@ -22,6 +23,9 @@ QT_BEGIN_NAMESPACE class QDebug; +class QCborContainerPrivate; +QT_DECLARE_QESDP_SPECIALIZATION_DTOR(QCborContainerPrivate) // defined in qcborvalue.cpp + enum class QCborSimpleType : quint8 { False = 20, True = 21, diff --git a/src/corelib/serialization/qcbormap.cpp b/src/corelib/serialization/qcbormap.cpp index 6166775c8ce..e6075dcfc36 100644 --- a/src/corelib/serialization/qcbormap.cpp +++ b/src/corelib/serialization/qcbormap.cpp @@ -276,6 +276,17 @@ QCborMap::QCborMap(const QCborMap &other) noexcept } /*! + \fn QCborMap::QCborMap(QCborMap &&other) + \since 6.10 + + Move-constructor. + + The moved-from object \a other is placed in the default-constructed state. + + \sa QCborMap::QCborMap() +*/ + +/*! \fn QCborMap::QCborMap(std::initializer_list<value_type> args) Constructs a QCborMap with items from a brace-initialization list found in @@ -309,6 +320,15 @@ QCborMap &QCborMap::operator=(const QCborMap &other) noexcept } /*! + \fn QCborMap &QCborMap::operator=(QCborMap &&other) + \since 6.10 + + Move-assignment operator. + + The moved-from object \a other is placed in a valid, but unspecified state. +*/ + +/*! \fn void QCborMap::swap(QCborMap &other) \memberswap{map} */ diff --git a/src/corelib/serialization/qcbormap.h b/src/corelib/serialization/qcbormap.h index 039c436c76b..e2945621451 100644 --- a/src/corelib/serialization/qcbormap.h +++ b/src/corelib/serialization/qcbormap.h @@ -239,7 +239,9 @@ public: QCborMap() noexcept; QCborMap(const QCborMap &other) noexcept; + QCborMap(QCborMap &&other) noexcept = default; QCborMap &operator=(const QCborMap &other) noexcept; + QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCborMap) QCborMap(std::initializer_list<value_type> args) : QCborMap() { diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp index fabed2f06e1..5b7ec705079 100644 --- a/src/corelib/serialization/qcborvalue.cpp +++ b/src/corelib/serialization/qcborvalue.cpp @@ -28,6 +28,8 @@ QT_BEGIN_NAMESPACE +QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QCborContainerPrivate) + // Worst case memory allocation for a corrupt stream: 256 MB for 32-bit, 1 GB for 64-bit static constexpr quint64 MaxAcceptableMemoryUse = (sizeof(void*) == 4 ? 256 : 1024) * 1024 * 1024; diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp index 42011993243..43b16cd0f4f 100644 --- a/src/corelib/time/qdatetime.cpp +++ b/src/corelib/time/qdatetime.cpp @@ -405,13 +405,16 @@ static int fromOffsetString(QStringView offsetString, bool *valid) noexcept \section2 Range of Valid Dates - Dates are stored internally as a Julian Day number, an integer count of - every day in a contiguous range, with 24 November 4714 BCE in the Gregorian - calendar being Julian Day 0 (1 January 4713 BCE in the Julian calendar). - As well as being an efficient and accurate way of storing an absolute date, - it is suitable for converting a date into other calendar systems such as - Hebrew, Islamic or Chinese. The Julian Day number can be obtained using - QDate::toJulianDay() and can be set using QDate::fromJulianDay(). + Dates are stored internally as a modified Julian Day number, an integer + count of every day in a contiguous range, with 24 November 4714 BCE in the + Gregorian calendar being Julian Day 0 (1 January 4713 BCE in the Julian + calendar). As well as being an efficient and accurate way of storing an + absolute date, it is suitable for converting a date into other calendar + systems such as Hebrew, Islamic or Chinese. For the purposes of QDate, + Julian Days are delimited at midnight and, for those of QDateTime, in the + zone used by the datetime. (This departs from the formal definition, which + delimits Julian Days at UTC noon.) The Julian Day number can be obtained + using QDate::toJulianDay() and can be set using QDate::fromJulianDay(). The range of Julian Day numbers that QDate can represent is, for technical reasons, limited to between -784350574879 and 784354017364, which means from diff --git a/src/corelib/time/qtimezonelocale_data_p.h b/src/corelib/time/qtimezonelocale_data_p.h index 9afb12406c0..9e179369254 100644 --- a/src/corelib/time/qtimezonelocale_data_p.h +++ b/src/corelib/time/qtimezonelocale_data_p.h @@ -58,7 +58,7 @@ namespace QtTimeZoneLocale { // GENERATED PART STARTS HERE /* - This part of the file was generated on 2025-06-17 from the + This part of the file was generated on 2025-07-01 from the Common Locale Data Repository v47 http://www.unicode.org/cldr/ @@ -49804,7 +49804,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 5130, 88357, 11, }, // Africa/Dar_es_Salaam { 687, 5043, 88368, 6, }, // Africa/Djibouti { 687, 5243, 88374, 5, }, // Africa/Douala - { 687, 5166, 221031, 9, }, // Africa/El_Aaiun + { 687, 5166, 88379, 8, }, // Africa/El_Aaiun { 687, 6853, 88387, 9, }, // Africa/Freetown { 687, 4906, 88396, 7, }, // Africa/Gaborone { 687, 5015, 88403, 5, }, // Africa/Harare @@ -49925,7 +49925,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 5897, 89278, 7, }, // America/Marigot { 687, 5805, 89285, 9, }, // America/Martinique { 687, 8184, 89294, 9, }, // America/Matamoros - { 687, 2917, 221040, 8, }, // America/Mazatlan + { 687, 2917, 221031, 8, }, // America/Mazatlan { 687, 8202, 89312, 8, }, // America/Menominee { 687, 8220, 31158, 6, }, // America/Merida { 687, 8235, 89320, 12, }, // America/Metlakatla @@ -50012,7 +50012,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 4540, 89984, 7, }, // Asia/Damascus { 687, 1093, 89991, 4, }, // Asia/Dhaka { 687, 6192, 89995, 4, }, // Asia/Dili - { 687, 3596, 221048, 3, }, // Asia/Dubai + { 687, 3596, 221039, 3, }, // Asia/Dubai { 687, 6159, 90003, 7, }, // Asia/Dushanbe { 687, 8636, 90010, 11, }, // Asia/Famagusta { 687, 8651, 90021, 5, }, // Asia/Gaza @@ -50024,7 +50024,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 7006, 90073, 7, }, // Asia/Jakarta { 687, 6992, 31943, 7, }, // Asia/Jayapura { 687, 1290, 90080, 6, }, // Asia/Jerusalem - { 687, 3560, 221051, 4, }, // Asia/Kabul + { 687, 3560, 221042, 4, }, // Asia/Kabul { 687, 4316, 90091, 7, }, // Asia/Kamchatka { 687, 4239, 31972, 5, }, // Asia/Karachi { 687, 1185, 90098, 8, }, // Asia/Kathmandu @@ -50080,7 +50080,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 1395, 90429, 5, }, // Atlantic/Faroe { 687, 8736, 90434, 5, }, // Atlantic/Madeira { 687, 2748, 90439, 9, }, // Atlantic/Reykjavik - { 687, 7272, 221055, 13, }, // Atlantic/South_Georgia + { 687, 7272, 221046, 13, }, // Atlantic/South_Georgia { 687, 6821, 90463, 11, }, // Atlantic/St_Helena { 687, 6644, 90474, 7, }, // Atlantic/Stanley { 687, 1670, 90481, 6, }, // Australia/Adelaide @@ -50094,7 +50094,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 1727, 90537, 8, }, // Australia/Melbourne { 687, 1762, 90545, 4, }, // Australia/Perth { 687, 1463, 32494, 5, }, // Australia/Sydney - { 687, 6441, 221068, 9, }, // Europe/Amsterdam + { 687, 6441, 221059, 9, }, // Europe/Amsterdam { 687, 6216, 90559, 6, }, // Europe/Andorra { 687, 3620, 90565, 10, }, // Europe/Astrakhan { 687, 2300, 90575, 5, }, // Europe/Athens @@ -50128,7 +50128,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 6410, 90773, 6, }, // Europe/Monaco { 687, 3537, 90779, 6, }, // Europe/Moscow { 687, 6458, 90785, 5, }, // Europe/Oslo - { 687, 4284, 221077, 4, }, // Europe/Paris + { 687, 4284, 221068, 4, }, // Europe/Paris { 687, 6424, 90790, 10, }, // Europe/Podgorica { 687, 6275, 90800, 5, }, // Europe/Prague { 687, 8837, 90805, 4, }, // Europe/Riga @@ -50154,7 +50154,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 6540, 90946, 9, }, // Europe/Zurich { 687, 5078, 90955, 11, }, // Indian/Antananarivo { 687, 6947, 90966, 5, }, // Indian/Chagos - { 687, 6046, 221081, 8, }, // Indian/Christmas + { 687, 6046, 221072, 8, }, // Indian/Christmas { 687, 6063, 90978, 5, }, // Indian/Cocos { 687, 5029, 90983, 6, }, // Indian/Comoro { 687, 6661, 90989, 7, }, // Indian/Kerguelen @@ -50177,7 +50177,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 6696, 91094, 7, }, // Pacific/Gambier { 687, 3822, 91101, 10, }, // Pacific/Guadalcanal { 687, 6018, 31112, 4, }, // Pacific/Guam - { 687, 3049, 221089, 5, }, // Pacific/Kanton + { 687, 3049, 221080, 5, }, // Pacific/Kanton { 687, 3998, 33132, 10, }, // Pacific/Kiritimati { 687, 7019, 91126, 6, }, // Pacific/Kosrae { 687, 2842, 91132, 10, }, // Pacific/Kwajalein @@ -50188,7 +50188,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 687, 7132, 91165, 4, }, // Pacific/Niue { 687, 4168, 91169, 7, }, // Pacific/Norfolk { 687, 7098, 91176, 6, }, // Pacific/Noumea - { 687, 3126, 221094, 9, }, // Pacific/Pago_Pago + { 687, 3126, 221085, 9, }, // Pacific/Pago_Pago { 687, 7155, 91191, 4, }, // Pacific/Palau { 687, 7194, 33210, 8, }, // Pacific/Pitcairn { 687, 3096, 91195, 6, }, // Pacific/Pohnpei @@ -50203,650 +50203,650 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 688, 6788, 195501, 6, }, // Africa/Abidjan Venetian/Latin/Italy { 688, 6760, 74129, 4, }, // Africa/Accra { 688, 5059, 35821, 10, }, // Africa/Addis_Ababa - { 688, 7420, 221103, 6, }, // Africa/Algiers - { 688, 14, 221109, 6, }, // Africa/Asmara - { 688, 5257, 221115, 6, }, // Africa/Bangui - { 688, 7435, 221121, 5, }, // Africa/Bissau - { 688, 4922, 221126, 9, }, // Africa/Bujumbura + { 688, 7420, 221094, 6, }, // Africa/Algiers + { 688, 14, 221100, 6, }, // Africa/Asmara + { 688, 5257, 221106, 6, }, // Africa/Bangui + { 688, 7435, 221112, 5, }, // Africa/Bissau + { 688, 4922, 221117, 9, }, // Africa/Bujumbura { 688, 2320, 161877, 8, }, // Africa/Cairo - { 688, 4117, 221135, 10, }, // Africa/Casablanca + { 688, 4117, 221126, 10, }, // Africa/Casablanca { 688, 7449, 166781, 5, }, // Africa/Ceuta { 688, 6773, 157976, 7, }, // Africa/Conakry { 688, 5130, 21354, 12, }, // Africa/Dar_es_Salaam { 688, 5043, 158501, 6, }, // Africa/Djibouti { 688, 5243, 21372, 5, }, // Africa/Douala { 688, 5166, 6393, 7, }, // Africa/El_Aaiun - { 688, 5151, 221145, 7, }, // Africa/Kampala + { 688, 5151, 221136, 7, }, // Africa/Kampala { 688, 4524, 157994, 6, }, // Africa/Khartoum { 688, 6869, 20418, 4, }, // Africa/Lome - { 688, 4939, 221152, 10, }, // Africa/Lubumbashi - { 688, 5197, 221162, 6, }, // Africa/Maseru - { 688, 5182, 221168, 7, }, // Africa/Mbabane - { 688, 5113, 221175, 8, }, // Africa/Mogadishu + { 688, 4939, 221143, 10, }, // Africa/Lubumbashi + { 688, 5197, 221153, 6, }, // Africa/Maseru + { 688, 5182, 221159, 7, }, // Africa/Mbabane + { 688, 5113, 221166, 8, }, // Africa/Mogadishu { 688, 5271, 195575, 6, }, // Africa/Ndjamena { 688, 6803, 147724, 8, }, // Africa/Nouakchott - { 688, 6727, 221183, 8, }, // Africa/Ouagadougou + { 688, 6727, 221174, 8, }, // Africa/Ouagadougou { 688, 5225, 26542, 10, }, // Africa/Porto-Novo - { 688, 4435, 221191, 15, }, // Africa/Sao_Tome + { 688, 4435, 221182, 15, }, // Africa/Sao_Tome { 688, 2866, 164486, 7, }, // Africa/Tripoli - { 688, 6554, 221206, 6, }, // Africa/Tunis + { 688, 6554, 221197, 6, }, // Africa/Tunis { 688, 5607, 4775, 7, }, // America/Anguilla - { 688, 270, 221212, 7, }, // America/Argentina/Cordoba - { 688, 7489, 221219, 11, }, // America/Argentina/Rio_Gallegos + { 688, 270, 221203, 7, }, // America/Argentina/Cordoba + { 688, 7489, 221210, 11, }, // America/Argentina/Rio_Gallegos { 688, 4252, 6592, 8, }, // America/Asuncion { 688, 237, 22, 8, }, // America/Atikokan - { 688, 7623, 221230, 16, }, // America/Bahia_Banderas + { 688, 7623, 221221, 16, }, // America/Bahia_Banderas { 688, 4361, 44161, 6, }, // America/Bogota - { 688, 7735, 221246, 12, }, // America/Campo_Grande + { 688, 7735, 221237, 12, }, // America/Campo_Grande { 688, 3868, 33314, 6, }, // America/Cancun { 688, 4345, 147758, 6, }, // America/Cayenne { 688, 5496, 44173, 6, }, // America/Cayman { 688, 7774, 60, 6, }, // America/Ciudad_Juarez - { 688, 3791, 221258, 6, }, // America/Cuiaba + { 688, 3791, 221249, 6, }, // America/Cuiaba { 688, 5723, 66, 7, }, // America/Curacao - { 688, 805, 221264, 6, }, // America/Denver - { 688, 5739, 221270, 8, }, // America/Dominica + { 688, 805, 221255, 6, }, // America/Denver + { 688, 5739, 221261, 8, }, // America/Dominica { 688, 7869, 26580, 8, }, // America/Eirunepe { 688, 5770, 20519, 7, }, // America/Grenada { 688, 5786, 95109, 9, }, // America/Guadeloupe { 688, 2281, 95118, 7, }, // America/Havana - { 688, 348, 221278, 12, }, // America/Indiana/Indianapolis - { 688, 481, 221290, 14, }, // America/Indiana/Knox - { 688, 7961, 221304, 17, }, // America/Indiana/Marengo - { 688, 7985, 221321, 20, }, // America/Indiana/Petersburg - { 688, 8012, 221341, 19, }, // America/Indiana/Tell_City - { 688, 8038, 221360, 15, }, // America/Indiana/Vevay - { 688, 8060, 221375, 19, }, // America/Indiana/Vincennes - { 688, 8086, 221394, 17, }, // America/Indiana/Winamac - { 688, 2799, 221411, 7, }, // America/Jamaica - { 688, 8125, 221418, 21, }, // America/Kentucky/Monticello - { 688, 3239, 221439, 11, }, // America/Los_Angeles + { 688, 348, 221269, 12, }, // America/Indiana/Indianapolis + { 688, 481, 221281, 14, }, // America/Indiana/Knox + { 688, 7961, 221295, 17, }, // America/Indiana/Marengo + { 688, 7985, 221312, 20, }, // America/Indiana/Petersburg + { 688, 8012, 221332, 19, }, // America/Indiana/Tell_City + { 688, 8038, 221351, 15, }, // America/Indiana/Vevay + { 688, 8060, 221366, 19, }, // America/Indiana/Vincennes + { 688, 8086, 221385, 17, }, // America/Indiana/Winamac + { 688, 2799, 221402, 7, }, // America/Jamaica + { 688, 8125, 221409, 21, }, // America/Kentucky/Monticello + { 688, 3239, 221430, 11, }, // America/Los_Angeles { 688, 5932, 207, 22, }, // America/Lower_Princes { 688, 8153, 26588, 6, }, // America/Maceio - { 688, 5805, 221450, 9, }, // America/Martinique + { 688, 5805, 221441, 9, }, // America/Martinique { 688, 8220, 229, 6, }, // America/Merida - { 688, 2949, 221459, 16, }, // America/Mexico_City - { 688, 4391, 221475, 8, }, // America/Miquelon + { 688, 2949, 221450, 16, }, // America/Mexico_City + { 688, 4391, 221466, 8, }, // America/Miquelon { 688, 8270, 21944, 8, }, // America/Monterrey { 688, 5824, 7172, 9, }, // America/Montserrat { 688, 1850, 235, 19, }, // America/Noronha - { 688, 8301, 221483, 20, }, // America/North_Dakota/Beulah - { 688, 8329, 221503, 20, }, // America/North_Dakota/Center - { 688, 8357, 221523, 23, }, // America/North_Dakota/New_Salem + { 688, 8301, 221474, 20, }, // America/North_Dakota/Beulah + { 688, 8329, 221494, 20, }, // America/North_Dakota/Center + { 688, 8357, 221514, 23, }, // America/North_Dakota/New_Salem { 688, 393, 317, 4, }, // America/Nuuk { 688, 2356, 164613, 6, }, // America/Panama - { 688, 3945, 221546, 14, }, // America/Port-au-Prince - { 688, 5954, 221560, 15, }, // America/Port_of_Spain + { 688, 3945, 221537, 14, }, // America/Port-au-Prince + { 688, 5954, 221551, 15, }, // America/Port_of_Spain { 688, 5843, 95222, 9, }, // America/Puerto_Rico - { 688, 1878, 221575, 8, }, // America/Sao_Paulo + { 688, 1878, 221566, 8, }, // America/Sao_Paulo { 688, 6899, 321, 16, }, // America/Scoresbysund - { 688, 8508, 221583, 13, }, // America/St_Barthelemy - { 688, 2061, 221596, 8, }, // America/St_Johns - { 688, 5863, 221604, 12, }, // America/St_Kitts - { 688, 5880, 221616, 8, }, // America/St_Lucia - { 688, 855, 221197, 9, }, // America/St_Thomas - { 688, 5913, 221624, 11, }, // America/St_Vincent + { 688, 8508, 221574, 13, }, // America/St_Barthelemy + { 688, 2061, 221587, 8, }, // America/St_Johns + { 688, 5863, 221595, 12, }, // America/St_Kitts + { 688, 5880, 221607, 8, }, // America/St_Lucia + { 688, 855, 221188, 9, }, // America/St_Thomas + { 688, 5913, 221615, 11, }, // America/St_Vincent { 688, 5688, 148000, 7, }, // America/Tortola { 688, 6133, 400, 16, }, // Antarctica/DumontDUrville - { 688, 8568, 221635, 15, }, // Antarctica/Macquarie + { 688, 8568, 221626, 15, }, // Antarctica/Macquarie { 688, 5395, 7594, 6, }, // Asia/Almaty { 688, 3968, 5605, 4, }, // Asia/Amman - { 688, 5511, 221650, 6, }, // Asia/Anadyr - { 688, 5523, 221656, 5, }, // Asia/Aqtau + { 688, 5511, 221641, 6, }, // Asia/Anadyr + { 688, 5523, 221647, 5, }, // Asia/Aqtau { 688, 5368, 7606, 6, }, // Asia/Aqtobe - { 688, 964, 221661, 7, }, // Asia/Ashgabat - { 688, 8624, 221668, 6, }, // Asia/Atyrau + { 688, 964, 221652, 7, }, // Asia/Ashgabat + { 688, 8624, 221659, 6, }, // Asia/Atyrau { 688, 3607, 4162, 6, }, // Asia/Baghdad { 688, 5534, 63955, 6, }, // Asia/Bahrain { 688, 3778, 91536, 6, }, // Asia/Bishkek { 688, 5989, 20751, 6, }, // Asia/Brunei { 688, 4601, 93254, 4, }, // Asia/Chita - { 688, 4511, 221674, 7, }, // Asia/Colombo + { 688, 4511, 221665, 7, }, // Asia/Colombo { 688, 4540, 74438, 7, }, // Asia/Damascus { 688, 1093, 158496, 4, }, // Asia/Dhaka - { 688, 3596, 221681, 5, }, // Asia/Dubai - { 688, 6159, 221686, 7, }, // Asia/Dushanbe + { 688, 3596, 221672, 5, }, // Asia/Dubai + { 688, 6159, 221677, 7, }, // Asia/Dushanbe { 688, 8636, 95258, 9, }, // Asia/Famagusta { 688, 1259, 432, 11, }, // Asia/Ho_Chi_Minh { 688, 1290, 123559, 10, }, // Asia/Jerusalem { 688, 4316, 162180, 9, }, // Asia/Kamchatka - { 688, 1185, 221693, 8, }, // Asia/Kathmandu - { 688, 8661, 221701, 7, }, // Asia/Khandyga + { 688, 1185, 221684, 8, }, // Asia/Kathmandu + { 688, 8661, 221692, 7, }, // Asia/Khandyga { 688, 992, 20838, 7, }, // Asia/Kolkata - { 688, 4197, 221708, 11, }, // Asia/Krasnoyarsk - { 688, 4859, 221719, 12, }, // Asia/Kuala_Lumpur - { 688, 1211, 221731, 5, }, // Asia/Macau + { 688, 4197, 221699, 11, }, // Asia/Krasnoyarsk + { 688, 4859, 221710, 12, }, // Asia/Kuala_Lumpur + { 688, 1211, 221722, 5, }, // Asia/Macau { 688, 1349, 7736, 7, }, // Asia/Makassar { 688, 6920, 20857, 7, }, // Asia/Muscat - { 688, 8675, 221736, 13, }, // Asia/Novokuznetsk + { 688, 8675, 221727, 13, }, // Asia/Novokuznetsk { 688, 7145, 65240, 5, }, // Asia/Oral { 688, 6961, 22518, 8, }, // Asia/Phnom_Penh { 688, 5559, 73150, 5, }, // Asia/Qatar - { 688, 8708, 221749, 8, }, // Asia/Qostanay + { 688, 8708, 221740, 8, }, // Asia/Qostanay { 688, 4269, 7778, 9, }, // Asia/Qyzylorda { 688, 3584, 7787, 4, }, // Asia/Riyadh { 688, 4408, 158282, 7, }, // Asia/Sakhalin { 688, 7245, 20886, 10, }, // Asia/Samarkand { 688, 3279, 7798, 4, }, // Asia/Seoul - { 688, 1053, 221757, 8, }, // Asia/Shanghai - { 688, 4297, 221765, 13, }, // Asia/Srednekolymsk + { 688, 1053, 221748, 8, }, // Asia/Shanghai + { 688, 4297, 221756, 13, }, // Asia/Srednekolymsk { 688, 3263, 177683, 6, }, // Asia/Taipei { 688, 4781, 91755, 7, }, // Asia/Tashkent { 688, 3915, 220114, 7, }, // Asia/Tbilisi { 688, 2772, 7842, 7, }, // Asia/Tehran - { 688, 1317, 221778, 5, }, // Asia/Thimphu - { 688, 1021, 221783, 10, }, // Asia/Ulaanbaatar + { 688, 1317, 221769, 5, }, // Asia/Thimphu + { 688, 1021, 221774, 10, }, // Asia/Ulaanbaatar { 688, 1159, 202026, 7, }, // Asia/Urumqi - { 688, 8722, 221793, 9, }, // Asia/Ust-Nera + { 688, 8722, 221784, 9, }, // Asia/Ust-Nera { 688, 6977, 26939, 8, }, // Asia/Vientiane { 688, 1235, 477, 6, }, // Asia/Yangon - { 688, 3883, 221802, 14, }, // Asia/Yekaterinburg - { 688, 3747, 221816, 7, }, // Asia/Yerevan - { 688, 3663, 221823, 11, }, // Atlantic/Azores - { 688, 6628, 221834, 13, }, // Atlantic/Canary - { 688, 3727, 221847, 9, }, // Atlantic/Cape_Verde - { 688, 1395, 221856, 11, }, // Atlantic/Faroe - { 688, 8736, 221867, 13, }, // Atlantic/Madeira - { 688, 2748, 221880, 8, }, // Atlantic/Reykjavik - { 688, 7272, 221888, 16, }, // Atlantic/South_Georgia - { 688, 6821, 221904, 14, }, // Atlantic/St_Helena - { 688, 1670, 221918, 8, }, // Australia/Adelaide - { 688, 1635, 221926, 8, }, // Australia/Brisbane - { 688, 1547, 221934, 15, }, // Australia/Lord_Howe - { 688, 6441, 221949, 9, }, // Europe/Amsterdam + { 688, 3883, 221793, 14, }, // Asia/Yekaterinburg + { 688, 3747, 221807, 7, }, // Asia/Yerevan + { 688, 3663, 221814, 11, }, // Atlantic/Azores + { 688, 6628, 221825, 13, }, // Atlantic/Canary + { 688, 3727, 221838, 9, }, // Atlantic/Cape_Verde + { 688, 1395, 221847, 11, }, // Atlantic/Faroe + { 688, 8736, 221858, 13, }, // Atlantic/Madeira + { 688, 2748, 221871, 8, }, // Atlantic/Reykjavik + { 688, 7272, 221879, 16, }, // Atlantic/South_Georgia + { 688, 6821, 221895, 14, }, // Atlantic/St_Helena + { 688, 1670, 221909, 8, }, // Australia/Adelaide + { 688, 1635, 221917, 8, }, // Australia/Brisbane + { 688, 1547, 221925, 15, }, // Australia/Lord_Howe + { 688, 6441, 221940, 9, }, // Europe/Amsterdam { 688, 6216, 33638, 6, }, // Europe/Andorra { 688, 3620, 33644, 8, }, // Europe/Astrakhan { 688, 2300, 5911, 5, }, // Europe/Athens { 688, 6336, 58906, 8, }, // Europe/Belgrade - { 688, 6488, 221958, 10, }, // Europe/Bratislava + { 688, 6488, 221949, 10, }, // Europe/Bratislava { 688, 2167, 27022, 6, }, // Europe/Brussels { 688, 3928, 21073, 8, }, // Europe/Bucharest { 688, 8772, 27037, 8, }, // Europe/Busingen { 688, 6289, 95331, 10, }, // Europe/Copenhagen - { 688, 6307, 221968, 9, }, // Europe/Gibraltar - { 688, 8804, 221977, 12, }, // Europe/Isle_of_Man + { 688, 6307, 221959, 9, }, // Europe/Gibraltar + { 688, 8804, 221968, 12, }, // Europe/Isle_of_Man { 688, 1130, 164893, 8, }, // Europe/Istanbul { 688, 3979, 63006, 12, }, // Europe/Kaliningrad { 688, 2527, 8148, 4, }, // Europe/Kyiv { 688, 3213, 157721, 7, }, // Europe/Lisbon - { 688, 6506, 221989, 8, }, // Europe/Ljubljana + { 688, 6506, 221980, 8, }, // Europe/Ljubljana { 688, 2501, 95370, 6, }, // Europe/London - { 688, 6365, 221997, 10, }, // Europe/Luxembourg + { 688, 6365, 221988, 10, }, // Europe/Luxembourg { 688, 6410, 44570, 6, }, // Europe/Monaco { 688, 3537, 95387, 5, }, // Europe/Moscow - { 688, 6458, 222007, 4, }, // Europe/Oslo - { 688, 4284, 222011, 6, }, // Europe/Paris + { 688, 6458, 221998, 4, }, // Europe/Oslo + { 688, 4284, 222002, 6, }, // Europe/Paris { 688, 6424, 196828, 9, }, // Europe/Podgorica { 688, 6275, 21185, 5, }, // Europe/Prague { 688, 6324, 6064, 4, }, // Europe/Rome { 688, 6470, 65868, 9, }, // Europe/San_Marino - { 688, 8849, 222017, 11, }, // Europe/Simferopol - { 688, 6523, 222028, 8, }, // Europe/Stockholm + { 688, 8849, 222008, 11, }, // Europe/Simferopol + { 688, 6523, 222019, 8, }, // Europe/Stockholm { 688, 8867, 8250, 5, }, // Europe/Tallinn { 688, 6202, 21213, 6, }, // Europe/Tirane - { 688, 8882, 222036, 8, }, // Europe/Ulyanovsk - { 688, 6567, 222044, 7, }, // Europe/Vatican + { 688, 8882, 222027, 8, }, // Europe/Ulyanovsk + { 688, 6567, 222035, 7, }, // Europe/Vatican { 688, 6231, 21230, 5, }, // Europe/Vienna { 688, 4727, 63187, 10, }, // Europe/Volgograd { 688, 3190, 95436, 8, }, // Europe/Warsaw { 688, 6540, 95452, 6, }, // Europe/Zurich - { 688, 6947, 222051, 6, }, // Indian/Chagos - { 688, 6046, 222057, 15, }, // Indian/Christmas - { 688, 6063, 222072, 11, }, // Indian/Cocos - { 688, 5029, 222083, 12, }, // Indian/Comoro + { 688, 6947, 222042, 6, }, // Indian/Chagos + { 688, 6046, 222048, 15, }, // Indian/Christmas + { 688, 6063, 222063, 11, }, // Indian/Cocos + { 688, 5029, 222074, 12, }, // Indian/Comoro { 688, 7260, 27115, 4, }, // Indian/Mahe - { 688, 7050, 222095, 13, }, // Indian/Maldives - { 688, 4069, 222108, 14, }, // Indian/Mauritius - { 688, 5098, 222122, 12, }, // Indian/Mayotte - { 688, 7211, 222134, 13, }, // Indian/Reunion - { 688, 3706, 222147, 18, }, // Pacific/Bougainville - { 688, 3015, 222165, 12, }, // Pacific/Chatham - { 688, 3157, 222177, 11, }, // Pacific/Chuuk - { 688, 2237, 222188, 15, }, // Pacific/Easter - { 688, 7360, 222203, 11, }, // Pacific/Efate - { 688, 7327, 222214, 13, }, // Pacific/Fakaofo - { 688, 7343, 222227, 14, }, // Pacific/Funafuti + { 688, 7050, 222086, 13, }, // Indian/Maldives + { 688, 4069, 222099, 14, }, // Indian/Mauritius + { 688, 5098, 222113, 12, }, // Indian/Mayotte + { 688, 7211, 222125, 13, }, // Indian/Reunion + { 688, 3706, 222138, 18, }, // Pacific/Bougainville + { 688, 3015, 222156, 12, }, // Pacific/Chatham + { 688, 3157, 222168, 11, }, // Pacific/Chuuk + { 688, 2237, 222179, 15, }, // Pacific/Easter + { 688, 7360, 222194, 11, }, // Pacific/Efate + { 688, 7327, 222205, 13, }, // Pacific/Fakaofo + { 688, 7343, 222218, 14, }, // Pacific/Funafuti { 688, 6678, 167332, 9, }, // Pacific/Galapagos - { 688, 6696, 222241, 13, }, // Pacific/Gambier - { 688, 3822, 222254, 17, }, // Pacific/Guadalcanal - { 688, 3049, 222271, 12, }, // Pacific/Kanton - { 688, 3998, 222283, 16, }, // Pacific/Kiritimati - { 688, 7019, 222299, 12, }, // Pacific/Kosrae - { 688, 2842, 222311, 15, }, // Pacific/Kwajalein - { 688, 4051, 222326, 14, }, // Pacific/Marquesas - { 688, 8914, 222340, 12, }, // Pacific/Midway - { 688, 7084, 222352, 11, }, // Pacific/Nauru - { 688, 7132, 222363, 10, }, // Pacific/Niue - { 688, 4168, 222373, 13, }, // Pacific/Norfolk + { 688, 6696, 222232, 13, }, // Pacific/Gambier + { 688, 3822, 222245, 17, }, // Pacific/Guadalcanal + { 688, 3049, 222262, 12, }, // Pacific/Kanton + { 688, 3998, 222274, 16, }, // Pacific/Kiritimati + { 688, 7019, 222290, 12, }, // Pacific/Kosrae + { 688, 2842, 222302, 15, }, // Pacific/Kwajalein + { 688, 4051, 222317, 14, }, // Pacific/Marquesas + { 688, 8914, 222331, 12, }, // Pacific/Midway + { 688, 7084, 222343, 11, }, // Pacific/Nauru + { 688, 7132, 222354, 10, }, // Pacific/Niue + { 688, 4168, 222364, 13, }, // Pacific/Norfolk { 688, 7098, 4628, 6, }, // Pacific/Noumea { 688, 3126, 135456, 11, }, // Pacific/Pago_Pago - { 688, 7155, 222386, 5, }, // Pacific/Palau - { 688, 7194, 222391, 14, }, // Pacific/Pitcairn - { 688, 3096, 222405, 12, }, // Pacific/Pohnpei - { 688, 4807, 222417, 13, }, // Pacific/Port_Moresby - { 688, 6076, 222430, 15, }, // Pacific/Rarotonga - { 688, 6031, 222445, 12, }, // Pacific/Saipan - { 688, 7312, 222457, 11, }, // Pacific/Tahiti - { 688, 6712, 222468, 13, }, // Pacific/Tarawa - { 688, 4583, 222481, 15, }, // Pacific/Tongatapu - { 688, 7392, 222496, 10, }, // Pacific/Wake - { 688, 7405, 222506, 12, }, // Pacific/Wallis - { 689, 6788, 222518, 7, }, // Africa/Abidjan Kuvi/Latin/India - { 689, 6760, 222525, 4, }, // Africa/Accra - { 689, 5059, 222529, 10, }, // Africa/Addis_Ababa - { 689, 7420, 222539, 7, }, // Africa/Algiers - { 689, 14, 222546, 6, }, // Africa/Asmara - { 689, 44, 222552, 6, }, // Africa/Bamako - { 689, 5257, 222558, 6, }, // Africa/Bangui - { 689, 6746, 222564, 6, }, // Africa/Banjul - { 689, 7435, 222570, 6, }, // Africa/Bissau - { 689, 4957, 222576, 8, }, // Africa/Blantyre - { 689, 5287, 222584, 9, }, // Africa/Brazzaville - { 689, 4922, 222593, 9, }, // Africa/Bujumbura - { 689, 2320, 222602, 5, }, // Africa/Cairo - { 689, 4117, 222607, 10, }, // Africa/Casablanca - { 689, 7449, 222617, 5, }, // Africa/Ceuta - { 689, 6773, 222622, 7, }, // Africa/Conakry - { 689, 6840, 222629, 4, }, // Africa/Dakar - { 689, 5130, 222633, 13, }, // Africa/Dar_es_Salaam + { 688, 7155, 222377, 5, }, // Pacific/Palau + { 688, 7194, 222382, 14, }, // Pacific/Pitcairn + { 688, 3096, 222396, 12, }, // Pacific/Pohnpei + { 688, 4807, 222408, 13, }, // Pacific/Port_Moresby + { 688, 6076, 222421, 15, }, // Pacific/Rarotonga + { 688, 6031, 222436, 12, }, // Pacific/Saipan + { 688, 7312, 222448, 11, }, // Pacific/Tahiti + { 688, 6712, 222459, 13, }, // Pacific/Tarawa + { 688, 4583, 222472, 15, }, // Pacific/Tongatapu + { 688, 7392, 222487, 10, }, // Pacific/Wake + { 688, 7405, 222497, 12, }, // Pacific/Wallis + { 689, 6788, 222509, 7, }, // Africa/Abidjan Kuvi/Latin/India + { 689, 6760, 222516, 4, }, // Africa/Accra + { 689, 5059, 222520, 10, }, // Africa/Addis_Ababa + { 689, 7420, 222530, 7, }, // Africa/Algiers + { 689, 14, 222537, 6, }, // Africa/Asmara + { 689, 44, 222543, 6, }, // Africa/Bamako + { 689, 5257, 222549, 6, }, // Africa/Bangui + { 689, 6746, 222555, 6, }, // Africa/Banjul + { 689, 7435, 222561, 6, }, // Africa/Bissau + { 689, 4957, 222567, 8, }, // Africa/Blantyre + { 689, 5287, 222575, 9, }, // Africa/Brazzaville + { 689, 4922, 222584, 9, }, // Africa/Bujumbura + { 689, 2320, 222593, 5, }, // Africa/Cairo + { 689, 4117, 222598, 10, }, // Africa/Casablanca + { 689, 7449, 222608, 5, }, // Africa/Ceuta + { 689, 6773, 222613, 7, }, // Africa/Conakry + { 689, 6840, 222620, 4, }, // Africa/Dakar + { 689, 5130, 222624, 13, }, // Africa/Dar_es_Salaam { 689, 5043, 26493, 6, }, // Africa/Djibouti - { 689, 5243, 222646, 5, }, // Africa/Douala - { 689, 5166, 222651, 9, }, // Africa/El_Aaiun - { 689, 6853, 222660, 7, }, // Africa/Freetown - { 689, 4906, 222667, 7, }, // Africa/Gaborone - { 689, 5015, 222674, 5, }, // Africa/Harare - { 689, 4479, 222679, 12, }, // Africa/Johannesburg - { 689, 4499, 222691, 4, }, // Africa/Juba - { 689, 5151, 222695, 6, }, // Africa/Kampala - { 689, 4524, 222701, 7, }, // Africa/Khartoum - { 689, 4973, 222708, 6, }, // Africa/Kigali - { 689, 5306, 222714, 7, }, // Africa/Kinshasa - { 689, 4744, 222721, 5, }, // Africa/Lagos - { 689, 5336, 222726, 9, }, // Africa/Libreville + { 689, 5243, 222637, 5, }, // Africa/Douala + { 689, 5166, 222642, 9, }, // Africa/El_Aaiun + { 689, 6853, 222651, 7, }, // Africa/Freetown + { 689, 4906, 222658, 7, }, // Africa/Gaborone + { 689, 5015, 222665, 5, }, // Africa/Harare + { 689, 4479, 222670, 12, }, // Africa/Johannesburg + { 689, 4499, 222682, 4, }, // Africa/Juba + { 689, 5151, 222686, 6, }, // Africa/Kampala + { 689, 4524, 222692, 7, }, // Africa/Khartoum + { 689, 4973, 222699, 6, }, // Africa/Kigali + { 689, 5306, 222705, 7, }, // Africa/Kinshasa + { 689, 4744, 222712, 5, }, // Africa/Lagos + { 689, 5336, 222717, 9, }, // Africa/Libreville { 689, 6869, 4087, 3, }, // Africa/Lome - { 689, 5211, 222735, 6, }, // Africa/Luanda - { 689, 4939, 222741, 9, }, // Africa/Lubumbashi - { 689, 5001, 222750, 6, }, // Africa/Lusaka - { 689, 5322, 222756, 6, }, // Africa/Malabo - { 689, 4987, 222762, 6, }, // Africa/Maputo - { 689, 5197, 222768, 6, }, // Africa/Maseru - { 689, 5182, 222774, 7, }, // Africa/Mbabane - { 689, 5113, 222781, 8, }, // Africa/Mogadishu - { 689, 7034, 222789, 8, }, // Africa/Monrovia - { 689, 3853, 222797, 7, }, // Africa/Nairobi - { 689, 5271, 222804, 7, }, // Africa/Ndjamena - { 689, 5354, 222811, 6, }, // Africa/Niamey - { 689, 6803, 222817, 6, }, // Africa/Nouakchott - { 689, 6727, 222823, 7, }, // Africa/Ouagadougou - { 689, 5225, 222830, 10, }, // Africa/Porto-Novo - { 689, 4435, 222840, 7, }, // Africa/Sao_Tome - { 689, 2866, 222847, 7, }, // Africa/Tripoli - { 689, 6554, 222854, 5, }, // Africa/Tunis - { 689, 4152, 222859, 7, }, // Africa/Windhoek - { 689, 132, 222866, 4, }, // America/Adak - { 689, 3346, 222870, 7, }, // America/Anchorage - { 689, 5607, 222877, 8, }, // America/Anguilla - { 689, 5624, 222885, 7, }, // America/Antigua - { 689, 4554, 222892, 9, }, // America/Araguaina - { 689, 166, 222901, 13, }, // America/Argentina/Buenos_Aires - { 689, 91, 222914, 9, }, // America/Argentina/Catamarca - { 689, 270, 222923, 7, }, // America/Argentina/Cordoba - { 689, 441, 222930, 5, }, // America/Argentina/Jujuy - { 689, 7462, 222935, 8, }, // America/Argentina/La_Rioja - { 689, 565, 222943, 7, }, // America/Argentina/Mendoza - { 689, 7489, 222950, 13, }, // America/Argentina/Rio_Gallegos - { 689, 7520, 222963, 5, }, // America/Argentina/Salta - { 689, 7544, 222968, 8, }, // America/Argentina/San_Juan - { 689, 5580, 222976, 8, }, // America/Argentina/San_Luis - { 689, 7571, 222984, 6, }, // America/Argentina/Tucuman - { 689, 7597, 222990, 7, }, // America/Argentina/Ushuaia - { 689, 5640, 222997, 5, }, // America/Aruba - { 689, 4252, 223002, 8, }, // America/Asuncion - { 689, 237, 223010, 8, }, // America/Atikokan - { 689, 3679, 223018, 5, }, // America/Bahia - { 689, 7623, 223023, 13, }, // America/Bahia_Banderas - { 689, 5654, 223036, 8, }, // America/Barbados - { 689, 7646, 223044, 5, }, // America/Belem - { 689, 5407, 223049, 5, }, // America/Belize - { 689, 7660, 223054, 12, }, // America/Blanc-Sablon - { 689, 7681, 223066, 9, }, // America/Boa_Vista - { 689, 4361, 223075, 6, }, // America/Bogota - { 689, 7699, 223081, 5, }, // America/Boise - { 689, 7713, 223086, 10, }, // America/Cambridge_Bay - { 689, 7735, 223096, 12, }, // America/Campo_Grande - { 689, 3868, 223108, 6, }, // America/Cancun - { 689, 4694, 223114, 7, }, // America/Caracas - { 689, 4345, 223121, 5, }, // America/Cayenne - { 689, 5496, 223126, 6, }, // America/Cayman - { 689, 2260, 223132, 6, }, // America/Chicago - { 689, 7756, 223138, 9, }, // America/Chihuahua + { 689, 5211, 222726, 6, }, // Africa/Luanda + { 689, 4939, 222732, 9, }, // Africa/Lubumbashi + { 689, 5001, 222741, 6, }, // Africa/Lusaka + { 689, 5322, 222747, 6, }, // Africa/Malabo + { 689, 4987, 222753, 6, }, // Africa/Maputo + { 689, 5197, 222759, 6, }, // Africa/Maseru + { 689, 5182, 222765, 7, }, // Africa/Mbabane + { 689, 5113, 222772, 8, }, // Africa/Mogadishu + { 689, 7034, 222780, 8, }, // Africa/Monrovia + { 689, 3853, 222788, 7, }, // Africa/Nairobi + { 689, 5271, 222795, 7, }, // Africa/Ndjamena + { 689, 5354, 222802, 6, }, // Africa/Niamey + { 689, 6803, 222808, 6, }, // Africa/Nouakchott + { 689, 6727, 222814, 7, }, // Africa/Ouagadougou + { 689, 5225, 222821, 10, }, // Africa/Porto-Novo + { 689, 4435, 222831, 7, }, // Africa/Sao_Tome + { 689, 2866, 222838, 7, }, // Africa/Tripoli + { 689, 6554, 222845, 5, }, // Africa/Tunis + { 689, 4152, 222850, 7, }, // Africa/Windhoek + { 689, 132, 222857, 4, }, // America/Adak + { 689, 3346, 222861, 7, }, // America/Anchorage + { 689, 5607, 222868, 8, }, // America/Anguilla + { 689, 5624, 222876, 7, }, // America/Antigua + { 689, 4554, 222883, 9, }, // America/Araguaina + { 689, 166, 222892, 13, }, // America/Argentina/Buenos_Aires + { 689, 91, 222905, 9, }, // America/Argentina/Catamarca + { 689, 270, 222914, 7, }, // America/Argentina/Cordoba + { 689, 441, 222921, 5, }, // America/Argentina/Jujuy + { 689, 7462, 222926, 8, }, // America/Argentina/La_Rioja + { 689, 565, 222934, 7, }, // America/Argentina/Mendoza + { 689, 7489, 222941, 13, }, // America/Argentina/Rio_Gallegos + { 689, 7520, 222954, 5, }, // America/Argentina/Salta + { 689, 7544, 222959, 8, }, // America/Argentina/San_Juan + { 689, 5580, 222967, 8, }, // America/Argentina/San_Luis + { 689, 7571, 222975, 6, }, // America/Argentina/Tucuman + { 689, 7597, 222981, 7, }, // America/Argentina/Ushuaia + { 689, 5640, 222988, 5, }, // America/Aruba + { 689, 4252, 222993, 8, }, // America/Asuncion + { 689, 237, 223001, 8, }, // America/Atikokan + { 689, 3679, 223009, 5, }, // America/Bahia + { 689, 7623, 223014, 13, }, // America/Bahia_Banderas + { 689, 5654, 223027, 8, }, // America/Barbados + { 689, 7646, 223035, 5, }, // America/Belem + { 689, 5407, 223040, 5, }, // America/Belize + { 689, 7660, 223045, 12, }, // America/Blanc-Sablon + { 689, 7681, 223057, 9, }, // America/Boa_Vista + { 689, 4361, 223066, 6, }, // America/Bogota + { 689, 7699, 223072, 5, }, // America/Boise + { 689, 7713, 223077, 10, }, // America/Cambridge_Bay + { 689, 7735, 223087, 12, }, // America/Campo_Grande + { 689, 3868, 223099, 6, }, // America/Cancun + { 689, 4694, 223105, 7, }, // America/Caracas + { 689, 4345, 223112, 5, }, // America/Cayenne + { 689, 5496, 223117, 6, }, // America/Cayman + { 689, 2260, 223123, 6, }, // America/Chicago + { 689, 7756, 223129, 9, }, // America/Chihuahua { 689, 7774, 53, 13, }, // America/Ciudad_Juarez - { 689, 5422, 223147, 10, }, // America/Costa_Rica - { 689, 7796, 223157, 7, }, // America/Creston - { 689, 3791, 223164, 6, }, // America/Cuiaba - { 689, 5723, 223170, 7, }, // America/Curacao - { 689, 7812, 223177, 11, }, // America/Danmarkshavn - { 689, 7833, 223188, 5, }, // America/Dawson - { 689, 7848, 223193, 11, }, // America/Dawson_Creek - { 689, 805, 223204, 6, }, // America/Denver - { 689, 3465, 223210, 7, }, // America/Detroit - { 689, 5739, 223217, 8, }, // America/Dominica - { 689, 893, 223225, 8, }, // America/Edmonton - { 689, 7869, 223233, 8, }, // America/Eirunepe - { 689, 5441, 223241, 11, }, // America/El_Salvador - { 689, 7886, 223252, 11, }, // America/Fort_Nelson - { 689, 7906, 223263, 9, }, // America/Fortaleza - { 689, 7924, 223272, 8, }, // America/Glace_Bay - { 689, 6881, 223280, 7, }, // America/Goose_Bay - { 689, 4612, 223287, 10, }, // America/Grand_Turk - { 689, 5770, 223297, 7, }, // America/Grenada - { 689, 5786, 223304, 10, }, // America/Guadeloupe - { 689, 3760, 223314, 9, }, // America/Guatemala - { 689, 4841, 223323, 8, }, // America/Guayaquil - { 689, 6932, 223331, 6, }, // America/Guyana - { 689, 1939, 223337, 8, }, // America/Halifax - { 689, 2281, 223345, 6, }, // America/Havana + { 689, 5422, 223138, 10, }, // America/Costa_Rica + { 689, 7796, 223148, 7, }, // America/Creston + { 689, 3791, 223155, 6, }, // America/Cuiaba + { 689, 5723, 223161, 7, }, // America/Curacao + { 689, 7812, 223168, 11, }, // America/Danmarkshavn + { 689, 7833, 223179, 5, }, // America/Dawson + { 689, 7848, 223184, 11, }, // America/Dawson_Creek + { 689, 805, 223195, 6, }, // America/Denver + { 689, 3465, 223201, 7, }, // America/Detroit + { 689, 5739, 223208, 8, }, // America/Dominica + { 689, 893, 223216, 8, }, // America/Edmonton + { 689, 7869, 223224, 8, }, // America/Eirunepe + { 689, 5441, 223232, 11, }, // America/El_Salvador + { 689, 7886, 223243, 11, }, // America/Fort_Nelson + { 689, 7906, 223254, 9, }, // America/Fortaleza + { 689, 7924, 223263, 8, }, // America/Glace_Bay + { 689, 6881, 223271, 7, }, // America/Goose_Bay + { 689, 4612, 223278, 10, }, // America/Grand_Turk + { 689, 5770, 223288, 7, }, // America/Grenada + { 689, 5786, 223295, 10, }, // America/Guadeloupe + { 689, 3760, 223305, 9, }, // America/Guatemala + { 689, 4841, 223314, 8, }, // America/Guayaquil + { 689, 6932, 223322, 6, }, // America/Guyana + { 689, 1939, 223328, 8, }, // America/Halifax + { 689, 2281, 223336, 6, }, // America/Havana { 689, 7942, 6920, 8, }, // America/Hermosillo - { 689, 348, 223351, 12, }, // America/Indiana/Indianapolis - { 689, 481, 223363, 14, }, // America/Indiana/Knox - { 689, 7961, 223377, 17, }, // America/Indiana/Marengo - { 689, 7985, 223394, 20, }, // America/Indiana/Petersburg - { 689, 8012, 223414, 19, }, // America/Indiana/Tell_City - { 689, 8038, 223433, 14, }, // America/Indiana/Vevay - { 689, 8060, 223447, 17, }, // America/Indiana/Vincennes - { 689, 8086, 223464, 17, }, // America/Indiana/Winamac - { 689, 8110, 223481, 6, }, // America/Inuvik - { 689, 660, 223487, 7, }, // America/Iqaluit - { 689, 2799, 223494, 7, }, // America/Jamaica - { 689, 5380, 223501, 5, }, // America/Juneau - { 689, 521, 223506, 9, }, // America/Kentucky/Louisville - { 689, 8125, 223515, 19, }, // America/Kentucky/Monticello - { 689, 5704, 223534, 10, }, // America/Kralendijk - { 689, 4376, 223544, 6, }, // America/La_Paz + { 689, 348, 223342, 12, }, // America/Indiana/Indianapolis + { 689, 481, 223354, 14, }, // America/Indiana/Knox + { 689, 7961, 223368, 17, }, // America/Indiana/Marengo + { 689, 7985, 223385, 20, }, // America/Indiana/Petersburg + { 689, 8012, 223405, 19, }, // America/Indiana/Tell_City + { 689, 8038, 223424, 14, }, // America/Indiana/Vevay + { 689, 8060, 223438, 17, }, // America/Indiana/Vincennes + { 689, 8086, 223455, 17, }, // America/Indiana/Winamac + { 689, 8110, 223472, 6, }, // America/Inuvik + { 689, 660, 223478, 7, }, // America/Iqaluit + { 689, 2799, 223485, 7, }, // America/Jamaica + { 689, 5380, 223492, 5, }, // America/Juneau + { 689, 521, 223497, 9, }, // America/Kentucky/Louisville + { 689, 8125, 223506, 19, }, // America/Kentucky/Monticello + { 689, 5704, 223525, 10, }, // America/Kralendijk + { 689, 4376, 223535, 6, }, // America/La_Paz { 689, 7169, 157373, 4, }, // America/Lima - { 689, 3239, 223550, 11, }, // America/Los_Angeles - { 689, 5932, 223561, 21, }, // America/Lower_Princes - { 689, 8153, 223582, 5, }, // America/Maceio - { 689, 8168, 223587, 7, }, // America/Managua - { 689, 1908, 223594, 6, }, // America/Manaus - { 689, 5897, 223600, 7, }, // America/Marigot - { 689, 5805, 223607, 8, }, // America/Martinique - { 689, 8184, 223615, 9, }, // America/Matamoros - { 689, 2917, 223624, 8, }, // America/Mazatlan - { 689, 8202, 223632, 8, }, // America/Menominee - { 689, 8220, 223640, 6, }, // America/Merida - { 689, 8235, 223646, 10, }, // America/Metlakatla - { 689, 2949, 223656, 12, }, // America/Mexico_City - { 689, 4391, 223668, 7, }, // America/Miquelon - { 689, 8254, 223675, 7, }, // America/Moncton - { 689, 8270, 223682, 8, }, // America/Monterrey - { 689, 4098, 223690, 10, }, // America/Montevideo - { 689, 5824, 223700, 10, }, // America/Montserrat - { 689, 5481, 223710, 5, }, // America/Nassau - { 689, 2379, 223715, 9, }, // America/New_York + { 689, 3239, 223541, 11, }, // America/Los_Angeles + { 689, 5932, 223552, 21, }, // America/Lower_Princes + { 689, 8153, 223573, 5, }, // America/Maceio + { 689, 8168, 223578, 7, }, // America/Managua + { 689, 1908, 223585, 6, }, // America/Manaus + { 689, 5897, 223591, 7, }, // America/Marigot + { 689, 5805, 223598, 8, }, // America/Martinique + { 689, 8184, 223606, 9, }, // America/Matamoros + { 689, 2917, 223615, 8, }, // America/Mazatlan + { 689, 8202, 223623, 8, }, // America/Menominee + { 689, 8220, 223631, 6, }, // America/Merida + { 689, 8235, 223637, 10, }, // America/Metlakatla + { 689, 2949, 223647, 12, }, // America/Mexico_City + { 689, 4391, 223659, 7, }, // America/Miquelon + { 689, 8254, 223666, 7, }, // America/Moncton + { 689, 8270, 223673, 8, }, // America/Monterrey + { 689, 4098, 223681, 10, }, // America/Montevideo + { 689, 5824, 223691, 10, }, // America/Montserrat + { 689, 5481, 223701, 5, }, // America/Nassau + { 689, 2379, 223706, 9, }, // America/New_York { 689, 8288, 7120, 3, }, // America/Nome - { 689, 1850, 223724, 7, }, // America/Noronha - { 689, 8301, 223731, 20, }, // America/North_Dakota/Beulah - { 689, 8329, 223751, 19, }, // America/North_Dakota/Center - { 689, 8357, 223770, 23, }, // America/North_Dakota/New_Salem - { 689, 393, 223793, 3, }, // America/Nuuk - { 689, 8388, 223796, 7, }, // America/Ojinaga - { 689, 2356, 223803, 6, }, // America/Panama - { 689, 6173, 223809, 10, }, // America/Paramaribo - { 689, 2973, 223819, 6, }, // America/Phoenix - { 689, 3945, 223825, 14, }, // America/Port-au-Prince - { 689, 5954, 223839, 13, }, // America/Port_of_Spain - { 689, 8404, 223852, 11, }, // America/Porto_Velho - { 689, 5843, 223863, 11, }, // America/Puerto_Rico - { 689, 4030, 223874, 12, }, // America/Punta_Arenas - { 689, 8424, 223886, 13, }, // America/Rankin_Inlet - { 689, 8445, 223899, 6, }, // America/Recife - { 689, 1995, 223905, 6, }, // America/Regina - { 689, 8460, 223911, 8, }, // America/Resolute - { 689, 695, 223919, 10, }, // America/Rio_Branco - { 689, 8477, 223929, 6, }, // America/Santarem - { 689, 2201, 223935, 8, }, // America/Santiago - { 689, 6111, 223943, 13, }, // America/Santo_Domingo - { 689, 1878, 223956, 9, }, // America/Sao_Paulo - { 689, 6899, 223965, 11, }, // America/Scoresbysund - { 689, 8494, 223976, 5, }, // America/Sitka - { 689, 8508, 223981, 14, }, // America/St_Barthelemy - { 689, 2061, 223995, 9, }, // America/St_Johns - { 689, 5863, 224004, 10, }, // America/St_Kitts - { 689, 5880, 224014, 10, }, // America/St_Lucia - { 689, 855, 224024, 10, }, // America/St_Thomas - { 689, 5913, 224034, 12, }, // America/St_Vincent - { 689, 8530, 224046, 13, }, // America/Swift_Current - { 689, 5461, 224059, 4, }, // America/Tegucigalpa - { 689, 5756, 224063, 4, }, // America/Thule - { 689, 313, 224067, 7, }, // America/Tijuana - { 689, 608, 224074, 7, }, // America/Toronto - { 689, 5688, 224081, 7, }, // America/Tortola - { 689, 2093, 224088, 8, }, // America/Vancouver - { 689, 2144, 224096, 9, }, // America/Whitehorse - { 689, 734, 224105, 8, }, // America/Winnipeg - { 689, 8552, 224113, 7, }, // America/Yakutat - { 689, 6001, 224120, 5, }, // Antarctica/Casey - { 689, 6094, 224125, 5, }, // Antarctica/Davis - { 689, 6133, 224130, 17, }, // Antarctica/DumontDUrville - { 689, 8568, 224147, 7, }, // Antarctica/Macquarie - { 689, 7066, 224154, 6, }, // Antarctica/Mawson - { 689, 7113, 224160, 9, }, // Antarctica/McMurdo - { 689, 8589, 224169, 6, }, // Antarctica/Palmer - { 689, 7226, 224175, 6, }, // Antarctica/Rothera - { 689, 7295, 224181, 5, }, // Antarctica/Syowa - { 689, 8607, 224186, 5, }, // Antarctica/Troll - { 689, 7374, 224191, 6, }, // Antarctica/Vostok - { 689, 1429, 224197, 10, }, // Arctic/Longyearbyen - { 689, 5570, 224207, 4, }, // Asia/Aden - { 689, 5395, 224211, 6, }, // Asia/Almaty - { 689, 3968, 224217, 5, }, // Asia/Amman - { 689, 5511, 224222, 6, }, // Asia/Anadyr - { 689, 5523, 224228, 5, }, // Asia/Aqtau - { 689, 5368, 224233, 7, }, // Asia/Aqtobe - { 689, 964, 224240, 7, }, // Asia/Ashgabat - { 689, 8624, 224247, 6, }, // Asia/Atyrau - { 689, 3607, 224253, 6, }, // Asia/Baghdad - { 689, 5534, 224259, 7, }, // Asia/Bahrain - { 689, 3653, 224266, 4, }, // Asia/Baku - { 689, 4466, 224270, 7, }, // Asia/Bangkok - { 689, 3571, 224277, 7, }, // Asia/Barnaul - { 689, 4086, 224284, 6, }, // Asia/Beirut - { 689, 3778, 224290, 6, }, // Asia/Bishkek - { 689, 5989, 224296, 6, }, // Asia/Brunei - { 689, 4601, 224302, 4, }, // Asia/Chita - { 689, 4511, 224306, 7, }, // Asia/Colombo - { 689, 4540, 224313, 8, }, // Asia/Damascus - { 689, 1093, 222867, 4, }, // Asia/Dhaka - { 689, 6192, 224321, 4, }, // Asia/Dili - { 689, 3596, 224325, 5, }, // Asia/Dubai - { 689, 6159, 224330, 7, }, // Asia/Dushanbe - { 689, 8636, 224337, 9, }, // Asia/Famagusta - { 689, 8651, 224346, 4, }, // Asia/Gaza - { 689, 4795, 224350, 6, }, // Asia/Hebron - { 689, 1259, 224356, 15, }, // Asia/Ho_Chi_Minh - { 689, 2704, 224371, 9, }, // Asia/Hong_Kong + { 689, 1850, 223715, 7, }, // America/Noronha + { 689, 8301, 223722, 20, }, // America/North_Dakota/Beulah + { 689, 8329, 223742, 19, }, // America/North_Dakota/Center + { 689, 8357, 223761, 23, }, // America/North_Dakota/New_Salem + { 689, 393, 223784, 3, }, // America/Nuuk + { 689, 8388, 223787, 7, }, // America/Ojinaga + { 689, 2356, 223794, 6, }, // America/Panama + { 689, 6173, 223800, 10, }, // America/Paramaribo + { 689, 2973, 223810, 6, }, // America/Phoenix + { 689, 3945, 223816, 14, }, // America/Port-au-Prince + { 689, 5954, 223830, 13, }, // America/Port_of_Spain + { 689, 8404, 223843, 11, }, // America/Porto_Velho + { 689, 5843, 223854, 11, }, // America/Puerto_Rico + { 689, 4030, 223865, 12, }, // America/Punta_Arenas + { 689, 8424, 223877, 13, }, // America/Rankin_Inlet + { 689, 8445, 223890, 6, }, // America/Recife + { 689, 1995, 223896, 6, }, // America/Regina + { 689, 8460, 223902, 8, }, // America/Resolute + { 689, 695, 223910, 10, }, // America/Rio_Branco + { 689, 8477, 223920, 6, }, // America/Santarem + { 689, 2201, 223926, 8, }, // America/Santiago + { 689, 6111, 223934, 13, }, // America/Santo_Domingo + { 689, 1878, 223947, 9, }, // America/Sao_Paulo + { 689, 6899, 223956, 11, }, // America/Scoresbysund + { 689, 8494, 223967, 5, }, // America/Sitka + { 689, 8508, 223972, 14, }, // America/St_Barthelemy + { 689, 2061, 223986, 9, }, // America/St_Johns + { 689, 5863, 223995, 10, }, // America/St_Kitts + { 689, 5880, 224005, 10, }, // America/St_Lucia + { 689, 855, 224015, 10, }, // America/St_Thomas + { 689, 5913, 224025, 12, }, // America/St_Vincent + { 689, 8530, 224037, 13, }, // America/Swift_Current + { 689, 5461, 224050, 4, }, // America/Tegucigalpa + { 689, 5756, 224054, 4, }, // America/Thule + { 689, 313, 224058, 7, }, // America/Tijuana + { 689, 608, 224065, 7, }, // America/Toronto + { 689, 5688, 224072, 7, }, // America/Tortola + { 689, 2093, 224079, 8, }, // America/Vancouver + { 689, 2144, 224087, 9, }, // America/Whitehorse + { 689, 734, 224096, 8, }, // America/Winnipeg + { 689, 8552, 224104, 7, }, // America/Yakutat + { 689, 6001, 224111, 5, }, // Antarctica/Casey + { 689, 6094, 224116, 5, }, // Antarctica/Davis + { 689, 6133, 224121, 17, }, // Antarctica/DumontDUrville + { 689, 8568, 224138, 7, }, // Antarctica/Macquarie + { 689, 7066, 224145, 6, }, // Antarctica/Mawson + { 689, 7113, 224151, 9, }, // Antarctica/McMurdo + { 689, 8589, 224160, 6, }, // Antarctica/Palmer + { 689, 7226, 224166, 6, }, // Antarctica/Rothera + { 689, 7295, 224172, 5, }, // Antarctica/Syowa + { 689, 8607, 224177, 5, }, // Antarctica/Troll + { 689, 7374, 224182, 6, }, // Antarctica/Vostok + { 689, 1429, 224188, 10, }, // Arctic/Longyearbyen + { 689, 5570, 224198, 4, }, // Asia/Aden + { 689, 5395, 224202, 6, }, // Asia/Almaty + { 689, 3968, 224208, 5, }, // Asia/Amman + { 689, 5511, 224213, 6, }, // Asia/Anadyr + { 689, 5523, 224219, 5, }, // Asia/Aqtau + { 689, 5368, 224224, 7, }, // Asia/Aqtobe + { 689, 964, 224231, 7, }, // Asia/Ashgabat + { 689, 8624, 224238, 6, }, // Asia/Atyrau + { 689, 3607, 224244, 6, }, // Asia/Baghdad + { 689, 5534, 224250, 7, }, // Asia/Bahrain + { 689, 3653, 224257, 4, }, // Asia/Baku + { 689, 4466, 224261, 7, }, // Asia/Bangkok + { 689, 3571, 224268, 7, }, // Asia/Barnaul + { 689, 4086, 224275, 6, }, // Asia/Beirut + { 689, 3778, 224281, 6, }, // Asia/Bishkek + { 689, 5989, 224287, 6, }, // Asia/Brunei + { 689, 4601, 224293, 4, }, // Asia/Chita + { 689, 4511, 224297, 7, }, // Asia/Colombo + { 689, 4540, 224304, 8, }, // Asia/Damascus + { 689, 1093, 222858, 4, }, // Asia/Dhaka + { 689, 6192, 224312, 4, }, // Asia/Dili + { 689, 3596, 224316, 5, }, // Asia/Dubai + { 689, 6159, 224321, 7, }, // Asia/Dushanbe + { 689, 8636, 224328, 9, }, // Asia/Famagusta + { 689, 8651, 224337, 4, }, // Asia/Gaza + { 689, 4795, 224341, 6, }, // Asia/Hebron + { 689, 1259, 224347, 15, }, // Asia/Ho_Chi_Minh + { 689, 2704, 224362, 9, }, // Asia/Hong_Kong { 689, 4771, 26836, 4, }, // Asia/Hovd - { 689, 4184, 224380, 7, }, // Asia/Irkutsk + { 689, 4184, 224371, 7, }, // Asia/Irkutsk { 689, 7006, 4248, 7, }, // Asia/Jakarta - { 689, 6992, 224387, 8, }, // Asia/Jayapura - { 689, 1290, 224395, 9, }, // Asia/Jerusalem - { 689, 3560, 224404, 5, }, // Asia/Kabul - { 689, 4316, 224409, 8, }, // Asia/Kamchatka - { 689, 4239, 224417, 6, }, // Asia/Karachi - { 689, 1185, 224423, 8, }, // Asia/Kathmandu - { 689, 8661, 224431, 7, }, // Asia/Khandyga - { 689, 992, 224438, 7, }, // Asia/Kolkata - { 689, 4197, 224445, 11, }, // Asia/Krasnoyarsk - { 689, 4859, 224456, 12, }, // Asia/Kuala_Lumpur - { 689, 5976, 224468, 6, }, // Asia/Kuching - { 689, 5547, 224474, 6, }, // Asia/Kuwait - { 689, 1211, 224480, 4, }, // Asia/Macau - { 689, 4017, 224484, 7, }, // Asia/Magadan - { 689, 1349, 224491, 7, }, // Asia/Makassar - { 689, 7182, 224498, 6, }, // Asia/Manila - { 689, 6920, 224504, 6, }, // Asia/Muscat - { 689, 2554, 224510, 8, }, // Asia/Nicosia - { 689, 8675, 224518, 12, }, // Asia/Novokuznetsk - { 689, 4135, 224530, 11, }, // Asia/Novosibirsk + { 689, 6992, 224378, 8, }, // Asia/Jayapura + { 689, 1290, 224386, 9, }, // Asia/Jerusalem + { 689, 3560, 224395, 5, }, // Asia/Kabul + { 689, 4316, 224400, 8, }, // Asia/Kamchatka + { 689, 4239, 224408, 6, }, // Asia/Karachi + { 689, 1185, 224414, 8, }, // Asia/Kathmandu + { 689, 8661, 224422, 7, }, // Asia/Khandyga + { 689, 992, 224429, 7, }, // Asia/Kolkata + { 689, 4197, 224436, 11, }, // Asia/Krasnoyarsk + { 689, 4859, 224447, 12, }, // Asia/Kuala_Lumpur + { 689, 5976, 224459, 6, }, // Asia/Kuching + { 689, 5547, 224465, 6, }, // Asia/Kuwait + { 689, 1211, 224471, 4, }, // Asia/Macau + { 689, 4017, 224475, 7, }, // Asia/Magadan + { 689, 1349, 224482, 7, }, // Asia/Makassar + { 689, 7182, 224489, 6, }, // Asia/Manila + { 689, 6920, 224495, 6, }, // Asia/Muscat + { 689, 2554, 224501, 8, }, // Asia/Nicosia + { 689, 8675, 224509, 12, }, // Asia/Novokuznetsk + { 689, 4135, 224521, 11, }, // Asia/Novosibirsk { 689, 4229, 123801, 4, }, // Asia/Omsk { 689, 7145, 91266, 4, }, // Asia/Oral - { 689, 6961, 224541, 9, }, // Asia/Phnom_Penh - { 689, 8693, 224550, 9, }, // Asia/Pontianak - { 689, 4214, 224559, 9, }, // Asia/Pyongyang + { 689, 6961, 224532, 9, }, // Asia/Phnom_Penh + { 689, 8693, 224541, 9, }, // Asia/Pontianak + { 689, 4214, 224550, 9, }, // Asia/Pyongyang { 689, 5559, 210375, 5, }, // Asia/Qatar - { 689, 8708, 224568, 7, }, // Asia/Qostanay - { 689, 4269, 224575, 8, }, // Asia/Qyzylorda - { 689, 3584, 224583, 5, }, // Asia/Riyadh - { 689, 4408, 224588, 7, }, // Asia/Sakhalin - { 689, 7245, 224595, 9, }, // Asia/Samarkand - { 689, 3279, 224604, 4, }, // Asia/Seoul - { 689, 1053, 224608, 6, }, // Asia/Shanghai - { 689, 3300, 224614, 8, }, // Asia/Singapore - { 689, 4297, 224622, 13, }, // Asia/Srednekolymsk - { 689, 3263, 224635, 6, }, // Asia/Taipei - { 689, 4781, 224641, 7, }, // Asia/Tashkent - { 689, 3915, 224648, 7, }, // Asia/Tbilisi - { 689, 2772, 224655, 6, }, // Asia/Tehran - { 689, 1317, 224661, 6, }, // Asia/Thimphu - { 689, 2821, 224667, 5, }, // Asia/Tokyo - { 689, 4572, 224672, 5, }, // Asia/Tomsk - { 689, 1021, 224677, 9, }, // Asia/Ulaanbaatar - { 689, 1159, 224686, 6, }, // Asia/Urumqi - { 689, 8722, 224692, 9, }, // Asia/Ust-Nera - { 689, 6977, 224701, 9, }, // Asia/Vientiane - { 689, 4710, 224710, 11, }, // Asia/Vladivostok - { 689, 4828, 224721, 7, }, // Asia/Yakutsk - { 689, 1235, 224728, 6, }, // Asia/Yangon - { 689, 3883, 224734, 13, }, // Asia/Yekaterinburg - { 689, 3747, 224747, 7, }, // Asia/Yerevan - { 689, 3663, 224754, 6, }, // Atlantic/Azores - { 689, 5671, 224760, 7, }, // Atlantic/Bermuda - { 689, 6628, 224767, 6, }, // Atlantic/Canary - { 689, 3727, 224773, 9, }, // Atlantic/Cape_Verde - { 689, 1395, 224782, 4, }, // Atlantic/Faroe - { 689, 8736, 224786, 7, }, // Atlantic/Madeira - { 689, 2748, 224793, 9, }, // Atlantic/Reykjavik - { 689, 7272, 224802, 11, }, // Atlantic/South_Georgia - { 689, 6821, 224813, 11, }, // Atlantic/St_Helena - { 689, 6644, 224824, 6, }, // Atlantic/Stanley - { 689, 1670, 224830, 8, }, // Australia/Adelaide - { 689, 1635, 224838, 8, }, // Australia/Brisbane - { 689, 1799, 224846, 11, }, // Australia/Broken_Hill - { 689, 1583, 224857, 6, }, // Australia/Darwin - { 689, 3637, 224863, 5, }, // Australia/Eucla - { 689, 1516, 224868, 6, }, // Australia/Hobart - { 689, 8753, 224874, 9, }, // Australia/Lindeman - { 689, 1547, 224883, 9, }, // Australia/Lord_Howe - { 689, 1727, 224892, 8, }, // Australia/Melbourne - { 689, 1762, 224900, 4, }, // Australia/Perth - { 689, 1463, 224904, 5, }, // Australia/Sydney - { 689, 6441, 224909, 9, }, // Europe/Amsterdam - { 689, 6216, 224918, 7, }, // Europe/Andorra - { 689, 3620, 224925, 9, }, // Europe/Astrakhan - { 689, 2300, 224934, 5, }, // Europe/Athens - { 689, 6336, 224939, 8, }, // Europe/Belgrade - { 689, 4757, 224947, 6, }, // Europe/Berlin - { 689, 6488, 224953, 10, }, // Europe/Bratislava - { 689, 2167, 224963, 8, }, // Europe/Brussels - { 689, 3928, 224971, 8, }, // Europe/Bucharest - { 689, 3806, 224979, 8, }, // Europe/Budapest - { 689, 8772, 224987, 8, }, // Europe/Busingen - { 689, 2583, 224995, 7, }, // Europe/Chisinau - { 689, 6289, 225002, 10, }, // Europe/Copenhagen - { 689, 2338, 225012, 5, }, // Europe/Dublin - { 689, 6307, 225017, 9, }, // Europe/Gibraltar - { 689, 8788, 225026, 6, }, // Europe/Guernsey - { 689, 6612, 225032, 8, }, // Europe/Helsinki - { 689, 8804, 225040, 11, }, // Europe/Isle_of_Man - { 689, 1130, 225051, 8, }, // Europe/Istanbul - { 689, 8823, 225059, 5, }, // Europe/Jersey - { 689, 3979, 225064, 11, }, // Europe/Kaliningrad - { 689, 8929, 225075, 5, }, // Europe/Kirov - { 689, 2527, 225080, 4, }, // Europe/Kyiv - { 689, 3213, 225084, 6, }, // Europe/Lisbon - { 689, 6506, 225090, 9, }, // Europe/Ljubljana - { 689, 2501, 225099, 4, }, // Europe/London - { 689, 6365, 225103, 8, }, // Europe/Luxembourg - { 689, 4892, 225111, 6, }, // Europe/Madrid - { 689, 6397, 225117, 5, }, // Europe/Malta - { 689, 6582, 225122, 8, }, // Europe/Mariehamn - { 689, 3693, 225130, 5, }, // Europe/Minsk - { 689, 6410, 225135, 6, }, // Europe/Monaco - { 689, 3537, 225141, 5, }, // Europe/Moscow - { 689, 6458, 225146, 4, }, // Europe/Oslo - { 689, 4284, 225150, 5, }, // Europe/Paris - { 689, 6424, 225155, 9, }, // Europe/Podgorica - { 689, 6275, 225164, 4, }, // Europe/Prague - { 689, 8837, 225168, 4, }, // Europe/Riga + { 689, 8708, 224559, 7, }, // Asia/Qostanay + { 689, 4269, 224566, 8, }, // Asia/Qyzylorda + { 689, 3584, 224574, 5, }, // Asia/Riyadh + { 689, 4408, 224579, 7, }, // Asia/Sakhalin + { 689, 7245, 224586, 9, }, // Asia/Samarkand + { 689, 3279, 224595, 4, }, // Asia/Seoul + { 689, 1053, 224599, 6, }, // Asia/Shanghai + { 689, 3300, 224605, 8, }, // Asia/Singapore + { 689, 4297, 224613, 13, }, // Asia/Srednekolymsk + { 689, 3263, 224626, 6, }, // Asia/Taipei + { 689, 4781, 224632, 7, }, // Asia/Tashkent + { 689, 3915, 224639, 7, }, // Asia/Tbilisi + { 689, 2772, 224646, 6, }, // Asia/Tehran + { 689, 1317, 224652, 6, }, // Asia/Thimphu + { 689, 2821, 224658, 5, }, // Asia/Tokyo + { 689, 4572, 224663, 5, }, // Asia/Tomsk + { 689, 1021, 224668, 9, }, // Asia/Ulaanbaatar + { 689, 1159, 224677, 6, }, // Asia/Urumqi + { 689, 8722, 224683, 9, }, // Asia/Ust-Nera + { 689, 6977, 224692, 9, }, // Asia/Vientiane + { 689, 4710, 224701, 11, }, // Asia/Vladivostok + { 689, 4828, 224712, 7, }, // Asia/Yakutsk + { 689, 1235, 224719, 6, }, // Asia/Yangon + { 689, 3883, 224725, 13, }, // Asia/Yekaterinburg + { 689, 3747, 224738, 7, }, // Asia/Yerevan + { 689, 3663, 224745, 6, }, // Atlantic/Azores + { 689, 5671, 224751, 7, }, // Atlantic/Bermuda + { 689, 6628, 224758, 6, }, // Atlantic/Canary + { 689, 3727, 224764, 9, }, // Atlantic/Cape_Verde + { 689, 1395, 224773, 4, }, // Atlantic/Faroe + { 689, 8736, 224777, 7, }, // Atlantic/Madeira + { 689, 2748, 224784, 9, }, // Atlantic/Reykjavik + { 689, 7272, 224793, 11, }, // Atlantic/South_Georgia + { 689, 6821, 224804, 11, }, // Atlantic/St_Helena + { 689, 6644, 224815, 6, }, // Atlantic/Stanley + { 689, 1670, 224821, 8, }, // Australia/Adelaide + { 689, 1635, 224829, 8, }, // Australia/Brisbane + { 689, 1799, 224837, 11, }, // Australia/Broken_Hill + { 689, 1583, 224848, 6, }, // Australia/Darwin + { 689, 3637, 224854, 5, }, // Australia/Eucla + { 689, 1516, 224859, 6, }, // Australia/Hobart + { 689, 8753, 224865, 9, }, // Australia/Lindeman + { 689, 1547, 224874, 9, }, // Australia/Lord_Howe + { 689, 1727, 224883, 8, }, // Australia/Melbourne + { 689, 1762, 224891, 4, }, // Australia/Perth + { 689, 1463, 224895, 5, }, // Australia/Sydney + { 689, 6441, 224900, 9, }, // Europe/Amsterdam + { 689, 6216, 224909, 7, }, // Europe/Andorra + { 689, 3620, 224916, 9, }, // Europe/Astrakhan + { 689, 2300, 224925, 5, }, // Europe/Athens + { 689, 6336, 224930, 8, }, // Europe/Belgrade + { 689, 4757, 224938, 6, }, // Europe/Berlin + { 689, 6488, 224944, 10, }, // Europe/Bratislava + { 689, 2167, 224954, 8, }, // Europe/Brussels + { 689, 3928, 224962, 8, }, // Europe/Bucharest + { 689, 3806, 224970, 8, }, // Europe/Budapest + { 689, 8772, 224978, 8, }, // Europe/Busingen + { 689, 2583, 224986, 7, }, // Europe/Chisinau + { 689, 6289, 224993, 10, }, // Europe/Copenhagen + { 689, 2338, 225003, 5, }, // Europe/Dublin + { 689, 6307, 225008, 9, }, // Europe/Gibraltar + { 689, 8788, 225017, 6, }, // Europe/Guernsey + { 689, 6612, 225023, 8, }, // Europe/Helsinki + { 689, 8804, 225031, 11, }, // Europe/Isle_of_Man + { 689, 1130, 225042, 8, }, // Europe/Istanbul + { 689, 8823, 225050, 5, }, // Europe/Jersey + { 689, 3979, 225055, 11, }, // Europe/Kaliningrad + { 689, 8929, 225066, 5, }, // Europe/Kirov + { 689, 2527, 225071, 4, }, // Europe/Kyiv + { 689, 3213, 225075, 6, }, // Europe/Lisbon + { 689, 6506, 225081, 9, }, // Europe/Ljubljana + { 689, 2501, 225090, 4, }, // Europe/London + { 689, 6365, 225094, 8, }, // Europe/Luxembourg + { 689, 4892, 225102, 6, }, // Europe/Madrid + { 689, 6397, 225108, 5, }, // Europe/Malta + { 689, 6582, 225113, 8, }, // Europe/Mariehamn + { 689, 3693, 225121, 5, }, // Europe/Minsk + { 689, 6410, 225126, 6, }, // Europe/Monaco + { 689, 3537, 225132, 5, }, // Europe/Moscow + { 689, 6458, 225137, 4, }, // Europe/Oslo + { 689, 4284, 225141, 5, }, // Europe/Paris + { 689, 6424, 225146, 9, }, // Europe/Podgorica + { 689, 6275, 225155, 4, }, // Europe/Prague + { 689, 8837, 225159, 4, }, // Europe/Riga { 689, 6324, 27088, 3, }, // Europe/Rome - { 689, 4331, 225172, 6, }, // Europe/Samara - { 689, 6470, 225178, 10, }, // Europe/San_Marino - { 689, 6245, 225188, 8, }, // Europe/Sarajevo - { 689, 4451, 225196, 7, }, // Europe/Saratov - { 689, 8849, 225203, 10, }, // Europe/Simferopol - { 689, 6383, 225213, 5, }, // Europe/Skopje - { 689, 6599, 225218, 6, }, // Europe/Sofia - { 689, 6523, 225224, 7, }, // Europe/Stockholm - { 689, 8867, 225231, 5, }, // Europe/Tallinn - { 689, 6202, 225236, 6, }, // Europe/Tirane - { 689, 8882, 225242, 9, }, // Europe/Ulyanovsk - { 689, 6352, 225251, 5, }, // Europe/Vaduz - { 689, 6567, 225256, 7, }, // Europe/Vatican - { 689, 6231, 225263, 6, }, // Europe/Vienna - { 689, 8899, 225269, 7, }, // Europe/Vilnius - { 689, 4727, 225276, 9, }, // Europe/Volgograd - { 689, 3190, 225285, 5, }, // Europe/Warsaw - { 689, 6261, 225290, 11, }, // Europe/Zagreb - { 689, 6540, 225301, 5, }, // Europe/Zurich - { 689, 5078, 225306, 9, }, // Indian/Antananarivo - { 689, 6947, 225315, 6, }, // Indian/Chagos - { 689, 6046, 225321, 8, }, // Indian/Christmas - { 689, 6063, 225329, 5, }, // Indian/Cocos - { 689, 5029, 225334, 6, }, // Indian/Comoro - { 689, 6661, 225340, 9, }, // Indian/Kerguelen - { 689, 7260, 225349, 4, }, // Indian/Mahe - { 689, 7050, 225353, 8, }, // Indian/Maldives - { 689, 4069, 225361, 9, }, // Indian/Mauritius - { 689, 5098, 225370, 5, }, // Indian/Mayotte - { 689, 7211, 225375, 7, }, // Indian/Reunion - { 689, 4422, 225382, 4, }, // Pacific/Apia - { 689, 932, 225386, 6, }, // Pacific/Auckland - { 689, 3706, 225392, 10, }, // Pacific/Bougainville - { 689, 3015, 225402, 5, }, // Pacific/Chatham - { 689, 3157, 225407, 3, }, // Pacific/Chuuk - { 689, 2237, 225410, 5, }, // Pacific/Easter - { 689, 7360, 225415, 5, }, // Pacific/Efate - { 689, 7327, 225420, 7, }, // Pacific/Fakaofo - { 689, 3902, 225427, 4, }, // Pacific/Fiji - { 689, 7343, 225431, 8, }, // Pacific/Funafuti - { 689, 6678, 225439, 9, }, // Pacific/Galapagos - { 689, 6696, 225448, 7, }, // Pacific/Gambier - { 689, 3822, 225455, 11, }, // Pacific/Guadalcanal - { 689, 6018, 223591, 4, }, // Pacific/Guam - { 689, 3049, 225466, 6, }, // Pacific/Kanton - { 689, 3998, 225472, 10, }, // Pacific/Kiritimati - { 689, 7019, 225482, 6, }, // Pacific/Kosrae - { 689, 2842, 225488, 9, }, // Pacific/Kwajalein - { 689, 4877, 225497, 6, }, // Pacific/Majuro - { 689, 4051, 225503, 8, }, // Pacific/Marquesas - { 689, 8914, 225511, 6, }, // Pacific/Midway - { 689, 7084, 225517, 5, }, // Pacific/Nauru - { 689, 7132, 225522, 4, }, // Pacific/Niue - { 689, 4168, 225526, 6, }, // Pacific/Norfolk - { 689, 7098, 225532, 5, }, // Pacific/Noumea - { 689, 3126, 225537, 11, }, // Pacific/Pago_Pago - { 689, 7155, 225548, 5, }, // Pacific/Palau - { 689, 7194, 225553, 7, }, // Pacific/Pitcairn - { 689, 3096, 225560, 6, }, // Pacific/Pohnpei - { 689, 4807, 225566, 12, }, // Pacific/Port_Moresby - { 689, 6076, 225578, 9, }, // Pacific/Rarotonga - { 689, 6031, 225587, 6, }, // Pacific/Saipan - { 689, 7312, 225593, 6, }, // Pacific/Tahiti - { 689, 6712, 225599, 6, }, // Pacific/Tarawa - { 689, 4583, 225605, 9, }, // Pacific/Tongatapu - { 689, 7392, 225614, 3, }, // Pacific/Wake - { 689, 7405, 225617, 6, }, // Pacific/Wallis + { 689, 4331, 225163, 6, }, // Europe/Samara + { 689, 6470, 225169, 10, }, // Europe/San_Marino + { 689, 6245, 225179, 8, }, // Europe/Sarajevo + { 689, 4451, 225187, 7, }, // Europe/Saratov + { 689, 8849, 225194, 10, }, // Europe/Simferopol + { 689, 6383, 225204, 5, }, // Europe/Skopje + { 689, 6599, 225209, 6, }, // Europe/Sofia + { 689, 6523, 225215, 7, }, // Europe/Stockholm + { 689, 8867, 225222, 5, }, // Europe/Tallinn + { 689, 6202, 225227, 6, }, // Europe/Tirane + { 689, 8882, 225233, 9, }, // Europe/Ulyanovsk + { 689, 6352, 225242, 5, }, // Europe/Vaduz + { 689, 6567, 225247, 7, }, // Europe/Vatican + { 689, 6231, 225254, 6, }, // Europe/Vienna + { 689, 8899, 225260, 7, }, // Europe/Vilnius + { 689, 4727, 225267, 9, }, // Europe/Volgograd + { 689, 3190, 225276, 5, }, // Europe/Warsaw + { 689, 6261, 225281, 11, }, // Europe/Zagreb + { 689, 6540, 225292, 5, }, // Europe/Zurich + { 689, 5078, 225297, 9, }, // Indian/Antananarivo + { 689, 6947, 225306, 6, }, // Indian/Chagos + { 689, 6046, 225312, 8, }, // Indian/Christmas + { 689, 6063, 225320, 5, }, // Indian/Cocos + { 689, 5029, 225325, 6, }, // Indian/Comoro + { 689, 6661, 225331, 9, }, // Indian/Kerguelen + { 689, 7260, 225340, 4, }, // Indian/Mahe + { 689, 7050, 225344, 8, }, // Indian/Maldives + { 689, 4069, 225352, 9, }, // Indian/Mauritius + { 689, 5098, 225361, 5, }, // Indian/Mayotte + { 689, 7211, 225366, 7, }, // Indian/Reunion + { 689, 4422, 225373, 4, }, // Pacific/Apia + { 689, 932, 225377, 6, }, // Pacific/Auckland + { 689, 3706, 225383, 10, }, // Pacific/Bougainville + { 689, 3015, 225393, 5, }, // Pacific/Chatham + { 689, 3157, 225398, 3, }, // Pacific/Chuuk + { 689, 2237, 225401, 5, }, // Pacific/Easter + { 689, 7360, 225406, 5, }, // Pacific/Efate + { 689, 7327, 225411, 7, }, // Pacific/Fakaofo + { 689, 3902, 225418, 4, }, // Pacific/Fiji + { 689, 7343, 225422, 8, }, // Pacific/Funafuti + { 689, 6678, 225430, 9, }, // Pacific/Galapagos + { 689, 6696, 225439, 7, }, // Pacific/Gambier + { 689, 3822, 225446, 11, }, // Pacific/Guadalcanal + { 689, 6018, 223582, 4, }, // Pacific/Guam + { 689, 3049, 225457, 6, }, // Pacific/Kanton + { 689, 3998, 225463, 10, }, // Pacific/Kiritimati + { 689, 7019, 225473, 6, }, // Pacific/Kosrae + { 689, 2842, 225479, 9, }, // Pacific/Kwajalein + { 689, 4877, 225488, 6, }, // Pacific/Majuro + { 689, 4051, 225494, 8, }, // Pacific/Marquesas + { 689, 8914, 225502, 6, }, // Pacific/Midway + { 689, 7084, 225508, 5, }, // Pacific/Nauru + { 689, 7132, 225513, 4, }, // Pacific/Niue + { 689, 4168, 225517, 6, }, // Pacific/Norfolk + { 689, 7098, 225523, 5, }, // Pacific/Noumea + { 689, 3126, 225528, 11, }, // Pacific/Pago_Pago + { 689, 7155, 225539, 5, }, // Pacific/Palau + { 689, 7194, 225544, 7, }, // Pacific/Pitcairn + { 689, 3096, 225551, 6, }, // Pacific/Pohnpei + { 689, 4807, 225557, 12, }, // Pacific/Port_Moresby + { 689, 6076, 225569, 9, }, // Pacific/Rarotonga + { 689, 6031, 225578, 6, }, // Pacific/Saipan + { 689, 7312, 225584, 6, }, // Pacific/Tahiti + { 689, 6712, 225590, 6, }, // Pacific/Tarawa + { 689, 4583, 225596, 9, }, // Pacific/Tongatapu + { 689, 7392, 225605, 3, }, // Pacific/Wake + { 689, 7405, 225608, 6, }, // Pacific/Wallis { 690, 6788, 29964, 7, }, // Africa/Abidjan Kuvi/Devanagari/India { 690, 6760, 88252, 5, }, // Africa/Accra { 690, 5059, 88257, 10, }, // Africa/Addis_Ababa @@ -50854,7 +50854,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 14, 88276, 7, }, // Africa/Asmara { 690, 44, 88283, 6, }, // Africa/Bamako { 690, 5257, 88289, 6, }, // Africa/Bangui - { 690, 6746, 225623, 9, }, // Africa/Banjul + { 690, 6746, 225614, 9, }, // Africa/Banjul { 690, 7435, 88301, 5, }, // Africa/Bissau { 690, 4957, 88306, 9, }, // Africa/Blantyre { 690, 5287, 88315, 11, }, // Africa/Brazzaville @@ -50868,31 +50868,31 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 5043, 88368, 6, }, // Africa/Djibouti { 690, 5243, 88374, 5, }, // Africa/Douala { 690, 5166, 88379, 8, }, // Africa/El_Aaiun - { 690, 6853, 225632, 9, }, // Africa/Freetown + { 690, 6853, 225623, 9, }, // Africa/Freetown { 690, 4906, 88396, 7, }, // Africa/Gaborone { 690, 5015, 88403, 5, }, // Africa/Harare { 690, 4479, 88408, 10, }, // Africa/Johannesburg { 690, 4499, 30154, 4, }, // Africa/Juba { 690, 5151, 88418, 6, }, // Africa/Kampala - { 690, 4524, 225641, 7, }, // Africa/Khartoum + { 690, 4524, 225632, 7, }, // Africa/Khartoum { 690, 4973, 88424, 6, }, // Africa/Kigali - { 690, 5306, 225648, 7, }, // Africa/Kinshasa + { 690, 5306, 225639, 7, }, // Africa/Kinshasa { 690, 4744, 88437, 5, }, // Africa/Lagos { 690, 5336, 88442, 10, }, // Africa/Libreville { 690, 6869, 88452, 3, }, // Africa/Lome { 690, 5211, 88455, 6, }, // Africa/Luanda - { 690, 4939, 225655, 9, }, // Africa/Lubumbashi + { 690, 4939, 225646, 9, }, // Africa/Lubumbashi { 690, 5001, 30221, 6, }, // Africa/Lusaka { 690, 5322, 88470, 5, }, // Africa/Malabo { 690, 4987, 88475, 6, }, // Africa/Maputo { 690, 5197, 30239, 6, }, // Africa/Maseru - { 690, 5182, 225664, 9, }, // Africa/Mbabane - { 690, 5113, 225673, 8, }, // Africa/Mogadishu + { 690, 5182, 225655, 9, }, // Africa/Mbabane + { 690, 5113, 225664, 8, }, // Africa/Mogadishu { 690, 7034, 88496, 9, }, // Africa/Monrovia - { 690, 3853, 225681, 7, }, // Africa/Nairobi + { 690, 3853, 225672, 7, }, // Africa/Nairobi { 690, 5271, 88513, 8, }, // Africa/Ndjamena { 690, 5354, 88521, 6, }, // Africa/Niamey - { 690, 6803, 225688, 7, }, // Africa/Nouakchott + { 690, 6803, 225679, 7, }, // Africa/Nouakchott { 690, 6727, 88534, 7, }, // Africa/Ouagadougou { 690, 5225, 88541, 11, }, // Africa/Porto-Novo { 690, 4435, 88552, 7, }, // Africa/Sao_Tome @@ -50912,45 +50912,45 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 565, 88633, 8, }, // America/Argentina/Mendoza { 690, 7489, 88641, 12, }, // America/Argentina/Rio_Gallegos { 690, 7520, 30437, 6, }, // America/Argentina/Salta - { 690, 7544, 225695, 11, }, // America/Argentina/San_Juan - { 690, 5580, 225706, 10, }, // America/Argentina/San_Luis + { 690, 7544, 225686, 11, }, // America/Argentina/San_Juan + { 690, 5580, 225697, 10, }, // America/Argentina/San_Luis { 690, 7571, 88669, 6, }, // America/Argentina/Tucuman - { 690, 7597, 225716, 7, }, // America/Argentina/Ushuaia + { 690, 7597, 225707, 7, }, // America/Argentina/Ushuaia { 690, 5640, 88682, 5, }, // America/Aruba - { 690, 4252, 225723, 8, }, // America/Asuncion + { 690, 4252, 225714, 8, }, // America/Asuncion { 690, 237, 88695, 8, }, // America/Atikokan { 690, 3679, 88703, 5, }, // America/Bahia { 690, 7623, 88708, 15, }, // America/Bahia_Banderas { 690, 5654, 88723, 8, }, // America/Barbados { 690, 7646, 30526, 5, }, // America/Belem { 690, 5407, 88731, 6, }, // America/Belize - { 690, 7660, 225731, 12, }, // America/Blanc-Sablon + { 690, 7660, 225722, 12, }, // America/Blanc-Sablon { 690, 7681, 88750, 10, }, // America/Boa_Vista { 690, 4361, 88760, 6, }, // America/Bogota { 690, 7699, 88766, 5, }, // America/Boise - { 690, 7713, 225743, 12, }, // America/Cambridge_Bay - { 690, 7735, 225755, 16, }, // America/Campo_Grande - { 690, 3868, 225771, 8, }, // America/Cancun + { 690, 7713, 225734, 12, }, // America/Cambridge_Bay + { 690, 7735, 225746, 16, }, // America/Campo_Grande + { 690, 3868, 225762, 8, }, // America/Cancun { 690, 4694, 88805, 6, }, // America/Caracas { 690, 4345, 30609, 5, }, // America/Cayenne { 690, 5496, 138409, 7, }, // America/Cayman - { 690, 2260, 225779, 6, }, // America/Chicago + { 690, 2260, 225770, 6, }, // America/Chicago { 690, 7756, 88817, 8, }, // America/Chihuahua { 690, 5422, 88841, 11, }, // America/Costa_Rica { 690, 7796, 30642, 8, }, // America/Creston { 690, 3791, 88852, 7, }, // America/Cuiaba { 690, 5723, 88859, 7, }, // America/Curacao - { 690, 7812, 225785, 11, }, // America/Danmarkshavn + { 690, 7812, 225776, 11, }, // America/Danmarkshavn { 690, 7833, 88877, 4, }, // America/Dawson { 690, 7848, 88881, 10, }, // America/Dawson_Creek { 690, 805, 88891, 5, }, // America/Denver { 690, 3465, 88896, 8, }, // America/Detroit { 690, 5739, 88904, 8, }, // America/Dominica { 690, 893, 88912, 6, }, // America/Edmonton - { 690, 7869, 225796, 8, }, // America/Eirunepe + { 690, 7869, 225787, 8, }, // America/Eirunepe { 690, 5441, 88918, 11, }, // America/El_Salvador - { 690, 7886, 225804, 13, }, // America/Fort_Nelson - { 690, 7906, 225817, 12, }, // America/Fortaleza + { 690, 7886, 225795, 13, }, // America/Fort_Nelson + { 690, 7906, 225808, 12, }, // America/Fortaleza { 690, 7924, 30760, 8, }, // America/Glace_Bay { 690, 6881, 113910, 6, }, // America/Goose_Bay { 690, 4612, 88974, 11, }, // America/Grand_Turk @@ -50959,7 +50959,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 3760, 30806, 10, }, // America/Guatemala { 690, 4841, 88994, 9, }, // America/Guayaquil { 690, 6932, 89003, 5, }, // America/Guyana - { 690, 1939, 225829, 9, }, // America/Halifax + { 690, 1939, 225820, 9, }, // America/Halifax { 690, 2281, 89018, 5, }, // America/Havana { 690, 7942, 89023, 11, }, // America/Hermosillo { 690, 348, 89034, 13, }, // America/Indiana/Indianapolis @@ -50971,20 +50971,20 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 8060, 89131, 18, }, // America/Indiana/Vincennes { 690, 8086, 89149, 17, }, // America/Indiana/Winamac { 690, 8110, 30999, 6, }, // America/Inuvik - { 690, 660, 225838, 8, }, // America/Iqaluit + { 690, 660, 225829, 8, }, // America/Iqaluit { 690, 2799, 138734, 6, }, // America/Jamaica { 690, 5380, 89178, 7, }, // America/Juneau { 690, 521, 89185, 8, }, // America/Kentucky/Louisville { 690, 8125, 89193, 17, }, // America/Kentucky/Monticello - { 690, 5704, 225846, 13, }, // America/Kralendijk + { 690, 5704, 225837, 13, }, // America/Kralendijk { 690, 4376, 89222, 7, }, // America/La_Paz { 690, 7169, 31064, 4, }, // America/Lima { 690, 3239, 89229, 11, }, // America/Los_Angeles { 690, 5932, 89240, 22, }, // America/Lower_Princes { 690, 8153, 89262, 5, }, // America/Maceio { 690, 8168, 89267, 7, }, // America/Managua - { 690, 1908, 225859, 4, }, // America/Manaus - { 690, 5897, 225863, 7, }, // America/Marigot + { 690, 1908, 225850, 4, }, // America/Manaus + { 690, 5897, 225854, 7, }, // America/Marigot { 690, 5805, 89285, 9, }, // America/Martinique { 690, 8184, 89294, 9, }, // America/Matamoros { 690, 2917, 89303, 9, }, // America/Mazatlan @@ -51001,43 +51001,43 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 2379, 89392, 9, }, // America/New_York { 690, 8288, 89314, 3, }, // America/Nome { 690, 1850, 89401, 8, }, // America/Noronha - { 690, 8301, 225870, 19, }, // America/North_Dakota/Beulah - { 690, 8329, 225889, 18, }, // America/North_Dakota/Center - { 690, 8357, 225907, 23, }, // America/North_Dakota/New_Salem + { 690, 8301, 225861, 19, }, // America/North_Dakota/Beulah + { 690, 8329, 225880, 18, }, // America/North_Dakota/Center + { 690, 8357, 225898, 23, }, // America/North_Dakota/New_Salem { 690, 393, 89472, 3, }, // America/Nuuk - { 690, 8388, 225930, 9, }, // America/Ojinaga + { 690, 8388, 225921, 9, }, // America/Ojinaga { 690, 2356, 89484, 5, }, // America/Panama { 690, 6173, 89489, 10, }, // America/Paramaribo - { 690, 2973, 225939, 8, }, // America/Phoenix + { 690, 2973, 225930, 8, }, // America/Phoenix { 690, 3945, 89507, 14, }, // America/Port-au-Prince - { 690, 5954, 225947, 15, }, // America/Port_of_Spain + { 690, 5954, 225938, 15, }, // America/Port_of_Spain { 690, 8404, 89536, 13, }, // America/Porto_Velho { 690, 5843, 89549, 11, }, // America/Puerto_Rico { 690, 4030, 89560, 12, }, // America/Punta_Arenas { 690, 8424, 89572, 12, }, // America/Rankin_Inlet - { 690, 8445, 225962, 7, }, // America/Recife + { 690, 8445, 225953, 7, }, // America/Recife { 690, 1995, 31431, 6, }, // America/Regina { 690, 8460, 89591, 9, }, // America/Resolute { 690, 695, 89600, 12, }, // America/Rio_Branco - { 690, 8477, 225969, 9, }, // America/Santarem - { 690, 2201, 225978, 8, }, // America/Santiago + { 690, 8477, 225960, 9, }, // America/Santarem + { 690, 2201, 225969, 8, }, // America/Santiago { 690, 6111, 89629, 13, }, // America/Santo_Domingo { 690, 1878, 89642, 9, }, // America/Sao_Paulo { 690, 6899, 89651, 13, }, // America/Scoresbysund { 690, 8494, 89664, 6, }, // America/Sitka - { 690, 8508, 225986, 15, }, // America/St_Barthelemy + { 690, 8508, 225977, 15, }, // America/St_Barthelemy { 690, 2061, 114496, 10, }, // America/St_Johns { 690, 5863, 89694, 10, }, // America/St_Kitts { 690, 5880, 89704, 11, }, // America/St_Lucia - { 690, 855, 226001, 9, }, // America/St_Thomas + { 690, 855, 225992, 9, }, // America/St_Thomas { 690, 5913, 89724, 12, }, // America/St_Vincent - { 690, 8530, 226010, 13, }, // America/Swift_Current + { 690, 8530, 226001, 13, }, // America/Swift_Current { 690, 5461, 89749, 11, }, // America/Tegucigalpa { 690, 5756, 129890, 4, }, // America/Thule { 690, 313, 89766, 7, }, // America/Tijuana { 690, 608, 89773, 6, }, // America/Toronto { 690, 5688, 89779, 8, }, // America/Tortola - { 690, 2093, 226023, 10, }, // America/Vancouver + { 690, 2093, 226014, 10, }, // America/Vancouver { 690, 2144, 89794, 11, }, // America/Whitehorse { 690, 734, 89805, 7, }, // America/Winnipeg { 690, 8552, 89812, 7, }, // America/Yakutat @@ -51046,37 +51046,37 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 6133, 89824, 19, }, // Antarctica/DumontDUrville { 690, 8568, 89843, 7, }, // Antarctica/Macquarie { 690, 7066, 89850, 4, }, // Antarctica/Mawson - { 690, 7113, 226033, 11, }, // Antarctica/McMurdo + { 690, 7113, 226024, 11, }, // Antarctica/McMurdo { 690, 8589, 89863, 4, }, // Antarctica/Palmer { 690, 7226, 89867, 6, }, // Antarctica/Rothera { 690, 7295, 89873, 6, }, // Antarctica/Syowa { 690, 8607, 89879, 5, }, // Antarctica/Troll { 690, 7374, 89884, 7, }, // Antarctica/Vostok - { 690, 1429, 226044, 12, }, // Arctic/Longyearbyen + { 690, 1429, 226035, 12, }, // Arctic/Longyearbyen { 690, 5570, 89904, 4, }, // Asia/Aden { 690, 5395, 89908, 7, }, // Asia/Almaty { 690, 3968, 89915, 6, }, // Asia/Amman { 690, 5511, 89921, 6, }, // Asia/Anadyr { 690, 5523, 31778, 6, }, // Asia/Aqtau { 690, 5368, 114670, 7, }, // Asia/Aqtobe - { 690, 964, 226056, 8, }, // Asia/Ashgabat + { 690, 964, 226047, 8, }, // Asia/Ashgabat { 690, 8624, 89933, 5, }, // Asia/Atyrau { 690, 3607, 89938, 5, }, // Asia/Baghdad { 690, 5534, 89943, 5, }, // Asia/Bahrain { 690, 3653, 88857, 4, }, // Asia/Baku - { 690, 4466, 226064, 9, }, // Asia/Bangkok + { 690, 4466, 226055, 9, }, // Asia/Bangkok { 690, 3571, 89954, 6, }, // Asia/Barnaul { 690, 4086, 89960, 5, }, // Asia/Beirut - { 690, 3778, 226073, 7, }, // Asia/Bishkek - { 690, 5989, 226080, 8, }, // Asia/Brunei - { 690, 4601, 226088, 6, }, // Asia/Chita + { 690, 3778, 226064, 7, }, // Asia/Bishkek + { 690, 5989, 226071, 8, }, // Asia/Brunei + { 690, 4601, 226079, 6, }, // Asia/Chita { 690, 4511, 89978, 6, }, // Asia/Colombo { 690, 4540, 89984, 7, }, // Asia/Damascus { 690, 1093, 89991, 4, }, // Asia/Dhaka { 690, 6192, 89995, 4, }, // Asia/Dili - { 690, 3596, 226094, 5, }, // Asia/Dubai - { 690, 6159, 226099, 7, }, // Asia/Dushanbe - { 690, 8636, 226106, 11, }, // Asia/Famagusta + { 690, 3596, 226085, 5, }, // Asia/Dubai + { 690, 6159, 226090, 7, }, // Asia/Dushanbe + { 690, 8636, 226097, 11, }, // Asia/Famagusta { 690, 8651, 90021, 5, }, // Asia/Gaza { 690, 4795, 90026, 7, }, // Asia/Hebron { 690, 1259, 90033, 16, }, // Asia/Ho_Chi_Minh @@ -51085,12 +51085,12 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 4184, 90063, 10, }, // Asia/Irkutsk { 690, 7006, 90073, 7, }, // Asia/Jakarta { 690, 6992, 31943, 7, }, // Asia/Jayapura - { 690, 1290, 226117, 8, }, // Asia/Jerusalem + { 690, 1290, 226108, 8, }, // Asia/Jerusalem { 690, 3560, 90086, 5, }, // Asia/Kabul { 690, 4316, 90091, 7, }, // Asia/Kamchatka { 690, 4239, 31972, 5, }, // Asia/Karachi { 690, 1185, 90098, 8, }, // Asia/Kathmandu - { 690, 8661, 226125, 7, }, // Asia/Khandyga + { 690, 8661, 226116, 7, }, // Asia/Khandyga { 690, 992, 90113, 7, }, // Asia/Kolkata { 690, 4197, 90120, 15, }, // Asia/Krasnoyarsk { 690, 4859, 90135, 10, }, // Asia/Kuala_Lumpur @@ -51106,22 +51106,22 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 4135, 90184, 13, }, // Asia/Novosibirsk { 690, 4229, 90197, 6, }, // Asia/Omsk { 690, 7145, 90203, 3, }, // Asia/Oral - { 690, 6961, 226132, 10, }, // Asia/Phnom_Penh + { 690, 6961, 226123, 10, }, // Asia/Phnom_Penh { 690, 8693, 90215, 9, }, // Asia/Pontianak { 690, 4214, 90224, 10, }, // Asia/Pyongyang { 690, 5559, 90234, 3, }, // Asia/Qatar { 690, 8708, 90237, 8, }, // Asia/Qostanay - { 690, 4269, 226142, 10, }, // Asia/Qyzylorda + { 690, 4269, 226133, 10, }, // Asia/Qyzylorda { 690, 3584, 90256, 5, }, // Asia/Riyadh - { 690, 4408, 226152, 7, }, // Asia/Sakhalin + { 690, 4408, 226143, 7, }, // Asia/Sakhalin { 690, 7245, 90267, 6, }, // Asia/Samarkand { 690, 3279, 90273, 4, }, // Asia/Seoul - { 690, 1053, 226159, 6, }, // Asia/Shanghai + { 690, 1053, 226150, 6, }, // Asia/Shanghai { 690, 3300, 32190, 8, }, // Asia/Singapore { 690, 4297, 90282, 16, }, // Asia/Srednekolymsk - { 690, 3263, 226165, 8, }, // Asia/Taipei - { 690, 4781, 226173, 6, }, // Asia/Tashkent - { 690, 3915, 226179, 9, }, // Asia/Tbilisi + { 690, 3263, 226156, 8, }, // Asia/Taipei + { 690, 4781, 226164, 6, }, // Asia/Tashkent + { 690, 3915, 226170, 9, }, // Asia/Tbilisi { 690, 2772, 32236, 6, }, // Asia/Tehran { 690, 1317, 90317, 5, }, // Asia/Thimphu { 690, 2821, 90322, 6, }, // Asia/Tokyo @@ -51132,19 +51132,19 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 6977, 90360, 9, }, // Asia/Vientiane { 690, 4710, 90369, 13, }, // Asia/Vladivostok { 690, 4828, 32305, 9, }, // Asia/Yakutsk - { 690, 1235, 226188, 6, }, // Asia/Yangon + { 690, 1235, 226179, 6, }, // Asia/Yangon { 690, 3883, 90382, 13, }, // Asia/Yekaterinburg { 690, 3747, 90395, 7, }, // Asia/Yerevan { 690, 3663, 90402, 7, }, // Atlantic/Azores { 690, 5671, 90409, 6, }, // Atlantic/Bermuda - { 690, 6628, 226194, 8, }, // Atlantic/Canary + { 690, 6628, 226185, 8, }, // Atlantic/Canary { 690, 3727, 90421, 8, }, // Atlantic/Cape_Verde - { 690, 1395, 226202, 6, }, // Atlantic/Faroe + { 690, 1395, 226193, 6, }, // Atlantic/Faroe { 690, 8736, 90434, 5, }, // Atlantic/Madeira { 690, 2748, 90439, 9, }, // Atlantic/Reykjavik - { 690, 7272, 226208, 18, }, // Atlantic/South_Georgia + { 690, 7272, 226199, 18, }, // Atlantic/South_Georgia { 690, 6821, 90463, 11, }, // Atlantic/St_Helena - { 690, 6644, 226226, 9, }, // Atlantic/Stanley + { 690, 6644, 226217, 9, }, // Atlantic/Stanley { 690, 1670, 90481, 6, }, // Australia/Adelaide { 690, 1635, 90487, 8, }, // Australia/Brisbane { 690, 1799, 90495, 10, }, // Australia/Broken_Hill @@ -51158,8 +51158,8 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 1463, 32494, 5, }, // Australia/Sydney { 690, 6441, 90549, 10, }, // Europe/Amsterdam { 690, 6216, 90559, 6, }, // Europe/Andorra - { 690, 3620, 226235, 10, }, // Europe/Astrakhan - { 690, 2300, 226245, 6, }, // Europe/Athens + { 690, 3620, 226226, 10, }, // Europe/Astrakhan + { 690, 2300, 226236, 6, }, // Europe/Athens { 690, 6336, 32532, 8, }, // Europe/Belgrade { 690, 4757, 90580, 6, }, // Europe/Berlin { 690, 6488, 90586, 12, }, // Europe/Bratislava @@ -51173,7 +51173,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 6307, 90657, 10, }, // Europe/Gibraltar { 690, 8788, 90667, 6, }, // Europe/Guernsey { 690, 6612, 90673, 8, }, // Europe/Helsinki - { 690, 8804, 226251, 13, }, // Europe/Isle_of_Man + { 690, 8804, 226242, 13, }, // Europe/Isle_of_Man { 690, 1130, 90692, 9, }, // Europe/Istanbul { 690, 8823, 90701, 5, }, // Europe/Jersey { 690, 3979, 90706, 12, }, // Europe/Kaliningrad @@ -51199,9 +51199,9 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 6470, 90814, 10, }, // Europe/San_Marino { 690, 6245, 90824, 8, }, // Europe/Sarajevo { 690, 4451, 90832, 7, }, // Europe/Saratov - { 690, 8849, 226264, 12, }, // Europe/Simferopol - { 690, 6383, 226276, 8, }, // Europe/Skopje - { 690, 6599, 226284, 7, }, // Europe/Sofia + { 690, 8849, 226255, 12, }, // Europe/Simferopol + { 690, 6383, 226267, 8, }, // Europe/Skopje + { 690, 6599, 226275, 7, }, // Europe/Sofia { 690, 6523, 90866, 8, }, // Europe/Stockholm { 690, 8867, 90874, 5, }, // Europe/Tallinn { 690, 6202, 90879, 6, }, // Europe/Tirane @@ -51213,7 +51213,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 4727, 90922, 11, }, // Europe/Volgograd { 690, 3190, 90933, 5, }, // Europe/Warsaw { 690, 6261, 90938, 8, }, // Europe/Zagreb - { 690, 6540, 226291, 9, }, // Europe/Zurich + { 690, 6540, 226282, 9, }, // Europe/Zurich { 690, 5078, 90955, 11, }, // Indian/Antananarivo { 690, 6947, 115401, 5, }, // Indian/Chagos { 690, 6046, 90971, 7, }, // Indian/Christmas @@ -51222,38 +51222,38 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 6661, 90989, 7, }, // Indian/Kerguelen { 690, 7260, 32983, 4, }, // Indian/Mahe { 690, 7050, 90996, 6, }, // Indian/Maldives - { 690, 4069, 226300, 6, }, // Indian/Mauritius + { 690, 4069, 226291, 6, }, // Indian/Mauritius { 690, 5098, 91008, 8, }, // Indian/Mayotte { 690, 7211, 91016, 8, }, // Indian/Reunion { 690, 4422, 91024, 5, }, // Pacific/Apia - { 690, 932, 226306, 6, }, // Pacific/Auckland + { 690, 932, 226297, 6, }, // Pacific/Auckland { 690, 3706, 91035, 8, }, // Pacific/Bougainville - { 690, 3015, 226312, 6, }, // Pacific/Chatham + { 690, 3015, 226303, 6, }, // Pacific/Chatham { 690, 3157, 91047, 2, }, // Pacific/Chuuk - { 690, 2237, 226318, 6, }, // Pacific/Easter - { 690, 7360, 226324, 5, }, // Pacific/Efate - { 690, 7327, 226329, 9, }, // Pacific/Fakaofo - { 690, 3902, 226338, 5, }, // Pacific/Fiji - { 690, 7343, 226343, 12, }, // Pacific/Funafuti + { 690, 2237, 226309, 6, }, // Pacific/Easter + { 690, 7360, 226315, 5, }, // Pacific/Efate + { 690, 7327, 226320, 9, }, // Pacific/Fakaofo + { 690, 3902, 226329, 5, }, // Pacific/Fiji + { 690, 7343, 226334, 12, }, // Pacific/Funafuti { 690, 6678, 91085, 9, }, // Pacific/Galapagos - { 690, 6696, 226355, 9, }, // Pacific/Gambier + { 690, 6696, 226346, 9, }, // Pacific/Gambier { 690, 3822, 91101, 10, }, // Pacific/Guadalcanal { 690, 6018, 31112, 4, }, // Pacific/Guam - { 690, 3049, 226364, 5, }, // Pacific/Kanton + { 690, 3049, 226355, 5, }, // Pacific/Kanton { 690, 3998, 33132, 10, }, // Pacific/Kiritimati { 690, 7019, 91126, 6, }, // Pacific/Kosrae { 690, 2842, 91132, 10, }, // Pacific/Kwajalein { 690, 4877, 91142, 6, }, // Pacific/Majuro { 690, 4051, 91148, 8, }, // Pacific/Marquesas { 690, 8914, 91156, 5, }, // Pacific/Midway - { 690, 7084, 226369, 6, }, // Pacific/Nauru + { 690, 7084, 226360, 6, }, // Pacific/Nauru { 690, 7132, 91165, 4, }, // Pacific/Niue - { 690, 4168, 226375, 7, }, // Pacific/Norfolk - { 690, 7098, 226382, 6, }, // Pacific/Noumea + { 690, 4168, 226366, 7, }, // Pacific/Norfolk + { 690, 7098, 226373, 6, }, // Pacific/Noumea { 690, 3126, 91182, 9, }, // Pacific/Pago_Pago { 690, 7155, 91191, 4, }, // Pacific/Palau { 690, 7194, 137202, 8, }, // Pacific/Pitcairn - { 690, 3096, 226388, 7, }, // Pacific/Pohnpei + { 690, 3096, 226379, 7, }, // Pacific/Pohnpei { 690, 4807, 91201, 14, }, // Pacific/Port_Moresby { 690, 6076, 91215, 9, }, // Pacific/Rarotonga { 690, 6031, 91224, 6, }, // Pacific/Saipan @@ -51263,7 +51263,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 690, 7392, 33268, 3, }, // Pacific/Wake { 690, 7405, 33271, 5, }, // Pacific/Wallis { 691, 6788, 148234, 7, }, // Africa/Abidjan Kuvi/Odia/India - { 691, 6760, 226395, 5, }, // Africa/Accra + { 691, 6760, 226386, 5, }, // Africa/Accra { 691, 5059, 148246, 12, }, // Africa/Addis_Ababa { 691, 7420, 148258, 8, }, // Africa/Algiers { 691, 14, 148266, 5, }, // Africa/Asmara @@ -51272,217 +51272,217 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 691, 6746, 148284, 7, }, // Africa/Banjul { 691, 7435, 148291, 5, }, // Africa/Bissau { 691, 4957, 148296, 13, }, // Africa/Blantyre - { 691, 5287, 226400, 12, }, // Africa/Brazzaville - { 691, 4922, 226412, 10, }, // Africa/Bujumbura + { 691, 5287, 226391, 12, }, // Africa/Brazzaville + { 691, 4922, 226403, 10, }, // Africa/Bujumbura { 691, 2320, 148331, 4, }, // Africa/Cairo { 691, 4117, 148336, 12, }, // Africa/Casablanca { 691, 7449, 148348, 5, }, // Africa/Ceuta - { 691, 6773, 226422, 7, }, // Africa/Conakry + { 691, 6773, 226413, 7, }, // Africa/Conakry { 691, 6840, 148361, 4, }, // Africa/Dakar { 691, 5130, 148365, 15, }, // Africa/Dar_es_Salaam - { 691, 5043, 226429, 5, }, // Africa/Djibouti + { 691, 5043, 226420, 5, }, // Africa/Djibouti { 691, 5243, 148386, 4, }, // Africa/Douala { 691, 5166, 148390, 9, }, // Africa/El_Aaiun - { 691, 6853, 226434, 10, }, // Africa/Freetown - { 691, 4906, 226444, 8, }, // Africa/Gaborone + { 691, 6853, 226425, 10, }, // Africa/Freetown + { 691, 4906, 226435, 8, }, // Africa/Gaborone { 691, 5015, 148418, 5, }, // Africa/Harare - { 691, 4479, 226452, 10, }, // Africa/Johannesburg + { 691, 4479, 226443, 10, }, // Africa/Johannesburg { 691, 4499, 148434, 4, }, // Africa/Juba { 691, 5151, 148438, 8, }, // Africa/Kampala - { 691, 4524, 226462, 7, }, // Africa/Khartoum + { 691, 4524, 226453, 7, }, // Africa/Khartoum { 691, 4973, 148453, 6, }, // Africa/Kigali { 691, 5306, 148459, 8, }, // Africa/Kinshasa - { 691, 4744, 226469, 6, }, // Africa/Lagos - { 691, 5336, 226475, 12, }, // Africa/Libreville - { 691, 6869, 226487, 4, }, // Africa/Lome + { 691, 4744, 226460, 6, }, // Africa/Lagos + { 691, 5336, 226466, 12, }, // Africa/Libreville + { 691, 6869, 226478, 4, }, // Africa/Lome { 691, 5211, 148491, 7, }, // Africa/Luanda { 691, 4939, 148498, 10, }, // Africa/Lubumbashi { 691, 5001, 148508, 6, }, // Africa/Lusaka { 691, 5322, 148514, 5, }, // Africa/Malabo { 691, 4987, 148520, 6, }, // Africa/Maputo { 691, 5197, 148526, 6, }, // Africa/Maseru - { 691, 5182, 226491, 9, }, // Africa/Mbabane - { 691, 5113, 226500, 8, }, // Africa/Mogadishu - { 691, 7034, 226508, 7, }, // Africa/Monrovia - { 691, 3853, 226515, 6, }, // Africa/Nairobi + { 691, 5182, 226482, 9, }, // Africa/Mbabane + { 691, 5113, 226491, 8, }, // Africa/Mogadishu + { 691, 7034, 226499, 7, }, // Africa/Monrovia + { 691, 3853, 226506, 6, }, // Africa/Nairobi { 691, 5271, 148561, 6, }, // Africa/Ndjamena { 691, 5354, 148567, 5, }, // Africa/Niamey - { 691, 6803, 226521, 6, }, // Africa/Nouakchott - { 691, 6727, 226527, 6, }, // Africa/Ouagadougou - { 691, 5225, 226533, 7, }, // Africa/Porto-Novo - { 691, 4435, 226540, 7, }, // Africa/Sao_Tome - { 691, 2866, 226547, 7, }, // Africa/Tripoli + { 691, 6803, 226512, 6, }, // Africa/Nouakchott + { 691, 6727, 226518, 6, }, // Africa/Ouagadougou + { 691, 5225, 226524, 7, }, // Africa/Porto-Novo + { 691, 4435, 226531, 7, }, // Africa/Sao_Tome + { 691, 2866, 226538, 7, }, // Africa/Tripoli { 691, 6554, 148614, 7, }, // Africa/Tunis - { 691, 4152, 226554, 8, }, // Africa/Windhoek + { 691, 4152, 226545, 8, }, // Africa/Windhoek { 691, 132, 148631, 5, }, // America/Adak { 691, 3346, 148636, 8, }, // America/Anchorage { 691, 5607, 148644, 8, }, // America/Anguilla { 691, 5624, 148652, 8, }, // America/Antigua { 691, 4554, 148660, 8, }, // America/Araguaina - { 691, 166, 226562, 13, }, // America/Argentina/Buenos_Aires - { 691, 91, 226575, 10, }, // America/Argentina/Catamarca - { 691, 270, 226585, 6, }, // America/Argentina/Cordoba - { 691, 441, 226591, 5, }, // America/Argentina/Jujuy - { 691, 7462, 226596, 9, }, // America/Argentina/La_Rioja - { 691, 565, 226605, 7, }, // America/Argentina/Mendoza - { 691, 7489, 226612, 12, }, // America/Argentina/Rio_Gallegos - { 691, 7520, 226624, 6, }, // America/Argentina/Salta - { 691, 7544, 226630, 11, }, // America/Argentina/San_Juan - { 691, 5580, 226641, 9, }, // America/Argentina/San_Luis - { 691, 7571, 226650, 6, }, // America/Argentina/Tucuman - { 691, 7597, 226656, 7, }, // America/Argentina/Ushuaia - { 691, 5640, 226663, 5, }, // America/Aruba + { 691, 166, 226553, 13, }, // America/Argentina/Buenos_Aires + { 691, 91, 226566, 10, }, // America/Argentina/Catamarca + { 691, 270, 226576, 6, }, // America/Argentina/Cordoba + { 691, 441, 226582, 5, }, // America/Argentina/Jujuy + { 691, 7462, 226587, 9, }, // America/Argentina/La_Rioja + { 691, 565, 226596, 7, }, // America/Argentina/Mendoza + { 691, 7489, 226603, 12, }, // America/Argentina/Rio_Gallegos + { 691, 7520, 226615, 6, }, // America/Argentina/Salta + { 691, 7544, 226621, 11, }, // America/Argentina/San_Juan + { 691, 5580, 226632, 9, }, // America/Argentina/San_Luis + { 691, 7571, 226641, 6, }, // America/Argentina/Tucuman + { 691, 7597, 226647, 7, }, // America/Argentina/Ushuaia + { 691, 5640, 226654, 5, }, // America/Aruba { 691, 4252, 148781, 9, }, // America/Asuncion { 691, 237, 148790, 9, }, // America/Atikokan { 691, 3679, 148799, 5, }, // America/Bahia { 691, 7623, 148804, 18, }, // America/Bahia_Banderas - { 691, 5654, 226668, 7, }, // America/Barbados + { 691, 5654, 226659, 7, }, // America/Barbados { 691, 7646, 148832, 5, }, // America/Belem { 691, 5407, 148837, 6, }, // America/Belize - { 691, 7660, 226675, 14, }, // America/Blanc-Sablon - { 691, 7681, 226689, 10, }, // America/Boa_Vista - { 691, 4361, 226699, 4, }, // America/Bogota - { 691, 7699, 226703, 4, }, // America/Boise + { 691, 7660, 226666, 14, }, // America/Blanc-Sablon + { 691, 7681, 226680, 10, }, // America/Boa_Vista + { 691, 4361, 226690, 4, }, // America/Bogota + { 691, 7699, 226694, 4, }, // America/Boise { 691, 7713, 148879, 13, }, // America/Cambridge_Bay - { 691, 7735, 226707, 14, }, // America/Campo_Grande + { 691, 7735, 226698, 14, }, // America/Campo_Grande { 691, 3868, 148907, 7, }, // America/Cancun { 691, 4694, 148914, 8, }, // America/Caracas { 691, 4345, 148922, 8, }, // America/Cayenne { 691, 5496, 148930, 9, }, // America/Cayman - { 691, 2260, 226721, 5, }, // America/Chicago + { 691, 2260, 226712, 5, }, // America/Chicago { 691, 7756, 148945, 8, }, // America/Chihuahua - { 691, 5422, 226726, 10, }, // America/Costa_Rica - { 691, 7796, 226736, 9, }, // America/Creston + { 691, 5422, 226717, 10, }, // America/Costa_Rica + { 691, 7796, 226727, 9, }, // America/Creston { 691, 3791, 148989, 5, }, // America/Cuiaba { 691, 5723, 148994, 5, }, // America/Curacao { 691, 7812, 149000, 13, }, // America/Danmarkshavn { 691, 7833, 149013, 5, }, // America/Dawson { 691, 7848, 149018, 12, }, // America/Dawson_Creek - { 691, 805, 226745, 7, }, // America/Denver - { 691, 3465, 226752, 8, }, // America/Detroit - { 691, 5739, 226760, 7, }, // America/Dominica - { 691, 893, 226767, 9, }, // America/Edmonton + { 691, 805, 226736, 7, }, // America/Denver + { 691, 3465, 226743, 8, }, // America/Detroit + { 691, 5739, 226751, 7, }, // America/Dominica + { 691, 893, 226758, 9, }, // America/Edmonton { 691, 7869, 149063, 7, }, // America/Eirunepe - { 691, 5441, 226776, 13, }, // America/El_Salvador - { 691, 7886, 226789, 11, }, // America/Fort_Nelson - { 691, 7906, 226800, 8, }, // America/Fortaleza + { 691, 5441, 226767, 13, }, // America/El_Salvador + { 691, 7886, 226780, 11, }, // America/Fort_Nelson + { 691, 7906, 226791, 8, }, // America/Fortaleza { 691, 7924, 149106, 9, }, // America/Glace_Bay { 691, 6881, 149115, 7, }, // America/Goose_Bay { 691, 4612, 149122, 14, }, // America/Grand_Turk { 691, 5770, 149136, 8, }, // America/Grenada - { 691, 5786, 226808, 9, }, // America/Guadeloupe - { 691, 3760, 226817, 9, }, // America/Guatemala + { 691, 5786, 226799, 9, }, // America/Guadeloupe + { 691, 3760, 226808, 9, }, // America/Guatemala { 691, 4841, 149163, 9, }, // America/Guayaquil { 691, 6932, 149172, 5, }, // America/Guyana { 691, 1939, 149177, 12, }, // America/Halifax - { 691, 2281, 226826, 5, }, // America/Havana - { 691, 7942, 226831, 8, }, // America/Hermosillo - { 691, 348, 226839, 13, }, // America/Indiana/Indianapolis + { 691, 2281, 226817, 5, }, // America/Havana + { 691, 7942, 226822, 8, }, // America/Hermosillo + { 691, 348, 226830, 13, }, // America/Indiana/Indianapolis { 691, 481, 149218, 17, }, // America/Indiana/Knox - { 691, 7961, 226852, 16, }, // America/Indiana/Marengo + { 691, 7961, 226843, 16, }, // America/Indiana/Marengo { 691, 7985, 149252, 22, }, // America/Indiana/Petersburg { 691, 8012, 149274, 19, }, // America/Indiana/Tell_City - { 691, 8038, 226868, 15, }, // America/Indiana/Vevay + { 691, 8038, 226859, 15, }, // America/Indiana/Vevay { 691, 8060, 149308, 21, }, // America/Indiana/Vincennes { 691, 8086, 149329, 18, }, // America/Indiana/Winamac - { 691, 8110, 226883, 7, }, // America/Inuvik + { 691, 8110, 226874, 7, }, // America/Inuvik { 691, 660, 149354, 10, }, // America/Iqaluit { 691, 2799, 149364, 7, }, // America/Jamaica { 691, 5380, 149371, 6, }, // America/Juneau - { 691, 521, 226890, 10, }, // America/Kentucky/Louisville - { 691, 8125, 226900, 20, }, // America/Kentucky/Monticello - { 691, 5704, 226920, 13, }, // America/Kralendijk + { 691, 521, 226881, 10, }, // America/Kentucky/Louisville + { 691, 8125, 226891, 20, }, // America/Kentucky/Monticello + { 691, 5704, 226911, 13, }, // America/Kralendijk { 691, 4376, 149420, 6, }, // America/La_Paz { 691, 7169, 149428, 4, }, // America/Lima { 691, 3239, 149432, 13, }, // America/Los_Angeles { 691, 5932, 149445, 23, }, // America/Lower_Princes - { 691, 8153, 226933, 5, }, // America/Maceio + { 691, 8153, 226924, 5, }, // America/Maceio { 691, 8168, 149473, 7, }, // America/Managua { 691, 1908, 149480, 8, }, // America/Manaus - { 691, 5897, 226938, 7, }, // America/Marigot + { 691, 5897, 226929, 7, }, // America/Marigot { 691, 5805, 149496, 12, }, // America/Martinique - { 691, 8184, 226945, 8, }, // America/Matamoros - { 691, 2917, 226953, 9, }, // America/Mazatlan + { 691, 8184, 226936, 8, }, // America/Matamoros + { 691, 2917, 226944, 9, }, // America/Mazatlan { 691, 8202, 149527, 8, }, // America/Menominee { 691, 8220, 149535, 6, }, // America/Merida { 691, 8235, 149541, 10, }, // America/Metlakatla { 691, 2949, 149551, 13, }, // America/Mexico_City - { 691, 4391, 226962, 9, }, // America/Miquelon - { 691, 8254, 226971, 7, }, // America/Moncton - { 691, 8270, 226978, 7, }, // America/Monterrey - { 691, 4098, 226985, 10, }, // America/Montevideo - { 691, 5824, 226995, 10, }, // America/Montserrat + { 691, 4391, 226953, 9, }, // America/Miquelon + { 691, 8254, 226962, 7, }, // America/Moncton + { 691, 8270, 226969, 7, }, // America/Monterrey + { 691, 4098, 226976, 10, }, // America/Montevideo + { 691, 5824, 226986, 10, }, // America/Montserrat { 691, 5481, 149611, 5, }, // America/Nassau - { 691, 2379, 227005, 10, }, // America/New_York + { 691, 2379, 226996, 10, }, // America/New_York { 691, 8288, 149627, 4, }, // America/Nome - { 691, 1850, 227015, 5, }, // America/Noronha - { 691, 8301, 227020, 19, }, // America/North_Dakota/Beulah - { 691, 8329, 227039, 20, }, // America/North_Dakota/Center - { 691, 8357, 227059, 24, }, // America/North_Dakota/New_Salem + { 691, 1850, 227006, 5, }, // America/Noronha + { 691, 8301, 227011, 19, }, // America/North_Dakota/Beulah + { 691, 8329, 227030, 20, }, // America/North_Dakota/Center + { 691, 8357, 227050, 24, }, // America/North_Dakota/New_Salem { 691, 393, 149705, 5, }, // America/Nuuk - { 691, 8388, 227083, 7, }, // America/Ojinaga + { 691, 8388, 227074, 7, }, // America/Ojinaga { 691, 2356, 149717, 6, }, // America/Panama { 691, 6173, 149723, 9, }, // America/Paramaribo - { 691, 2973, 227090, 7, }, // America/Phoenix - { 691, 3945, 227097, 17, }, // America/Port-au-Prince - { 691, 5954, 227114, 16, }, // America/Port_of_Spain + { 691, 2973, 227081, 7, }, // America/Phoenix + { 691, 3945, 227088, 17, }, // America/Port-au-Prince + { 691, 5954, 227105, 16, }, // America/Port_of_Spain { 691, 8404, 149776, 11, }, // America/Porto_Velho - { 691, 5843, 227130, 10, }, // America/Puerto_Rico + { 691, 5843, 227121, 10, }, // America/Puerto_Rico { 691, 4030, 149799, 15, }, // America/Punta_Arenas { 691, 8424, 149814, 14, }, // America/Rankin_Inlet - { 691, 8445, 227140, 6, }, // America/Recife + { 691, 8445, 227131, 6, }, // America/Recife { 691, 1995, 149834, 6, }, // America/Regina { 691, 8460, 149840, 8, }, // America/Resolute - { 691, 695, 227146, 11, }, // America/Rio_Branco - { 691, 8477, 227157, 9, }, // America/Santarem + { 691, 695, 227137, 11, }, // America/Rio_Branco + { 691, 8477, 227148, 9, }, // America/Santarem { 691, 2201, 149871, 8, }, // America/Santiago - { 691, 6111, 227166, 12, }, // America/Santo_Domingo + { 691, 6111, 227157, 12, }, // America/Santo_Domingo { 691, 1878, 149895, 9, }, // America/Sao_Paulo - { 691, 6899, 227178, 14, }, // America/Scoresbysund + { 691, 6899, 227169, 14, }, // America/Scoresbysund { 691, 8494, 149921, 5, }, // America/Sitka - { 691, 8508, 227192, 16, }, // America/St_Barthelemy + { 691, 8508, 227183, 16, }, // America/St_Barthelemy { 691, 2061, 149944, 12, }, // America/St_Johns - { 691, 5863, 227208, 13, }, // America/St_Kitts + { 691, 5863, 227199, 13, }, // America/St_Kitts { 691, 5880, 149969, 13, }, // America/St_Lucia - { 691, 855, 227221, 13, }, // America/St_Thomas - { 691, 5913, 227234, 17, }, // America/St_Vincent + { 691, 855, 227212, 13, }, // America/St_Thomas + { 691, 5913, 227225, 17, }, // America/St_Vincent { 691, 8530, 150013, 15, }, // America/Swift_Current { 691, 5461, 150028, 11, }, // America/Tegucigalpa - { 691, 5756, 227251, 4, }, // America/Thule + { 691, 5756, 227242, 4, }, // America/Thule { 691, 313, 150043, 7, }, // America/Tijuana - { 691, 608, 227255, 5, }, // America/Toronto - { 691, 5688, 227260, 5, }, // America/Tortola - { 691, 2093, 227265, 9, }, // America/Vancouver + { 691, 608, 227246, 5, }, // America/Toronto + { 691, 5688, 227251, 5, }, // America/Tortola + { 691, 2093, 227256, 9, }, // America/Vancouver { 691, 2144, 150074, 11, }, // America/Whitehorse { 691, 734, 150085, 8, }, // America/Winnipeg { 691, 8552, 150093, 8, }, // America/Yakutat - { 691, 6001, 227274, 4, }, // Antarctica/Casey - { 691, 6094, 227278, 6, }, // Antarctica/Davis - { 691, 6133, 227284, 19, }, // Antarctica/DumontDUrville - { 691, 8568, 227303, 7, }, // Antarctica/Macquarie - { 691, 7066, 227310, 5, }, // Antarctica/Mawson - { 691, 7113, 227315, 10, }, // Antarctica/McMurdo - { 691, 8589, 227325, 5, }, // Antarctica/Palmer - { 691, 7226, 227330, 6, }, // Antarctica/Rothera + { 691, 6001, 227265, 4, }, // Antarctica/Casey + { 691, 6094, 227269, 6, }, // Antarctica/Davis + { 691, 6133, 227275, 19, }, // Antarctica/DumontDUrville + { 691, 8568, 227294, 7, }, // Antarctica/Macquarie + { 691, 7066, 227301, 5, }, // Antarctica/Mawson + { 691, 7113, 227306, 10, }, // Antarctica/McMurdo + { 691, 8589, 227316, 5, }, // Antarctica/Palmer + { 691, 7226, 227321, 6, }, // Antarctica/Rothera { 691, 7295, 150167, 4, }, // Antarctica/Syowa - { 691, 8607, 227336, 4, }, // Antarctica/Troll - { 691, 7374, 227340, 7, }, // Antarctica/Vostok - { 691, 1429, 227347, 10, }, // Arctic/Longyearbyen + { 691, 8607, 227327, 4, }, // Antarctica/Troll + { 691, 7374, 227331, 7, }, // Antarctica/Vostok + { 691, 1429, 227338, 10, }, // Arctic/Longyearbyen { 691, 5570, 150199, 6, }, // Asia/Aden { 691, 5395, 150205, 6, }, // Asia/Almaty { 691, 3968, 150211, 6, }, // Asia/Amman { 691, 5511, 150217, 8, }, // Asia/Anadyr { 691, 5523, 150225, 5, }, // Asia/Aqtau - { 691, 5368, 227357, 6, }, // Asia/Aqtobe - { 691, 964, 227363, 9, }, // Asia/Ashgabat + { 691, 5368, 227348, 6, }, // Asia/Aqtobe + { 691, 964, 227354, 9, }, // Asia/Ashgabat { 691, 8624, 150248, 6, }, // Asia/Atyrau { 691, 3607, 150254, 8, }, // Asia/Baghdad - { 691, 5534, 227372, 6, }, // Asia/Bahrain + { 691, 5534, 227363, 6, }, // Asia/Bahrain { 691, 3653, 148992, 4, }, // Asia/Baku { 691, 4466, 150270, 11, }, // Asia/Bangkok { 691, 3571, 150281, 8, }, // Asia/Barnaul { 691, 4086, 150289, 7, }, // Asia/Beirut - { 691, 3778, 227378, 8, }, // Asia/Bishkek + { 691, 3778, 227369, 8, }, // Asia/Bishkek { 691, 5989, 150304, 7, }, // Asia/Brunei { 691, 4601, 150311, 4, }, // Asia/Chita { 691, 4511, 150315, 6, }, // Asia/Colombo @@ -51490,24 +51490,24 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 691, 1093, 150849, 4, }, // Asia/Dhaka { 691, 6192, 150334, 6, }, // Asia/Dili { 691, 3596, 150340, 5, }, // Asia/Dubai - { 691, 6159, 227386, 7, }, // Asia/Dushanbe - { 691, 8636, 227393, 10, }, // Asia/Famagusta + { 691, 6159, 227377, 7, }, // Asia/Dushanbe + { 691, 8636, 227384, 10, }, // Asia/Famagusta { 691, 8651, 150362, 4, }, // Asia/Gaza { 691, 4795, 150366, 8, }, // Asia/Hebron - { 691, 1259, 227403, 15, }, // Asia/Ho_Chi_Minh + { 691, 1259, 227394, 15, }, // Asia/Ho_Chi_Minh { 691, 2704, 150390, 5, }, // Asia/Hong_Kong - { 691, 4771, 227418, 6, }, // Asia/Hovd + { 691, 4771, 227409, 6, }, // Asia/Hovd { 691, 4184, 150401, 8, }, // Asia/Irkutsk - { 691, 7006, 227424, 7, }, // Asia/Jakarta + { 691, 7006, 227415, 7, }, // Asia/Jakarta { 691, 6992, 150418, 6, }, // Asia/Jayapura { 691, 1290, 150424, 8, }, // Asia/Jerusalem - { 691, 3560, 227431, 5, }, // Asia/Kabul + { 691, 3560, 227422, 5, }, // Asia/Kabul { 691, 4316, 150437, 8, }, // Asia/Kamchatka { 691, 4239, 150445, 5, }, // Asia/Karachi - { 691, 1185, 227436, 9, }, // Asia/Kathmandu - { 691, 8661, 227445, 9, }, // Asia/Khandyga + { 691, 1185, 227427, 9, }, // Asia/Kathmandu + { 691, 8661, 227436, 9, }, // Asia/Khandyga { 691, 992, 150468, 7, }, // Asia/Kolkata - { 691, 4197, 227454, 12, }, // Asia/Krasnoyarsk + { 691, 4197, 227445, 12, }, // Asia/Krasnoyarsk { 691, 4859, 150488, 12, }, // Asia/Kuala_Lumpur { 691, 5976, 150500, 5, }, // Asia/Kuching { 691, 5547, 150505, 4, }, // Asia/Kuwait @@ -51516,83 +51516,83 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 691, 1349, 150522, 9, }, // Asia/Makassar { 691, 7182, 150531, 6, }, // Asia/Manila { 691, 6920, 150537, 8, }, // Asia/Muscat - { 691, 2554, 227466, 6, }, // Asia/Nicosia - { 691, 8675, 227472, 11, }, // Asia/Novokuznetsk - { 691, 4135, 227483, 10, }, // Asia/Novosibirsk + { 691, 2554, 227457, 6, }, // Asia/Nicosia + { 691, 8675, 227463, 11, }, // Asia/Novokuznetsk + { 691, 4135, 227474, 10, }, // Asia/Novosibirsk { 691, 4229, 150577, 5, }, // Asia/Omsk - { 691, 7145, 227493, 6, }, // Asia/Oral - { 691, 6961, 227499, 10, }, // Asia/Phnom_Penh - { 691, 8693, 227509, 11, }, // Asia/Pontianak + { 691, 7145, 227484, 6, }, // Asia/Oral + { 691, 6961, 227490, 10, }, // Asia/Phnom_Penh + { 691, 8693, 227500, 11, }, // Asia/Pontianak { 691, 4214, 150611, 11, }, // Asia/Pyongyang { 691, 5559, 150622, 5, }, // Asia/Qatar - { 691, 8708, 227520, 6, }, // Asia/Qostanay - { 691, 4269, 227526, 9, }, // Asia/Qyzylorda + { 691, 8708, 227511, 6, }, // Asia/Qostanay + { 691, 4269, 227517, 9, }, // Asia/Qyzylorda { 691, 3584, 150644, 4, }, // Asia/Riyadh - { 691, 4408, 227535, 7, }, // Asia/Sakhalin + { 691, 4408, 227526, 7, }, // Asia/Sakhalin { 691, 7245, 150655, 7, }, // Asia/Samarkand - { 691, 3279, 227542, 4, }, // Asia/Seoul - { 691, 1053, 227546, 5, }, // Asia/Shanghai + { 691, 3279, 227533, 4, }, // Asia/Seoul + { 691, 1053, 227537, 5, }, // Asia/Shanghai { 691, 3300, 150672, 11, }, // Asia/Singapore - { 691, 4297, 227551, 14, }, // Asia/Srednekolymsk + { 691, 4297, 227542, 14, }, // Asia/Srednekolymsk { 691, 3263, 150698, 6, }, // Asia/Taipei - { 691, 4781, 227565, 8, }, // Asia/Tashkent + { 691, 4781, 227556, 8, }, // Asia/Tashkent { 691, 3915, 150712, 8, }, // Asia/Tbilisi { 691, 2772, 150720, 8, }, // Asia/Tehran - { 691, 1317, 227573, 6, }, // Asia/Thimphu - { 691, 2821, 227579, 4, }, // Asia/Tokyo - { 691, 4572, 227583, 5, }, // Asia/Tomsk + { 691, 1317, 227564, 6, }, // Asia/Thimphu + { 691, 2821, 227570, 4, }, // Asia/Tokyo + { 691, 4572, 227574, 5, }, // Asia/Tomsk { 691, 1021, 150745, 12, }, // Asia/Ulaanbaatar { 691, 1159, 150757, 6, }, // Asia/Urumqi - { 691, 8722, 227588, 11, }, // Asia/Ust-Nera - { 691, 6977, 227599, 11, }, // Asia/Vientiane - { 691, 4710, 227610, 13, }, // Asia/Vladivostok + { 691, 8722, 227579, 11, }, // Asia/Ust-Nera + { 691, 6977, 227590, 11, }, // Asia/Vientiane + { 691, 4710, 227601, 13, }, // Asia/Vladivostok { 691, 4828, 150798, 8, }, // Asia/Yakutsk { 691, 1235, 150806, 9, }, // Asia/Yangon { 691, 3883, 150815, 14, }, // Asia/Yekaterinburg - { 691, 3747, 227623, 8, }, // Asia/Yerevan - { 691, 3663, 227631, 6, }, // Atlantic/Azores - { 691, 5671, 227637, 6, }, // Atlantic/Bermuda + { 691, 3747, 227614, 8, }, // Asia/Yerevan + { 691, 3663, 227622, 6, }, // Atlantic/Azores + { 691, 5671, 227628, 6, }, // Atlantic/Bermuda { 691, 6628, 150851, 6, }, // Atlantic/Canary - { 691, 3727, 227643, 11, }, // Atlantic/Cape_Verde - { 691, 1395, 227654, 3, }, // Atlantic/Faroe + { 691, 3727, 227634, 11, }, // Atlantic/Cape_Verde + { 691, 1395, 227645, 3, }, // Atlantic/Faroe { 691, 8736, 150873, 7, }, // Atlantic/Madeira - { 691, 2748, 227657, 9, }, // Atlantic/Reykjavik + { 691, 2748, 227648, 9, }, // Atlantic/Reykjavik { 691, 7272, 150890, 13, }, // Atlantic/South_Georgia { 691, 6821, 150903, 14, }, // Atlantic/St_Helena - { 691, 6644, 227666, 8, }, // Atlantic/Stanley - { 691, 1670, 227674, 7, }, // Australia/Adelaide - { 691, 1635, 227681, 8, }, // Australia/Brisbane - { 691, 1799, 227689, 10, }, // Australia/Broken_Hill - { 691, 1583, 227699, 8, }, // Australia/Darwin + { 691, 6644, 227657, 8, }, // Atlantic/Stanley + { 691, 1670, 227665, 7, }, // Australia/Adelaide + { 691, 1635, 227672, 8, }, // Australia/Brisbane + { 691, 1799, 227680, 10, }, // Australia/Broken_Hill + { 691, 1583, 227690, 8, }, // Australia/Darwin { 691, 3637, 150965, 5, }, // Australia/Eucla { 691, 1516, 150970, 7, }, // Australia/Hobart - { 691, 8753, 227707, 9, }, // Australia/Lindeman - { 691, 1547, 227716, 10, }, // Australia/Lord_Howe - { 691, 1727, 227726, 7, }, // Australia/Melbourne - { 691, 1762, 227733, 4, }, // Australia/Perth + { 691, 8753, 227698, 9, }, // Australia/Lindeman + { 691, 1547, 227707, 10, }, // Australia/Lord_Howe + { 691, 1727, 227717, 7, }, // Australia/Melbourne + { 691, 1762, 227724, 4, }, // Australia/Perth { 691, 1463, 151017, 5, }, // Australia/Sydney - { 691, 6441, 227737, 12, }, // Europe/Amsterdam - { 691, 6216, 227749, 6, }, // Europe/Andorra - { 691, 3620, 227755, 10, }, // Europe/Astrakhan - { 691, 2300, 227765, 6, }, // Europe/Athens - { 691, 6336, 227771, 9, }, // Europe/Belgrade + { 691, 6441, 227728, 12, }, // Europe/Amsterdam + { 691, 6216, 227740, 6, }, // Europe/Andorra + { 691, 3620, 227746, 10, }, // Europe/Astrakhan + { 691, 2300, 227756, 6, }, // Europe/Athens + { 691, 6336, 227762, 9, }, // Europe/Belgrade { 691, 4757, 151065, 7, }, // Europe/Berlin - { 691, 6488, 227780, 11, }, // Europe/Bratislava - { 691, 2167, 227791, 10, }, // Europe/Brussels - { 691, 3928, 227801, 9, }, // Europe/Bucharest - { 691, 3806, 227810, 9, }, // Europe/Budapest + { 691, 6488, 227771, 11, }, // Europe/Bratislava + { 691, 2167, 227782, 10, }, // Europe/Brussels + { 691, 3928, 227792, 9, }, // Europe/Bucharest + { 691, 3806, 227801, 9, }, // Europe/Budapest { 691, 8772, 151111, 9, }, // Europe/Busingen - { 691, 2583, 227819, 7, }, // Europe/Chisinau - { 691, 6289, 227826, 10, }, // Europe/Copenhagen + { 691, 2583, 227810, 7, }, // Europe/Chisinau + { 691, 6289, 227817, 10, }, // Europe/Copenhagen { 691, 2338, 151137, 6, }, // Europe/Dublin { 691, 6307, 151143, 11, }, // Europe/Gibraltar { 691, 8788, 151154, 7, }, // Europe/Guernsey { 691, 6612, 151161, 8, }, // Europe/Helsinki - { 691, 8804, 227836, 15, }, // Europe/Isle_of_Man + { 691, 8804, 227827, 15, }, // Europe/Isle_of_Man { 691, 1130, 151182, 9, }, // Europe/Istanbul { 691, 8823, 151191, 5, }, // Europe/Jersey { 691, 3979, 151196, 13, }, // Europe/Kaliningrad - { 691, 8929, 227851, 4, }, // Europe/Kirov + { 691, 8929, 227842, 4, }, // Europe/Kirov { 691, 2527, 151214, 5, }, // Europe/Kyiv { 691, 3213, 151219, 7, }, // Europe/Lisbon { 691, 6506, 151226, 10, }, // Europe/Ljubljana @@ -51600,61 +51600,61 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 691, 6365, 151242, 9, }, // Europe/Luxembourg { 691, 4892, 151251, 8, }, // Europe/Madrid { 691, 6397, 151259, 5, }, // Europe/Malta - { 691, 6582, 227855, 9, }, // Europe/Mariehamn + { 691, 6582, 227846, 9, }, // Europe/Mariehamn { 691, 3693, 151274, 6, }, // Europe/Minsk - { 691, 6410, 227864, 4, }, // Europe/Monaco + { 691, 6410, 227855, 4, }, // Europe/Monaco { 691, 3537, 150537, 4, }, // Europe/Moscow - { 691, 6458, 227868, 4, }, // Europe/Oslo + { 691, 6458, 227859, 4, }, // Europe/Oslo { 691, 4284, 151295, 6, }, // Europe/Paris - { 691, 6424, 227872, 7, }, // Europe/Podgorica + { 691, 6424, 227863, 7, }, // Europe/Podgorica { 691, 6275, 151310, 6, }, // Europe/Prague { 691, 8837, 151316, 4, }, // Europe/Riga - { 691, 6324, 227879, 3, }, // Europe/Rome + { 691, 6324, 227870, 3, }, // Europe/Rome { 691, 4331, 151324, 6, }, // Europe/Samara { 691, 6470, 151330, 11, }, // Europe/San_Marino - { 691, 6245, 227882, 7, }, // Europe/Sarajevo - { 691, 4451, 227889, 7, }, // Europe/Saratov - { 691, 8849, 227896, 9, }, // Europe/Simferopol - { 691, 6383, 227905, 6, }, // Europe/Skopje - { 691, 6599, 227911, 5, }, // Europe/Sofia - { 691, 6523, 227916, 10, }, // Europe/Stockholm + { 691, 6245, 227873, 7, }, // Europe/Sarajevo + { 691, 4451, 227880, 7, }, // Europe/Saratov + { 691, 8849, 227887, 9, }, // Europe/Simferopol + { 691, 6383, 227896, 6, }, // Europe/Skopje + { 691, 6599, 227902, 5, }, // Europe/Sofia + { 691, 6523, 227907, 10, }, // Europe/Stockholm { 691, 8867, 151389, 7, }, // Europe/Tallinn - { 691, 6202, 227926, 7, }, // Europe/Tirane - { 691, 8882, 227933, 10, }, // Europe/Ulyanovsk - { 691, 6352, 227943, 5, }, // Europe/Vaduz - { 691, 6567, 227948, 8, }, // Europe/Vatican - { 691, 6231, 227956, 5, }, // Europe/Vienna - { 691, 8899, 227961, 8, }, // Europe/Vilnius - { 691, 4727, 227969, 9, }, // Europe/Volgograd + { 691, 6202, 227917, 7, }, // Europe/Tirane + { 691, 8882, 227924, 10, }, // Europe/Ulyanovsk + { 691, 6352, 227934, 5, }, // Europe/Vaduz + { 691, 6567, 227939, 8, }, // Europe/Vatican + { 691, 6231, 227947, 5, }, // Europe/Vienna + { 691, 8899, 227952, 8, }, // Europe/Vilnius + { 691, 4727, 227960, 9, }, // Europe/Volgograd { 691, 3190, 151450, 6, }, // Europe/Warsaw { 691, 6261, 151456, 8, }, // Europe/Zagreb { 691, 6540, 151464, 6, }, // Europe/Zurich { 691, 5078, 151470, 12, }, // Indian/Antananarivo { 691, 6947, 151483, 7, }, // Indian/Chagos - { 691, 6046, 227978, 12, }, // Indian/Christmas - { 691, 6063, 227990, 5, }, // Indian/Cocos - { 691, 5029, 227995, 3, }, // Indian/Comoro - { 691, 6661, 227998, 8, }, // Indian/Kerguelen + { 691, 6046, 227969, 12, }, // Indian/Christmas + { 691, 6063, 227981, 5, }, // Indian/Cocos + { 691, 5029, 227986, 3, }, // Indian/Comoro + { 691, 6661, 227989, 8, }, // Indian/Kerguelen { 691, 7260, 151522, 4, }, // Indian/Mahe { 691, 7050, 151526, 8, }, // Indian/Maldives - { 691, 4069, 228006, 6, }, // Indian/Mauritius - { 691, 5098, 228012, 5, }, // Indian/Mayotte + { 691, 4069, 227997, 6, }, // Indian/Mauritius + { 691, 5098, 228003, 5, }, // Indian/Mayotte { 691, 7211, 151547, 10, }, // Indian/Reunion { 691, 4422, 151557, 4, }, // Pacific/Apia { 691, 932, 151561, 7, }, // Pacific/Auckland - { 691, 3706, 228017, 12, }, // Pacific/Bougainville - { 691, 3015, 228029, 7, }, // Pacific/Chatham + { 691, 3706, 228008, 12, }, // Pacific/Bougainville + { 691, 3015, 228020, 7, }, // Pacific/Chatham { 691, 3157, 151588, 5, }, // Pacific/Chuuk { 691, 2237, 151593, 7, }, // Pacific/Easter { 691, 7360, 151600, 6, }, // Pacific/Efate - { 691, 7327, 228036, 5, }, // Pacific/Fakaofo - { 691, 3902, 228041, 4, }, // Pacific/Fiji + { 691, 7327, 228027, 5, }, // Pacific/Fakaofo + { 691, 3902, 228032, 4, }, // Pacific/Fiji { 691, 7343, 151617, 8, }, // Pacific/Funafuti - { 691, 6678, 228045, 8, }, // Pacific/Galapagos + { 691, 6678, 228036, 8, }, // Pacific/Galapagos { 691, 6696, 151634, 10, }, // Pacific/Gambier { 691, 3822, 151644, 11, }, // Pacific/Guadalcanal { 691, 6018, 149477, 4, }, // Pacific/Guam - { 691, 3049, 228053, 6, }, // Pacific/Kanton + { 691, 3049, 228044, 6, }, // Pacific/Kanton { 691, 3998, 151673, 10, }, // Pacific/Kiritimati { 691, 7019, 151683, 6, }, // Pacific/Kosrae { 691, 2842, 151689, 11, }, // Pacific/Kwajalein @@ -51663,18 +51663,18 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 691, 8914, 151719, 7, }, // Pacific/Midway { 691, 7084, 151726, 5, }, // Pacific/Nauru { 691, 7132, 151731, 4, }, // Pacific/Niue - { 691, 4168, 228059, 6, }, // Pacific/Norfolk - { 691, 7098, 228065, 5, }, // Pacific/Noumea + { 691, 4168, 228050, 6, }, // Pacific/Norfolk + { 691, 7098, 228056, 5, }, // Pacific/Noumea { 691, 3126, 151747, 9, }, // Pacific/Pago_Pago { 691, 7155, 151756, 5, }, // Pacific/Palau { 691, 7194, 151761, 10, }, // Pacific/Pitcairn - { 691, 3096, 228070, 6, }, // Pacific/Pohnpei - { 691, 4807, 228076, 13, }, // Pacific/Port_Moresby - { 691, 6076, 228089, 8, }, // Pacific/Rarotonga + { 691, 3096, 228061, 6, }, // Pacific/Pohnpei + { 691, 4807, 228067, 13, }, // Pacific/Port_Moresby + { 691, 6076, 228080, 8, }, // Pacific/Rarotonga { 691, 6031, 151803, 7, }, // Pacific/Saipan { 691, 7312, 151810, 6, }, // Pacific/Tahiti { 691, 6712, 151816, 5, }, // Pacific/Tarawa - { 691, 4583, 228097, 9, }, // Pacific/Tongatapu + { 691, 4583, 228088, 9, }, // Pacific/Tongatapu { 691, 7392, 151831, 4, }, // Pacific/Wake { 691, 7405, 151835, 7, }, // Pacific/Wallis { 692, 6788, 186476, 9, }, // Africa/Abidjan Kuvi/Telugu/India @@ -51731,7 +51731,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 692, 4152, 186868, 9, }, // Africa/Windhoek { 692, 132, 186877, 5, }, // America/Adak { 692, 3346, 186882, 8, }, // America/Anchorage - { 692, 5607, 228106, 10, }, // America/Anguilla + { 692, 5607, 228097, 10, }, // America/Anguilla { 692, 5624, 186900, 8, }, // America/Antigua { 692, 4554, 186908, 11, }, // America/Araguaina { 692, 166, 186919, 16, }, // America/Argentina/Buenos_Aires @@ -51975,7 +51975,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 692, 7272, 189115, 15, }, // Atlantic/South_Georgia { 692, 6821, 189130, 14, }, // Atlantic/St_Helena { 692, 6644, 189144, 8, }, // Atlantic/Stanley - { 692, 1670, 228116, 36, }, // Australia/Adelaide + { 692, 1670, 228107, 36, }, // Australia/Adelaide { 692, 1635, 189159, 13, }, // Australia/Brisbane { 692, 1799, 189172, 13, }, // Australia/Broken_Hill { 692, 1583, 189185, 8, }, // Australia/Darwin @@ -52069,7 +52069,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 692, 6696, 189891, 9, }, // Pacific/Gambier { 692, 3822, 189900, 13, }, // Pacific/Guadalcanal { 692, 6018, 189913, 6, }, // Pacific/Guam - { 692, 3049, 228152, 6, }, // Pacific/Kanton + { 692, 3049, 228143, 6, }, // Pacific/Kanton { 692, 3998, 189936, 10, }, // Pacific/Kiritimati { 692, 7019, 189946, 6, }, // Pacific/Kosrae { 692, 2842, 189952, 10, }, // Pacific/Kwajalein @@ -52137,12 +52137,12 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 695, 14, 0, 6, }, // Africa/Asmara Swampy Cree/Canadian Aboriginal/Canada { 695, 4435, 6, 8, }, // Africa/Sao_Tome { 695, 4252, 14, 8, }, // America/Asuncion - { 695, 237, 228158, 6, }, // America/Atikokan + { 695, 237, 228149, 6, }, // America/Atikokan { 695, 7623, 30, 17, }, // America/Bahia_Banderas { 695, 3868, 47, 6, }, // America/Cancun { 695, 7774, 53, 13, }, // America/Ciudad_Juarez { 695, 5723, 66, 7, }, // America/Curacao - { 695, 893, 228164, 6, }, // America/Edmonton + { 695, 893, 228155, 6, }, // America/Edmonton { 695, 481, 73, 13, }, // America/Indiana/Knox { 695, 7961, 86, 16, }, // America/Indiana/Marengo { 695, 7985, 102, 19, }, // America/Indiana/Petersburg @@ -52150,8 +52150,8 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 695, 8038, 139, 14, }, // America/Indiana/Vevay { 695, 8060, 153, 18, }, // America/Indiana/Vincennes { 695, 8086, 171, 16, }, // America/Indiana/Winamac - { 695, 8110, 228170, 4, }, // America/Inuvik - { 695, 660, 228174, 6, }, // America/Iqaluit + { 695, 8110, 228161, 4, }, // America/Inuvik + { 695, 660, 228165, 6, }, // America/Iqaluit { 695, 8125, 187, 20, }, // America/Kentucky/Monticello { 695, 5932, 207, 22, }, // America/Lower_Princes { 695, 8220, 229, 6, }, // America/Merida @@ -52167,8 +52167,8 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 695, 5880, 370, 9, }, // America/St_Lucia { 695, 855, 379, 10, }, // America/St_Thomas { 695, 5913, 389, 11, }, // America/St_Vincent - { 695, 8530, 228180, 7, }, // America/Swift_Current - { 695, 734, 228187, 4, }, // America/Winnipeg + { 695, 8530, 228171, 7, }, // America/Swift_Current + { 695, 734, 228178, 4, }, // America/Winnipeg { 695, 6133, 400, 16, }, // Antarctica/DumontDUrville { 695, 1259, 432, 11, }, // Asia/Ho_Chi_Minh { 695, 1185, 448, 9, }, // Asia/Kathmandu @@ -102034,603 +102034,603 @@ static inline constexpr char16_t exemplarCityTable[] = { 0x62, 0x69, 0x69, 0x52, 0x61, 0x72, 0x6f, 0x74, 0x254, 0x14b, 0x67, 0x61, 0x53, 0x61, 0x269, 0x70, 0x61, 0x6e, 0x54, 0x61, 0x72, 0x61, 0x77, 0x61, 0x61, 0x54, 0x254, 0x14b, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x75, 0x57, -0x65, 0x65, 0x6b, 0x905, 0x932, 0x20, 0x906, 0x907, 0x92f, 0x942, 0x928, 0x3c, -0x92e, 0x91c, 0x93c, 0x93e, 0x91f, 0x932, 0x93e, 0x928, 0x921, 0x92c, 0x908, 0x915, -0x93e, 0x92c, 0x932, 0x926, 0x916, 0x923, 0x940, 0x20, 0x91c, 0x949, 0x930, 0x94d, -0x91c, 0x93f, 0x92f, 0x93e, 0x90f, 0x92e, 0x94d, 0x938, 0x94d, 0x91f, 0x930, 0x921, -0x92e, 0x92a, 0x948, 0x930, 0x938, 0x915, 0x94d, 0x930, 0x93f, 0x938, 0x92e, 0x93f, -0x938, 0x915, 0x948, 0x902, 0x91f, 0x928, 0x92a, 0x93e, 0x917, 0x94b, 0x20, 0x917, -0x902, 0x917, 0x94b, 0x41, 0x6c, 0x6a, 0x65, 0x72, 0x69, 0x41, 0x7a, 0x6d, -0x61, 0x72, 0x61, 0x42, 0x61, 0x6e, 0x67, 0x68, 0xec, 0x42, 0x69, 0x73, -0xe0, 0x6f, 0x42, 0x75, 0x6a, 0x75, 0x6e, 0x62, 0x75, 0x72, 0x61, 0x43, -0x61, 0x7a, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x61, 0x4b, 0x61, 0x6e, -0x70, 0x61, 0x6c, 0x61, 0x4c, 0x75, 0x62, 0x75, 0x6e, 0x62, 0x61, 0x73, -0x68, 0x69, 0x4d, 0x61, 0x7a, 0x65, 0x72, 0x75, 0x4e, 0x62, 0x61, 0x62, -0x61, 0x6e, 0x65, 0x4d, 0x6f, 0x67, 0x61, 0x64, 0x69, 0x73, 0x6f, 0x55, -0x61, 0x67, 0x61, 0x64, 0x75, 0x67, 0xf9, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, -0x20, 0x53, 0x2e, 0x20, 0x54, 0x6f, 0x6d, 0x61, 0x7a, 0x6f, 0x54, 0xf9, -0x6e, 0x65, 0x7a, 0x69, 0x43, 0xf2, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x52, -0x69, 0x6f, 0x20, 0x47, 0xe0, 0x6c, 0x65, 0x67, 0x6f, 0x73, 0x42, 0x61, -0x69, 0x61, 0x20, 0x64, 0x65, 0x20, 0x42, 0x61, 0x6e, 0x64, 0x65, 0x72, -0x61, 0x73, 0x43, 0x61, 0x6e, 0x70, 0x6f, 0x20, 0x47, 0x72, 0x61, 0x6e, -0x64, 0x65, 0x43, 0x75, 0x69, 0x61, 0x62, 0xe0, 0x44, 0xe8, 0x6e, 0x76, -0x65, 0x72, 0x44, 0x6f, 0x6d, 0xe9, 0x6e, 0x65, 0x67, 0x61, 0x49, 0x6e, -0x64, 0x69, 0x61, 0x6e, 0xe0, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x4b, 0x6e, -0x6f, 0x78, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x29, -0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x28, 0x49, 0x6e, 0x64, -0x69, 0x61, 0x6e, 0x61, 0x29, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x62, -0x75, 0x72, 0x67, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, -0x29, 0x54, 0x65, 0x6c, 0x6c, 0x20, 0x43, 0x69, 0x74, 0x79, 0x20, 0x28, -0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x29, 0x56, 0x65, 0x76, 0x61, +0x65, 0x65, 0x6b, 0x92e, 0x91c, 0x93c, 0x93e, 0x91f, 0x932, 0x93e, 0x928, 0x921, +0x92c, 0x908, 0x915, 0x93e, 0x92c, 0x932, 0x926, 0x916, 0x923, 0x940, 0x20, 0x91c, +0x949, 0x930, 0x94d, 0x91c, 0x93f, 0x92f, 0x93e, 0x90f, 0x92e, 0x94d, 0x938, 0x94d, +0x91f, 0x930, 0x921, 0x92e, 0x92a, 0x948, 0x930, 0x938, 0x915, 0x94d, 0x930, 0x93f, +0x938, 0x92e, 0x93f, 0x938, 0x915, 0x948, 0x902, 0x91f, 0x928, 0x92a, 0x93e, 0x917, +0x94b, 0x20, 0x917, 0x902, 0x917, 0x94b, 0x41, 0x6c, 0x6a, 0x65, 0x72, 0x69, +0x41, 0x7a, 0x6d, 0x61, 0x72, 0x61, 0x42, 0x61, 0x6e, 0x67, 0x68, 0xec, +0x42, 0x69, 0x73, 0xe0, 0x6f, 0x42, 0x75, 0x6a, 0x75, 0x6e, 0x62, 0x75, +0x72, 0x61, 0x43, 0x61, 0x7a, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x61, +0x4b, 0x61, 0x6e, 0x70, 0x61, 0x6c, 0x61, 0x4c, 0x75, 0x62, 0x75, 0x6e, +0x62, 0x61, 0x73, 0x68, 0x69, 0x4d, 0x61, 0x7a, 0x65, 0x72, 0x75, 0x4e, +0x62, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x4d, 0x6f, 0x67, 0x61, 0x64, 0x69, +0x73, 0x6f, 0x55, 0x61, 0x67, 0x61, 0x64, 0x75, 0x67, 0xf9, 0xcc, 0x7a, +0x6f, 0x6c, 0x61, 0x20, 0x53, 0x2e, 0x20, 0x54, 0x6f, 0x6d, 0x61, 0x7a, +0x6f, 0x54, 0xf9, 0x6e, 0x65, 0x7a, 0x69, 0x43, 0xf2, 0x72, 0x64, 0x6f, +0x62, 0x61, 0x52, 0x69, 0x6f, 0x20, 0x47, 0xe0, 0x6c, 0x65, 0x67, 0x6f, +0x73, 0x42, 0x61, 0x69, 0x61, 0x20, 0x64, 0x65, 0x20, 0x42, 0x61, 0x6e, +0x64, 0x65, 0x72, 0x61, 0x73, 0x43, 0x61, 0x6e, 0x70, 0x6f, 0x20, 0x47, +0x72, 0x61, 0x6e, 0x64, 0x65, 0x43, 0x75, 0x69, 0x61, 0x62, 0xe0, 0x44, +0xe8, 0x6e, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0xe9, 0x6e, 0x65, 0x67, +0x61, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0xe0, 0x70, 0x6f, 0x6c, 0x69, +0x73, 0x4b, 0x6e, 0x6f, 0x78, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, +0x6e, 0x61, 0x29, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x28, +0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x29, 0x50, 0x65, 0x74, 0x65, +0x72, 0x73, 0x62, 0x75, 0x72, 0x67, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, +0x61, 0x6e, 0x61, 0x29, 0x54, 0x65, 0x6c, 0x6c, 0x20, 0x43, 0x69, 0x74, 0x79, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x29, 0x56, -0x69, 0x6e, 0x63, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x20, 0x28, 0x49, 0x6e, -0x64, 0x69, 0x61, 0x6e, 0x61, 0x29, 0x57, 0x69, 0x6e, 0x61, 0x6d, 0x61, -0x63, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x29, 0x4a, -0x61, 0x6d, 0xe0, 0x65, 0x67, 0x61, 0x4d, 0x6f, 0x6e, 0x74, 0x69, 0x63, -0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x28, 0x4b, 0x65, 0x6e, 0x74, 0x75, 0x63, -0x6b, 0x79, 0x29, 0x4c, 0x6f, 0x73, 0x20, 0xc0, 0x6e, 0x67, 0x65, 0x6c, -0x65, 0x73, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x67, 0x61, 0x53, -0x69, 0x74, 0xe0, 0x20, 0x64, 0x65, 0x2019, 0x6c, 0x20, 0x4d, 0xe8, 0x73, -0x65, 0x67, 0x6f, 0x4d, 0x69, 0x63, 0x68, 0x65, 0x6c, 0x6f, 0x6e, 0x42, -0x65, 0x75, 0x6c, 0x61, 0x68, 0x20, 0x28, 0x4e, 0x6f, 0x72, 0x64, 0x20, -0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x29, 0x43, 0x65, 0x6e, 0x74, 0x65, -0x72, 0x20, 0x28, 0x4e, 0x6f, 0x72, 0x64, 0x20, 0x44, 0x61, 0x6b, 0x6f, -0x74, 0x61, 0x29, 0x4e, 0x65, 0x77, 0x20, 0x53, 0x61, 0x6c, 0x65, 0x6d, -0x20, 0x28, 0x4e, 0x6f, 0x72, 0x64, 0x20, 0x44, 0x61, 0x6b, 0x6f, 0x74, -0x61, 0x29, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x20, 0x50, 0x72, 0xec, 0x6e, -0x73, 0x69, 0x70, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x20, 0x64, 0x65, -0x20, 0x53, 0x70, 0x61, 0x67, 0x6e, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x50, -0x6f, 0x6c, 0x6f, 0x53, 0x2e, 0x20, 0x42, 0x61, 0x72, 0x74, 0x6f, 0x6c, -0x6f, 0x6d, 0xe8, 0x6f, 0x53, 0x2e, 0x20, 0x4a, 0x6f, 0x61, 0x6e, 0x69, -0x53, 0x2e, 0x20, 0x43, 0x72, 0x69, 0x73, 0x74, 0x6f, 0x66, 0x65, 0x72, -0x53, 0x2e, 0x20, 0x4c, 0x75, 0x73, 0xec, 0x61, 0x53, 0x2e, 0x20, 0x56, -0x69, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, -0x20, 0x4d, 0x61, 0x63, 0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x41, 0x6e, -0xe0, 0x64, 0x79, 0x72, 0x41, 0x6b, 0x74, 0xe0, 0x75, 0x41, 0x7a, 0x67, -0x61, 0x62, 0x61, 0x64, 0x41, 0x74, 0x79, 0x72, 0xe0, 0x75, 0x43, 0x6f, -0x6c, 0x6f, 0x6e, 0x62, 0x6f, 0x44, 0x75, 0x62, 0xe0, 0x69, 0x44, 0x75, -0x73, 0x61, 0x6e, 0x62, 0xe9, 0x4b, 0x61, 0x74, 0x6d, 0x61, 0x6e, 0x64, -0xf9, 0x48, 0xe0, 0x6e, 0x64, 0x69, 0x67, 0x61, 0x4b, 0x72, 0x61, 0x7a, -0x6e, 0x61, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x4b, 0x75, 0x61, 0x6c, 0x61, -0x20, 0x4c, 0x75, 0x6e, 0x70, 0x75, 0x72, 0x4d, 0x61, 0x63, 0xe0, 0x6f, -0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x69, 0x65, 0x74, 0x73, -0x6b, 0x4b, 0x6f, 0x73, 0x74, 0x61, 0x6e, 0xe0, 0x69, 0x53, 0x68, 0x61, -0x6e, 0x67, 0x68, 0xe0, 0x69, 0x5a, 0x72, 0xe9, 0x64, 0x6e, 0x65, 0x6b, -0x6f, 0x6c, 0x69, 0x6d, 0x73, 0x6b, 0x54, 0x69, 0x6e, 0x70, 0x75, 0x55, -0x6c, 0x61, 0x6e, 0x20, 0x42, 0xe0, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x74, -0x2d, 0x47, 0x6e, 0x65, 0x72, 0x61, 0x59, 0x65, 0x6b, 0x61, 0x74, 0x65, -0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4a, 0xe8, 0x72, 0x65, -0x76, 0x61, 0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x41, 0x7a, 0x6f, -0x72, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, 0x61, 0x6e, 0x61, -0x72, 0x69, 0x65, 0x43, 0x61, 0x6f, 0x20, 0x56, 0x65, 0x72, 0x64, 0x6f, -0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x46, 0xe0, 0x72, 0x6f, 0x65, 0xcc, -0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4d, 0x61, 0x64, 0xe8, 0x69, 0x72, 0x61, -0x52, 0x65, 0x6b, 0x69, 0x61, 0x76, 0x69, 0x6b, 0x47, 0x65, 0x6f, 0x72, -0x67, 0x69, 0x61, 0x20, 0x64, 0x65, 0x2019, 0x6c, 0x20, 0x73, 0x75, 0x64, -0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x53, 0x2e, 0x20, 0x45, 0x6c, 0x65, -0x6e, 0x61, 0x41, 0x64, 0x65, 0x6c, 0xe0, 0x69, 0x64, 0x65, 0x42, 0x72, -0x69, 0x7a, 0x62, 0x61, 0x6e, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, -0x4c, 0x6f, 0x72, 0x64, 0x20, 0x48, 0x6f, 0x77, 0x65, 0xc0, 0x6d, 0x73, -0x74, 0x65, 0x72, 0x64, 0x61, 0x6d, 0x42, 0x72, 0x61, 0x74, 0x69, 0x7a, -0x6c, 0x61, 0x76, 0x61, 0x4a, 0x69, 0x62, 0x69, 0x6c, 0x74, 0x65, 0x72, -0x61, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x61, -0x6e, 0x4c, 0x75, 0x62, 0x6c, 0x69, 0x61, 0x6e, 0x61, 0x4c, 0x75, 0x73, -0x65, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4f, 0x7a, 0x6c, 0x6f, 0x50, -0x61, 0x72, 0x69, 0x6a, 0x69, 0x53, 0x69, 0x6e, 0x66, 0x65, 0x72, 0xf2, -0x70, 0x6f, 0x6c, 0x69, 0x53, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x6d, 0x61, -0x55, 0x6c, 0x69, 0xe0, 0x6e, 0x6f, 0x73, 0x6b, 0x56, 0x61, 0x74, 0x65, -0x67, 0x61, 0x6e, 0x43, 0x69, 0x61, 0x67, 0x6f, 0x73, 0xcc, 0x7a, 0x6f, -0x6c, 0x61, 0x20, 0x64, 0x65, 0x20, 0x4e, 0x61, 0x64, 0x61, 0x6c, 0x65, -0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0xcc, -0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, 0x6f, 0x6d, 0x6f, 0x72, 0x65, 0xcc, -0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, 0x61, 0x6c, 0x64, 0x69, 0x76, 0x65, -0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x73, -0x69, 0x6f, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, 0x61, 0x69, 0x6f, -0x74, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x52, 0x65, 0x75, 0x6e, -0x69, 0x6f, 0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x42, 0x6f, 0x75, -0x67, 0x61, 0x69, 0x6e, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0xcc, 0x7a, 0x6f, -0x6c, 0x65, 0x20, 0x43, 0x69, 0x61, 0x74, 0x65, 0x6d, 0xcc, 0x7a, 0x6f, -0x6c, 0x65, 0x20, 0x43, 0x68, 0x75, 0x75, 0x6b, 0xcc, 0x7a, 0x6f, 0x6c, -0x61, 0x20, 0x64, 0x65, 0x20, 0x50, 0x61, 0x73, 0x63, 0x75, 0x61, 0xcc, -0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x45, 0x66, 0x61, 0x74, 0x65, 0x41, 0x74, -0x6f, 0x6c, 0x6f, 0x20, 0x46, 0x61, 0x6b, 0x61, 0x6f, 0x66, 0x6f, 0x41, -0x74, 0x6f, 0x6c, 0x6f, 0x20, 0x46, 0x75, 0x6e, 0x61, 0x66, 0x75, 0x74, -0x69, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x47, 0x61, 0x6d, 0x62, 0x69, -0x65, 0x72, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x47, 0x75, 0x61, 0x64, -0x61, 0x6c, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x41, 0x74, 0x6f, 0x6c, 0x6f, -0x20, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x6e, 0x41, 0x74, 0x6f, 0x6c, 0x6f, -0x20, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0xcc, -0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4b, 0x6f, 0x73, 0x72, 0x61, 0x65, 0x41, -0x74, 0x6f, 0x6c, 0x6f, 0x20, 0x4b, 0x77, 0x61, 0x6a, 0x61, 0x6c, 0x65, -0x69, 0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, 0x61, 0x72, 0x63, -0x68, 0x65, 0x7a, 0x69, 0x41, 0x74, 0x6f, 0x6c, 0x6f, 0x20, 0x4d, 0x69, -0x64, 0x77, 0x61, 0x79, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4e, 0x61, -0x75, 0x72, 0x75, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4e, 0x69, 0x75, -0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4e, 0x6f, 0x72, 0x66, 0x6f, -0x6c, 0x6b, 0x50, 0x61, 0x6c, 0xe0, 0x75, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, -0x20, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0xcc, 0x7a, 0x6f, -0x6c, 0x61, 0x20, 0x50, 0x6f, 0x6e, 0x70, 0xe8, 0x69, 0x50, 0x6f, 0x72, -0x74, 0x6f, 0x20, 0x4d, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79, 0xcc, 0x7a, -0x6f, 0x6c, 0x61, 0x20, 0x52, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, -0x61, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x53, 0x61, 0x69, 0x70, 0xe0, -0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x54, 0x61, 0x69, 0x74, 0x69, -0x41, 0x74, 0x6f, 0x6c, 0x6c, 0x6f, 0x20, 0x54, 0x61, 0x72, 0x61, 0x77, -0x61, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x54, 0x6f, 0x6e, 0x67, 0x61, -0x74, 0x61, 0x70, 0x75, 0x41, 0x74, 0x6f, 0x6c, 0x6f, 0x20, 0x57, 0x61, -0x6b, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x57, 0x61, 0x6c, 0x6c, -0x69, 0x73, 0x61, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, 0x65, 0x63, 0x72, -0x61, 0x61, 0x1e0d, 0x69, 0x73, 0x20, 0x61, 0x62, 0x61, 0x62, 0x61, 0x61, -0x6c, 0x6a, 0x12b, 0x79, 0x72, 0x73, 0x61, 0x73, 0x6d, 0x61, 0x72, 0x61, -0x62, 0x61, 0x6d, 0x61, 0x6b, 0x6f, 0x62, 0x61, 0x6e, 0x67, 0x75, 0x69, -0x62, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x62, 0x69, 0x73, 0x73, 0x61, 0x75, -0x62, 0x6c, 0x61, 0x6e, 0x1e6d, 0x61, 0x65, 0x72, 0x62, 0x72, 0x61, 0x6a, -0x61, 0x76, 0x69, 0x6c, 0x6c, 0x62, 0x75, 0x6a, 0x75, 0x6d, 0x62, 0x75, -0x72, 0x61, 0x6b, 0x61, 0x69, 0x72, 0x6f, 0x6b, 0x61, 0x73, 0x61, 0x62, -0x6c, 0x61, 0x6e, 0x6b, 0x61, 0x73, 0x65, 0x75, 0x1e6d, 0x61, 0x6b, 0x6f, -0x6e, 0x61, 0x6b, 0x72, 0x12b, 0x1e0d, 0x6b, 0x61, 0x72, 0x64, 0x61, 0x72, -0x20, 0x65, 0x73, 0x20, 0x73, 0x61, 0x6c, 0x61, 0x61, 0x6d, 0x64, 0x75, -0x61, 0x6c, 0x61, 0x65, 0x6c, 0x20, 0x61, 0x61, 0x69, 0x79, 0x75, 0x6e, -0x70, 0x72, 0x12b, 0x1e6d, 0x61, 0x75, 0x6e, 0x67, 0x61, 0x62, 0x6f, 0x72, -0x6f, 0x6e, 0x68, 0x72, 0x61, 0x72, 0x65, 0x6a, 0x6f, 0x68, 0x61, 0x6e, -0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, 0x6a, 0x75, 0x62, 0x61, 0x6b, -0x6d, 0x70, 0x61, 0x6c, 0x61, 0x6b, 0x61, 0x72, 0x1e6d, 0x6f, 0x75, 0x6d, -0x6b, 0x69, 0x67, 0x61, 0x6c, 0x69, 0x6b, 0x69, 0x6e, 0x73, 0x61, 0x73, -0x61, 0x6c, 0x61, 0x67, 0x6f, 0x73, 0x6c, 0x69, 0x62, 0x72, 0x65, 0x76, -0x69, 0x6c, 0x6c, 0x6c, 0x75, 0x61, 0x6e, 0x1e0d, 0x61, 0x6c, 0x75, 0x62, -0x75, 0x6d, 0x62, 0x61, 0x73, 0x69, 0x6c, 0x75, 0x73, 0x61, 0x6b, 0x61, -0x6d, 0x61, 0x6c, 0x61, 0x62, 0x6f, 0x6d, 0x61, 0x70, 0x75, 0x1e6d, 0x75, -0x6d, 0x61, 0x73, 0x65, 0x72, 0x75, 0x6d, 0x62, 0x61, 0x62, 0x61, 0x6e, -0x65, 0x6d, 0x6f, 0x67, 0x61, 0x1e0d, 0x69, 0x73, 0x75, 0x6d, 0x6f, 0x6e, -0x72, 0x6f, 0x76, 0x69, 0x61, 0x6e, 0x61, 0x69, 0x72, 0x6f, 0x62, 0x69, -0x6e, 0x6a, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x6d, -0x65, 0x6e, 0x75, 0x65, 0x6b, 0x73, 0x61, 0x76, 0x61, 0x67, 0x64, 0x75, -0x67, 0x75, 0x70, 0x6f, 0x72, 0x1e6d, 0x6f, 0x2d, 0x1e47, 0x6f, 0x76, 0x6f, -0x73, 0x61, 0x6f, 0x20, 0x1e6d, 0x6f, 0x6d, 0x74, 0x72, 0x69, 0x70, 0x6f, -0x6c, 0x69, 0x1e6d, 0x75, 0x6e, 0x69, 0x73, 0x76, 0x69, 0x6e, 0x64, 0x68, -0x75, 0x6b, 0x61, 0x1e0d, 0x61, 0x6b, 0x61, 0x6e, 0x6b, 0x6f, 0x72, 0x61, -0x6a, 0x65, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x65, 0x6e, 0x1e6d, -0x69, 0x67, 0x75, 0x61, 0x61, 0x72, 0x61, 0x67, 0x76, 0x61, 0x69, 0x6e, -0x61, 0x62, 0x75, 0x65, 0x6e, 0x6f, 0x75, 0x73, 0x20, 0x61, 0x69, 0x72, -0x65, 0x73, 0x6b, 0x61, 0x74, 0x61, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x6b, -0x6f, 0x72, 0x1e0d, 0x61, 0x62, 0x61, 0x68, 0x75, 0x68, 0x75, 0x65, 0x6c, -0x61, 0x20, 0x72, 0x69, 0x6f, 0x6a, 0x61, 0x6d, 0x65, 0x6e, 0x1e0d, 0x6f, -0x6a, 0x61, 0x72, 0x69, 0x79, 0x6f, 0x20, 0x67, 0x61, 0x6c, 0x6c, 0x65, -0x67, 0x6f, 0x73, 0x73, 0x61, 0x6c, 0x1e6d, 0x61, 0x73, 0x61, 0x6e, 0x20, -0x68, 0x75, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x20, 0x6c, 0x75, 0x69, 0x73, -0x1e6d, 0x75, 0x6b, 0x16b, 0x6d, 0x6e, 0x75, 0x73, 0x76, 0x61, 0x69, 0x79, -0x61, 0x61, 0x72, 0x75, 0x62, 0x61, 0x65, 0x73, 0x75, 0x6e, 0x73, 0x69, -0x6f, 0x6e, 0x65, 0x1e6d, 0x69, 0x6b, 0x6f, 0x6b, 0x65, 0x6e, 0x62, 0x61, -0x68, 0x69, 0x61, 0x62, 0x61, 0x69, 0x61, 0x20, 0x62, 0x61, 0x6e, 0x1e0d, -0x65, 0x72, 0x61, 0x73, 0x62, 0x61, 0x72, 0x62, 0x61, 0x1e0d, 0x6f, 0x73, -0x62, 0x65, 0x6c, 0x65, 0x6d, 0x62, 0x65, 0x6c, 0x69, 0x6a, 0x62, 0x6c, -0x61, 0x6e, 0x6b, 0x2d, 0x73, 0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x62, 0x6f, -0x61, 0x20, 0x76, 0x69, 0x73, 0x74, 0x61, 0x62, 0x6f, 0x67, 0x6f, 0x1e6d, -0x61, 0x62, 0x6f, 0x69, 0x73, 0x12b, 0x6b, 0x65, 0x6d, 0x62, 0x72, 0x69, -0x6a, 0x20, 0x62, 0x65, 0x6b, 0x61, 0x6d, 0x70, 0x6f, 0x20, 0x67, 0x72, -0x61, 0x6e, 0x1e0d, 0x65, 0x6b, 0x61, 0x6e, 0x6b, 0x75, 0x6e, 0x6b, 0x61, -0x72, 0x61, 0x6b, 0x61, 0x73, 0x6b, 0x65, 0x79, 0x65, 0x6e, 0x6b, 0x65, -0x69, 0x6d, 0x61, 0x6e, 0x63, 0x69, 0x6b, 0x61, 0x67, 0x6f, 0x63, 0x68, -0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x6b, 0x6f, 0x73, 0x1e6d, 0x61, -0x20, 0x72, 0x69, 0x6b, 0x61, 0x6b, 0x72, 0x65, 0x73, 0x1e6d, 0x6f, 0x6e, -0x6b, 0x75, 0x61, 0x61, 0x62, 0x61, 0x6b, 0x79, 0x75, 0x72, 0x61, 0x73, -0x6f, 0x1e0d, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x61, 0x76, 0x6e, -0x1e0d, 0x61, 0x6f, 0x73, 0x6e, 0x1e0d, 0x61, 0x6f, 0x73, 0x6f, 0x6e, 0x20, -0x6b, 0x72, 0x12b, 0x6b, 0x1e0d, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x1e0d, 0x65, -0x1e6d, 0x72, 0x6f, 0x69, 0x1e6d, 0x1e0d, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x6b, -0x61, 0x65, 0x1e0d, 0x6d, 0x6f, 0x6e, 0x1e6d, 0x6f, 0x6e, 0x65, 0x69, 0x72, -0x75, 0x6e, 0x65, 0x70, 0x65, 0x65, 0x6c, 0x20, 0x73, 0x61, 0x6c, 0x76, -0x61, 0x1e0d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x6e, 0x65, -0x6c, 0x73, 0x6e, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x65, 0x6a, 0x61, -0x67, 0x6c, 0x61, 0x73, 0x20, 0x62, 0x61, 0x79, 0x67, 0x6f, 0x6f, 0x73, -0x20, 0x62, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x1e0d, 0x20, 0x1e6d, 0x75, 0x72, -0x6b, 0x67, 0x72, 0x65, 0x6e, 0x61, 0x1e0d, 0x61, 0x67, 0x75, 0x61, 0x1e0d, -0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x67, 0x75, 0x61, 0x74, 0x65, 0x6d, -0x61, 0x6c, 0x61, 0x67, 0x75, 0x61, 0x6a, 0x61, 0x6b, 0x69, 0x6c, 0x67, -0x75, 0x79, 0x61, 0x6e, 0x61, 0x68, 0x65, 0x6c, 0x69, 0x70, 0x61, 0x6b, -0x73, 0x68, 0x61, 0x76, 0x61, 0x6e, 0x61, 0x69, 0x6e, 0x1e0d, 0x69, 0x61, -0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x6e, 0x6f, 0x6b, 0x73, 0x2c, -0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x72, -0x65, 0x6e, 0x67, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, -0x6e, 0x61, 0x70, 0x69, 0x1e6d, 0x74, 0x72, 0x73, 0x62, 0x65, 0x72, 0x67, -0x2c, 0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, 0x1e6d, 0x65, -0x6c, 0x6c, 0x20, 0x73, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, -0x69, 0x79, 0x61, 0x6e, 0x61, 0x76, 0x69, 0x76, 0x69, 0x2c, 0x20, 0x69, -0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, 0x76, 0x69, 0x6e, 0x63, 0x65, -0x6e, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, -0x76, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x6b, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, -0x69, 0x79, 0x61, 0x6e, 0x61, 0x69, 0x6e, 0x16b, 0x76, 0x69, 0x6b, 0x69, -0x6b, 0x61, 0x6c, 0x75, 0x69, 0x1e6d, 0x6a, 0x61, 0x6d, 0x61, 0x69, 0x6b, -0x61, 0x6a, 0x75, 0x6e, 0x6f, 0x76, 0x6c, 0x6f, 0x75, 0x69, 0x76, 0x69, -0x6c, 0x6c, 0x65, 0x6d, 0x6f, 0x6e, 0x1e6d, 0x69, 0x73, 0x65, 0x6c, 0x6c, -0x6f, 0x2c, 0x20, 0x6b, 0x65, 0x6e, 0x1e6d, 0x75, 0x6b, 0x12b, 0x6b, 0x72, -0x65, 0x6c, 0x65, 0x6e, 0x1e0d, 0x65, 0x69, 0x6b, 0x6c, 0x61, 0x20, 0x70, -0x61, 0x6a, 0x6c, 0x6f, 0x73, 0x20, 0x61, 0x6e, 0x6a, 0x65, 0x6c, 0x65, -0x73, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x63, -0x2019, 0x73, 0x20, 0x6b, 0x75, 0x76, 0x61, 0x1e6d, 0x61, 0x72, 0x6d, 0x61, -0x73, 0x12b, 0x6f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x75, 0x61, 0x6d, 0x61, -0x6e, 0x61, 0x75, 0x73, 0x6d, 0x61, 0x72, 0x69, 0x67, 0x6f, 0x1e6d, 0x6d, -0x61, 0x72, 0x1e6d, 0x69, 0x6e, 0x69, 0x6b, 0x6d, 0x61, 0x1e6d, 0x61, 0x6d, -0x6f, 0x72, 0x6f, 0x73, 0x6d, 0x61, 0x73, 0x61, 0x1e6d, 0x6c, 0x61, 0x6e, -0x6d, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x12b, 0x6d, 0x65, 0x72, 0x69, -0x1e0d, 0x61, 0x6d, 0x65, 0x1e6d, 0x6c, 0x61, 0x6b, 0x61, 0x1e6d, 0x6c, 0x61, -0x6d, 0x65, 0x6b, 0x73, 0x69, 0x63, 0x6f, 0x20, 0x73, 0x69, 0x1e6d, 0x79, -0x6d, 0x69, 0x6b, 0x76, 0x69, 0x6c, 0xf5, 0x6d, 0x6f, 0x6e, 0x6b, 0x1e6d, -0x6f, 0x6e, 0x6d, 0x6f, 0x6e, 0x1e6d, 0x65, 0x72, 0x72, 0x65, 0x6d, 0x6f, -0x6e, 0x1e6d, 0x65, 0x76, 0x69, 0x64, 0x69, 0x6f, 0x6d, 0x6f, 0x6e, 0x1e6d, -0x73, 0x65, 0x72, 0x72, 0x65, 0x1e6d, 0x6e, 0x61, 0x73, 0x61, 0x75, 0x6e, -0x69, 0x79, 0x75, 0x20, 0x79, 0x6f, 0x72, 0x6b, 0x6e, 0x6f, 0x72, 0x6f, -0x6e, 0x68, 0x61, 0x62, 0x69, 0x79, 0x75, 0x6c, 0x61, 0x2c, 0x20, 0x75, -0x74, 0x74, 0x61, 0x72, 0x20, 0x1e0d, 0x61, 0x6b, 0x6f, 0x1e6d, 0x61, 0x6d, -0x61, 0x1e0d, 0x69, 0x6e, 0x12b, 0x20, 0x75, 0x74, 0x74, 0x61, 0x72, 0x20, -0x1e0d, 0x61, 0x6b, 0x6f, 0x1e6d, 0x61, 0x6e, 0x65, 0x75, 0x20, 0x73, 0x61, -0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x75, 0x74, 0x74, 0x61, 0x72, 0x20, 0x1e0d, -0x61, 0x6b, 0x6f, 0x1e6d, 0x61, 0x6e, 0x16b, 0x6b, 0x6f, 0x6a, 0x69, 0x6e, -0x61, 0x67, 0x61, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x70, 0x61, 0x72, -0x61, 0x6d, 0x61, 0x72, 0x69, 0x62, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x6b, -0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, 0x70, 0x72, 0x69, -0x6e, 0x73, 0x65, 0x70, 0x6f, 0x72, 0x1e6d, 0x20, 0x61, 0x70, 0x20, 0x73, -0x70, 0x61, 0x69, 0x6e, 0x70, 0x6f, 0x72, 0x1e6d, 0x70, 0x20, 0x76, 0x65, -0x6c, 0x68, 0x6f, 0x70, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x72, 0x69, -0x6b, 0x6f, 0x70, 0x75, 0x1e47, 0x1e6d, 0x61, 0x20, 0x65, 0x72, 0x65, 0x6e, -0x61, 0x73, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x6c, -0x65, 0x64, 0x1e6d, 0x72, 0x65, 0x73, 0x69, 0x70, 0x69, 0x72, 0x65, 0x6a, -0x69, 0x6e, 0x61, 0x72, 0x65, 0x6a, 0x61, 0x6c, 0x79, 0x75, 0x1e6d, 0x72, -0x69, 0x6f, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x6b, 0x6f, 0x73, 0x61, 0x74, -0x61, 0x72, 0x69, 0x73, 0x61, 0x6e, 0x1e6d, 0x69, 0x61, 0x67, 0x6f, 0x73, -0x65, 0x6e, 0x74, 0x6f, 0x20, 0x1e0d, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, -0x73, 0x61, 0x6f, 0x20, 0x70, 0x61, 0x75, 0x6c, 0x6f, 0x69, 0x1e6d, 0x6f, -0x6b, 0x6f, 0x1e6d, 0x6f, 0x72, 0x6d, 0x69, 0x1e6d, 0x73, 0x69, 0x74, 0x6b, -0x61, 0x73, 0x65, 0x6e, 0x1e6d, 0x20, 0x62, 0x61, 0x72, 0x74, 0x65, 0x6c, -0x65, 0x6d, 0x69, 0x73, 0x65, 0x6e, 0x1e6d, 0x20, 0x6a, 0x6f, 0x6e, 0x73, -0x73, 0x65, 0x6e, 0x74, 0x20, 0x6b, 0x69, 0x1e6d, 0x1e6d, 0x73, 0x73, 0x65, -0x6e, 0x74, 0x20, 0x6c, 0x75, 0x73, 0x69, 0x61, 0x73, 0x65, 0x6e, 0x1e6d, -0x20, 0x74, 0x6f, 0x6d, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x1e6d, 0x20, 0x76, -0x69, 0x6e, 0x73, 0x65, 0x6e, 0x1e6d, 0x73, 0x76, 0x69, 0x70, 0x1e6d, 0x20, -0x6b, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x1e6d, 0x74, 0x65, 0x67, 0x75, 0x74, -0x75, 0x6c, 0x65, 0x74, 0x69, 0x68, 0x76, 0x61, 0x6e, 0x61, 0x1e6d, 0x6f, -0x72, 0x6f, 0x6e, 0x1e6d, 0x6f, 0x1e6d, 0x6f, 0x72, 0x1e6d, 0x6f, 0x6c, 0x61, -0x76, 0x61, 0x6e, 0x6b, 0x16b, 0x76, 0x65, 0x72, 0x76, 0x68, 0x61, 0x69, -0x1e6d, 0x68, 0x6f, 0x72, 0x73, 0x76, 0x69, 0x6e, 0x6e, 0x69, 0x70, 0x65, -0x67, 0x79, 0x61, 0x6b, 0x75, 0x1e6d, 0x61, 0x1e6d, 0x6b, 0x65, 0x73, 0x65, -0x65, 0x1e0d, 0x65, 0x76, 0x69, 0x73, 0x1e0d, 0x79, 0x75, 0x6d, 0x6f, 0x6e, -0x74, 0x20, 0x64, 0x65, 0x20, 0x75, 0x72, 0x76, 0x69, 0x6c, 0x6c, 0x6d, -0x65, 0x6b, 0x76, 0x61, 0x72, 0x69, 0x6d, 0x61, 0x76, 0x73, 0x6f, 0x6e, -0x6d, 0x65, 0x6b, 0x20, 0x6d, 0x75, 0x72, 0x1e0d, 0x6f, 0x70, 0x61, 0x6c, -0x6d, 0x65, 0x72, 0x72, 0x6f, 0x74, 0x65, 0x72, 0x61, 0x73, 0x79, 0x6f, -0x76, 0x61, 0x1e6d, 0x72, 0x6f, 0x6c, 0x6c, 0x76, 0x6f, 0x73, 0x1e6d, 0x6f, -0x6b, 0x6c, 0x6e, 0x67, 0x79, 0x61, 0x72, 0x62, 0x79, 0x65, 0x6e, 0x65, -0x1e0d, 0x65, 0x6e, 0x61, 0x6c, 0x6d, 0x61, 0x1e6d, 0x79, 0x61, 0x6d, 0x6d, -0x61, 0x6e, 0x61, 0x6e, 0x61, 0x1e0d, 0x69, 0x72, 0x61, 0x6b, 0x74, 0x61, -0x75, 0x61, 0x61, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x73, 0x67, 0x61, -0x62, 0x61, 0x1e6d, 0x61, 0x74, 0x61, 0x72, 0x61, 0x75, 0x62, 0x61, 0x67, -0x64, 0x61, 0x64, 0x62, 0x61, 0x68, 0x72, 0x61, 0x69, 0x6e, 0x62, 0x61, -0x6b, 0x75, 0x62, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x62, 0x61, 0x72, -0x6e, 0x61, 0x75, 0x6c, 0x62, 0x65, 0x69, 0x72, 0x75, 0x74, 0x62, 0x69, -0x73, 0x6b, 0x65, 0x6b, 0x62, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x63, 0x69, -0x74, 0x61, 0x6b, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x1e0d, 0x61, 0x6d, -0x61, 0x73, 0x6b, 0x75, 0x73, 0x1e0d, 0x69, 0x6c, 0x69, 0x64, 0x75, 0x62, -0x61, 0x69, 0x64, 0x75, 0x73, 0x61, 0x6d, 0x62, 0x65, 0x70, 0x61, 0x6d, -0x61, 0x67, 0x75, 0x73, 0x74, 0x61, 0x67, 0x61, 0x6a, 0x61, 0x68, 0x65, -0x62, 0x72, 0x6f, 0x6e, 0x68, 0x6f, 0x20, 0x63, 0x69, 0x20, 0x6d, 0x69, -0x6e, 0x68, 0x20, 0x73, 0x69, 0x74, 0x69, 0x68, 0x6f, 0x6e, 0x67, 0x20, -0x6b, 0x6f, 0x6e, 0x67, 0x69, 0x72, 0x6b, 0x75, 0x1e6d, 0x73, 0x6b, 0x6a, -0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, 0x6a, 0x65, 0x72, 0x75, 0x73, -0x61, 0x6c, 0x65, 0x6d, 0x6b, 0x61, 0x62, 0x75, 0x6c, 0x6b, 0x61, 0x6d, -0x63, 0x61, 0x1e6d, 0x6b, 0x61, 0x6b, 0x61, 0x72, 0x61, 0x63, 0x12b, 0x6b, -0x61, 0x1e6d, 0x6d, 0x61, 0x6e, 0x1e0d, 0x75, 0x6b, 0x61, 0x6e, 0x64, 0x69, -0x67, 0x61, 0x6b, 0x6f, 0x6c, 0x6b, 0x61, 0x74, 0x61, 0x6b, 0x72, 0x61, -0x73, 0x6e, 0x65, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x6b, 0x75, 0x61, 0x6c, -0x61, 0x20, 0x6c, 0x75, 0x6d, 0x70, 0x75, 0x72, 0x6b, 0x75, 0x63, 0x69, -0x6e, 0x67, 0x6b, 0x75, 0x76, 0x61, 0x69, 0x74, 0x6d, 0x6b, 0x61, 0x6f, -0x6d, 0x65, 0x67, 0x61, 0x1e0d, 0x61, 0x6e, 0x6d, 0x61, 0x6b, 0x61, 0x73, -0x61, 0x72, 0x6d, 0x61, 0x6e, 0x12b, 0x6c, 0x61, 0x6d, 0x61, 0x73, 0x6b, -0x61, 0x74, 0x6e, 0x69, 0x6b, 0x6f, 0x73, 0x69, 0x79, 0x61, 0x6e, 0x65, -0x76, 0x6f, 0x6b, 0x75, 0x6a, 0x6e, 0x65, 0x1e6d, 0x73, 0x6b, 0x6e, 0x6f, -0x76, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x70, 0x6e, 0x6f, -0x6d, 0x20, 0x70, 0x65, 0x6e, 0x68, 0x70, 0x6f, 0x6e, 0x1e6d, 0x69, 0x61, -0x6e, 0x61, 0x6b, 0x70, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, 0x6e, 0x67, -0x6b, 0x6f, 0x73, 0x1e6d, 0x61, 0x6e, 0x65, 0x6b, 0x69, 0x6a, 0x75, 0x6f, -0x72, 0x64, 0x61, 0x72, 0x69, 0x79, 0x61, 0x64, 0x73, 0x61, 0x68, 0x61, -0x6c, 0x69, 0x6e, 0x73, 0x61, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x6e, 0x64, -0x73, 0x65, 0x6f, 0x6c, 0x73, 0x65, 0x6e, 0x67, 0x61, 0x69, 0x73, 0x69, -0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x73, 0x72, 0x65, 0x1e0d, 0x6e, 0x65, -0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x74, 0x61, 0x69, 0x70, 0x65, -0x69, 0x74, 0x61, 0x73, 0x6b, 0x65, 0x6e, 0x1e6d, 0x74, 0x62, 0x69, 0x6c, -0x69, 0x73, 0x69, 0x74, 0x65, 0x68, 0x72, 0x61, 0x6e, 0x74, 0x69, 0x6d, -0x70, 0x68, 0x75, 0x1e6d, 0x6f, 0x6b, 0x79, 0x6f, 0x1e6d, 0x6f, 0x6d, 0x73, -0x6b, 0x75, 0x6c, 0x61, 0x6e, 0x62, 0x61, 0x1e6d, 0x61, 0x72, 0x75, 0x72, -0x75, 0x6d, 0x63, 0x69, 0x79, 0x75, 0x73, 0x74, 0x2d, 0x6e, 0x65, 0x72, -0x61, 0x76, 0x69, 0x65, 0x6e, 0x1e6d, 0x69, 0x61, 0x61, 0x6e, 0x76, 0x6c, -0x61, 0x1e0d, 0x69, 0x76, 0x6f, 0x73, 0x1e6d, 0x6f, 0x6b, 0x79, 0x61, 0x6b, -0x75, 0x1e6d, 0x73, 0x6b, 0x79, 0x61, 0x6e, 0x67, 0x6f, 0x6e, 0x79, 0x69, -0x6b, 0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x79, -0x65, 0x72, 0x65, 0x76, 0x61, 0x6e, 0x61, 0x6a, 0x6f, 0x72, 0x65, 0x73, -0x62, 0x65, 0x72, 0x6d, 0x16b, 0x64, 0x61, 0x6b, 0x65, 0x6e, 0x65, 0x72, -0x69, 0x6b, 0x65, 0x70, 0x20, 0x76, 0x65, 0x72, 0x1e0d, 0x65, 0x70, 0x65, -0x72, 0x6f, 0x6d, 0x61, 0x1e0d, 0x69, 0x65, 0x72, 0x61, 0x72, 0x65, 0x79, -0x6b, 0x79, 0x61, 0x76, 0x69, 0x6b, 0x64, 0x6b, 0x69, 0x1e47, 0x20, 0x6a, -0x6f, 0x72, 0x6a, 0x69, 0x61, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x68, 0x65, -0x6c, 0x65, 0x6e, 0x61, 0x73, 0x1e6d, 0x61, 0x6e, 0x6c, 0x69, 0x61, 0x65, -0x64, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x62, 0x72, 0x69, 0x73, 0x62, 0x61, -0x6e, 0x65, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x68, 0x69, 0x6c, -0x6c, 0x1e0d, 0x61, 0x72, 0x76, 0x69, 0x6e, 0x79, 0x75, 0x6b, 0x6c, 0x61, -0x68, 0x6f, 0x62, 0x61, 0x72, 0x1e6d, 0x6c, 0x69, 0x6e, 0x1e0d, 0x65, 0x72, -0x6d, 0x61, 0x6e, 0x6c, 0x6f, 0x72, 0x1e0d, 0x20, 0x68, 0x6f, 0x76, 0x65, -0x6d, 0x65, 0x6c, 0x62, 0x6f, 0x72, 0x6e, 0x65, 0x70, 0x65, 0x72, 0x74, -0x73, 0x79, 0x1e0d, 0x6e, 0x12b, 0x61, 0x6d, 0x73, 0x1e6d, 0x65, 0x72, 0x1e0d, -0x61, 0x6d, 0x61, 0x61, 0x1e47, 0x1e0d, 0x6f, 0x72, 0x61, 0x61, 0x61, 0x73, -0x1e6d, 0x72, 0x61, 0x68, 0x61, 0x6e, 0x65, 0x74, 0x65, 0x6e, 0x73, 0x62, -0x65, 0x6c, 0x67, 0x72, 0x61, 0x1e0d, 0x65, 0x62, 0x65, 0x72, 0x6c, 0x69, -0x6e, 0x62, 0x72, 0x61, 0x1e6d, 0x69, 0x73, 0x6c, 0x61, 0x76, 0x61, 0x62, -0x72, 0x75, 0x73, 0x73, 0x65, 0x6c, 0x73, 0x62, 0x75, 0x6b, 0x61, 0x72, -0x65, 0x73, 0x74, 0x62, 0x75, 0x1e0d, 0x61, 0x70, 0x65, 0x73, 0x74, 0x62, -0x75, 0x73, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x6b, 0x69, 0x73, 0x69, 0x6e, -0x61, 0x75, 0x6b, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, 0x6e, -0x1e0d, 0x62, 0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x1e6d, -0x61, 0x72, 0x67, 0x65, 0x72, 0x6e, 0x73, 0x69, 0x68, 0x65, 0x6c, 0x73, -0x69, 0x6e, 0x6b, 0x69, 0x61, 0x61, 0x69, 0x6c, 0x20, 0x61, 0x70, 0x20, -0x6d, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0x6a, -0x65, 0x72, 0x73, 0x69, 0x6b, 0x61, 0x6c, 0x69, 0x6e, 0x69, 0x6e, 0x67, -0x72, 0x61, 0x1e0d, 0x6b, 0x69, 0x72, 0x6f, 0x76, 0x6b, 0x69, 0x79, 0x76, -0x6c, 0x69, 0x73, 0x62, 0x6f, 0x6e, 0x6c, 0x79, 0x75, 0x62, 0x6c, 0x79, -0x61, 0x6e, 0x61, 0x6c, 0x6e, 0x1e0d, 0x6e, 0x6c, 0x6b, 0x73, 0x65, 0x6d, -0x62, 0x72, 0x67, 0x6d, 0x65, 0x1e0d, 0x72, 0x69, 0x1e0d, 0x6d, 0x61, 0x6c, -0x1e6d, 0x61, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6d, 0x69, -0x6e, 0x73, 0x6b, 0x6d, 0x6f, 0x6e, 0x61, 0x6b, 0x6f, 0x6d, 0x6f, 0x73, -0x6b, 0x6f, 0x6f, 0x73, 0x6c, 0x6f, 0x70, 0x61, 0x72, 0x69, 0x73, 0x70, -0x1e0d, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x73, 0x61, 0x70, 0x72, 0x61, 0x67, -0x72, 0x69, 0x67, 0x61, 0x73, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x73, 0x61, -0x6e, 0x20, 0x6d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x73, 0x61, 0x72, 0x61, -0x6a, 0x65, 0x76, 0x6f, 0x73, 0x61, 0x72, 0x61, 0x1e6d, 0x6f, 0x76, 0x73, -0x69, 0x6d, 0x70, 0x65, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x6f, -0x70, 0x69, 0x73, 0x6f, 0x70, 0x69, 0x79, 0x61, 0x73, 0x1e6d, 0x6f, 0x6b, -0x68, 0x6f, 0x6d, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x1e6d, 0x69, 0x72, 0x61, -0x6e, 0x65, 0x75, 0x6c, 0x79, 0x61, 0x6e, 0x6f, 0x76, 0x73, 0x6b, 0x76, -0x61, 0x1e0d, 0x75, 0x6a, 0x76, 0x61, 0x1e6d, 0x69, 0x6b, 0x61, 0x6e, 0x76, -0x69, 0x65, 0x6e, 0x6e, 0x61, 0x76, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, -0x76, 0x6f, 0x6c, 0x67, 0x6f, 0x67, 0x72, 0x61, 0x1e0d, 0x76, 0x61, 0x72, -0x73, 0x61, 0x74, 0x65, 0x67, 0x75, 0x73, 0x69, 0x67, 0x61, 0x6c, 0x70, -0x61, 0x6a, 0x75, 0x72, 0x69, 0x63, 0x1e6d, 0x61, 0x6e, 0x61, 0x6e, 0x61, -0x72, 0x69, 0x76, 0x63, 0x68, 0x61, 0x67, 0x6f, 0x73, 0x6b, 0x72, 0x69, -0x73, 0x1e6d, 0x6d, 0x61, 0x73, 0x6b, 0x6f, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, -0x6d, 0x6f, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x67, 0x75, 0x65, 0x6c, 0x65, -0x6e, 0x6d, 0x61, 0x68, 0x65, 0x6d, 0x61, 0x6c, 0x64, 0x69, 0x76, 0x65, -0x73, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x73, 0x69, 0x75, 0x73, 0x6d, 0x61, -0x79, 0x6f, 0x1e6d, 0x72, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x61, 0x70, -0x69, 0x61, 0x101, 0x6b, 0x6c, 0x61, 0x6e, 0x1e0d, 0x62, 0x6f, 0x75, 0x67, -0x61, 0x6e, 0x76, 0x69, 0x6c, 0x6c, 0x63, 0x65, 0x1e6d, 0x61, 0x6d, 0x63, -0x16b, 0x6b, 0x12b, 0x73, 0x74, 0x65, 0x72, 0x69, 0x70, 0x65, 0x1e6d, 0x65, -0x70, 0x61, 0x6b, 0x61, 0x6f, 0x70, 0x6f, 0x70, 0x69, 0x6a, 0x69, 0x70, -0x75, 0x6e, 0x61, 0x70, 0x75, 0x74, 0x69, 0x67, 0x61, 0x6c, 0x61, 0x70, -0x61, 0x67, 0x6f, 0x73, 0x67, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x72, 0x67, -0x75, 0x61, 0x1e0d, 0x61, 0x6c, 0x6b, 0x65, 0x6e, 0x61, 0x6c, 0x6b, 0x61, -0x6e, 0x1e6d, 0x6f, 0x6e, 0x6b, 0x69, 0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, -0x74, 0x69, 0x6b, 0x69, 0x73, 0x72, 0x61, 0x65, 0x6b, 0x76, 0x61, 0x6a, -0x61, 0x6c, 0x65, 0x69, 0x6e, 0x6d, 0x61, 0x6a, 0x75, 0x72, 0x6f, 0x6d, -0x61, 0x72, 0x6b, 0x69, 0x73, 0x61, 0x73, 0x6d, 0x69, 0x1e0d, 0x76, 0x61, -0x79, 0x6e, 0x61, 0x75, 0x72, 0x75, 0x6e, 0x69, 0x75, 0x65, 0x6e, 0x6f, -0x72, 0x70, 0x6f, 0x6b, 0x6e, 0x75, 0x6d, 0x69, 0x65, 0x70, 0x61, 0x6e, -0x67, 0x6f, 0x20, 0x70, 0x61, 0x6e, 0x67, 0x6f, 0x70, 0x61, 0x6c, 0x61, -0x75, 0x70, 0x69, 0x1e6d, 0x6b, 0x65, 0x72, 0x6e, 0x70, 0x6f, 0x6e, 0x70, -0x65, 0x69, 0x70, 0x6f, 0x72, 0x1e6d, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x73, -0x62, 0x69, 0x72, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x73, -0x61, 0x69, 0x70, 0x61, 0x6e, 0x1e6d, 0x61, 0x68, 0x69, 0x1e6d, 0x69, 0x74, -0x61, 0x72, 0x61, 0x76, 0x61, 0x1e6d, 0x6f, 0x6e, 0x67, 0x61, 0x1e6d, 0x61, -0x70, 0x75, 0x76, 0x65, 0x6b, 0x76, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x92c, -0x94d, 0x92f, 0x93e, 0x928, 0x94d, 0x91c, 0x941, 0x932, 0x92a, 0x93c, 0x94d, 0x930, -0x940, 0x91f, 0x93e, 0x909, 0x928, 0x915, 0x93e, 0x930, 0x94d, 0x924, 0x941, 0x92e, -0x915, 0x93f, 0x902, 0x938, 0x93e, 0x938, 0x93e, 0x932, 0x941, 0x92c, 0x941, 0x92e, -0x92c, 0x93e, 0x938, 0x940, 0x92e, 0x94d, 0x2d, 0x92c, 0x93e, 0x92c, 0x93e, 0x928, -0x947, 0x92e, 0x94b, 0x917, 0x93e, 0x926, 0x93f, 0x938, 0x941, 0x928, 0x93e, 0x907, -0x930, 0x94b, 0x92c, 0x93f, 0x928, 0x941, 0x906, 0x915, 0x91a, 0x949, 0x91f, 0x938, -0x94d, 0x92f, 0x93e, 0x928, 0x20, 0x939, 0x94d, 0x935, 0x93e, 0x928, 0x938, 0x94d, -0x92f, 0x93e, 0x928, 0x20, 0x932, 0x942, 0x924, 0x93f, 0x909, 0x938, 0x941, 0x906, -0x907, 0x92f, 0x93e, 0x90f, 0x938, 0x928, 0x938, 0x93f, 0x92f, 0x949, 0x928, 0x92c, -0x94d, 0x932, 0x93e, 0x902, 0x2d, 0x938, 0x947, 0x92c, 0x932, 0x94b, 0x928, 0x915, -0x947, 0x92e, 0x94d, 0x92c, 0x94d, 0x930, 0x93f, 0x91c, 0x20, 0x92c, 0x947, 0x915, -0x94d, 0x92f, 0x93e, 0x92e, 0x94d, 0x92a, 0x94b, 0x20, 0x917, 0x94d, 0x930, 0x93e, -0x902, 0x921, 0x947, 0x915, 0x94d, 0x92f, 0x93e, 0x928, 0x915, 0x941, 0x928, 0x938, -0x93f, 0x915, 0x93e, 0x917, 0x94b, 0x921, 0x947, 0x928, 0x92e, 0x93e, 0x930, 0x94d, -0x915, 0x938, 0x949, 0x928, 0x924, 0x93f, 0x930, 0x941, 0x928, 0x947, 0x92a, 0x947, -0x92a, 0x93c, 0x94b, 0x930, 0x94d, 0x91f, 0x20, 0x928, 0x947, 0x932, 0x94d, 0x938, -0x928, 0x92a, 0x93c, 0x94b, 0x930, 0x94d, 0x91f, 0x93e, 0x932, 0x947, 0x91c, 0x93c, -0x93e, 0x939, 0x947, 0x932, 0x93f, 0x92a, 0x947, 0x915, 0x94d, 0x938, 0x907, 0x915, -0x93e, 0x932, 0x941, 0x924, 0x93f, 0x91f, 0x915, 0x94d, 0x930, 0x93e, 0x932, 0x947, -0x928, 0x94d, 0x921, 0x93f, 0x91c, 0x93f, 0x915, 0x92e, 0x928, 0x94b, 0x938, 0x92e, -0x947, 0x930, 0x93f, 0x917, 0x94b, 0x91f, 0x92c, 0x94d, 0x92f, 0x942, 0x932, 0x93e, -0x2c, 0x20, 0x909, 0x924, 0x949, 0x930, 0x949, 0x20, 0x921, 0x915, 0x94b, 0x91f, -0x93e, 0x92e, 0x93e, 0x926, 0x93f, 0x928, 0x940, 0x20, 0x909, 0x924, 0x949, 0x930, -0x949, 0x20, 0x921, 0x915, 0x94b, 0x91f, 0x93e, 0x928, 0x94d, 0x92f, 0x942, 0x20, -0x938, 0x93e, 0x932, 0x947, 0x92e, 0x2c, 0x20, 0x909, 0x924, 0x949, 0x930, 0x949, -0x20, 0x921, 0x915, 0x94b, 0x91f, 0x93e, 0x913, 0x915, 0x93e, 0x91c, 0x940, 0x928, -0x93e, 0x917, 0x93e, 0x92a, 0x93c, 0x940, 0x928, 0x93f, 0x915, 0x94d, 0x938, 0x92a, -0x94b, 0x930, 0x94d, 0x91f, 0x20, 0x911, 0x92a, 0x93c, 0x20, 0x938, 0x94d, 0x92a, -0x947, 0x928, 0x930, 0x947, 0x938, 0x93e, 0x907, 0x92a, 0x93c, 0x938, 0x947, 0x928, -0x94d, 0x91f, 0x93e, 0x930, 0x947, 0x92e, 0x938, 0x947, 0x902, 0x924, 0x93f, 0x906, -0x917, 0x94b, 0x938, 0x947, 0x902, 0x91f, 0x20, 0x92c, 0x93e, 0x930, 0x94d, 0x924, -0x947, 0x932, 0x947, 0x92e, 0x93f, 0x938, 0x947, 0x902, 0x91f, 0x20, 0x924, 0x949, -0x92e, 0x938, 0x938, 0x94d, 0x935, 0x93f, 0x92a, 0x93c, 0x94d, 0x91f, 0x20, 0x915, -0x930, 0x902, 0x91f, 0x935, 0x94d, 0x92f, 0x93e, 0x928, 0x94d, 0x915, 0x942, 0x935, -0x930, 0x92e, 0x94d, 0x92f, 0x93e, 0x915, 0x92e, 0x941, 0x930, 0x94d, 0x921, 0x94b, -0x932, 0x949, 0x928, 0x94d, 0x917, 0x92f, 0x930, 0x92c, 0x94d, 0x92f, 0x947, 0x928, -0x905, 0x938, 0x94d, 0x917, 0x93e, 0x92c, 0x93e, 0x924, 0x92c, 0x94d, 0x92f, 0x93e, -0x902, 0x917, 0x915, 0x949, 0x915, 0x92c, 0x93f, 0x938, 0x94d, 0x915, 0x947, 0x915, -0x92c, 0x94d, 0x930, 0x942, 0x928, 0x947, 0x924, 0x93f, 0x924, 0x94d, 0x938, 0x93f, -0x924, 0x93e, 0x926, 0x941, 0x92c, 0x924, 0x93f, 0x926, 0x941, 0x938, 0x93e, 0x902, -0x92c, 0x947, 0x92a, 0x93c, 0x93e, 0x92e, 0x93e, 0x917, 0x941, 0x938, 0x94d, 0x924, -0x93e, 0x92f, 0x947, 0x930, 0x941, 0x938, 0x932, 0x947, 0x92e, 0x915, 0x93e, 0x921, -0x93f, 0x902, 0x917, 0x93e, 0x92a, 0x928, 0x949, 0x92e, 0x20, 0x92a, 0x947, 0x928, -0x94d, 0x939, 0x915, 0x93f, 0x91c, 0x93f, 0x932, 0x949, 0x930, 0x94d, 0x921, 0x93e, -0x938, 0x93e, 0x915, 0x93e, 0x932, 0x93f, 0x928, 0x938, 0x902, 0x918, 0x93e, 0x924, -0x93f, 0x924, 0x93e, 0x924, 0x93f, 0x92a, 0x947, 0x924, 0x93f, 0x924, 0x93e, 0x938, -0x915, 0x902, 0x924, 0x91f, 0x94d, 0x2d, 0x92c, 0x93f, 0x932, 0x93f, 0x938, 0x93f, -0x92f, 0x93e, 0x902, 0x917, 0x949, 0x928, 0x915, 0x94d, 0x92f, 0x93e, 0x928, 0x947, -0x930, 0x940, 0x92a, 0x94d, 0x92f, 0x93e, 0x930, 0x94b, 0x926, 0x93e, 0x945, 0x915, -0x93f, 0x923, 0x93e, 0x945, 0x20, 0x91c, 0x93e, 0x945, 0x930, 0x94d, 0x91c, 0x93f, -0x92f, 0x93e, 0x938, 0x94d, 0x91f, 0x94d, 0x92f, 0x93e, 0x928, 0x932, 0x940, 0x906, -0x938, 0x94d, 0x91f, 0x94d, 0x930, 0x93e, 0x915, 0x93e, 0x928, 0x90f, 0x924, 0x947, -0x928, 0x94d, 0x938, 0x906, 0x907, 0x932, 0x20, 0x911, 0x92a, 0x94d, 0x20, 0x92e, -0x94d, 0x92f, 0x93e, 0x928, 0x938, 0x93f, 0x92e, 0x94d, 0x92a, 0x93c, 0x947, 0x930, -0x94b, 0x92a, 0x94b, 0x932, 0x938, 0x94d, 0x915, 0x94b, 0x92a, 0x94d, 0x92f, 0x947, -0x938, 0x94b, 0x92a, 0x93c, 0x93f, 0x92f, 0x93e, 0x91c, 0x93c, 0x94d, 0x92f, 0x942, -0x930, 0x93f, 0x915, 0x93c, 0x92e, 0x949, 0x930, 0x940, 0x938, 0x938, 0x911, 0x915, -0x932, 0x947, 0x902, 0x921, 0x91a, 0x94d, 0x92f, 0x93e, 0x925, 0x92e, 0x924, 0x93f, -0x938, 0x94d, 0x91f, 0x930, 0x90f, 0x92a, 0x93c, 0x947, 0x91f, 0x92a, 0x93c, 0x93e, -0x915, 0x93e, 0x913, 0x92a, 0x93c, 0x94b, 0x92a, 0x93c, 0x93f, 0x91c, 0x940, 0x92a, -0x93c, 0x94d, 0x92f, 0x942, 0x928, 0x93e, 0x92a, 0x93c, 0x941, 0x91f, 0x940, 0x917, -0x94d, 0x92f, 0x93e, 0x92e, 0x92c, 0x93f, 0x92f, 0x930, 0x915, 0x947, 0x902, 0x91f, -0x928, 0x928, 0x93e, 0x945, 0x909, 0x930, 0x941, 0x928, 0x949, 0x930, 0x92a, 0x93c, -0x949, 0x915, 0x928, 0x949, 0x92e, 0x93f, 0x92f, 0x93e, 0x92a, 0x94b, 0x928, 0x92a, -0x947, 0x924, 0x93f, 0xb0f, 0xb15, 0xb4d, 0xb30, 0xb3e, 0xb2c, 0xb4d, 0xb30, 0xb3e, -0xb1c, 0xb3e, 0xb71, 0xb3f, 0xb32, 0xb4d, 0xb32, 0xb47, 0xb2c, 0xb41, 0xb1c, 0xb42, -0xb2e, 0xb4d, 0xb2c, 0xb41, 0xb30, 0xb3e, 0xb15, 0xb28, 0xb3e, 0xb15, 0xb4d, 0xb30, -0xb3f, 0xb1c, 0xb3f, 0xb2c, 0xb1f, 0xb3f, 0xb2a, 0xb4d, 0xb30, 0xb3f, 0xb1f, 0xb3e, -0xb09, 0xb28, 0xb4d, 0x200c, 0xb17, 0xb3e, 0xb2c, 0xb30, 0xb4d, 0xb23, 0xb4d, 0xb23, -0xb1c, 0xb39, 0xb3e, 0xb28, 0xb4d, 0xb38, 0xb2c, 0xb30, 0xb4d, 0xb17, 0xb15, 0xb30, -0xb1f, 0xb09, 0xb2e, 0xb4d, 0x200c, 0xb32, 0xb3e, 0xb17, 0xb38, 0xb4d, 0x200c, 0xb32, -0xb3f, 0xb2c, 0xb4d, 0xb30, 0xb47, 0xb71, 0xb3f, 0xb32, 0xb4d, 0xb32, 0xb47, 0xb32, -0xb2e, 0xb4d, 0x200c, 0xb2e, 0xb4d, 0x2d, 0xb2c, 0xb3e, 0xb2c, 0xb3e, 0xb28, 0xb47, -0xb2e, 0xb4b, 0xb17, 0xb3e, 0xb21, 0xb3f, 0xb38, 0xb41, 0xb2e, 0xb28, 0xb30, 0xb4b, -0xb2c, 0xb3f, 0xb06, 0xb28, 0xb3e, 0xb07, 0xb30, 0xb2c, 0xb3f, 0xb28, 0xb41, 0xb06, -0xb15, 0xb1a, 0xb1f, 0xb05, 0xb17, 0xb3e, 0xb21, 0xb17, 0xb41, 0xb2a, 0xb30, 0xb4d, -0xb1f, 0x2d, 0xb28, 0xb71, 0xb38, 0xb3e, 0xb05, 0x20, 0xb1f, 0xb2e, 0xb47, 0xb24, -0xb4d, 0xb30, 0xb3f, 0xb2a, 0xb32, 0xb3f, 0xb71, 0xb3f, 0xb23, 0xb4d, 0xb21, 0xb39, -0xb15, 0xb4d, 0xb2c, 0xb41, 0xb0f, 0xb28, 0xb38, 0xb4d, 0x20, 0xb06, 0xb07, 0xb30, -0xb47, 0xb38, 0xb4d, 0xb15, 0xb3e, 0xb3c, 0xb1f, 0xb3e, 0xb2e, 0xb3e, 0xb15, 0xb3e, -0xb01, 0xb15, 0xb4b, 0xb21, 0xb4b, 0xb2c, 0xb3e, 0xb1c, 0xb41, 0xb1c, 0xb4b, 0xb0f, -0xb32, 0xb3e, 0x20, 0xb30, 0xb3f, 0xb4d, 0xb05, 0xb1c, 0xb3e, 0xb2e, 0xb47, 0xb23, -0xb4d, 0xb21, 0xb1c, 0xb3e, 0xb30, 0xb3f, 0xb5f, 0xb4b, 0x20, 0xb17, 0xb3e, 0xb32, -0xb47, 0xb17, 0xb4b, 0xb38, 0xb38, 0xb3e, 0xb32, 0xb4d, 0xb1f, 0xb3e, 0xb38, 0xb3e, -0xb5f, 0xb3e, 0xb28, 0xb4d, 0x20, 0xb71, 0xb3e, 0xb28, 0xb4d, 0xb38, 0xb5f, 0xb3e, -0xb28, 0x20, 0xb32, 0xb41, 0xb07, 0xb38, 0xb1f, 0xb4b, 0xb15, 0xb41, 0xb2e, 0xb28, -0xb09, 0xb38, 0xb41, 0xb06, 0xb07, 0xb5f, 0xb3e, 0xb05, 0xb30, 0xb41, 0xb2c, 0xb3e, -0xb2c, 0xb3e, 0xb30, 0xb2c, 0xb3e, 0xb21, 0xb38, 0xb2c, 0xb4d, 0xb32, 0xb3e, 0xb19, -0xb4d, 0xb15, 0x2d, 0xb38, 0xb3e, 0xb2c, 0xb32, 0xb28, 0xb4d, 0xb2c, 0xb4b, 0xb06, -0x20, 0xb71, 0xb3f, 0xb38, 0xb4d, 0xb1f, 0xb3e, 0xb2c, 0xb17, 0xb1f, 0xb3e, 0xb2c, -0xb07, 0xb38, 0xb47, 0xb15, 0xb3e, 0xb2e, 0xb4d, 0xb2a, 0x20, 0xb17, 0xb4d, 0xb30, -0xb3e, 0xb23, 0xb4d, 0xb21, 0xb47, 0xb38, 0xb3f, 0xb15, 0xb3e, 0xb17, 0xb15, 0xb37, -0xb4d, 0xb1f, 0xb3e, 0x20, 0xb30, 0xb3f, 0xb15, 0xb3e, 0xb15, 0xb4d, 0xb30, 0xb47, -0xb38, 0xb4d, 0x200d, 0xb1f, 0xb28, 0xb21, 0xb47, 0xb28, 0xb71, 0xb3f, 0xb30, 0xb4d, -0xb21, 0xb47, 0xb1f, 0xb4d, 0xb30, 0xb07, 0xb1f, 0xb4d, 0xb21, 0xb2e, 0xb3f, 0xb28, -0xb3f, 0xb15, 0xb3e, 0xb0f, 0xb21, 0xb4d, 0x200d, 0xb2e, 0xb28, 0xb1f, 0xb28, 0xb4d, -0xb0f, 0xb32, 0xb4d, 0x20, 0xb38, 0xb3e, 0xb32, 0xb71, 0xb3e, 0xb21, 0xb4b, 0xb30, -0xb4d, 0xb2a, 0xb30, 0xb4d, 0xb1f, 0x20, 0xb28, 0xb47, 0xb32, 0xb38, 0xb28, 0xb4d, -0xb2a, 0xb30, 0xb4d, 0xb1f, 0xb32, 0xb47, 0xb1c, 0xb3e, 0xb17, 0xb41, 0xb06, 0xb21, -0xb47, 0xb32, 0xb09, 0xb2a, 0xb47, 0xb17, 0xb41, 0xb06, 0xb24, 0xb47, 0xb2e, 0xb3e, -0xb32, 0xb3e, 0xb39, 0xb3e, 0xb71, 0xb28, 0xb3e, 0xb39, 0xb47, 0xb30, 0xb2e, 0xb38, -0xb3f, 0xb32, 0xb4b, 0xb07, 0xb23, 0xb4d, 0xb21, 0xb3f, 0xb06, 0xb28, 0xb3e, 0xb2a, -0xb32, 0xb3f, 0xb38, 0xb4d, 0xb2e, 0xb3e, 0xb30, 0xb47, 0xb28, 0xb17, 0x2c, 0x20, -0xb07, 0xb23, 0xb4d, 0xb21, 0xb3f, 0xb06, 0xb28, 0xb3e, 0xb71, 0xb47, 0xb71, 0xb3e, -0xb5f, 0x2c, 0x20, 0xb07, 0xb23, 0xb4d, 0xb21, 0xb3f, 0xb06, 0xb28, 0xb3e, 0xb07, -0xb28, 0xb41, 0xb71, 0xb3f, 0xb15, 0xb4d, 0xb32, 0xb09, 0xb07, 0xb38, 0xb71, 0xb3f, -0xb32, 0xb4d, 0xb32, 0xb47, 0xb2e, 0xb23, 0xb4d, 0xb1f, 0xb3f, 0xb38, 0xb47, 0xb32, -0x2c, 0x20, 0xb15, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb09, 0xb15, 0xb3f, 0xb15, 0xb47, -0xb15, 0xb4d, 0xb30, 0xb3e, 0xb32, 0xb47, 0xb23, 0xb4d, 0xb21, 0xb3f, 0xb1c, 0xb3f, -0xb15, 0xb2e, 0xb3e, 0xb38, 0xb3f, 0xb05, 0xb2e, 0xb3e, 0xb30, 0xb3f, 0xb17, 0xb1f, -0xb4d, 0xb2e, 0xb3e, 0xb1f, 0xb3e, 0xb2e, 0xb30, 0xb38, 0xb4d, 0xb2e, 0xb3e, 0xb1c, -0xb3e, 0xb1f, 0xb32, 0xb3e, 0xb28, 0xb4d, 0xb2e, 0xb3f, 0xb15, 0xb4d, 0xb35, 0xb47, -0xb32, 0xb28, 0xb4d, 0xb2e, 0xb3e, 0xb28, 0xb15, 0xb1f, 0xb28, 0xb4d, 0xb2e, 0xb28, -0xb1f, 0xb47, 0xb30, 0xb3f, 0xb0f, 0xb2e, 0xb23, 0xb4d, 0xb1f, 0xb47, 0xb2d, 0xb3f, -0xb21, 0xb3f, 0xb05, 0xb2e, 0xb28, 0xb1f, 0xb38, 0xb47, 0xb30, 0xb30, 0xb3e, 0xb1f, -0xb4d, 0xb28, 0xb4d, 0xb5f, 0xb41, 0x20, 0xb5f, 0xb30, 0xb4d, 0xb15, 0xb4d, 0xb28, -0xb30, 0xb39, 0xb4d, 0xb28, 0xb2c, 0xb47, 0xb09, 0xb32, 0xb3e, 0xb39, 0x2c, 0x20, -0xb09, 0xb24, 0xb4d, 0xb24, 0xb30, 0x20, 0xb21, 0xb3e, 0xb15, 0xb1f, 0xb3e, 0xb15, -0xb47, 0xb28, 0xb4d, 0xb26, 0xb4d, 0xb30, 0x2c, 0x20, 0xb09, 0xb24, 0xb4d, 0xb24, -0xb30, 0x20, 0xb21, 0xb3e, 0xb15, 0xb1f, 0xb3e, 0xb28, 0xb4d, 0xb5f, 0xb41, 0x20, -0xb38, 0xb3e, 0xb32, 0xb47, 0xb2e, 0xb4d, 0x2c, 0x20, 0xb09, 0xb24, 0xb4d, 0xb24, -0xb30, 0x20, 0xb21, 0xb3e, 0xb15, 0xb1f, 0xb3e, 0xb05, 0xb1c, 0xb3f, 0xb28, 0xb3e, -0xb17, 0xb3e, 0xb2a, 0xb07, 0xb28, 0xb3f, 0xb15, 0xb4d, 0xb38, 0xb2a, 0xb30, 0xb4d, -0xb1f, 0x2d, 0xb0f, 0xb5f, 0xb41, 0x2d, 0xb2a, 0xb4d, 0xb30, 0xb3f, 0xb28, 0xb4d, -0x200d, 0xb38, 0xb2a, 0xb30, 0xb4d, 0xb1f, 0xb4d, 0x20, 0xb05, 0xb2b, 0xb4d, 0x20, -0xb38, 0xb4d, 0xb2a, 0xb47, 0xb28, 0xb4d, 0xb2a, 0xb41, 0xb0f, 0xb30, 0xb4d, 0xb24, -0x20, 0xb30, 0xb3f, 0xb15, 0xb30, 0xb47, 0xb38, 0xb3f, 0xb2a, 0xb3f, 0xb30, 0xb3f, -0xb5f, 0x20, 0xb2c, 0xb4d, 0xb30, 0xb3e, 0xb19, 0xb4d, 0xb15, 0xb38, 0xb3e, 0xb28, -0xb4d, 0xb24, 0xb30, 0xb47, 0xb2e, 0xb4d, 0xb38, 0xb3e, 0xb23, 0xb4d, 0xb1f, 0x20, -0xb21, 0xb2e, 0xb3f, 0xb19, 0xb4d, 0xb17, 0xb07, 0xb1f, 0xb4d, 0xb1f, 0xb15, 0xb4d, -0xb35, 0xb30, 0xb1f, 0xb30, 0xb2e, 0xb3f, 0xb1f, 0xb4d, 0xb38, 0xb47, 0xb23, 0xb4d, -0xb1f, 0x20, 0xb2c, 0xb3e, 0xb30, 0xb4d, 0xb24, 0xb47, 0xb32, 0xb47, 0xb2e, 0xb3f, -0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0x20, 0xb15, 0xb3f, 0xb1f, 0xb4d, 0x200d, -0xb38, 0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0x2e, 0x20, 0xb25, 0xb2e, 0xb3e, -0xb38, 0xb4d, 0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0x2e, 0x20, 0xb71, 0xb3f, -0xb28, 0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0xb24, 0xb41, 0xb32, 0xb47, 0xb1f, -0xb30, 0xb23, 0xb4d, 0xb1f, 0xb1f, 0xb30, 0xb1f, 0xb32, 0xb3e, 0xb71, 0xb3e, 0xb19, -0xb4d, 0xb15, 0xb41, 0xb71, 0xb30, 0xb4d, 0xb15, 0xb47, 0xb38, 0xb3f, 0xb21, 0xb47, -0xb71, 0xb3f, 0xb38, 0xb4d, 0xb21, 0xb4d, 0xb5f, 0xb41, 0xb2e, 0xb3e, 0xb23, 0xb4d, -0xb1f, 0x20, 0xb21, 0xb3f, 0x20, 0xb09, 0xb30, 0xb71, 0xb3f, 0xb32, 0xb47, 0xb2e, -0xb15, 0xb4d, 0xb71, 0xb3e, 0xb30, 0xb3f, 0xb2e, 0xb3e, 0xb01, 0xb38, 0xb28, 0xb2e, -0xb4d, 0xb5f, 0xb3e, 0xb15, 0xb2e, 0xb41, 0xb30, 0xb4d, 0xb21, 0xb2a, 0xb3e, 0xb01, -0xb2e, 0xb30, 0xb30, 0xb4b, 0xb24, 0xb47, 0xb30, 0xb3e, 0xb1f, 0xb4b, 0xb32, 0xb4d, -0xb71, 0xb4b, 0xb38, 0xb4d, 0xb24, 0xb15, 0xb4b, 0xb33, 0xb19, 0xb4d, 0xb16, 0xb5f, -0xb3e, 0xb30, 0xb2c, 0xb47, 0xb28, 0xb06, 0xb15, 0xb4d, 0xb1f, 0xb2c, 0xb47, 0xb06, -0xb38, 0xb4d, 0x200d, 0xb17, 0xb3e, 0xb2c, 0xb1f, 0xb4d, 0xb2c, 0xb39, 0xb3e, 0xb30, -0xb47, 0xb28, 0xb2c, 0xb3f, 0xb38, 0xb15, 0xb47, 0xb15, 0xb4d, 0x200c, 0xb26, 0xb41, -0xb38, 0xb3e, 0xb28, 0xb2c, 0xb47, 0xb2a, 0xb3e, 0xb2e, 0xb3e, 0xb17, 0xb41, 0xb38, -0xb4d, 0xb1f, 0xb3e, 0xb39, 0x20, 0xb1a, 0xb3f, 0x20, 0xb2e, 0xb3f, 0xb28, 0xb4d, -0x200c, 0x20, 0xb38, 0xb3f, 0xb1f, 0xb3f, 0xb39, 0xb4b, 0xb71, 0xb21, 0xb4d, 0x200c, -0xb1c, 0xb3e, 0xb15, 0xb30, 0xb4d, 0xb24, 0xb3e, 0xb15, 0xb2c, 0xb41, 0xb32, 0xb4d, -0xb15, 0xb3e, 0xb1f, 0xb2e, 0xb3e, 0xb23, 0xb4d, 0xb21, 0xb41, 0xb15, 0xb3e, 0xb28, -0xb21, 0xb4d, 0xb5f, 0xb3e, 0xb17, 0xb3e, 0xb15, 0xb4d, 0xb30, 0xb3e, 0xb38, 0xb28, -0xb5f, 0xb3e, 0xb30, 0xb38, 0xb4d, 0xb15, 0xb28, 0xb3f, 0xb15, 0xb38, 0xb3f, 0xb06, -0xb28, 0xb71, 0xb15, 0xb41, 0xb1c, 0xb28, 0xb47, 0xb1f, 0xb38, 0xb4d, 0xb15, 0xb28, -0xb71, 0xb38, 0xb3f, 0xb2c, 0xb3f, 0xb30, 0xb38, 0xb4d, 0xb15, 0xb05, 0xb30, 0xb3e, -0xb32, 0xb4d, 0x200c, 0xb2a, 0xb28, 0xb2e, 0xb4d, 0x200c, 0x20, 0xb2a, 0xb47, 0xb28, -0xb39, 0xb2a, 0xb23, 0xb4d, 0xb1f, 0xb3f, 0xb06, 0xb28, 0xb3e, 0xb15, 0xb4d, 0x200c, -0xb15, 0xb37, 0xb4d, 0xb1f, 0xb28, 0xb47, 0xb15, 0xb40, 0xb1c, 0xb3f, 0xb32, 0xb30, -0xb4d, 0xb21, 0xb3e, 0xb38, 0xb15, 0xb3e, 0xb32, 0xb3f, 0xb28, 0xb4d, 0xb38, 0xb3f, -0xb05, 0xb32, 0xb38, 0xb02, 0xb17, 0xb3e, 0xb07, 0xb38, 0xb4d, 0xb30, 0xb47, 0xb21, -0xb28, 0xb47, 0xb15, 0xb32, 0xb5f, 0xb2e, 0xb38, 0xb4d, 0xb15, 0xb24, 0xb3e, 0xb38, -0xb15, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb24, 0xb3f, 0xb2e, 0xb4d, 0xb2a, 0xb41, 0xb1f, -0xb15, 0xb3f, 0xb05, 0xb1f, 0xb2e, 0xb38, 0xb4d, 0xb15, 0xb5f, 0xb41, 0xb38, 0xb4d, -0x200d, 0xb1f, 0x2d, 0xb28, 0xb47, 0xb30, 0xb3e, 0xb71, 0xb3f, 0xb0f, 0xb23, 0xb4d, -0xb1f, 0xb3f, 0xb0f, 0xb28, 0xb4d, 0x200c, 0xb71, 0xb4d, 0xb32, 0xb3e, 0xb21, 0xb3f, -0xb71, 0xb37, 0xb4d, 0xb1f, 0xb4b, 0xb15, 0xb4d, 0xb5f, 0xb47, 0xb30, 0xb47, 0xb2c, -0xb3e, 0xb28, 0xb4d, 0xb06, 0xb1c, 0xb30, 0xb47, 0xb38, 0xb4d, 0xb2c, 0xb30, 0xb2e, -0xb41, 0xb21, 0xb3e, 0xb15, 0xb47, 0xb2a, 0xb4d, 0x200c, 0x20, 0xb71, 0xb30, 0xb4d, -0xb26, 0xb47, 0xb2a, 0xb30, 0xb0f, 0xb30, 0xb47, 0xb15, 0xb4d, 0xb5f, 0xb3e, 0xb2c, -0xb3f, 0xb15, 0xb38, 0xb4d, 0x200d, 0xb1f, 0xb3e, 0xb32, 0xb3f, 0xb28, 0xb0f, 0xb21, -0xb3f, 0xb32, 0xb47, 0xb21, 0xb4d, 0xb2c, 0xb4d, 0xb30, 0xb3f, 0xb38, 0xb2c, 0xb28, -0xb4d, 0xb2c, 0xb4d, 0xb30, 0xb4b, 0xb15, 0xb28, 0x20, 0xb39, 0xb3f, 0xb32, 0xb21, -0xb3e, 0xb30, 0xb4d, 0xb71, 0xb3f, 0xb28, 0xb4d, 0xb32, 0xb3f, 0xb23, 0xb4d, 0xb21, -0xb47, 0xb2e, 0xb3e, 0xb28, 0xb32, 0xb30, 0xb4d, 0x200d, 0xb21, 0x20, 0xb39, 0xb3e, -0xb71, 0xb47, 0xb2e, 0xb47, 0xb32, 0xb2c, 0xb4b, 0xb28, 0xb01, 0xb2a, 0xb30, 0xb4d, -0xb24, 0xb06, 0xb2e, 0xb37, 0xb4d, 0xb1f, 0xb4d, 0xb30, 0xb47, 0xb21, 0xb3e, 0xb2e, -0xb4d, 0xb06, 0xb23, 0xb4d, 0xb21, 0xb30, 0xb3e, 0xb06, 0xb38, 0xb4d, 0x200d, 0xb1f, -0xb30, 0xb3e, 0xb15, 0xb3e, 0xb28, 0xb0f, 0xb24, 0xb47, 0xb28, 0xb4d, 0xb38, 0xb2c, -0xb47, 0xb32, 0xb17, 0xb4d, 0xb30, 0xb47, 0xb21, 0xb47, 0xb2c, 0xb4d, 0xb30, 0xb3e, -0xb1f, 0xb3f, 0xb38, 0xb32, 0xb3e, 0xb71, 0xb3e, 0xb2c, 0xb4d, 0xb30, 0xb41, 0xb38, -0xb3f, 0xb32, 0xb4d, 0x200d, 0xb38, 0xb2c, 0xb41, 0xb1a, 0xb3e, 0xb30, 0xb47, 0xb38, -0xb4d, 0xb1f, 0xb2c, 0xb41, 0xb21, 0xb3e, 0xb2a, 0xb47, 0xb38, 0xb4d, 0xb1f, 0xb1a, -0xb3f, 0xb38, 0xb3f, 0xb28, 0xb3e, 0xb09, 0xb15, 0xb2a, 0xb47, 0xb28, 0xb39, 0xb3e, -0xb17, 0xb47, 0xb28, 0xb4d, 0xb06, 0xb07, 0xb32, 0xb4d, 0x20, 0xb05, 0xb2a, 0xb4d, -0x20, 0xb2e, 0xb4d, 0xb5f, 0xb3e, 0xb28, 0xb4d, 0xb15, 0xb3f, 0xb30, 0xb71, 0xb2e, -0xb3e, 0xb30, 0xb3f, 0xb5f, 0xb3e, 0xb39, 0xb47, 0xb2e, 0xb2e, 0xb28, 0xb3e, 0xb15, -0xb05, 0xb38, 0xb32, 0xb4b, 0xb2a, 0xb21, 0xb17, 0xb30, 0xb3f, 0xb15, 0xb3e, 0xb30, -0xb2e, 0xb4d, 0xb38, 0xb3e, 0xb30, 0xb3e, 0xb1c, 0xb47, 0xb2c, 0xb38, 0xb3e, 0xb30, -0xb3e, 0xb1f, 0xb71, 0xb4d, 0xb38, 0xb3f, 0xb2e, 0xb2b, 0xb47, 0xb30, 0xb2a, 0xb32, -0xb4d, 0xb38, 0xb4d, 0xb15, 0xb2a, 0xb5f, 0xb47, 0xb38, 0xb2a, 0xb3f, 0xb5f, 0xb3e, -0xb38, 0xb4d, 0xb1f, 0xb15, 0xb4d, 0x20, 0xb39, 0xb2e, 0xb4d, 0x200c, 0xb1f, 0xb3e, -0xb07, 0xb30, 0xb47, 0xb28, 0xb4d, 0xb5f, 0xb41, 0xb32, 0xb5f, 0xb3e, 0xb28, 0xb71, -0xb38, 0xb4d, 0xb15, 0xb2c, 0xb3e, 0xb21, 0xb41, 0xb1c, 0xb71, 0xb3e, 0xb1f, 0xb3f, -0xb15, 0xb3e, 0xb28, 0xb4d, 0xb71, 0xb3f, 0xb0f, 0xb28, 0xb3e, 0xb71, 0xb3f, 0xb32, -0xb28, 0xb3f, 0xb09, 0xb38, 0xb4d, 0xb71, 0xb32, 0xb17, 0xb17, 0xb4d, 0xb30, 0xb3e, -0xb21, 0xb4d, 0xb16, 0xb4d, 0xb30, 0xb40, 0xb38, 0xb4d, 0x200d, 0xb1f, 0x20, 0xb2e, -0xb3e, 0xb38, 0xb15, 0xb15, 0xb38, 0xb4d, 0x200c, 0xb15, 0xb2e, 0xb30, 0xb15, 0xb47, -0xb30, 0xb17, 0xb41, 0xb32, 0xb47, 0xb28, 0xb2e, 0xb30, 0xb3f, 0xb38, 0xb38, 0xb4d, -0xb2e, 0xb3e, 0xb5f, 0xb1f, 0xb47, 0xb2c, 0xb17, 0xb47, 0xb28, 0xb4d, 0x200c, 0xb71, -0xb3f, 0xb32, 0xb4d, 0xb32, 0xb47, 0xb1a, 0xb3e, 0xb24, 0xb3e, 0xb2e, 0xb4d, 0x200c, -0xb2a, 0xb15, 0xb3e, 0xb05, 0xb2a, 0xb2a, 0xb3f, 0xb1c, 0xb3f, 0xb17, 0xb3e, 0xb32, -0xb3e, 0xb2a, 0xb3e, 0xb17, 0xb38, 0xb15, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb28, 0xb28, -0xb30, 0xb2a, 0xb15, 0xb4d, 0x200c, 0xb28, 0xb09, 0xb2e, 0xb3f, 0xb5f, 0xb2a, 0xb39, -0xb28, 0xb2a, 0xb47, 0xb07, 0xb2a, 0xb30, 0xb4d, 0xb1f, 0xb4d, 0x200c, 0x20, 0xb2e, -0xb30, 0xb47, 0xb38, 0xb2c, 0xb3f, 0xb30, 0xb3e, 0xb30, 0xb1f, 0xb19, 0xb4d, 0xb17, -0xb3e, 0xb1f, 0xb19, 0xb4d, 0xb17, 0xb3e, 0xb1f, 0xb3e, 0xb2a, 0xb41, 0xc0e, 0xc02, -0xc17, 0xc4d, 0xc35, 0xc3f, 0xc32, 0xc4d, 0xc32, 0xc3e, 0x3c, 0x65, 0x78, 0x65, -0x6d, 0x70, 0x6c, 0x61, 0x72, 0x43, 0x69, 0x74, 0x79, 0x3e, 0xc05, 0xc21, -0xc46, 0xc32, 0xc48, 0xc21, 0xc4d, 0x3c, 0x2f, 0x65, 0x78, 0x65, 0x6d, 0x70, -0x6c, 0x61, 0x72, 0x43, 0x69, 0x74, 0x79, 0x3e, 0xc15, 0xc3e, 0xc02, 0xc1f, -0xc28, 0xc4d, 0x140a, 0x144e, 0x1426, 0x146f, 0x1472, 0x1423, 0x1401, 0x141f, 0x14aa, 0x1423, -0x1450, 0x1423, 0x1403, 0x14c4, 0x1431, 0x1420, 0x1403, 0x1473, 0x14eb, 0x1405, 0x1403, 0x141f, -0x14f4, 0x1422, 0x1473, 0x141f, 0x1489, 0x1418, 0x1423, 0x1411, 0x14c2, 0x142f, 0x1420 +0x65, 0x76, 0x61, 0x79, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, +0x61, 0x29, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x20, +0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x29, 0x57, 0x69, 0x6e, +0x61, 0x6d, 0x61, 0x63, 0x20, 0x28, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, +0x61, 0x29, 0x4a, 0x61, 0x6d, 0xe0, 0x65, 0x67, 0x61, 0x4d, 0x6f, 0x6e, +0x74, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x28, 0x4b, 0x65, 0x6e, +0x74, 0x75, 0x63, 0x6b, 0x79, 0x29, 0x4c, 0x6f, 0x73, 0x20, 0xc0, 0x6e, +0x67, 0x65, 0x6c, 0x65, 0x73, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, +0x67, 0x61, 0x53, 0x69, 0x74, 0xe0, 0x20, 0x64, 0x65, 0x2019, 0x6c, 0x20, +0x4d, 0xe8, 0x73, 0x65, 0x67, 0x6f, 0x4d, 0x69, 0x63, 0x68, 0x65, 0x6c, +0x6f, 0x6e, 0x42, 0x65, 0x75, 0x6c, 0x61, 0x68, 0x20, 0x28, 0x4e, 0x6f, +0x72, 0x64, 0x20, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x29, 0x43, 0x65, +0x6e, 0x74, 0x65, 0x72, 0x20, 0x28, 0x4e, 0x6f, 0x72, 0x64, 0x20, 0x44, +0x61, 0x6b, 0x6f, 0x74, 0x61, 0x29, 0x4e, 0x65, 0x77, 0x20, 0x53, 0x61, +0x6c, 0x65, 0x6d, 0x20, 0x28, 0x4e, 0x6f, 0x72, 0x64, 0x20, 0x44, 0x61, +0x6b, 0x6f, 0x74, 0x61, 0x29, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x20, 0x50, +0x72, 0xec, 0x6e, 0x73, 0x69, 0x70, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x6f, +0x20, 0x64, 0x65, 0x20, 0x53, 0x70, 0x61, 0x67, 0x6e, 0x61, 0x53, 0x61, +0x6e, 0x20, 0x50, 0x6f, 0x6c, 0x6f, 0x53, 0x2e, 0x20, 0x42, 0x61, 0x72, +0x74, 0x6f, 0x6c, 0x6f, 0x6d, 0xe8, 0x6f, 0x53, 0x2e, 0x20, 0x4a, 0x6f, +0x61, 0x6e, 0x69, 0x53, 0x2e, 0x20, 0x43, 0x72, 0x69, 0x73, 0x74, 0x6f, +0x66, 0x65, 0x72, 0x53, 0x2e, 0x20, 0x4c, 0x75, 0x73, 0xec, 0x61, 0x53, +0x2e, 0x20, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0xcc, 0x7a, +0x6f, 0x6c, 0x61, 0x20, 0x4d, 0x61, 0x63, 0x71, 0x75, 0x61, 0x72, 0x69, +0x65, 0x41, 0x6e, 0xe0, 0x64, 0x79, 0x72, 0x41, 0x6b, 0x74, 0xe0, 0x75, +0x41, 0x7a, 0x67, 0x61, 0x62, 0x61, 0x64, 0x41, 0x74, 0x79, 0x72, 0xe0, +0x75, 0x43, 0x6f, 0x6c, 0x6f, 0x6e, 0x62, 0x6f, 0x44, 0x75, 0x62, 0xe0, +0x69, 0x44, 0x75, 0x73, 0x61, 0x6e, 0x62, 0xe9, 0x4b, 0x61, 0x74, 0x6d, +0x61, 0x6e, 0x64, 0xf9, 0x48, 0xe0, 0x6e, 0x64, 0x69, 0x67, 0x61, 0x4b, +0x72, 0x61, 0x7a, 0x6e, 0x61, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x4b, 0x75, +0x61, 0x6c, 0x61, 0x20, 0x4c, 0x75, 0x6e, 0x70, 0x75, 0x72, 0x4d, 0x61, +0x63, 0xe0, 0x6f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x69, +0x65, 0x74, 0x73, 0x6b, 0x4b, 0x6f, 0x73, 0x74, 0x61, 0x6e, 0xe0, 0x69, +0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0xe0, 0x69, 0x5a, 0x72, 0xe9, 0x64, +0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x69, 0x6d, 0x73, 0x6b, 0x54, 0x69, 0x6e, +0x70, 0x75, 0x55, 0x6c, 0x61, 0x6e, 0x20, 0x42, 0xe0, 0x74, 0x6f, 0x72, +0x55, 0x73, 0x74, 0x2d, 0x47, 0x6e, 0x65, 0x72, 0x61, 0x59, 0x65, 0x6b, +0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4a, +0xe8, 0x72, 0x65, 0x76, 0x61, 0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, +0x41, 0x7a, 0x6f, 0x72, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, +0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x43, 0x61, 0x6f, 0x20, 0x56, 0x65, +0x72, 0x64, 0x6f, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x46, 0xe0, 0x72, +0x6f, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4d, 0x61, 0x64, 0xe8, +0x69, 0x72, 0x61, 0x52, 0x65, 0x6b, 0x69, 0x61, 0x76, 0x69, 0x6b, 0x47, +0x65, 0x6f, 0x72, 0x67, 0x69, 0x61, 0x20, 0x64, 0x65, 0x2019, 0x6c, 0x20, +0x73, 0x75, 0x64, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x53, 0x2e, 0x20, +0x45, 0x6c, 0x65, 0x6e, 0x61, 0x41, 0x64, 0x65, 0x6c, 0xe0, 0x69, 0x64, +0x65, 0x42, 0x72, 0x69, 0x7a, 0x62, 0x61, 0x6e, 0x65, 0xcc, 0x7a, 0x6f, +0x6c, 0x61, 0x20, 0x4c, 0x6f, 0x72, 0x64, 0x20, 0x48, 0x6f, 0x77, 0x65, +0xc0, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x6d, 0x42, 0x72, 0x61, +0x74, 0x69, 0x7a, 0x6c, 0x61, 0x76, 0x61, 0x4a, 0x69, 0x62, 0x69, 0x6c, +0x74, 0x65, 0x72, 0x61, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x64, 0x65, +0x20, 0x4d, 0x61, 0x6e, 0x4c, 0x75, 0x62, 0x6c, 0x69, 0x61, 0x6e, 0x61, +0x4c, 0x75, 0x73, 0x65, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4f, 0x7a, +0x6c, 0x6f, 0x50, 0x61, 0x72, 0x69, 0x6a, 0x69, 0x53, 0x69, 0x6e, 0x66, +0x65, 0x72, 0xf2, 0x70, 0x6f, 0x6c, 0x69, 0x53, 0x74, 0x6f, 0x63, 0x6f, +0x6c, 0x6d, 0x61, 0x55, 0x6c, 0x69, 0xe0, 0x6e, 0x6f, 0x73, 0x6b, 0x56, +0x61, 0x74, 0x65, 0x67, 0x61, 0x6e, 0x43, 0x69, 0x61, 0x67, 0x6f, 0x73, +0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x64, 0x65, 0x20, 0x4e, 0x61, 0x64, +0x61, 0x6c, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, 0x6f, 0x63, +0x6f, 0x73, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, 0x6f, 0x6d, 0x6f, +0x72, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, 0x61, 0x6c, 0x64, +0x69, 0x76, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, 0x61, 0x75, +0x72, 0x69, 0x73, 0x69, 0x6f, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, +0x61, 0x69, 0x6f, 0x74, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x52, +0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, +0x42, 0x6f, 0x75, 0x67, 0x61, 0x69, 0x6e, 0x76, 0x69, 0x6c, 0x6c, 0x65, +0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, 0x69, 0x61, 0x74, 0x65, 0x6d, +0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x43, 0x68, 0x75, 0x75, 0x6b, 0xcc, +0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x64, 0x65, 0x20, 0x50, 0x61, 0x73, 0x63, +0x75, 0x61, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x45, 0x66, 0x61, 0x74, +0x65, 0x41, 0x74, 0x6f, 0x6c, 0x6f, 0x20, 0x46, 0x61, 0x6b, 0x61, 0x6f, +0x66, 0x6f, 0x41, 0x74, 0x6f, 0x6c, 0x6f, 0x20, 0x46, 0x75, 0x6e, 0x61, +0x66, 0x75, 0x74, 0x69, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x47, 0x61, +0x6d, 0x62, 0x69, 0x65, 0x72, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x47, +0x75, 0x61, 0x64, 0x61, 0x6c, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x41, 0x74, +0x6f, 0x6c, 0x6f, 0x20, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x6e, 0x41, 0x74, +0x6f, 0x6c, 0x6f, 0x20, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, +0x74, 0x69, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4b, 0x6f, 0x73, 0x72, +0x61, 0x65, 0x41, 0x74, 0x6f, 0x6c, 0x6f, 0x20, 0x4b, 0x77, 0x61, 0x6a, +0x61, 0x6c, 0x65, 0x69, 0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x65, 0x20, 0x4d, +0x61, 0x72, 0x63, 0x68, 0x65, 0x7a, 0x69, 0x41, 0x74, 0x6f, 0x6c, 0x6f, +0x20, 0x4d, 0x69, 0x64, 0x77, 0x61, 0x79, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, +0x20, 0x4e, 0x61, 0x75, 0x72, 0x75, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, +0x4e, 0x69, 0x75, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x4e, 0x6f, +0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x50, 0x61, 0x6c, 0xe0, 0x75, 0xcc, 0x7a, +0x6f, 0x6c, 0x61, 0x20, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, +0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x50, 0x6f, 0x6e, 0x70, 0xe8, 0x69, +0x50, 0x6f, 0x72, 0x74, 0x6f, 0x20, 0x4d, 0x6f, 0x72, 0x65, 0x73, 0x62, +0x79, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x52, 0x61, 0x72, 0x6f, 0x74, +0x6f, 0x6e, 0x67, 0x61, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x53, 0x61, +0x69, 0x70, 0xe0, 0x6e, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x54, 0x61, +0x69, 0x74, 0x69, 0x41, 0x74, 0x6f, 0x6c, 0x6c, 0x6f, 0x20, 0x54, 0x61, +0x72, 0x61, 0x77, 0x61, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x54, 0x6f, +0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x41, 0x74, 0x6f, 0x6c, 0x6f, +0x20, 0x57, 0x61, 0x6b, 0x65, 0xcc, 0x7a, 0x6f, 0x6c, 0x61, 0x20, 0x57, +0x61, 0x6c, 0x6c, 0x69, 0x73, 0x61, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, +0x65, 0x63, 0x72, 0x61, 0x61, 0x1e0d, 0x69, 0x73, 0x20, 0x61, 0x62, 0x61, +0x62, 0x61, 0x61, 0x6c, 0x6a, 0x12b, 0x79, 0x72, 0x73, 0x61, 0x73, 0x6d, +0x61, 0x72, 0x61, 0x62, 0x61, 0x6d, 0x61, 0x6b, 0x6f, 0x62, 0x61, 0x6e, +0x67, 0x75, 0x69, 0x62, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x62, 0x69, 0x73, +0x73, 0x61, 0x75, 0x62, 0x6c, 0x61, 0x6e, 0x1e6d, 0x61, 0x65, 0x72, 0x62, +0x72, 0x61, 0x6a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x62, 0x75, 0x6a, 0x75, +0x6d, 0x62, 0x75, 0x72, 0x61, 0x6b, 0x61, 0x69, 0x72, 0x6f, 0x6b, 0x61, +0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x61, 0x73, 0x65, 0x75, 0x1e6d, +0x61, 0x6b, 0x6f, 0x6e, 0x61, 0x6b, 0x72, 0x12b, 0x1e0d, 0x6b, 0x61, 0x72, +0x64, 0x61, 0x72, 0x20, 0x65, 0x73, 0x20, 0x73, 0x61, 0x6c, 0x61, 0x61, +0x6d, 0x64, 0x75, 0x61, 0x6c, 0x61, 0x65, 0x6c, 0x20, 0x61, 0x61, 0x69, +0x79, 0x75, 0x6e, 0x70, 0x72, 0x12b, 0x1e6d, 0x61, 0x75, 0x6e, 0x67, 0x61, +0x62, 0x6f, 0x72, 0x6f, 0x6e, 0x68, 0x72, 0x61, 0x72, 0x65, 0x6a, 0x6f, +0x68, 0x61, 0x6e, 0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, 0x6a, 0x75, +0x62, 0x61, 0x6b, 0x6d, 0x70, 0x61, 0x6c, 0x61, 0x6b, 0x61, 0x72, 0x1e6d, +0x6f, 0x75, 0x6d, 0x6b, 0x69, 0x67, 0x61, 0x6c, 0x69, 0x6b, 0x69, 0x6e, +0x73, 0x61, 0x73, 0x61, 0x6c, 0x61, 0x67, 0x6f, 0x73, 0x6c, 0x69, 0x62, +0x72, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x6c, 0x75, 0x61, 0x6e, 0x1e0d, 0x61, +0x6c, 0x75, 0x62, 0x75, 0x6d, 0x62, 0x61, 0x73, 0x69, 0x6c, 0x75, 0x73, +0x61, 0x6b, 0x61, 0x6d, 0x61, 0x6c, 0x61, 0x62, 0x6f, 0x6d, 0x61, 0x70, +0x75, 0x1e6d, 0x75, 0x6d, 0x61, 0x73, 0x65, 0x72, 0x75, 0x6d, 0x62, 0x61, +0x62, 0x61, 0x6e, 0x65, 0x6d, 0x6f, 0x67, 0x61, 0x1e0d, 0x69, 0x73, 0x75, +0x6d, 0x6f, 0x6e, 0x72, 0x6f, 0x76, 0x69, 0x61, 0x6e, 0x61, 0x69, 0x72, +0x6f, 0x62, 0x69, 0x6e, 0x6a, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x6e, 0x69, +0x79, 0x61, 0x6d, 0x65, 0x6e, 0x75, 0x65, 0x6b, 0x73, 0x61, 0x76, 0x61, +0x67, 0x64, 0x75, 0x67, 0x75, 0x70, 0x6f, 0x72, 0x1e6d, 0x6f, 0x2d, 0x1e47, +0x6f, 0x76, 0x6f, 0x73, 0x61, 0x6f, 0x20, 0x1e6d, 0x6f, 0x6d, 0x74, 0x72, +0x69, 0x70, 0x6f, 0x6c, 0x69, 0x1e6d, 0x75, 0x6e, 0x69, 0x73, 0x76, 0x69, +0x6e, 0x64, 0x68, 0x75, 0x6b, 0x61, 0x1e0d, 0x61, 0x6b, 0x61, 0x6e, 0x6b, +0x6f, 0x72, 0x61, 0x6a, 0x65, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, +0x65, 0x6e, 0x1e6d, 0x69, 0x67, 0x75, 0x61, 0x61, 0x72, 0x61, 0x67, 0x76, +0x61, 0x69, 0x6e, 0x61, 0x62, 0x75, 0x65, 0x6e, 0x6f, 0x75, 0x73, 0x20, +0x61, 0x69, 0x72, 0x65, 0x73, 0x6b, 0x61, 0x74, 0x61, 0x6d, 0x61, 0x72, +0x6b, 0x61, 0x6b, 0x6f, 0x72, 0x1e0d, 0x61, 0x62, 0x61, 0x68, 0x75, 0x68, +0x75, 0x65, 0x6c, 0x61, 0x20, 0x72, 0x69, 0x6f, 0x6a, 0x61, 0x6d, 0x65, +0x6e, 0x1e0d, 0x6f, 0x6a, 0x61, 0x72, 0x69, 0x79, 0x6f, 0x20, 0x67, 0x61, +0x6c, 0x6c, 0x65, 0x67, 0x6f, 0x73, 0x73, 0x61, 0x6c, 0x1e6d, 0x61, 0x73, +0x61, 0x6e, 0x20, 0x68, 0x75, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x20, 0x6c, +0x75, 0x69, 0x73, 0x1e6d, 0x75, 0x6b, 0x16b, 0x6d, 0x6e, 0x75, 0x73, 0x76, +0x61, 0x69, 0x79, 0x61, 0x61, 0x72, 0x75, 0x62, 0x61, 0x65, 0x73, 0x75, +0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x1e6d, 0x69, 0x6b, 0x6f, 0x6b, 0x65, +0x6e, 0x62, 0x61, 0x68, 0x69, 0x61, 0x62, 0x61, 0x69, 0x61, 0x20, 0x62, +0x61, 0x6e, 0x1e0d, 0x65, 0x72, 0x61, 0x73, 0x62, 0x61, 0x72, 0x62, 0x61, +0x1e0d, 0x6f, 0x73, 0x62, 0x65, 0x6c, 0x65, 0x6d, 0x62, 0x65, 0x6c, 0x69, +0x6a, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x2d, 0x73, 0x61, 0x62, 0x6c, 0x6f, +0x6e, 0x62, 0x6f, 0x61, 0x20, 0x76, 0x69, 0x73, 0x74, 0x61, 0x62, 0x6f, +0x67, 0x6f, 0x1e6d, 0x61, 0x62, 0x6f, 0x69, 0x73, 0x12b, 0x6b, 0x65, 0x6d, +0x62, 0x72, 0x69, 0x6a, 0x20, 0x62, 0x65, 0x6b, 0x61, 0x6d, 0x70, 0x6f, +0x20, 0x67, 0x72, 0x61, 0x6e, 0x1e0d, 0x65, 0x6b, 0x61, 0x6e, 0x6b, 0x75, +0x6e, 0x6b, 0x61, 0x72, 0x61, 0x6b, 0x61, 0x73, 0x6b, 0x65, 0x79, 0x65, +0x6e, 0x6b, 0x65, 0x69, 0x6d, 0x61, 0x6e, 0x63, 0x69, 0x6b, 0x61, 0x67, +0x6f, 0x63, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x6b, 0x6f, +0x73, 0x1e6d, 0x61, 0x20, 0x72, 0x69, 0x6b, 0x61, 0x6b, 0x72, 0x65, 0x73, +0x1e6d, 0x6f, 0x6e, 0x6b, 0x75, 0x61, 0x61, 0x62, 0x61, 0x6b, 0x79, 0x75, +0x72, 0x61, 0x73, 0x6f, 0x1e0d, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x73, +0x61, 0x76, 0x6e, 0x1e0d, 0x61, 0x6f, 0x73, 0x6e, 0x1e0d, 0x61, 0x6f, 0x73, +0x6f, 0x6e, 0x20, 0x6b, 0x72, 0x12b, 0x6b, 0x1e0d, 0x65, 0x6e, 0x76, 0x65, +0x72, 0x1e0d, 0x65, 0x1e6d, 0x72, 0x6f, 0x69, 0x1e6d, 0x1e0d, 0x6f, 0x6d, 0x69, +0x6e, 0x69, 0x6b, 0x61, 0x65, 0x1e0d, 0x6d, 0x6f, 0x6e, 0x1e6d, 0x6f, 0x6e, +0x65, 0x69, 0x72, 0x75, 0x6e, 0x65, 0x70, 0x65, 0x65, 0x6c, 0x20, 0x73, +0x61, 0x6c, 0x76, 0x61, 0x1e0d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x72, 0x74, +0x20, 0x6e, 0x65, 0x6c, 0x73, 0x6e, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, +0x65, 0x6a, 0x61, 0x67, 0x6c, 0x61, 0x73, 0x20, 0x62, 0x61, 0x79, 0x67, +0x6f, 0x6f, 0x73, 0x20, 0x62, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x1e0d, 0x20, +0x1e6d, 0x75, 0x72, 0x6b, 0x67, 0x72, 0x65, 0x6e, 0x61, 0x1e0d, 0x61, 0x67, +0x75, 0x61, 0x1e0d, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x67, 0x75, 0x61, +0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x67, 0x75, 0x61, 0x6a, 0x61, 0x6b, +0x69, 0x6c, 0x67, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x68, 0x65, 0x6c, 0x69, +0x70, 0x61, 0x6b, 0x73, 0x68, 0x61, 0x76, 0x61, 0x6e, 0x61, 0x69, 0x6e, +0x1e0d, 0x69, 0x61, 0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x6e, 0x6f, +0x6b, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, +0x6d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, +0x69, 0x79, 0x61, 0x6e, 0x61, 0x70, 0x69, 0x1e6d, 0x74, 0x72, 0x73, 0x62, +0x65, 0x72, 0x67, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, +0x61, 0x1e6d, 0x65, 0x6c, 0x6c, 0x20, 0x73, 0x69, 0x74, 0x79, 0x2c, 0x20, +0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, 0x76, 0x69, 0x76, 0x69, +0x2c, 0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, 0x76, 0x69, +0x6e, 0x63, 0x65, 0x6e, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x1e0d, 0x69, 0x79, +0x61, 0x6e, 0x61, 0x76, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x6b, 0x2c, 0x20, +0x69, 0x6e, 0x1e0d, 0x69, 0x79, 0x61, 0x6e, 0x61, 0x69, 0x6e, 0x16b, 0x76, +0x69, 0x6b, 0x69, 0x6b, 0x61, 0x6c, 0x75, 0x69, 0x1e6d, 0x6a, 0x61, 0x6d, +0x61, 0x69, 0x6b, 0x61, 0x6a, 0x75, 0x6e, 0x6f, 0x76, 0x6c, 0x6f, 0x75, +0x69, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x6d, 0x6f, 0x6e, 0x1e6d, 0x69, 0x73, +0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x6b, 0x65, 0x6e, 0x1e6d, 0x75, 0x6b, +0x12b, 0x6b, 0x72, 0x65, 0x6c, 0x65, 0x6e, 0x1e0d, 0x65, 0x69, 0x6b, 0x6c, +0x61, 0x20, 0x70, 0x61, 0x6a, 0x6c, 0x6f, 0x73, 0x20, 0x61, 0x6e, 0x6a, +0x65, 0x6c, 0x65, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x70, 0x72, +0x69, 0x6e, 0x63, 0x2019, 0x73, 0x20, 0x6b, 0x75, 0x76, 0x61, 0x1e6d, 0x61, +0x72, 0x6d, 0x61, 0x73, 0x12b, 0x6f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x75, +0x61, 0x6d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x6d, 0x61, 0x72, 0x69, 0x67, +0x6f, 0x1e6d, 0x6d, 0x61, 0x72, 0x1e6d, 0x69, 0x6e, 0x69, 0x6b, 0x6d, 0x61, +0x1e6d, 0x61, 0x6d, 0x6f, 0x72, 0x6f, 0x73, 0x6d, 0x61, 0x73, 0x61, 0x1e6d, +0x6c, 0x61, 0x6e, 0x6d, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x12b, 0x6d, +0x65, 0x72, 0x69, 0x1e0d, 0x61, 0x6d, 0x65, 0x1e6d, 0x6c, 0x61, 0x6b, 0x61, +0x1e6d, 0x6c, 0x61, 0x6d, 0x65, 0x6b, 0x73, 0x69, 0x63, 0x6f, 0x20, 0x73, +0x69, 0x1e6d, 0x79, 0x6d, 0x69, 0x6b, 0x76, 0x69, 0x6c, 0xf5, 0x6d, 0x6f, +0x6e, 0x6b, 0x1e6d, 0x6f, 0x6e, 0x6d, 0x6f, 0x6e, 0x1e6d, 0x65, 0x72, 0x72, +0x65, 0x6d, 0x6f, 0x6e, 0x1e6d, 0x65, 0x76, 0x69, 0x64, 0x69, 0x6f, 0x6d, +0x6f, 0x6e, 0x1e6d, 0x73, 0x65, 0x72, 0x72, 0x65, 0x1e6d, 0x6e, 0x61, 0x73, +0x61, 0x75, 0x6e, 0x69, 0x79, 0x75, 0x20, 0x79, 0x6f, 0x72, 0x6b, 0x6e, +0x6f, 0x72, 0x6f, 0x6e, 0x68, 0x61, 0x62, 0x69, 0x79, 0x75, 0x6c, 0x61, +0x2c, 0x20, 0x75, 0x74, 0x74, 0x61, 0x72, 0x20, 0x1e0d, 0x61, 0x6b, 0x6f, +0x1e6d, 0x61, 0x6d, 0x61, 0x1e0d, 0x69, 0x6e, 0x12b, 0x20, 0x75, 0x74, 0x74, +0x61, 0x72, 0x20, 0x1e0d, 0x61, 0x6b, 0x6f, 0x1e6d, 0x61, 0x6e, 0x65, 0x75, +0x20, 0x73, 0x61, 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x75, 0x74, 0x74, 0x61, +0x72, 0x20, 0x1e0d, 0x61, 0x6b, 0x6f, 0x1e6d, 0x61, 0x6e, 0x16b, 0x6b, 0x6f, +0x6a, 0x69, 0x6e, 0x61, 0x67, 0x61, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x61, +0x70, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x72, 0x69, 0x62, 0x6f, 0x70, 0x69, +0x6e, 0x69, 0x6b, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, +0x70, 0x72, 0x69, 0x6e, 0x73, 0x65, 0x70, 0x6f, 0x72, 0x1e6d, 0x20, 0x61, +0x70, 0x20, 0x73, 0x70, 0x61, 0x69, 0x6e, 0x70, 0x6f, 0x72, 0x1e6d, 0x70, +0x20, 0x76, 0x65, 0x6c, 0x68, 0x6f, 0x70, 0x75, 0x65, 0x72, 0x74, 0x6f, +0x20, 0x72, 0x69, 0x6b, 0x6f, 0x70, 0x75, 0x1e47, 0x1e6d, 0x61, 0x20, 0x65, +0x72, 0x65, 0x6e, 0x61, 0x73, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x20, +0x69, 0x6e, 0x6c, 0x65, 0x64, 0x1e6d, 0x72, 0x65, 0x73, 0x69, 0x70, 0x69, +0x72, 0x65, 0x6a, 0x69, 0x6e, 0x61, 0x72, 0x65, 0x6a, 0x61, 0x6c, 0x79, +0x75, 0x1e6d, 0x72, 0x69, 0x6f, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x6b, 0x6f, +0x73, 0x61, 0x74, 0x61, 0x72, 0x69, 0x73, 0x61, 0x6e, 0x1e6d, 0x69, 0x61, +0x67, 0x6f, 0x73, 0x65, 0x6e, 0x74, 0x6f, 0x20, 0x1e0d, 0x6f, 0x6d, 0x69, +0x6e, 0x67, 0x6f, 0x73, 0x61, 0x6f, 0x20, 0x70, 0x61, 0x75, 0x6c, 0x6f, +0x69, 0x1e6d, 0x6f, 0x6b, 0x6f, 0x1e6d, 0x6f, 0x72, 0x6d, 0x69, 0x1e6d, 0x73, +0x69, 0x74, 0x6b, 0x61, 0x73, 0x65, 0x6e, 0x1e6d, 0x20, 0x62, 0x61, 0x72, +0x74, 0x65, 0x6c, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x6e, 0x1e6d, 0x20, 0x6a, +0x6f, 0x6e, 0x73, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x6b, 0x69, 0x1e6d, 0x1e6d, +0x73, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x75, 0x73, 0x69, 0x61, 0x73, +0x65, 0x6e, 0x1e6d, 0x20, 0x74, 0x6f, 0x6d, 0x61, 0x73, 0x73, 0x65, 0x6e, +0x1e6d, 0x20, 0x76, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x1e6d, 0x73, 0x76, 0x69, +0x70, 0x1e6d, 0x20, 0x6b, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x1e6d, 0x74, 0x65, +0x67, 0x75, 0x74, 0x75, 0x6c, 0x65, 0x74, 0x69, 0x68, 0x76, 0x61, 0x6e, +0x61, 0x1e6d, 0x6f, 0x72, 0x6f, 0x6e, 0x1e6d, 0x6f, 0x1e6d, 0x6f, 0x72, 0x1e6d, +0x6f, 0x6c, 0x61, 0x76, 0x61, 0x6e, 0x6b, 0x16b, 0x76, 0x65, 0x72, 0x76, +0x68, 0x61, 0x69, 0x1e6d, 0x68, 0x6f, 0x72, 0x73, 0x76, 0x69, 0x6e, 0x6e, +0x69, 0x70, 0x65, 0x67, 0x79, 0x61, 0x6b, 0x75, 0x1e6d, 0x61, 0x1e6d, 0x6b, +0x65, 0x73, 0x65, 0x65, 0x1e0d, 0x65, 0x76, 0x69, 0x73, 0x1e0d, 0x79, 0x75, +0x6d, 0x6f, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x20, 0x75, 0x72, 0x76, 0x69, +0x6c, 0x6c, 0x6d, 0x65, 0x6b, 0x76, 0x61, 0x72, 0x69, 0x6d, 0x61, 0x76, +0x73, 0x6f, 0x6e, 0x6d, 0x65, 0x6b, 0x20, 0x6d, 0x75, 0x72, 0x1e0d, 0x6f, +0x70, 0x61, 0x6c, 0x6d, 0x65, 0x72, 0x72, 0x6f, 0x74, 0x65, 0x72, 0x61, +0x73, 0x79, 0x6f, 0x76, 0x61, 0x1e6d, 0x72, 0x6f, 0x6c, 0x6c, 0x76, 0x6f, +0x73, 0x1e6d, 0x6f, 0x6b, 0x6c, 0x6e, 0x67, 0x79, 0x61, 0x72, 0x62, 0x79, +0x65, 0x6e, 0x65, 0x1e0d, 0x65, 0x6e, 0x61, 0x6c, 0x6d, 0x61, 0x1e6d, 0x79, +0x61, 0x6d, 0x6d, 0x61, 0x6e, 0x61, 0x6e, 0x61, 0x1e0d, 0x69, 0x72, 0x61, +0x6b, 0x74, 0x61, 0x75, 0x61, 0x61, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x61, +0x73, 0x67, 0x61, 0x62, 0x61, 0x1e6d, 0x61, 0x74, 0x61, 0x72, 0x61, 0x75, +0x62, 0x61, 0x67, 0x64, 0x61, 0x64, 0x62, 0x61, 0x68, 0x72, 0x61, 0x69, +0x6e, 0x62, 0x61, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, +0x62, 0x61, 0x72, 0x6e, 0x61, 0x75, 0x6c, 0x62, 0x65, 0x69, 0x72, 0x75, +0x74, 0x62, 0x69, 0x73, 0x6b, 0x65, 0x6b, 0x62, 0x72, 0x75, 0x6e, 0x65, +0x69, 0x63, 0x69, 0x74, 0x61, 0x6b, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, +0x1e0d, 0x61, 0x6d, 0x61, 0x73, 0x6b, 0x75, 0x73, 0x1e0d, 0x69, 0x6c, 0x69, +0x64, 0x75, 0x62, 0x61, 0x69, 0x64, 0x75, 0x73, 0x61, 0x6d, 0x62, 0x65, +0x70, 0x61, 0x6d, 0x61, 0x67, 0x75, 0x73, 0x74, 0x61, 0x67, 0x61, 0x6a, +0x61, 0x68, 0x65, 0x62, 0x72, 0x6f, 0x6e, 0x68, 0x6f, 0x20, 0x63, 0x69, +0x20, 0x6d, 0x69, 0x6e, 0x68, 0x20, 0x73, 0x69, 0x74, 0x69, 0x68, 0x6f, +0x6e, 0x67, 0x20, 0x6b, 0x6f, 0x6e, 0x67, 0x69, 0x72, 0x6b, 0x75, 0x1e6d, +0x73, 0x6b, 0x6a, 0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, 0x6a, 0x65, +0x72, 0x75, 0x73, 0x61, 0x6c, 0x65, 0x6d, 0x6b, 0x61, 0x62, 0x75, 0x6c, +0x6b, 0x61, 0x6d, 0x63, 0x61, 0x1e6d, 0x6b, 0x61, 0x6b, 0x61, 0x72, 0x61, +0x63, 0x12b, 0x6b, 0x61, 0x1e6d, 0x6d, 0x61, 0x6e, 0x1e0d, 0x75, 0x6b, 0x61, +0x6e, 0x64, 0x69, 0x67, 0x61, 0x6b, 0x6f, 0x6c, 0x6b, 0x61, 0x74, 0x61, +0x6b, 0x72, 0x61, 0x73, 0x6e, 0x65, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x6b, +0x75, 0x61, 0x6c, 0x61, 0x20, 0x6c, 0x75, 0x6d, 0x70, 0x75, 0x72, 0x6b, +0x75, 0x63, 0x69, 0x6e, 0x67, 0x6b, 0x75, 0x76, 0x61, 0x69, 0x74, 0x6d, +0x6b, 0x61, 0x6f, 0x6d, 0x65, 0x67, 0x61, 0x1e0d, 0x61, 0x6e, 0x6d, 0x61, +0x6b, 0x61, 0x73, 0x61, 0x72, 0x6d, 0x61, 0x6e, 0x12b, 0x6c, 0x61, 0x6d, +0x61, 0x73, 0x6b, 0x61, 0x74, 0x6e, 0x69, 0x6b, 0x6f, 0x73, 0x69, 0x79, +0x61, 0x6e, 0x65, 0x76, 0x6f, 0x6b, 0x75, 0x6a, 0x6e, 0x65, 0x1e6d, 0x73, +0x6b, 0x6e, 0x6f, 0x76, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, +0x70, 0x6e, 0x6f, 0x6d, 0x20, 0x70, 0x65, 0x6e, 0x68, 0x70, 0x6f, 0x6e, +0x1e6d, 0x69, 0x61, 0x6e, 0x61, 0x6b, 0x70, 0x79, 0x6f, 0x6e, 0x67, 0x79, +0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x73, 0x1e6d, 0x61, 0x6e, 0x65, 0x6b, 0x69, +0x6a, 0x75, 0x6f, 0x72, 0x64, 0x61, 0x72, 0x69, 0x79, 0x61, 0x64, 0x73, +0x61, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x73, 0x61, 0x6d, 0x61, 0x72, 0x6b, +0x61, 0x6e, 0x64, 0x73, 0x65, 0x6f, 0x6c, 0x73, 0x65, 0x6e, 0x67, 0x61, +0x69, 0x73, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x73, 0x72, 0x65, +0x1e0d, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x74, 0x61, +0x69, 0x70, 0x65, 0x69, 0x74, 0x61, 0x73, 0x6b, 0x65, 0x6e, 0x1e6d, 0x74, +0x62, 0x69, 0x6c, 0x69, 0x73, 0x69, 0x74, 0x65, 0x68, 0x72, 0x61, 0x6e, +0x74, 0x69, 0x6d, 0x70, 0x68, 0x75, 0x1e6d, 0x6f, 0x6b, 0x79, 0x6f, 0x1e6d, +0x6f, 0x6d, 0x73, 0x6b, 0x75, 0x6c, 0x61, 0x6e, 0x62, 0x61, 0x1e6d, 0x61, +0x72, 0x75, 0x72, 0x75, 0x6d, 0x63, 0x69, 0x79, 0x75, 0x73, 0x74, 0x2d, +0x6e, 0x65, 0x72, 0x61, 0x76, 0x69, 0x65, 0x6e, 0x1e6d, 0x69, 0x61, 0x61, +0x6e, 0x76, 0x6c, 0x61, 0x1e0d, 0x69, 0x76, 0x6f, 0x73, 0x1e6d, 0x6f, 0x6b, +0x79, 0x61, 0x6b, 0x75, 0x1e6d, 0x73, 0x6b, 0x79, 0x61, 0x6e, 0x67, 0x6f, +0x6e, 0x79, 0x69, 0x6b, 0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, +0x72, 0x67, 0x79, 0x65, 0x72, 0x65, 0x76, 0x61, 0x6e, 0x61, 0x6a, 0x6f, +0x72, 0x65, 0x73, 0x62, 0x65, 0x72, 0x6d, 0x16b, 0x64, 0x61, 0x6b, 0x65, +0x6e, 0x65, 0x72, 0x69, 0x6b, 0x65, 0x70, 0x20, 0x76, 0x65, 0x72, 0x1e0d, +0x65, 0x70, 0x65, 0x72, 0x6f, 0x6d, 0x61, 0x1e0d, 0x69, 0x65, 0x72, 0x61, +0x72, 0x65, 0x79, 0x6b, 0x79, 0x61, 0x76, 0x69, 0x6b, 0x64, 0x6b, 0x69, +0x1e47, 0x20, 0x6a, 0x6f, 0x72, 0x6a, 0x69, 0x61, 0x73, 0x65, 0x6e, 0x74, +0x20, 0x68, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x73, 0x1e6d, 0x61, 0x6e, 0x6c, +0x69, 0x61, 0x65, 0x64, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x62, 0x72, 0x69, +0x73, 0x62, 0x61, 0x6e, 0x65, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x6e, 0x20, +0x68, 0x69, 0x6c, 0x6c, 0x1e0d, 0x61, 0x72, 0x76, 0x69, 0x6e, 0x79, 0x75, +0x6b, 0x6c, 0x61, 0x68, 0x6f, 0x62, 0x61, 0x72, 0x1e6d, 0x6c, 0x69, 0x6e, +0x1e0d, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x6c, 0x6f, 0x72, 0x1e0d, 0x20, 0x68, +0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6c, 0x62, 0x6f, 0x72, 0x6e, 0x65, 0x70, +0x65, 0x72, 0x74, 0x73, 0x79, 0x1e0d, 0x6e, 0x12b, 0x61, 0x6d, 0x73, 0x1e6d, +0x65, 0x72, 0x1e0d, 0x61, 0x6d, 0x61, 0x61, 0x1e47, 0x1e0d, 0x6f, 0x72, 0x61, +0x61, 0x61, 0x73, 0x1e6d, 0x72, 0x61, 0x68, 0x61, 0x6e, 0x65, 0x74, 0x65, +0x6e, 0x73, 0x62, 0x65, 0x6c, 0x67, 0x72, 0x61, 0x1e0d, 0x65, 0x62, 0x65, +0x72, 0x6c, 0x69, 0x6e, 0x62, 0x72, 0x61, 0x1e6d, 0x69, 0x73, 0x6c, 0x61, +0x76, 0x61, 0x62, 0x72, 0x75, 0x73, 0x73, 0x65, 0x6c, 0x73, 0x62, 0x75, +0x6b, 0x61, 0x72, 0x65, 0x73, 0x74, 0x62, 0x75, 0x1e0d, 0x61, 0x70, 0x65, +0x73, 0x74, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x6b, 0x69, +0x73, 0x69, 0x6e, 0x61, 0x75, 0x6b, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, +0x67, 0x65, 0x6e, 0x1e0d, 0x62, 0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x62, 0x72, +0x61, 0x6c, 0x1e6d, 0x61, 0x72, 0x67, 0x65, 0x72, 0x6e, 0x73, 0x69, 0x68, +0x65, 0x6c, 0x73, 0x69, 0x6e, 0x6b, 0x69, 0x61, 0x61, 0x69, 0x6c, 0x20, +0x61, 0x70, 0x20, 0x6d, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, +0x75, 0x6c, 0x6a, 0x65, 0x72, 0x73, 0x69, 0x6b, 0x61, 0x6c, 0x69, 0x6e, +0x69, 0x6e, 0x67, 0x72, 0x61, 0x1e0d, 0x6b, 0x69, 0x72, 0x6f, 0x76, 0x6b, +0x69, 0x79, 0x76, 0x6c, 0x69, 0x73, 0x62, 0x6f, 0x6e, 0x6c, 0x79, 0x75, +0x62, 0x6c, 0x79, 0x61, 0x6e, 0x61, 0x6c, 0x6e, 0x1e0d, 0x6e, 0x6c, 0x6b, +0x73, 0x65, 0x6d, 0x62, 0x72, 0x67, 0x6d, 0x65, 0x1e0d, 0x72, 0x69, 0x1e0d, +0x6d, 0x61, 0x6c, 0x1e6d, 0x61, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, +0x6d, 0x6d, 0x69, 0x6e, 0x73, 0x6b, 0x6d, 0x6f, 0x6e, 0x61, 0x6b, 0x6f, +0x6d, 0x6f, 0x73, 0x6b, 0x6f, 0x6f, 0x73, 0x6c, 0x6f, 0x70, 0x61, 0x72, +0x69, 0x73, 0x70, 0x1e0d, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x73, 0x61, 0x70, +0x72, 0x61, 0x67, 0x72, 0x69, 0x67, 0x61, 0x73, 0x61, 0x6d, 0x61, 0x72, +0x61, 0x73, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x73, +0x61, 0x72, 0x61, 0x6a, 0x65, 0x76, 0x6f, 0x73, 0x61, 0x72, 0x61, 0x1e6d, +0x6f, 0x76, 0x73, 0x69, 0x6d, 0x70, 0x65, 0x72, 0x6f, 0x70, 0x6f, 0x6c, +0x73, 0x6b, 0x6f, 0x70, 0x69, 0x73, 0x6f, 0x70, 0x69, 0x79, 0x61, 0x73, +0x1e6d, 0x6f, 0x6b, 0x68, 0x6f, 0x6d, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x1e6d, +0x69, 0x72, 0x61, 0x6e, 0x65, 0x75, 0x6c, 0x79, 0x61, 0x6e, 0x6f, 0x76, +0x73, 0x6b, 0x76, 0x61, 0x1e0d, 0x75, 0x6a, 0x76, 0x61, 0x1e6d, 0x69, 0x6b, +0x61, 0x6e, 0x76, 0x69, 0x65, 0x6e, 0x6e, 0x61, 0x76, 0x69, 0x6c, 0x6e, +0x69, 0x75, 0x73, 0x76, 0x6f, 0x6c, 0x67, 0x6f, 0x67, 0x72, 0x61, 0x1e0d, +0x76, 0x61, 0x72, 0x73, 0x61, 0x74, 0x65, 0x67, 0x75, 0x73, 0x69, 0x67, +0x61, 0x6c, 0x70, 0x61, 0x6a, 0x75, 0x72, 0x69, 0x63, 0x1e6d, 0x61, 0x6e, +0x61, 0x6e, 0x61, 0x72, 0x69, 0x76, 0x63, 0x68, 0x61, 0x67, 0x6f, 0x73, +0x6b, 0x72, 0x69, 0x73, 0x1e6d, 0x6d, 0x61, 0x73, 0x6b, 0x6f, 0x6b, 0x6f, +0x73, 0x6b, 0x6f, 0x6d, 0x6f, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x67, 0x75, +0x65, 0x6c, 0x65, 0x6e, 0x6d, 0x61, 0x68, 0x65, 0x6d, 0x61, 0x6c, 0x64, +0x69, 0x76, 0x65, 0x73, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x73, 0x69, 0x75, +0x73, 0x6d, 0x61, 0x79, 0x6f, 0x1e6d, 0x72, 0x65, 0x75, 0x6e, 0x69, 0x6f, +0x6e, 0x61, 0x70, 0x69, 0x61, 0x101, 0x6b, 0x6c, 0x61, 0x6e, 0x1e0d, 0x62, +0x6f, 0x75, 0x67, 0x61, 0x6e, 0x76, 0x69, 0x6c, 0x6c, 0x63, 0x65, 0x1e6d, +0x61, 0x6d, 0x63, 0x16b, 0x6b, 0x12b, 0x73, 0x74, 0x65, 0x72, 0x69, 0x70, +0x65, 0x1e6d, 0x65, 0x70, 0x61, 0x6b, 0x61, 0x6f, 0x70, 0x6f, 0x70, 0x69, +0x6a, 0x69, 0x70, 0x75, 0x6e, 0x61, 0x70, 0x75, 0x74, 0x69, 0x67, 0x61, +0x6c, 0x61, 0x70, 0x61, 0x67, 0x6f, 0x73, 0x67, 0x61, 0x6d, 0x62, 0x69, +0x65, 0x72, 0x67, 0x75, 0x61, 0x1e0d, 0x61, 0x6c, 0x6b, 0x65, 0x6e, 0x61, +0x6c, 0x6b, 0x61, 0x6e, 0x1e6d, 0x6f, 0x6e, 0x6b, 0x69, 0x72, 0x69, 0x74, +0x69, 0x6d, 0x61, 0x74, 0x69, 0x6b, 0x69, 0x73, 0x72, 0x61, 0x65, 0x6b, +0x76, 0x61, 0x6a, 0x61, 0x6c, 0x65, 0x69, 0x6e, 0x6d, 0x61, 0x6a, 0x75, +0x72, 0x6f, 0x6d, 0x61, 0x72, 0x6b, 0x69, 0x73, 0x61, 0x73, 0x6d, 0x69, +0x1e0d, 0x76, 0x61, 0x79, 0x6e, 0x61, 0x75, 0x72, 0x75, 0x6e, 0x69, 0x75, +0x65, 0x6e, 0x6f, 0x72, 0x70, 0x6f, 0x6b, 0x6e, 0x75, 0x6d, 0x69, 0x65, +0x70, 0x61, 0x6e, 0x67, 0x6f, 0x20, 0x70, 0x61, 0x6e, 0x67, 0x6f, 0x70, +0x61, 0x6c, 0x61, 0x75, 0x70, 0x69, 0x1e6d, 0x6b, 0x65, 0x72, 0x6e, 0x70, +0x6f, 0x6e, 0x70, 0x65, 0x69, 0x70, 0x6f, 0x72, 0x1e6d, 0x20, 0x6d, 0x6f, +0x72, 0x65, 0x73, 0x62, 0x69, 0x72, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, +0x67, 0x61, 0x73, 0x61, 0x69, 0x70, 0x61, 0x6e, 0x1e6d, 0x61, 0x68, 0x69, +0x1e6d, 0x69, 0x74, 0x61, 0x72, 0x61, 0x76, 0x61, 0x1e6d, 0x6f, 0x6e, 0x67, +0x61, 0x1e6d, 0x61, 0x70, 0x75, 0x76, 0x65, 0x6b, 0x76, 0x61, 0x6c, 0x6c, +0x69, 0x73, 0x92c, 0x94d, 0x92f, 0x93e, 0x928, 0x94d, 0x91c, 0x941, 0x932, 0x92a, +0x93c, 0x94d, 0x930, 0x940, 0x91f, 0x93e, 0x909, 0x928, 0x915, 0x93e, 0x930, 0x94d, +0x924, 0x941, 0x92e, 0x915, 0x93f, 0x902, 0x938, 0x93e, 0x938, 0x93e, 0x932, 0x941, +0x92c, 0x941, 0x92e, 0x92c, 0x93e, 0x938, 0x940, 0x92e, 0x94d, 0x2d, 0x92c, 0x93e, +0x92c, 0x93e, 0x928, 0x947, 0x92e, 0x94b, 0x917, 0x93e, 0x926, 0x93f, 0x938, 0x941, +0x928, 0x93e, 0x907, 0x930, 0x94b, 0x92c, 0x93f, 0x928, 0x941, 0x906, 0x915, 0x91a, +0x949, 0x91f, 0x938, 0x94d, 0x92f, 0x93e, 0x928, 0x20, 0x939, 0x94d, 0x935, 0x93e, +0x928, 0x938, 0x94d, 0x92f, 0x93e, 0x928, 0x20, 0x932, 0x942, 0x924, 0x93f, 0x909, +0x938, 0x941, 0x906, 0x907, 0x92f, 0x93e, 0x90f, 0x938, 0x928, 0x938, 0x93f, 0x92f, +0x949, 0x928, 0x92c, 0x94d, 0x932, 0x93e, 0x902, 0x2d, 0x938, 0x947, 0x92c, 0x932, +0x94b, 0x928, 0x915, 0x947, 0x92e, 0x94d, 0x92c, 0x94d, 0x930, 0x93f, 0x91c, 0x20, +0x92c, 0x947, 0x915, 0x94d, 0x92f, 0x93e, 0x92e, 0x94d, 0x92a, 0x94b, 0x20, 0x917, +0x94d, 0x930, 0x93e, 0x902, 0x921, 0x947, 0x915, 0x94d, 0x92f, 0x93e, 0x928, 0x915, +0x941, 0x928, 0x938, 0x93f, 0x915, 0x93e, 0x917, 0x94b, 0x921, 0x947, 0x928, 0x92e, +0x93e, 0x930, 0x94d, 0x915, 0x938, 0x949, 0x928, 0x924, 0x93f, 0x930, 0x941, 0x928, +0x947, 0x92a, 0x947, 0x92a, 0x93c, 0x94b, 0x930, 0x94d, 0x91f, 0x20, 0x928, 0x947, +0x932, 0x94d, 0x938, 0x928, 0x92a, 0x93c, 0x94b, 0x930, 0x94d, 0x91f, 0x93e, 0x932, +0x947, 0x91c, 0x93c, 0x93e, 0x939, 0x947, 0x932, 0x93f, 0x92a, 0x947, 0x915, 0x94d, +0x938, 0x907, 0x915, 0x93e, 0x932, 0x941, 0x924, 0x93f, 0x91f, 0x915, 0x94d, 0x930, +0x93e, 0x932, 0x947, 0x928, 0x94d, 0x921, 0x93f, 0x91c, 0x93f, 0x915, 0x92e, 0x928, +0x94b, 0x938, 0x92e, 0x947, 0x930, 0x93f, 0x917, 0x94b, 0x91f, 0x92c, 0x94d, 0x92f, +0x942, 0x932, 0x93e, 0x2c, 0x20, 0x909, 0x924, 0x949, 0x930, 0x949, 0x20, 0x921, +0x915, 0x94b, 0x91f, 0x93e, 0x92e, 0x93e, 0x926, 0x93f, 0x928, 0x940, 0x20, 0x909, +0x924, 0x949, 0x930, 0x949, 0x20, 0x921, 0x915, 0x94b, 0x91f, 0x93e, 0x928, 0x94d, +0x92f, 0x942, 0x20, 0x938, 0x93e, 0x932, 0x947, 0x92e, 0x2c, 0x20, 0x909, 0x924, +0x949, 0x930, 0x949, 0x20, 0x921, 0x915, 0x94b, 0x91f, 0x93e, 0x913, 0x915, 0x93e, +0x91c, 0x940, 0x928, 0x93e, 0x917, 0x93e, 0x92a, 0x93c, 0x940, 0x928, 0x93f, 0x915, +0x94d, 0x938, 0x92a, 0x94b, 0x930, 0x94d, 0x91f, 0x20, 0x911, 0x92a, 0x93c, 0x20, +0x938, 0x94d, 0x92a, 0x947, 0x928, 0x930, 0x947, 0x938, 0x93e, 0x907, 0x92a, 0x93c, +0x938, 0x947, 0x928, 0x94d, 0x91f, 0x93e, 0x930, 0x947, 0x92e, 0x938, 0x947, 0x902, +0x924, 0x93f, 0x906, 0x917, 0x94b, 0x938, 0x947, 0x902, 0x91f, 0x20, 0x92c, 0x93e, +0x930, 0x94d, 0x924, 0x947, 0x932, 0x947, 0x92e, 0x93f, 0x938, 0x947, 0x902, 0x91f, +0x20, 0x924, 0x949, 0x92e, 0x938, 0x938, 0x94d, 0x935, 0x93f, 0x92a, 0x93c, 0x94d, +0x91f, 0x20, 0x915, 0x930, 0x902, 0x91f, 0x935, 0x94d, 0x92f, 0x93e, 0x928, 0x94d, +0x915, 0x942, 0x935, 0x930, 0x92e, 0x94d, 0x92f, 0x93e, 0x915, 0x92e, 0x941, 0x930, +0x94d, 0x921, 0x94b, 0x932, 0x949, 0x928, 0x94d, 0x917, 0x92f, 0x930, 0x92c, 0x94d, +0x92f, 0x947, 0x928, 0x905, 0x938, 0x94d, 0x917, 0x93e, 0x92c, 0x93e, 0x924, 0x92c, +0x94d, 0x92f, 0x93e, 0x902, 0x917, 0x915, 0x949, 0x915, 0x92c, 0x93f, 0x938, 0x94d, +0x915, 0x947, 0x915, 0x92c, 0x94d, 0x930, 0x942, 0x928, 0x947, 0x924, 0x93f, 0x924, +0x94d, 0x938, 0x93f, 0x924, 0x93e, 0x926, 0x941, 0x92c, 0x924, 0x93f, 0x926, 0x941, +0x938, 0x93e, 0x902, 0x92c, 0x947, 0x92a, 0x93c, 0x93e, 0x92e, 0x93e, 0x917, 0x941, +0x938, 0x94d, 0x924, 0x93e, 0x92f, 0x947, 0x930, 0x941, 0x938, 0x932, 0x947, 0x92e, +0x915, 0x93e, 0x921, 0x93f, 0x902, 0x917, 0x93e, 0x92a, 0x928, 0x949, 0x92e, 0x20, +0x92a, 0x947, 0x928, 0x94d, 0x939, 0x915, 0x93f, 0x91c, 0x93f, 0x932, 0x949, 0x930, +0x94d, 0x921, 0x93e, 0x938, 0x93e, 0x915, 0x93e, 0x932, 0x93f, 0x928, 0x938, 0x902, +0x918, 0x93e, 0x924, 0x93f, 0x924, 0x93e, 0x924, 0x93f, 0x92a, 0x947, 0x924, 0x93f, +0x924, 0x93e, 0x938, 0x915, 0x902, 0x924, 0x91f, 0x94d, 0x2d, 0x92c, 0x93f, 0x932, +0x93f, 0x938, 0x93f, 0x92f, 0x93e, 0x902, 0x917, 0x949, 0x928, 0x915, 0x94d, 0x92f, +0x93e, 0x928, 0x947, 0x930, 0x940, 0x92a, 0x94d, 0x92f, 0x93e, 0x930, 0x94b, 0x926, +0x93e, 0x945, 0x915, 0x93f, 0x923, 0x93e, 0x945, 0x20, 0x91c, 0x93e, 0x945, 0x930, +0x94d, 0x91c, 0x93f, 0x92f, 0x93e, 0x938, 0x94d, 0x91f, 0x94d, 0x92f, 0x93e, 0x928, +0x932, 0x940, 0x906, 0x938, 0x94d, 0x91f, 0x94d, 0x930, 0x93e, 0x915, 0x93e, 0x928, +0x90f, 0x924, 0x947, 0x928, 0x94d, 0x938, 0x906, 0x907, 0x932, 0x20, 0x911, 0x92a, +0x94d, 0x20, 0x92e, 0x94d, 0x92f, 0x93e, 0x928, 0x938, 0x93f, 0x92e, 0x94d, 0x92a, +0x93c, 0x947, 0x930, 0x94b, 0x92a, 0x94b, 0x932, 0x938, 0x94d, 0x915, 0x94b, 0x92a, +0x94d, 0x92f, 0x947, 0x938, 0x94b, 0x92a, 0x93c, 0x93f, 0x92f, 0x93e, 0x91c, 0x93c, +0x94d, 0x92f, 0x942, 0x930, 0x93f, 0x915, 0x93c, 0x92e, 0x949, 0x930, 0x940, 0x938, +0x938, 0x911, 0x915, 0x932, 0x947, 0x902, 0x921, 0x91a, 0x94d, 0x92f, 0x93e, 0x925, +0x92e, 0x924, 0x93f, 0x938, 0x94d, 0x91f, 0x930, 0x90f, 0x92a, 0x93c, 0x947, 0x91f, +0x92a, 0x93c, 0x93e, 0x915, 0x93e, 0x913, 0x92a, 0x93c, 0x94b, 0x92a, 0x93c, 0x93f, +0x91c, 0x940, 0x92a, 0x93c, 0x94d, 0x92f, 0x942, 0x928, 0x93e, 0x92a, 0x93c, 0x941, +0x91f, 0x940, 0x917, 0x94d, 0x92f, 0x93e, 0x92e, 0x92c, 0x93f, 0x92f, 0x930, 0x915, +0x947, 0x902, 0x91f, 0x928, 0x928, 0x93e, 0x945, 0x909, 0x930, 0x941, 0x928, 0x949, +0x930, 0x92a, 0x93c, 0x949, 0x915, 0x928, 0x949, 0x92e, 0x93f, 0x92f, 0x93e, 0x92a, +0x94b, 0x928, 0x92a, 0x947, 0x924, 0x93f, 0xb0f, 0xb15, 0xb4d, 0xb30, 0xb3e, 0xb2c, +0xb4d, 0xb30, 0xb3e, 0xb1c, 0xb3e, 0xb71, 0xb3f, 0xb32, 0xb4d, 0xb32, 0xb47, 0xb2c, +0xb41, 0xb1c, 0xb42, 0xb2e, 0xb4d, 0xb2c, 0xb41, 0xb30, 0xb3e, 0xb15, 0xb28, 0xb3e, +0xb15, 0xb4d, 0xb30, 0xb3f, 0xb1c, 0xb3f, 0xb2c, 0xb1f, 0xb3f, 0xb2a, 0xb4d, 0xb30, +0xb3f, 0xb1f, 0xb3e, 0xb09, 0xb28, 0xb4d, 0x200c, 0xb17, 0xb3e, 0xb2c, 0xb30, 0xb4d, +0xb23, 0xb4d, 0xb23, 0xb1c, 0xb39, 0xb3e, 0xb28, 0xb4d, 0xb38, 0xb2c, 0xb30, 0xb4d, +0xb17, 0xb15, 0xb30, 0xb1f, 0xb09, 0xb2e, 0xb4d, 0x200c, 0xb32, 0xb3e, 0xb17, 0xb38, +0xb4d, 0x200c, 0xb32, 0xb3f, 0xb2c, 0xb4d, 0xb30, 0xb47, 0xb71, 0xb3f, 0xb32, 0xb4d, +0xb32, 0xb47, 0xb32, 0xb2e, 0xb4d, 0x200c, 0xb2e, 0xb4d, 0x2d, 0xb2c, 0xb3e, 0xb2c, +0xb3e, 0xb28, 0xb47, 0xb2e, 0xb4b, 0xb17, 0xb3e, 0xb21, 0xb3f, 0xb38, 0xb41, 0xb2e, +0xb28, 0xb30, 0xb4b, 0xb2c, 0xb3f, 0xb06, 0xb28, 0xb3e, 0xb07, 0xb30, 0xb2c, 0xb3f, +0xb28, 0xb41, 0xb06, 0xb15, 0xb1a, 0xb1f, 0xb05, 0xb17, 0xb3e, 0xb21, 0xb17, 0xb41, +0xb2a, 0xb30, 0xb4d, 0xb1f, 0x2d, 0xb28, 0xb71, 0xb38, 0xb3e, 0xb05, 0x20, 0xb1f, +0xb2e, 0xb47, 0xb24, 0xb4d, 0xb30, 0xb3f, 0xb2a, 0xb32, 0xb3f, 0xb71, 0xb3f, 0xb23, +0xb4d, 0xb21, 0xb39, 0xb15, 0xb4d, 0xb2c, 0xb41, 0xb0f, 0xb28, 0xb38, 0xb4d, 0x20, +0xb06, 0xb07, 0xb30, 0xb47, 0xb38, 0xb4d, 0xb15, 0xb3e, 0xb3c, 0xb1f, 0xb3e, 0xb2e, +0xb3e, 0xb15, 0xb3e, 0xb01, 0xb15, 0xb4b, 0xb21, 0xb4b, 0xb2c, 0xb3e, 0xb1c, 0xb41, +0xb1c, 0xb4b, 0xb0f, 0xb32, 0xb3e, 0x20, 0xb30, 0xb3f, 0xb4d, 0xb05, 0xb1c, 0xb3e, +0xb2e, 0xb47, 0xb23, 0xb4d, 0xb21, 0xb1c, 0xb3e, 0xb30, 0xb3f, 0xb5f, 0xb4b, 0x20, +0xb17, 0xb3e, 0xb32, 0xb47, 0xb17, 0xb4b, 0xb38, 0xb38, 0xb3e, 0xb32, 0xb4d, 0xb1f, +0xb3e, 0xb38, 0xb3e, 0xb5f, 0xb3e, 0xb28, 0xb4d, 0x20, 0xb71, 0xb3e, 0xb28, 0xb4d, +0xb38, 0xb5f, 0xb3e, 0xb28, 0x20, 0xb32, 0xb41, 0xb07, 0xb38, 0xb1f, 0xb4b, 0xb15, +0xb41, 0xb2e, 0xb28, 0xb09, 0xb38, 0xb41, 0xb06, 0xb07, 0xb5f, 0xb3e, 0xb05, 0xb30, +0xb41, 0xb2c, 0xb3e, 0xb2c, 0xb3e, 0xb30, 0xb2c, 0xb3e, 0xb21, 0xb38, 0xb2c, 0xb4d, +0xb32, 0xb3e, 0xb19, 0xb4d, 0xb15, 0x2d, 0xb38, 0xb3e, 0xb2c, 0xb32, 0xb28, 0xb4d, +0xb2c, 0xb4b, 0xb06, 0x20, 0xb71, 0xb3f, 0xb38, 0xb4d, 0xb1f, 0xb3e, 0xb2c, 0xb17, +0xb1f, 0xb3e, 0xb2c, 0xb07, 0xb38, 0xb47, 0xb15, 0xb3e, 0xb2e, 0xb4d, 0xb2a, 0x20, +0xb17, 0xb4d, 0xb30, 0xb3e, 0xb23, 0xb4d, 0xb21, 0xb47, 0xb38, 0xb3f, 0xb15, 0xb3e, +0xb17, 0xb15, 0xb37, 0xb4d, 0xb1f, 0xb3e, 0x20, 0xb30, 0xb3f, 0xb15, 0xb3e, 0xb15, +0xb4d, 0xb30, 0xb47, 0xb38, 0xb4d, 0x200d, 0xb1f, 0xb28, 0xb21, 0xb47, 0xb28, 0xb71, +0xb3f, 0xb30, 0xb4d, 0xb21, 0xb47, 0xb1f, 0xb4d, 0xb30, 0xb07, 0xb1f, 0xb4d, 0xb21, +0xb2e, 0xb3f, 0xb28, 0xb3f, 0xb15, 0xb3e, 0xb0f, 0xb21, 0xb4d, 0x200d, 0xb2e, 0xb28, +0xb1f, 0xb28, 0xb4d, 0xb0f, 0xb32, 0xb4d, 0x20, 0xb38, 0xb3e, 0xb32, 0xb71, 0xb3e, +0xb21, 0xb4b, 0xb30, 0xb4d, 0xb2a, 0xb30, 0xb4d, 0xb1f, 0x20, 0xb28, 0xb47, 0xb32, +0xb38, 0xb28, 0xb4d, 0xb2a, 0xb30, 0xb4d, 0xb1f, 0xb32, 0xb47, 0xb1c, 0xb3e, 0xb17, +0xb41, 0xb06, 0xb21, 0xb47, 0xb32, 0xb09, 0xb2a, 0xb47, 0xb17, 0xb41, 0xb06, 0xb24, +0xb47, 0xb2e, 0xb3e, 0xb32, 0xb3e, 0xb39, 0xb3e, 0xb71, 0xb28, 0xb3e, 0xb39, 0xb47, +0xb30, 0xb2e, 0xb38, 0xb3f, 0xb32, 0xb4b, 0xb07, 0xb23, 0xb4d, 0xb21, 0xb3f, 0xb06, +0xb28, 0xb3e, 0xb2a, 0xb32, 0xb3f, 0xb38, 0xb4d, 0xb2e, 0xb3e, 0xb30, 0xb47, 0xb28, +0xb17, 0x2c, 0x20, 0xb07, 0xb23, 0xb4d, 0xb21, 0xb3f, 0xb06, 0xb28, 0xb3e, 0xb71, +0xb47, 0xb71, 0xb3e, 0xb5f, 0x2c, 0x20, 0xb07, 0xb23, 0xb4d, 0xb21, 0xb3f, 0xb06, +0xb28, 0xb3e, 0xb07, 0xb28, 0xb41, 0xb71, 0xb3f, 0xb15, 0xb4d, 0xb32, 0xb09, 0xb07, +0xb38, 0xb71, 0xb3f, 0xb32, 0xb4d, 0xb32, 0xb47, 0xb2e, 0xb23, 0xb4d, 0xb1f, 0xb3f, +0xb38, 0xb47, 0xb32, 0x2c, 0x20, 0xb15, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb09, 0xb15, +0xb3f, 0xb15, 0xb47, 0xb15, 0xb4d, 0xb30, 0xb3e, 0xb32, 0xb47, 0xb23, 0xb4d, 0xb21, +0xb3f, 0xb1c, 0xb3f, 0xb15, 0xb2e, 0xb3e, 0xb38, 0xb3f, 0xb05, 0xb2e, 0xb3e, 0xb30, +0xb3f, 0xb17, 0xb1f, 0xb4d, 0xb2e, 0xb3e, 0xb1f, 0xb3e, 0xb2e, 0xb30, 0xb38, 0xb4d, +0xb2e, 0xb3e, 0xb1c, 0xb3e, 0xb1f, 0xb32, 0xb3e, 0xb28, 0xb4d, 0xb2e, 0xb3f, 0xb15, +0xb4d, 0xb35, 0xb47, 0xb32, 0xb28, 0xb4d, 0xb2e, 0xb3e, 0xb28, 0xb15, 0xb1f, 0xb28, +0xb4d, 0xb2e, 0xb28, 0xb1f, 0xb47, 0xb30, 0xb3f, 0xb0f, 0xb2e, 0xb23, 0xb4d, 0xb1f, +0xb47, 0xb2d, 0xb3f, 0xb21, 0xb3f, 0xb05, 0xb2e, 0xb28, 0xb1f, 0xb38, 0xb47, 0xb30, +0xb30, 0xb3e, 0xb1f, 0xb4d, 0xb28, 0xb4d, 0xb5f, 0xb41, 0x20, 0xb5f, 0xb30, 0xb4d, +0xb15, 0xb4d, 0xb28, 0xb30, 0xb39, 0xb4d, 0xb28, 0xb2c, 0xb47, 0xb09, 0xb32, 0xb3e, +0xb39, 0x2c, 0x20, 0xb09, 0xb24, 0xb4d, 0xb24, 0xb30, 0x20, 0xb21, 0xb3e, 0xb15, +0xb1f, 0xb3e, 0xb15, 0xb47, 0xb28, 0xb4d, 0xb26, 0xb4d, 0xb30, 0x2c, 0x20, 0xb09, +0xb24, 0xb4d, 0xb24, 0xb30, 0x20, 0xb21, 0xb3e, 0xb15, 0xb1f, 0xb3e, 0xb28, 0xb4d, +0xb5f, 0xb41, 0x20, 0xb38, 0xb3e, 0xb32, 0xb47, 0xb2e, 0xb4d, 0x2c, 0x20, 0xb09, +0xb24, 0xb4d, 0xb24, 0xb30, 0x20, 0xb21, 0xb3e, 0xb15, 0xb1f, 0xb3e, 0xb05, 0xb1c, +0xb3f, 0xb28, 0xb3e, 0xb17, 0xb3e, 0xb2a, 0xb07, 0xb28, 0xb3f, 0xb15, 0xb4d, 0xb38, +0xb2a, 0xb30, 0xb4d, 0xb1f, 0x2d, 0xb0f, 0xb5f, 0xb41, 0x2d, 0xb2a, 0xb4d, 0xb30, +0xb3f, 0xb28, 0xb4d, 0x200d, 0xb38, 0xb2a, 0xb30, 0xb4d, 0xb1f, 0xb4d, 0x20, 0xb05, +0xb2b, 0xb4d, 0x20, 0xb38, 0xb4d, 0xb2a, 0xb47, 0xb28, 0xb4d, 0xb2a, 0xb41, 0xb0f, +0xb30, 0xb4d, 0xb24, 0x20, 0xb30, 0xb3f, 0xb15, 0xb30, 0xb47, 0xb38, 0xb3f, 0xb2a, +0xb3f, 0xb30, 0xb3f, 0xb5f, 0x20, 0xb2c, 0xb4d, 0xb30, 0xb3e, 0xb19, 0xb4d, 0xb15, +0xb38, 0xb3e, 0xb28, 0xb4d, 0xb24, 0xb30, 0xb47, 0xb2e, 0xb4d, 0xb38, 0xb3e, 0xb23, +0xb4d, 0xb1f, 0x20, 0xb21, 0xb2e, 0xb3f, 0xb19, 0xb4d, 0xb17, 0xb07, 0xb1f, 0xb4d, +0xb1f, 0xb15, 0xb4d, 0xb35, 0xb30, 0xb1f, 0xb30, 0xb2e, 0xb3f, 0xb1f, 0xb4d, 0xb38, +0xb47, 0xb23, 0xb4d, 0xb1f, 0x20, 0xb2c, 0xb3e, 0xb30, 0xb4d, 0xb24, 0xb47, 0xb32, +0xb47, 0xb2e, 0xb3f, 0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0x20, 0xb15, 0xb3f, +0xb1f, 0xb4d, 0x200d, 0xb38, 0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0x2e, 0x20, +0xb25, 0xb2e, 0xb3e, 0xb38, 0xb4d, 0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0x2e, +0x20, 0xb71, 0xb3f, 0xb28, 0xb38, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb4d, 0xb24, 0xb41, +0xb32, 0xb47, 0xb1f, 0xb30, 0xb23, 0xb4d, 0xb1f, 0xb1f, 0xb30, 0xb1f, 0xb32, 0xb3e, +0xb71, 0xb3e, 0xb19, 0xb4d, 0xb15, 0xb41, 0xb71, 0xb30, 0xb4d, 0xb15, 0xb47, 0xb38, +0xb3f, 0xb21, 0xb47, 0xb71, 0xb3f, 0xb38, 0xb4d, 0xb21, 0xb4d, 0xb5f, 0xb41, 0xb2e, +0xb3e, 0xb23, 0xb4d, 0xb1f, 0x20, 0xb21, 0xb3f, 0x20, 0xb09, 0xb30, 0xb71, 0xb3f, +0xb32, 0xb47, 0xb2e, 0xb15, 0xb4d, 0xb71, 0xb3e, 0xb30, 0xb3f, 0xb2e, 0xb3e, 0xb01, +0xb38, 0xb28, 0xb2e, 0xb4d, 0xb5f, 0xb3e, 0xb15, 0xb2e, 0xb41, 0xb30, 0xb4d, 0xb21, +0xb2a, 0xb3e, 0xb01, 0xb2e, 0xb30, 0xb30, 0xb4b, 0xb24, 0xb47, 0xb30, 0xb3e, 0xb1f, +0xb4b, 0xb32, 0xb4d, 0xb71, 0xb4b, 0xb38, 0xb4d, 0xb24, 0xb15, 0xb4b, 0xb33, 0xb19, +0xb4d, 0xb16, 0xb5f, 0xb3e, 0xb30, 0xb2c, 0xb47, 0xb28, 0xb06, 0xb15, 0xb4d, 0xb1f, +0xb2c, 0xb47, 0xb06, 0xb38, 0xb4d, 0x200d, 0xb17, 0xb3e, 0xb2c, 0xb1f, 0xb4d, 0xb2c, +0xb39, 0xb3e, 0xb30, 0xb47, 0xb28, 0xb2c, 0xb3f, 0xb38, 0xb15, 0xb47, 0xb15, 0xb4d, +0x200c, 0xb26, 0xb41, 0xb38, 0xb3e, 0xb28, 0xb2c, 0xb47, 0xb2a, 0xb3e, 0xb2e, 0xb3e, +0xb17, 0xb41, 0xb38, 0xb4d, 0xb1f, 0xb3e, 0xb39, 0x20, 0xb1a, 0xb3f, 0x20, 0xb2e, +0xb3f, 0xb28, 0xb4d, 0x200c, 0x20, 0xb38, 0xb3f, 0xb1f, 0xb3f, 0xb39, 0xb4b, 0xb71, +0xb21, 0xb4d, 0x200c, 0xb1c, 0xb3e, 0xb15, 0xb30, 0xb4d, 0xb24, 0xb3e, 0xb15, 0xb2c, +0xb41, 0xb32, 0xb4d, 0xb15, 0xb3e, 0xb1f, 0xb2e, 0xb3e, 0xb23, 0xb4d, 0xb21, 0xb41, +0xb15, 0xb3e, 0xb28, 0xb21, 0xb4d, 0xb5f, 0xb3e, 0xb17, 0xb3e, 0xb15, 0xb4d, 0xb30, +0xb3e, 0xb38, 0xb28, 0xb5f, 0xb3e, 0xb30, 0xb38, 0xb4d, 0xb15, 0xb28, 0xb3f, 0xb15, +0xb38, 0xb3f, 0xb06, 0xb28, 0xb71, 0xb15, 0xb41, 0xb1c, 0xb28, 0xb47, 0xb1f, 0xb38, +0xb4d, 0xb15, 0xb28, 0xb71, 0xb38, 0xb3f, 0xb2c, 0xb3f, 0xb30, 0xb38, 0xb4d, 0xb15, +0xb05, 0xb30, 0xb3e, 0xb32, 0xb4d, 0x200c, 0xb2a, 0xb28, 0xb2e, 0xb4d, 0x200c, 0x20, +0xb2a, 0xb47, 0xb28, 0xb39, 0xb2a, 0xb23, 0xb4d, 0xb1f, 0xb3f, 0xb06, 0xb28, 0xb3e, +0xb15, 0xb4d, 0x200c, 0xb15, 0xb37, 0xb4d, 0xb1f, 0xb28, 0xb47, 0xb15, 0xb40, 0xb1c, +0xb3f, 0xb32, 0xb30, 0xb4d, 0xb21, 0xb3e, 0xb38, 0xb15, 0xb3e, 0xb32, 0xb3f, 0xb28, +0xb4d, 0xb38, 0xb3f, 0xb05, 0xb32, 0xb38, 0xb02, 0xb17, 0xb3e, 0xb07, 0xb38, 0xb4d, +0xb30, 0xb47, 0xb21, 0xb28, 0xb47, 0xb15, 0xb32, 0xb5f, 0xb2e, 0xb38, 0xb4d, 0xb15, +0xb24, 0xb3e, 0xb38, 0xb15, 0xb47, 0xb23, 0xb4d, 0xb1f, 0xb24, 0xb3f, 0xb2e, 0xb4d, +0xb2a, 0xb41, 0xb1f, 0xb15, 0xb3f, 0xb05, 0xb1f, 0xb2e, 0xb38, 0xb4d, 0xb15, 0xb5f, +0xb41, 0xb38, 0xb4d, 0x200d, 0xb1f, 0x2d, 0xb28, 0xb47, 0xb30, 0xb3e, 0xb71, 0xb3f, +0xb0f, 0xb23, 0xb4d, 0xb1f, 0xb3f, 0xb0f, 0xb28, 0xb4d, 0x200c, 0xb71, 0xb4d, 0xb32, +0xb3e, 0xb21, 0xb3f, 0xb71, 0xb37, 0xb4d, 0xb1f, 0xb4b, 0xb15, 0xb4d, 0xb5f, 0xb47, +0xb30, 0xb47, 0xb2c, 0xb3e, 0xb28, 0xb4d, 0xb06, 0xb1c, 0xb30, 0xb47, 0xb38, 0xb4d, +0xb2c, 0xb30, 0xb2e, 0xb41, 0xb21, 0xb3e, 0xb15, 0xb47, 0xb2a, 0xb4d, 0x200c, 0x20, +0xb71, 0xb30, 0xb4d, 0xb26, 0xb47, 0xb2a, 0xb30, 0xb0f, 0xb30, 0xb47, 0xb15, 0xb4d, +0xb5f, 0xb3e, 0xb2c, 0xb3f, 0xb15, 0xb38, 0xb4d, 0x200d, 0xb1f, 0xb3e, 0xb32, 0xb3f, +0xb28, 0xb0f, 0xb21, 0xb3f, 0xb32, 0xb47, 0xb21, 0xb4d, 0xb2c, 0xb4d, 0xb30, 0xb3f, +0xb38, 0xb2c, 0xb28, 0xb4d, 0xb2c, 0xb4d, 0xb30, 0xb4b, 0xb15, 0xb28, 0x20, 0xb39, +0xb3f, 0xb32, 0xb21, 0xb3e, 0xb30, 0xb4d, 0xb71, 0xb3f, 0xb28, 0xb4d, 0xb32, 0xb3f, +0xb23, 0xb4d, 0xb21, 0xb47, 0xb2e, 0xb3e, 0xb28, 0xb32, 0xb30, 0xb4d, 0x200d, 0xb21, +0x20, 0xb39, 0xb3e, 0xb71, 0xb47, 0xb2e, 0xb47, 0xb32, 0xb2c, 0xb4b, 0xb28, 0xb01, +0xb2a, 0xb30, 0xb4d, 0xb24, 0xb06, 0xb2e, 0xb37, 0xb4d, 0xb1f, 0xb4d, 0xb30, 0xb47, +0xb21, 0xb3e, 0xb2e, 0xb4d, 0xb06, 0xb23, 0xb4d, 0xb21, 0xb30, 0xb3e, 0xb06, 0xb38, +0xb4d, 0x200d, 0xb1f, 0xb30, 0xb3e, 0xb15, 0xb3e, 0xb28, 0xb0f, 0xb24, 0xb47, 0xb28, +0xb4d, 0xb38, 0xb2c, 0xb47, 0xb32, 0xb17, 0xb4d, 0xb30, 0xb47, 0xb21, 0xb47, 0xb2c, +0xb4d, 0xb30, 0xb3e, 0xb1f, 0xb3f, 0xb38, 0xb32, 0xb3e, 0xb71, 0xb3e, 0xb2c, 0xb4d, +0xb30, 0xb41, 0xb38, 0xb3f, 0xb32, 0xb4d, 0x200d, 0xb38, 0xb2c, 0xb41, 0xb1a, 0xb3e, +0xb30, 0xb47, 0xb38, 0xb4d, 0xb1f, 0xb2c, 0xb41, 0xb21, 0xb3e, 0xb2a, 0xb47, 0xb38, +0xb4d, 0xb1f, 0xb1a, 0xb3f, 0xb38, 0xb3f, 0xb28, 0xb3e, 0xb09, 0xb15, 0xb2a, 0xb47, +0xb28, 0xb39, 0xb3e, 0xb17, 0xb47, 0xb28, 0xb4d, 0xb06, 0xb07, 0xb32, 0xb4d, 0x20, +0xb05, 0xb2a, 0xb4d, 0x20, 0xb2e, 0xb4d, 0xb5f, 0xb3e, 0xb28, 0xb4d, 0xb15, 0xb3f, +0xb30, 0xb71, 0xb2e, 0xb3e, 0xb30, 0xb3f, 0xb5f, 0xb3e, 0xb39, 0xb47, 0xb2e, 0xb2e, +0xb28, 0xb3e, 0xb15, 0xb05, 0xb38, 0xb32, 0xb4b, 0xb2a, 0xb21, 0xb17, 0xb30, 0xb3f, +0xb15, 0xb3e, 0xb30, 0xb2e, 0xb4d, 0xb38, 0xb3e, 0xb30, 0xb3e, 0xb1c, 0xb47, 0xb2c, +0xb38, 0xb3e, 0xb30, 0xb3e, 0xb1f, 0xb71, 0xb4d, 0xb38, 0xb3f, 0xb2e, 0xb2b, 0xb47, +0xb30, 0xb2a, 0xb32, 0xb4d, 0xb38, 0xb4d, 0xb15, 0xb2a, 0xb5f, 0xb47, 0xb38, 0xb2a, +0xb3f, 0xb5f, 0xb3e, 0xb38, 0xb4d, 0xb1f, 0xb15, 0xb4d, 0x20, 0xb39, 0xb2e, 0xb4d, +0x200c, 0xb1f, 0xb3e, 0xb07, 0xb30, 0xb47, 0xb28, 0xb4d, 0xb5f, 0xb41, 0xb32, 0xb5f, +0xb3e, 0xb28, 0xb71, 0xb38, 0xb4d, 0xb15, 0xb2c, 0xb3e, 0xb21, 0xb41, 0xb1c, 0xb71, +0xb3e, 0xb1f, 0xb3f, 0xb15, 0xb3e, 0xb28, 0xb4d, 0xb71, 0xb3f, 0xb0f, 0xb28, 0xb3e, +0xb71, 0xb3f, 0xb32, 0xb28, 0xb3f, 0xb09, 0xb38, 0xb4d, 0xb71, 0xb32, 0xb17, 0xb17, +0xb4d, 0xb30, 0xb3e, 0xb21, 0xb4d, 0xb16, 0xb4d, 0xb30, 0xb40, 0xb38, 0xb4d, 0x200d, +0xb1f, 0x20, 0xb2e, 0xb3e, 0xb38, 0xb15, 0xb15, 0xb38, 0xb4d, 0x200c, 0xb15, 0xb2e, +0xb30, 0xb15, 0xb47, 0xb30, 0xb17, 0xb41, 0xb32, 0xb47, 0xb28, 0xb2e, 0xb30, 0xb3f, +0xb38, 0xb38, 0xb4d, 0xb2e, 0xb3e, 0xb5f, 0xb1f, 0xb47, 0xb2c, 0xb17, 0xb47, 0xb28, +0xb4d, 0x200c, 0xb71, 0xb3f, 0xb32, 0xb4d, 0xb32, 0xb47, 0xb1a, 0xb3e, 0xb24, 0xb3e, +0xb2e, 0xb4d, 0x200c, 0xb2a, 0xb15, 0xb3e, 0xb05, 0xb2a, 0xb2a, 0xb3f, 0xb1c, 0xb3f, +0xb17, 0xb3e, 0xb32, 0xb3e, 0xb2a, 0xb3e, 0xb17, 0xb38, 0xb15, 0xb47, 0xb23, 0xb4d, +0xb1f, 0xb28, 0xb28, 0xb30, 0xb2a, 0xb15, 0xb4d, 0x200c, 0xb28, 0xb09, 0xb2e, 0xb3f, +0xb5f, 0xb2a, 0xb39, 0xb28, 0xb2a, 0xb47, 0xb07, 0xb2a, 0xb30, 0xb4d, 0xb1f, 0xb4d, +0x200c, 0x20, 0xb2e, 0xb30, 0xb47, 0xb38, 0xb2c, 0xb3f, 0xb30, 0xb3e, 0xb30, 0xb1f, +0xb19, 0xb4d, 0xb17, 0xb3e, 0xb1f, 0xb19, 0xb4d, 0xb17, 0xb3e, 0xb1f, 0xb3e, 0xb2a, +0xb41, 0xc0e, 0xc02, 0xc17, 0xc4d, 0xc35, 0xc3f, 0xc32, 0xc4d, 0xc32, 0xc3e, 0x3c, +0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x43, 0x69, 0x74, 0x79, +0x3e, 0xc05, 0xc21, 0xc46, 0xc32, 0xc48, 0xc21, 0xc4d, 0x3c, 0x2f, 0x65, 0x78, +0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x43, 0x69, 0x74, 0x79, 0x3e, 0xc15, +0xc3e, 0xc02, 0xc1f, 0xc28, 0xc4d, 0x140a, 0x144e, 0x1426, 0x146f, 0x1472, 0x1423, 0x1401, +0x141f, 0x14aa, 0x1423, 0x1450, 0x1423, 0x1403, 0x14c4, 0x1431, 0x1420, 0x1403, 0x1473, 0x14eb, +0x1405, 0x1403, 0x141f, 0x14f4, 0x1422, 0x1473, 0x141f, 0x1489, 0x1418, 0x1423, 0x1411, 0x14c2, +0x142f, 0x1420 }; static inline constexpr char16_t shortZoneNameTable[] = { diff --git a/src/corelib/tools/qarraydata.cpp b/src/corelib/tools/qarraydata.cpp index 37d6dea35f9..54bd971cb36 100644 --- a/src/corelib/tools/qarraydata.cpp +++ b/src/corelib/tools/qarraydata.cpp @@ -181,13 +181,12 @@ allocateHelper(qsizetype objectSize, qsizetype alignment, qsizetype capacity, return {}; void *data = nullptr; - QArrayData *header = static_cast<QArrayData *>(::malloc(size_t(allocSize))); - if (Q_LIKELY(header)) { - header->ref_.storeRelaxed(1); - header->flags = {}; + void *mem = ::malloc(size_t(allocSize)); + QArrayData *header = nullptr; + if (Q_LIKELY(mem)) { + header = new (mem) QArrayData{1, {}, capacity}; // find where offset should point to so that data() is aligned to alignment bytes data = QTypedArrayData<void>::dataStart(header, alignment); - header->alloc = capacity; } return { data, header }; @@ -245,8 +244,12 @@ QArrayData::reallocateUnaligned(QArrayData *data, void *dataPointer, Q_ASSERT(offset > 0); Q_ASSERT(offset <= allocSize); // equals when all free space is at the beginning - QArrayData *header = static_cast<QArrayData *>(::realloc(data, size_t(allocSize))); - if (header) { + const bool hadData = data; + void *mem = ::realloc(data, size_t(allocSize)); + QArrayData *header = static_cast<QArrayData *>(mem); + if (mem) { + if (!hadData) + header = new (mem) QArrayData{0, {}, {}}; header->alloc = capacity; dataPointer = reinterpret_cast<char *>(header) + offset; } else { diff --git a/src/corelib/tools/qarraydata.h b/src/corelib/tools/qarraydata.h index 38d1091ac1f..71e183e646e 100644 --- a/src/corelib/tools/qarraydata.h +++ b/src/corelib/tools/qarraydata.h @@ -39,7 +39,7 @@ struct QArrayData }; Q_DECLARE_FLAGS(ArrayOptions, ArrayOption) - QBasicAtomicInt ref_; + QBasicAtomicInt m_ref; ArrayOptions flags; qsizetype alloc; @@ -56,19 +56,19 @@ struct QArrayData /// Returns true if sharing took place bool ref() noexcept { - ref_.ref(); + m_ref.ref(); return true; } /// Returns false if deallocation is necessary bool deref() noexcept { - return ref_.deref(); + return m_ref.deref(); } bool isShared() const noexcept { - return ref_.loadRelaxed() != 1; + return m_ref.loadRelaxed() != 1; } // Returns true if a detach is necessary before modifying the data @@ -76,7 +76,7 @@ struct QArrayData // detaching is necessary, you should be in a non-const function already bool needsDetach() noexcept { - return ref_.loadRelaxed() > 1; + return m_ref.loadRelaxed() > 1; } qsizetype detachCapacity(qsizetype newSize) const noexcept diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h index c20abd12c23..419585b0260 100644 --- a/src/corelib/tools/qarraydataops.h +++ b/src/corelib/tools/qarraydataops.h @@ -82,7 +82,7 @@ public: void destroyAll() noexcept // Call from destructors, ONLY! { Q_ASSERT(this->d); - Q_ASSERT(this->d->ref_.loadRelaxed() == 0); + Q_ASSERT(this->d->m_ref.loadRelaxed() == 0); // As this is to be called only from destructor, it doesn't need to be // exception safe; size not updated. @@ -345,7 +345,7 @@ public: // As this is to be called only from destructor, it doesn't need to be // exception safe; size not updated. - Q_ASSERT(this->d->ref_.loadRelaxed() == 0); + Q_ASSERT(this->d->m_ref.loadRelaxed() == 0); std::destroy(this->begin(), this->end()); } diff --git a/src/corelib/tools/qatomicscopedvaluerollback.h b/src/corelib/tools/qatomicscopedvaluerollback.h index 8f653acba5e..929a2e2d466 100644 --- a/src/corelib/tools/qatomicscopedvaluerollback.h +++ b/src/corelib/tools/qatomicscopedvaluerollback.h @@ -11,6 +11,7 @@ #include <QtCore/qtconfigmacros.h> #include <atomic> +#include <type_traits> QT_BEGIN_NAMESPACE @@ -122,6 +123,33 @@ template <typename T> QAtomicScopedValueRollback(QBasicAtomicPointer<T> &, std::memory_order) -> QAtomicScopedValueRollback<T*>; +template <typename T, typename V, + std::enable_if_t<std::is_convertible_v<V, T>, bool> = true> +QAtomicScopedValueRollback(std::atomic<T>&, V) + -> QAtomicScopedValueRollback<T>; +template <typename T, typename V, + std::enable_if_t<std::is_convertible_v<V, T>, bool> = true> +QAtomicScopedValueRollback(std::atomic<T>&, V, std::memory_order) + -> QAtomicScopedValueRollback<T>; + +template <typename T, typename V, + std::enable_if_t<std::is_convertible_v<V, T>, bool> = true> +QAtomicScopedValueRollback(QBasicAtomicInteger<T>&, V) + -> QAtomicScopedValueRollback<T>; +template <typename T, typename V, + std::enable_if_t<std::is_convertible_v<V, T>, bool> = true> +QAtomicScopedValueRollback(QBasicAtomicInteger<T>&, V, std::memory_order) + -> QAtomicScopedValueRollback<T>; + +template <typename T, typename V, + std::enable_if_t<std::is_convertible_v<V, T*>, bool> = true> +QAtomicScopedValueRollback(QBasicAtomicPointer<T>&, V) + -> QAtomicScopedValueRollback<T*>; +template <typename T, typename V, + std::enable_if_t<std::is_convertible_v<V, T*>, bool> = true> +QAtomicScopedValueRollback(QBasicAtomicPointer<T>&, V, std::memory_order) + -> QAtomicScopedValueRollback<T*>; + QT_END_NAMESPACE #endif // QATOMICASCOPEDVALUEROLLBACK_H diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h index 5c12332aa4a..ecefd1f55df 100644 --- a/src/corelib/tools/qfreelist_p.h +++ b/src/corelib/tools/qfreelist_p.h @@ -199,27 +199,27 @@ inline typename QFreeList<T, ConstantsType>::ReferenceType QFreeList<T, Constant template <typename T, typename ConstantsType> inline int QFreeList<T, ConstantsType>::next() { - int id, newid, at; - ElementType *v; + int newid; + int id = _next.loadAcquire(); do { - id = _next.loadAcquire(); - - at = id & ConstantsType::IndexMask; + int at = id & ConstantsType::IndexMask; const int block = blockfor(at); - v = _v[block].loadAcquire(); + ElementType *v = _v[block].loadAcquire(); if (!v) { - v = allocate((id & ConstantsType::IndexMask) - at, ConstantsType::Sizes[block]); - if (!_v[block].testAndSetRelease(nullptr, v)) { + ElementType* const alloced = allocate((id & ConstantsType::IndexMask) - at, + ConstantsType::Sizes[block]); + if (_v[block].testAndSetRelease(nullptr, alloced, v)) { + v = alloced; + } else { // race with another thread lost - delete[] v; - v = _v[block].loadAcquire(); + delete[] alloced; Q_ASSERT(v != nullptr); } } newid = v[at].next.loadRelaxed() | (id & ~ConstantsType::IndexMask); - } while (!_next.testAndSetRelease(id, newid)); + } while (!_next.testAndSetOrdered(id, newid, id)); // qDebug("QFreeList::next(): returning %d (_next now %d, serial %d)", // id & ConstantsType::IndexMask, // newid & ConstantsType::IndexMask, @@ -232,7 +232,7 @@ inline void QFreeList<T, ConstantsType>::release(int id) { int at = id & ConstantsType::IndexMask; const int block = blockfor(at); - ElementType *v = _v[block].loadRelaxed(); + ElementType *v = _v[block].loadAcquire(); int x, newid; do { diff --git a/src/corelib/tools/qhashfunctions.h b/src/corelib/tools/qhashfunctions.h index cbe217db11e..3e44f5f3442 100644 --- a/src/corelib/tools/qhashfunctions.h +++ b/src/corelib/tools/qhashfunctions.h @@ -298,19 +298,32 @@ bool qHashEquals(const T1 &a, const T2 &b) } namespace QtPrivate { -template <typename Mixer> struct QHashCombiner : private Mixer +template <typename Mixer> struct QHashCombinerWithSeed : private Mixer { - using result_type = typename Mixer::result_type ; + using result_type = typename Mixer::result_type; + size_t seed; + constexpr QHashCombinerWithSeed(result_type s) noexcept : seed(s) {} + + template <typename T> + constexpr result_type operator()(result_type result, const T &t) const + noexcept(noexcept(qHash(t, seed))) + { + return Mixer::operator()(result, qHash(t, seed)); + } +}; #if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED) - // Qt 6.x didn't use to pass the seed; bootstrap has no seed +// Earlier Qt 6.x versions of qHashMulti() failed to pass the seed as the seed +// argument of qHash(), so this class exists for compatibility with user and +// inline code that relies on the old behavior. For Qt 7, we'll replace with +// the above version, except for the bootstrapped tools (which have no seed). +template <typename Mixer> struct QHashCombiner : private Mixer +{ + using result_type = typename Mixer::result_type; + static constexpr size_t seed = 0; constexpr QHashCombiner(result_type) noexcept {} Q_DECL_DEPRECATED_X("pass the seed argument") constexpr QHashCombiner() noexcept {} -#else - size_t seed; - constexpr QHashCombiner(result_type s) : seed(s) noexcept {} -#endif template <typename T> constexpr result_type operator()(result_type result, const T &t) const @@ -319,6 +332,9 @@ template <typename Mixer> struct QHashCombiner : private Mixer return Mixer::operator()(result, qHash(t, seed)); } }; +#else +template <typename Mixer> using QHashCombiner = QHashCombinerWithSeed<Mixer>; +#endif struct QHashCombineMixer { @@ -330,6 +346,7 @@ struct QHashCombineMixer } }; using QHashCombine = QHashCombiner<QHashCombineMixer>; +using QHashCombineWithSeed = QHashCombinerWithSeed<QHashCombineMixer>; struct QHashCombineCommutativeMixer : std::plus<size_t> { @@ -341,6 +358,7 @@ struct QHashCombineCommutativeMixer : std::plus<size_t> typedef size_t result_type; }; using QHashCombineCommutative = QHashCombiner<QHashCombineCommutativeMixer>; +using QHashCombineCommutativeWithSeed = QHashCombinerWithSeed<QHashCombineCommutativeMixer>; template <typename... T> using QHashMultiReturnType = decltype( diff --git a/src/gui/accessible/linux/atspiadaptor.cpp b/src/gui/accessible/linux/atspiadaptor.cpp index 6154af00950..e0cd5aee25c 100644 --- a/src/gui/accessible/linux/atspiadaptor.cpp +++ b/src/gui/accessible/linux/atspiadaptor.cpp @@ -1462,9 +1462,12 @@ bool AtSpiAdaptor::handleMessage(const QDBusMessage &message, const QDBusConnect // handle properties like regular functions if (interface == "org.freedesktop.DBus.Properties"_L1) { - interface = message.arguments().at(0).toString(); - // Get/Set + Name - function = message.member() + message.arguments().at(1).toString(); + const auto arguments = message.arguments(); + if (arguments.size() > 0) { + interface = arguments.at(0).toString(); + if (arguments.size() > 1) // e.g. Get/Set + Name + function = function + arguments.at(1).toString(); + } } // switch interface to call diff --git a/src/gui/compat/removed_api.cpp b/src/gui/compat/removed_api.cpp index 6a39d8b8615..33549a06504 100644 --- a/src/gui/compat/removed_api.cpp +++ b/src/gui/compat/removed_api.cpp @@ -88,3 +88,16 @@ void QWindowSystemInterface::handleContextMenuEvent(QWindow *window, bool mouseT // order sections alphabetically #endif // QT_GUI_REMOVED_SINCE(6, 8) + +#if QT_GUI_REMOVED_SINCE(6, 11) + +#include "qpainter.h" // inlined API + +#include "qquaternion.h" // inlined API + + +// #include "qotherheader.h" +// // implement removed functions from qotherheader.h +// order sections alphabetically + +#endif // QT_GUI_REMOVED_SINCE(6, 11) diff --git a/src/gui/kernel/qaction.cpp b/src/gui/kernel/qaction.cpp index 1768cd8aa1a..f965a5a30e9 100644 --- a/src/gui/kernel/qaction.cpp +++ b/src/gui/kernel/qaction.cpp @@ -1325,4 +1325,6 @@ Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAction *action) QT_END_NAMESPACE +#undef QAPP_CHECK + #include "moc_qaction.cpp" diff --git a/src/gui/kernel/qshortcut.cpp b/src/gui/kernel/qshortcut.cpp index 3f6822cb031..e730b5f9e8b 100644 --- a/src/gui/kernel/qshortcut.cpp +++ b/src/gui/kernel/qshortcut.cpp @@ -577,4 +577,6 @@ bool QShortcut::event(QEvent *e) QT_END_NAMESPACE +#undef QAPP_CHECK + #include "moc_qshortcut.cpp" diff --git a/src/gui/math3d/qquaternion.cpp b/src/gui/math3d/qquaternion.cpp index 3454b498804..99061fb7163 100644 --- a/src/gui/math3d/qquaternion.cpp +++ b/src/gui/math3d/qquaternion.cpp @@ -336,6 +336,9 @@ QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const Extracts a 3D axis \a axis and a rotating angle \a angle (in degrees) that corresponds to this quaternion. + Both \a axis and \a angle must be valid, non-\nullptr pointers, + otherwise the behavior is undefined. + \sa fromAxisAndAngle() */ @@ -366,6 +369,9 @@ QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle) Extracts a 3D axis (\a x, \a y, \a z) and a rotating angle \a angle (in degrees) that corresponds to this quaternion. + All of \a x, \a y, \a z, and \a angle must be valid, non-\nullptr pointers, + otherwise the behavior is undefined. + \sa fromAxisAndAngle() */ void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const @@ -421,7 +427,7 @@ QQuaternion QQuaternion::fromAxisAndAngle \since 5.5 Calculates roll, pitch, and yaw Euler angles (in degrees) - that corresponds to this quaternion. + that correspond to this quaternion. \sa fromEulerAngles() */ @@ -432,8 +438,9 @@ QQuaternion QQuaternion::fromAxisAndAngle \overload Creates a quaternion that corresponds to a rotation of \a angles: - angles.z() degrees around the z axis, angles.x() degrees around the x axis, - and angles.y() degrees around the y axis (in that order). + angles.\l{QVector3D::}{z()} degrees around the z axis, + angles.\l{QVector3D::}{x()} degrees around the x axis, and + angles.\l{QVector3D::}{y()} degrees around the y axis (in that order). \sa toEulerAngles() */ @@ -446,6 +453,9 @@ QQuaternion QQuaternion::fromAxisAndAngle Calculates \a roll, \a pitch, and \a yaw Euler angles (in degrees) that corresponds to this quaternion. + All of \a pitch, \a yaw, and \a roll must be valid, non-\nullptr pointers, + otherwise the behavior is undefined. + \sa fromEulerAngles() */ void QQuaternion::getEulerAngles(float *pitch, float *yaw, float *roll) const @@ -547,7 +557,7 @@ QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll) \note If this quaternion is not normalized, the resulting rotation matrix will contain scaling information. - \sa fromRotationMatrix(), getAxes() + \sa fromRotationMatrix(), toAxes() */ QMatrix3x3 QQuaternion::toRotationMatrix() const { @@ -630,23 +640,71 @@ QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3) #ifndef QT_NO_VECTOR3D /*! - \since 5.5 + \since 6.11 + \class QQuaternion::Axes + \ingroup painting-3D + \inmodule QtGui - Returns the 3 orthonormal axes (\a xAxis, \a yAxis, \a zAxis) defining the quaternion. + A struct containing the three orthonormal axes that define a + \l{QQuaternion}{quaternion}. - \sa fromAxes(), toRotationMatrix() + + \sa QQuaternion::toAxes(), QQuaternion::fromAxes(Axes) +*/ + +/*! + \variable QQuaternion::Axes::x + + The x orthonormal axis that, together with \l{y} and \l{z}, defines a + quaternion. +*/ + +/*! + \variable QQuaternion::Axes::y + + The y orthonormal axis that, together with \l{x} and \l{z}, defines a + quaternion. +*/ + +/*! + \variable QQuaternion::Axes::z + + The z orthonormal axis that, together with \l{x} and \l{y}, defines a + quaternion. */ -void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const -{ - Q_ASSERT(xAxis && yAxis && zAxis); +/*! + \since 6.11 + + Returns the three orthonormal axes that define this quaternion. + + \sa QQuaternion::Axes, fromAxes(QQuaternion::Axes), toRotationMatrix() +*/ +auto QQuaternion::toAxes() const -> Axes +{ const QMatrix3x3 rot3x3(toRotationMatrix()); - *xAxis = QVector3D(rot3x3(0, 0), rot3x3(1, 0), rot3x3(2, 0)); - *yAxis = QVector3D(rot3x3(0, 1), rot3x3(1, 1), rot3x3(2, 1)); - *zAxis = QVector3D(rot3x3(0, 2), rot3x3(1, 2), rot3x3(2, 2)); + return { {rot3x3(0, 0), rot3x3(1, 0), rot3x3(2, 0)}, + {rot3x3(0, 1), rot3x3(1, 1), rot3x3(2, 1)}, + {rot3x3(0, 2), rot3x3(1, 2), rot3x3(2, 2)} }; } + +/*! + \fn void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const + \since 5.5 + + \obsolete + Use toAxes() instead. + + Returns the 3 orthonormal axes (\a xAxis, \a yAxis, \a zAxis) defining the quaternion. + + All of \a xAxis, \a yAxis, and \a zAxis must be valid, non-\nullptr pointers, + otherwise the behavior is undefined. + + \sa fromAxes(), toRotationMatrix() +*/ + /*! \since 5.5 @@ -654,7 +712,7 @@ void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) \note The axes are assumed to be orthonormal. - \sa getAxes(), fromRotationMatrix() + \sa toAxes(), fromRotationMatrix() */ QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis) { @@ -673,6 +731,17 @@ QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis } /*! + \since 6.11 + \overload + + \sa toAxes(), fromRotationMatrix() +*/ +QQuaternion QQuaternion::fromAxes(Axes axes) // clazy:exclude=function-args-by-ref +{ + return fromAxes(axes.x, axes.y, axes.z); +} + +/*! \since 5.5 Constructs the quaternion using specified forward direction \a direction diff --git a/src/gui/math3d/qquaternion.h b/src/gui/math3d/qquaternion.h index 0ea844ae41f..ffc95a852ce 100644 --- a/src/gui/math3d/qquaternion.h +++ b/src/gui/math3d/qquaternion.h @@ -118,7 +118,14 @@ QT_WARNING_POP QT7_ONLY(Q_GUI_EXPORT) static QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3); #ifndef QT_NO_VECTOR3D - QT7_ONLY(Q_GUI_EXPORT) void getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const; + struct Axes + { + QVector3D x, y, z; + }; + QT7_ONLY(Q_GUI_EXPORT) Axes toAxes() const; + QT7_ONLY(Q_GUI_EXPORT) static QQuaternion fromAxes(Axes axes); // clazy:exclude=function-args-by-ref + QT_GUI_INLINE_SINCE(6, 11) + void getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const; QT7_ONLY(Q_GUI_EXPORT) static QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis); @@ -330,6 +337,19 @@ QQuaternion QQuaternion::fromEulerAngles(const QVector3D &angles) return QQuaternion::fromEulerAngles(angles.x(), angles.y(), angles.z()); } +#if QT_GUI_INLINE_IMPL_SINCE(6, 11) +void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const +{ + Q_PRE(xAxis); + Q_PRE(yAxis); + Q_PRE(zAxis); + const Axes axes = toAxes(); + *xAxis = axes.x; + *yAxis = axes.y; + *zAxis = axes.z; +} +#endif // QT_GUI_INLINE_IMPL_SINCE(6, 11) + #endif // QT_NO_VECTOR3D constexpr void QQuaternion::setVector(float aX, float aY, float aZ) noexcept diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 5013e96f740..344bb8f1bef 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -41,6 +41,8 @@ #include <private/qrawfont_p.h> #include <private/qfont_p.h> +#include <QtCore/private/qtclasshelper_p.h> + QT_BEGIN_NAMESPACE using namespace Qt::StringLiterals; @@ -3652,6 +3654,8 @@ void QPainter::setPen(const QColor &color) } /*! + \fn void QPainter::setPen(const QPen &pen) + Sets the painter's pen to be the given \a pen. The \a pen defines how to draw lines and outlines, and it also @@ -3660,7 +3664,13 @@ void QPainter::setPen(const QColor &color) \sa pen(), {QPainter#Settings}{Settings} */ -void QPainter::setPen(const QPen &pen) +/*! + \fn void QPainter::setPen(QPen &&pen) + \since 6.11 + \overload +*/ + +void QPainter::doSetPen(const QPen &pen, QPen *rvalue) { #ifdef QT_DEBUG_DRAW @@ -3677,7 +3687,7 @@ void QPainter::setPen(const QPen &pen) if (d->state->pen == pen) return; - d->state->pen = pen; + q_choose_assign(d->state->pen, pen, rvalue); if (d->extended) { d->checkEmulation(); @@ -3733,6 +3743,8 @@ const QPen &QPainter::pen() const /*! + \fn void QPainter::setBrush(const QBrush &brush) + Sets the painter's brush to the given \a brush. The painter's brush defines how shapes are filled. @@ -3740,7 +3752,13 @@ const QPen &QPainter::pen() const \sa brush(), {QPainter#Settings}{Settings} */ -void QPainter::setBrush(const QBrush &brush) +/*! + \fn void QPainter::setBrush(QBrush &&brush) + \since 6.11 + \overload +*/ + +void QPainter::doSetBrush(const QBrush &brush, QBrush *rvalue) { #ifdef QT_DEBUG_DRAW if constexpr (qt_show_painter_debug_output) @@ -3756,13 +3774,13 @@ void QPainter::setBrush(const QBrush &brush) return; if (d->extended) { - d->state->brush = brush; + q_choose_assign(d->state->brush, brush, rvalue); d->checkEmulation(); d->extended->brushChanged(); return; } - d->state->brush = brush; + q_choose_assign(d->state->brush, brush, rvalue); d->state->dirtyFlags |= QPaintEngine::DirtyBrush; } diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h index 3c09b632364..83bde3b8cad 100644 --- a/src/gui/painting/qpainter.h +++ b/src/gui/painting/qpainter.h @@ -150,11 +150,15 @@ public: QFontInfo fontInfo() const; void setPen(const QColor &color); + QT_GUI_INLINE_SINCE(6, 11) void setPen(const QPen &pen); + void setPen(QPen &&pen) { doSetPen(pen, &pen); } void setPen(Qt::PenStyle style); const QPen &pen() const; + QT_GUI_INLINE_SINCE(6, 11) void setBrush(const QBrush &brush); + void setBrush(QBrush &&brush) { doSetBrush(brush, &brush); } void setBrush(Qt::BrushStyle style); void setBrush(QColor color); void setBrush(Qt::GlobalColor color) { setBrush(QColor(color)); } @@ -419,6 +423,9 @@ public: private: Q_DISABLE_COPY(QPainter) + void doSetPen(const QPen &lvalue, QPen *rvalue); + void doSetBrush(const QBrush &lvalue, QBrush *rvalue); + std::unique_ptr<QPainterPrivate> d_ptr; friend class QWidget; @@ -700,6 +707,21 @@ inline void QPainter::fillRect(const QRectF &r, QGradient::Preset p) fillRect(r, QGradient(p)); } +#if QT_GUI_INLINE_IMPL_SINCE(6, 11) + +void QPainter::setPen(const QPen &p) +{ + doSetPen(p, nullptr); +} + +void QPainter::setBrush(const QBrush &b) +{ + doSetBrush(b, nullptr); +} + +#endif // QT_GUI_INLINE_IMPL_SINCE(6, 11) + + inline void QPainter::setBrushOrigin(int x, int y) { setBrushOrigin(QPoint(x, y)); diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp index 66f1cf2a985..148d40b8361 100644 --- a/src/gui/painting/qtransform.cpp +++ b/src/gui/painting/qtransform.cpp @@ -784,7 +784,7 @@ bool QTransform::operator==(const QTransform &o) const */ size_t qHash(const QTransform &key, size_t seed) noexcept { - QtPrivate::QHashCombine hash(seed); + QtPrivate::QHashCombineWithSeed hash(seed); seed = hash(seed, key.m11()); seed = hash(seed, key.m12()); seed = hash(seed, key.m21()); diff --git a/src/gui/rhi/qrhi.cpp b/src/gui/rhi/qrhi.cpp index b9312f6b304..7a3d4974e53 100644 --- a/src/gui/rhi/qrhi.cpp +++ b/src/gui/rhi/qrhi.cpp @@ -6543,7 +6543,7 @@ bool operator!=(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBind size_t qHash(const QRhiShaderResourceBinding &b, size_t seed) noexcept { const QRhiShaderResourceBinding::Data *d = QRhiImplementation::shaderResourceBindingData(b); - QtPrivate::QHashCombine hash(seed); + QtPrivate::QHashCombineWithSeed hash(seed); seed = hash(seed, d->binding); seed = hash(seed, d->stage); seed = hash(seed, d->type); diff --git a/src/gui/rhi/qshader.cpp b/src/gui/rhi/qshader.cpp index 5e967c62e40..1234d01b6ec 100644 --- a/src/gui/rhi/qshader.cpp +++ b/src/gui/rhi/qshader.cpp @@ -812,7 +812,7 @@ bool operator==(const QShader &lhs, const QShader &rhs) noexcept size_t qHash(const QShader &s, size_t seed) noexcept { if (s.d) { - QtPrivate::QHashCombine hash(seed); + QtPrivate::QHashCombineWithSeed hash(seed); seed = hash(seed, s.stage()); if (!s.d->shaders.isEmpty()) { seed = hash(seed, s.d->shaders.firstKey()); diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 5d455219359..8380a8b7f68 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -1570,7 +1570,6 @@ bool QFontDatabase::isFixedPitch(const QString &family, bool QFontDatabase::isBitmapScalable(const QString &family, const QString &style) { - bool bitmapScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); @@ -1578,7 +1577,8 @@ bool QFontDatabase::isBitmapScalable(const QString &family, QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase(); QtFontFamily *f = d->family(familyName); - if (!f) return bitmapScalable; + if (!f) + return false; QtFontStyle::Key styleKey(style); for (int j = 0; j < f->count; j++) { @@ -1589,13 +1589,11 @@ bool QFontDatabase::isBitmapScalable(const QString &family, foundry->styles[k]->styleName == style || foundry->styles[k]->key == styleKey) && foundry->styles[k]->bitmapScalable && !foundry->styles[k]->smoothScalable) { - bitmapScalable = true; - goto end; + return true; } } } - end: - return bitmapScalable; + return false; } @@ -1609,7 +1607,6 @@ bool QFontDatabase::isBitmapScalable(const QString &family, */ bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style) { - bool smoothScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); @@ -1626,7 +1623,8 @@ bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &sty } } } - if (!f) return smoothScalable; + if (!f) + return false; const QtFontStyle::Key styleKey(style); for (int j = 0; j < f->count; j++) { @@ -1634,7 +1632,7 @@ bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &sty if (foundryName.isEmpty() || foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0) { for (int k = 0; k < foundry->count; k++) { const QtFontStyle *fontStyle = foundry->styles[k]; - smoothScalable = + const bool smoothScalable = fontStyle->smoothScalable && ((style.isEmpty() || fontStyle->styleName == style @@ -1643,12 +1641,11 @@ bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &sty && style == styleStringHelper(fontStyle->key.weight, QFont::Style(fontStyle->key.style)))); if (smoothScalable) - goto end; + return true; } } } - end: - return smoothScalable; + return false; } /*! @@ -1679,7 +1676,6 @@ QList<int> QFontDatabase::pointSizes(const QString &family, if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()) return standardSizes(); - bool smoothScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); @@ -1701,10 +1697,9 @@ QList<int> QFontDatabase::pointSizes(const QString &family, QtFontStyle *style = foundry->style(styleKey, styleName); if (!style) continue; - if (style->smoothScalable) { - smoothScalable = true; - goto end; - } + if (style->smoothScalable) + return standardSizes(); + for (int l = 0; l < style->count; l++) { const QtFontSize *size = style->pixelSizes + l; @@ -1716,9 +1711,6 @@ QList<int> QFontDatabase::pointSizes(const QString &family, } } } - end: - if (smoothScalable) - return standardSizes(); std::sort(sizes.begin(), sizes.end()); return sizes; @@ -1781,7 +1773,6 @@ QList<int> QFontDatabase::smoothSizes(const QString &family, if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()) return standardSizes(); - bool smoothScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); @@ -1803,10 +1794,9 @@ QList<int> QFontDatabase::smoothSizes(const QString &family, QtFontStyle *style = foundry->style(styleKey, styleName); if (!style) continue; - if (style->smoothScalable) { - smoothScalable = true; - goto end; - } + if (style->smoothScalable) + return QFontDatabase::standardSizes(); + for (int l = 0; l < style->count; l++) { const QtFontSize *size = style->pixelSizes + l; @@ -1818,9 +1808,6 @@ QList<int> QFontDatabase::smoothSizes(const QString &family, } } } - end: - if (smoothScalable) - return QFontDatabase::standardSizes(); std::sort(sizes.begin(), sizes.end()); return sizes; diff --git a/src/gui/text/qfontdatabase_p.h b/src/gui/text/qfontdatabase_p.h index 4cd6996aab8..27fb34aecdd 100644 --- a/src/gui/text/qfontdatabase_p.h +++ b/src/gui/text/qfontdatabase_p.h @@ -51,7 +51,7 @@ inline bool operator!=(const QtFontFallbacksCacheKey &lhs, const QtFontFallbacks inline size_t qHash(const QtFontFallbacksCacheKey &key, size_t seed = 0) noexcept { - QtPrivate::QHashCombine hash(seed); + QtPrivate::QHashCombineWithSeed hash(seed); seed = hash(seed, key.family); seed = hash(seed, int(key.style)); seed = hash(seed, int(key.styleHint)); diff --git a/src/plugins/platforms/CMakeLists.txt b/src/plugins/platforms/CMakeLists.txt index f30c27c24be..498a0772bc9 100644 --- a/src/plugins/platforms/CMakeLists.txt +++ b/src/plugins/platforms/CMakeLists.txt @@ -4,10 +4,10 @@ if(ANDROID) add_subdirectory(android) endif() -if(NOT ANDROID AND NOT WASM) +if(NOT WASM) add_subdirectory(minimal) endif() -if(QT_FEATURE_freetype AND NOT ANDROID AND NOT WASM) +if(QT_FEATURE_freetype AND NOT WASM) add_subdirectory(offscreen) endif() if(QT_FEATURE_xcb) diff --git a/src/plugins/platforms/android/CMakeLists.txt b/src/plugins/platforms/android/CMakeLists.txt index 0160e12c26c..0d2a048abde 100644 --- a/src/plugins/platforms/android/CMakeLists.txt +++ b/src/plugins/platforms/android/CMakeLists.txt @@ -51,7 +51,12 @@ qt_internal_add_plugin(QAndroidIntegrationPlugin qandroidplatformdialoghelpers.cpp # Conflicting JNI classes, and types androidcontentfileengine.cpp + qandroidplatformforeignwindow.cpp qandroidplatformintegration.cpp + qandroidplatformscreen.cpp + qandroidplatformservices.cpp + qandroidplatformwindow.cpp + qandroidsystemlocale.cpp INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ${QtBase_SOURCE_DIR}/src/3rdparty/android diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp index 200c2f7a47b..b3ff0a4f06e 100644 --- a/src/plugins/platforms/android/androidjniaccessibility.cpp +++ b/src/plugins/platforms/android/androidjniaccessibility.cpp @@ -28,6 +28,7 @@ using namespace Qt::StringLiterals; namespace QtAndroidAccessibility { + static jmethodID m_setClassNameMethodID = 0; static jmethodID m_addActionMethodID = 0; static jmethodID m_setCheckableMethodID = 0; static jmethodID m_setCheckedMethodID = 0; @@ -421,6 +422,130 @@ namespace QtAndroidAccessibility return jstr; } + static QString classNameForRole(QAccessible::Role role, QAccessible::State state) { + switch (role) { + case QAccessible::Role::Button: + case QAccessible::Role::Link: + { + if (state.checkable) + // There is also a android.widget.Switch for which we have no match. + return QStringLiteral("android.widget.ToggleButton"); + return QStringLiteral("android.widget.Button"); + } + case QAccessible::Role::CheckBox: + // As of android/accessibility/utils/Role.java::getRole a CheckBox + // is NOT android.widget.CheckBox + return QStringLiteral("android.widget.CompoundButton"); + case QAccessible::Role::Clock: + return QStringLiteral("android.widget.TextClock"); + case QAccessible::Role::ComboBox: + return QStringLiteral("android.widget.Spinner"); + case QAccessible::Role::Graphic: + // QQuickImage does not provide this role it inherits Client from QQuickItem + return QStringLiteral("android.widget.ImageView"); + case QAccessible::Role::Grouping: + return QStringLiteral("android.view.ViewGroup"); + case QAccessible::Role::List: + // As of android/accessibility/utils/Role.java::getRole a List + // is NOT android.widget.ListView + return QStringLiteral("android.widget.AbsListView"); + case QAccessible::Role::MenuItem: + return QStringLiteral("android.view.MenuItem"); + case QAccessible::Role::PopupMenu: + return QStringLiteral("android.widget.PopupMenu"); + case QAccessible::Role::Separator: + return QStringLiteral("android.widget.Space"); + case QAccessible::Role::ToolBar: + return QStringLiteral("android.view.Toolbar"); + case QAccessible::Role::Heading: [[fallthrough]]; + case QAccessible::Role::StaticText: + // Heading vs. regular Text is finally determined by AccessibilityNodeInfo.isHeading() + return QStringLiteral("android.widget.TextView"); + case QAccessible::Role::EditableText: + return QStringLiteral("android.widget.EditText"); + case QAccessible::Role::RadioButton: + return QStringLiteral("android.widget.RadioButton"); + case QAccessible::Role::ProgressBar: + return QStringLiteral("android.widget.ProgressBar"); + // Range information need to be filled to announce percentages + case QAccessible::Role::SpinBox: + return QStringLiteral("android.widget.NumberPicker"); + case QAccessible::Role::WebDocument: + return QStringLiteral("android.webkit.WebView"); + case QAccessible::Role::Dialog: + return QStringLiteral("android.app.AlertDialog"); + case QAccessible::Role::PageTab: + return QStringLiteral("android.app.ActionBar.Tab"); + case QAccessible::Role::PageTabList: + return QStringLiteral("android.widget.TabWidget"); + case QAccessible::Role::ScrollBar: [[fallthrough]]; + case QAccessible::Role::Slider: + return QStringLiteral("android.widget.SeekBar"); + case QAccessible::Role::Table: + // #TODO Evaluate the usage of AccessibleNodeInfo.setCollectionItemInfo() to provide + // infos about colums, rows und items. + return QStringLiteral("android.widget.GridView"); + case QAccessible::Role::Pane: + // #TODO QQuickScrollView, QQuickListView (see QTBUG-137806) + return QStringLiteral("android.view.ViewGroup"); + case QAccessible::Role::AlertMessage: + case QAccessible::Role::Animation: + case QAccessible::Role::Application: + case QAccessible::Role::Assistant: + case QAccessible::Role::BlockQuote: + case QAccessible::Role::Border: + case QAccessible::Role::ButtonDropGrid: + case QAccessible::Role::ButtonDropDown: + case QAccessible::Role::ButtonMenu: + case QAccessible::Role::Canvas: + case QAccessible::Role::Caret: + case QAccessible::Role::Cell: + case QAccessible::Role::Chart: + case QAccessible::Role::Client: + case QAccessible::Role::ColorChooser: + case QAccessible::Role::Column: + case QAccessible::Role::ColumnHeader: + case QAccessible::Role::ComplementaryContent: + case QAccessible::Role::Cursor: + case QAccessible::Role::Desktop: + case QAccessible::Role::Dial: + case QAccessible::Role::Document: + case QAccessible::Role::Equation: + case QAccessible::Role::Footer: + case QAccessible::Role::Form: + case QAccessible::Role::Grip: + case QAccessible::Role::HelpBalloon: + case QAccessible::Role::HotkeyField: + case QAccessible::Role::Indicator: + case QAccessible::Role::LayeredPane: + case QAccessible::Role::ListItem: + case QAccessible::Role::MenuBar: + case QAccessible::Role::NoRole: + case QAccessible::Role::Note: + case QAccessible::Role::Notification: + case QAccessible::Role::Paragraph: + case QAccessible::Role::PropertyPage: + case QAccessible::Role::Row: + case QAccessible::Role::RowHeader: + case QAccessible::Role::Section: + case QAccessible::Role::Sound: + case QAccessible::Role::Splitter: + case QAccessible::Role::StatusBar: + case QAccessible::Role::Terminal: + case QAccessible::Role::TitleBar: + case QAccessible::Role::ToolTip: + case QAccessible::Role::Tree: + case QAccessible::Role::TreeItem: + case QAccessible::Role::UserRole: + case QAccessible::Role::Whitespace: + case QAccessible::Role::Window: + // If unsure, every visible or interactive element in Android + // inherits android.view.View and by many extends also TextView. + // Android itself does a similar thing e.g. in its Settings-App. + return QStringLiteral("android.view.TextView"); + } + } + static QString descriptionForInterface(QAccessibleInterface *iface) { QString desc; @@ -513,6 +638,10 @@ namespace QtAndroidAccessibility return false; } + const QString role = classNameForRole(info.role, info.state); + jstring jrole = env->NewString((jchar*)role.constData(), (jsize)role.size()); + env->CallVoidMethod(node, m_setClassNameMethodID, jrole); + const bool hasClickableAction = info.actions.contains(QAccessibleActionInterface::pressAction()) || info.actions.contains(QAccessibleActionInterface::toggleAction()); @@ -590,6 +719,7 @@ namespace QtAndroidAccessibility } jclass nodeInfoClass = env->FindClass("android/view/accessibility/AccessibilityNodeInfo"); + GET_AND_CHECK_STATIC_METHOD(m_setClassNameMethodID, nodeInfoClass, "setClassName", "(Ljava/lang/CharSequence;)V"); GET_AND_CHECK_STATIC_METHOD(m_addActionMethodID, nodeInfoClass, "addAction", "(I)V"); GET_AND_CHECK_STATIC_METHOD(m_setCheckableMethodID, nodeInfoClass, "setCheckable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setCheckedMethodID, nodeInfoClass, "setChecked", "(Z)V"); diff --git a/src/plugins/styles/modernwindows/qwindows11style.cpp b/src/plugins/styles/modernwindows/qwindows11style.cpp index 3f40dea5eb9..82e978862f8 100644 --- a/src/plugins/styles/modernwindows/qwindows11style.cpp +++ b/src/plugins/styles/modernwindows/qwindows11style.cpp @@ -1662,128 +1662,123 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op } case CE_ItemViewItem: { if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(option)) { - if (qobject_cast<const QAbstractItemView *>(widget)) { - QRect checkRect = proxy()->subElementRect(SE_ItemViewItemCheckIndicator, vopt, widget); - QRect iconRect = proxy()->subElementRect(SE_ItemViewItemDecoration, vopt, widget); - QRect textRect = proxy()->subElementRect(SE_ItemViewItemText, vopt, widget); + QRect checkRect = proxy()->subElementRect(SE_ItemViewItemCheckIndicator, vopt, widget); + QRect iconRect = proxy()->subElementRect(SE_ItemViewItemDecoration, vopt, widget); + QRect textRect = proxy()->subElementRect(SE_ItemViewItemText, vopt, widget); - // draw the background - proxy()->drawPrimitive(PE_PanelItemViewItem, option, painter, widget); + // draw the background + proxy()->drawPrimitive(PE_PanelItemViewItem, option, painter, widget); - const QRect &rect = vopt->rect; - const bool isRtl = option->direction == Qt::RightToLeft; - bool onlyOne = vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || - vopt->viewItemPosition == QStyleOptionViewItem::Invalid; - bool isFirst = vopt->viewItemPosition == QStyleOptionViewItem::Beginning; - bool isLast = vopt->viewItemPosition == QStyleOptionViewItem::End; + const QRect &rect = vopt->rect; + const bool isRtl = option->direction == Qt::RightToLeft; + bool onlyOne = vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || + vopt->viewItemPosition == QStyleOptionViewItem::Invalid; + bool isFirst = vopt->viewItemPosition == QStyleOptionViewItem::Beginning; + bool isLast = vopt->viewItemPosition == QStyleOptionViewItem::End; - // the tree decoration already painted the left side of the rounded rect - if (vopt->features.testFlag(QStyleOptionViewItem::IsDecoratedRootColumn) && - vopt->showDecorationSelected) { - isFirst = false; - if (onlyOne) { - onlyOne = false; - isLast = true; - } + // the tree decoration already painted the left side of the rounded rect + if (vopt->features.testFlag(QStyleOptionViewItem::IsDecoratedRootColumn) && + vopt->showDecorationSelected) { + isFirst = false; + if (onlyOne) { + onlyOne = false; + isLast = true; } + } - if (isRtl) { - if (isFirst) { - isFirst = false; - isLast = true; - } else if (isLast) { - isFirst = true; - isLast = false; - } + if (isRtl) { + if (isFirst) { + isFirst = false; + isLast = true; + } else if (isLast) { + isFirst = true; + isLast = false; } - const bool highlightCurrent = vopt->state.testAnyFlags(State_Selected | State_MouseOver); - if (highlightCurrent) { - const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(widget); - if (highContrastTheme) - painter->setBrush(vopt->palette.highlight()); - else - painter->setBrush(view->alternatingRowColors() ? vopt->palette.highlight() : WINUI3Colors[colorSchemeIndex][subtleHighlightColor]); - QWidget *editorWidget = view ? view->indexWidget(view->currentIndex()) : nullptr; - if (editorWidget) { - QPalette pal = editorWidget->palette(); - QColor editorBgColor = vopt->backgroundBrush == Qt::NoBrush ? vopt->palette.color(widget->backgroundRole()) : vopt->backgroundBrush.color(); - editorBgColor.setAlpha(255); - pal.setColor(editorWidget->backgroundRole(), editorBgColor); - editorWidget->setPalette(pal); - } - } else { - painter->setBrush(vopt->backgroundBrush); + } + const bool highlightCurrent = vopt->state.testAnyFlags(State_Selected | State_MouseOver); + if (highlightCurrent) { + const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(widget); + if (highContrastTheme) + painter->setBrush(vopt->palette.highlight()); + else + painter->setBrush(view->alternatingRowColors() ? vopt->palette.highlight() : WINUI3Colors[colorSchemeIndex][subtleHighlightColor]); + QWidget *editorWidget = view ? view->indexWidget(view->currentIndex()) : nullptr; + if (editorWidget) { + QPalette pal = editorWidget->palette(); + QColor editorBgColor = vopt->backgroundBrush == Qt::NoBrush ? vopt->palette.color(widget->backgroundRole()) : vopt->backgroundBrush.color(); + editorBgColor.setAlpha(255); + pal.setColor(editorWidget->backgroundRole(), editorBgColor); + editorWidget->setPalette(pal); } - painter->setPen(Qt::NoPen); + } else { + painter->setBrush(vopt->backgroundBrush); + } + painter->setPen(Qt::NoPen); - if (onlyOne) { - painter->drawRoundedRect(rect.marginsRemoved(QMargins(2, 2, 2, 2)), - secondLevelRoundingRadius, secondLevelRoundingRadius); - } else if (isFirst) { - painter->save(); - painter->setClipRect(rect); - painter->drawRoundedRect(rect.marginsRemoved(QMargins(2, 2, -secondLevelRoundingRadius, 2)), - secondLevelRoundingRadius, secondLevelRoundingRadius); - painter->restore(); - } else if (isLast) { - painter->save(); - painter->setClipRect(rect); - painter->drawRoundedRect(rect.marginsRemoved(QMargins(-secondLevelRoundingRadius, 2, 2, 2)), - secondLevelRoundingRadius, secondLevelRoundingRadius); - painter->restore(); - } else { - painter->drawRect(rect.marginsRemoved(QMargins(0, 2, 0, 2))); - } + if (onlyOne) { + painter->drawRoundedRect(rect.marginsRemoved(QMargins(2, 2, 2, 2)), + secondLevelRoundingRadius, secondLevelRoundingRadius); + } else if (isFirst) { + painter->save(); + painter->setClipRect(rect); + painter->drawRoundedRect(rect.marginsRemoved(QMargins(2, 2, -secondLevelRoundingRadius, 2)), + secondLevelRoundingRadius, secondLevelRoundingRadius); + painter->restore(); + } else if (isLast) { + painter->save(); + painter->setClipRect(rect); + painter->drawRoundedRect(rect.marginsRemoved(QMargins(-secondLevelRoundingRadius, 2, 2, 2)), + secondLevelRoundingRadius, secondLevelRoundingRadius); + painter->restore(); + } else { + painter->drawRect(rect.marginsRemoved(QMargins(0, 2, 0, 2))); + } - // draw the check mark - if (vopt->features & QStyleOptionViewItem::HasCheckIndicator) { - QStyleOptionViewItem option(*vopt); - option.rect = checkRect; - option.state = option.state & ~QStyle::State_HasFocus; + // draw the check mark + if (vopt->features & QStyleOptionViewItem::HasCheckIndicator) { + QStyleOptionViewItem option(*vopt); + option.rect = checkRect; + option.state = option.state & ~QStyle::State_HasFocus; - switch (vopt->checkState) { - case Qt::Unchecked: - option.state |= QStyle::State_Off; - break; - case Qt::PartiallyChecked: - option.state |= QStyle::State_NoChange; - break; - case Qt::Checked: - option.state |= QStyle::State_On; - break; - } - proxy()->drawPrimitive(QStyle::PE_IndicatorItemViewItemCheck, &option, painter, widget); + switch (vopt->checkState) { + case Qt::Unchecked: + option.state |= QStyle::State_Off; + break; + case Qt::PartiallyChecked: + option.state |= QStyle::State_NoChange; + break; + case Qt::Checked: + option.state |= QStyle::State_On; + break; } + proxy()->drawPrimitive(QStyle::PE_IndicatorItemViewItemCheck, &option, painter, widget); + } - // draw the icon - QIcon::Mode mode = QIcon::Normal; - if (!(vopt->state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (vopt->state & QStyle::State_Selected) - mode = QIcon::Selected; - QIcon::State state = vopt->state & QStyle::State_Open ? QIcon::On : QIcon::Off; - vopt->icon.paint(painter, iconRect, vopt->decorationAlignment, mode, state); - - painter->setPen(highlightCurrent && highContrastTheme ? vopt->palette.base().color() - : vopt->palette.text().color()); - d->viewItemDrawText(painter, vopt, textRect); - - // paint a vertical marker for QListView - if (vopt->state & State_Selected) { - if (const QListView *lv = qobject_cast<const QListView *>(widget); - lv && lv->viewMode() != QListView::IconMode && !highContrastTheme) { - painter->setPen(vopt->palette.accent().color()); - const auto xPos = isRtl ? rect.right() - 1 : rect.left(); - const QLineF lines[2] = { - QLineF(xPos, rect.y() + 2, xPos, rect.y() + rect.height() - 2), - QLineF(xPos + 1, rect.y() + 2, xPos + 1, rect.y() + rect.height() - 2), - }; - painter->drawLines(lines, 2); - } + // draw the icon + QIcon::Mode mode = QIcon::Normal; + if (!(vopt->state & QStyle::State_Enabled)) + mode = QIcon::Disabled; + else if (vopt->state & QStyle::State_Selected) + mode = QIcon::Selected; + QIcon::State state = vopt->state & QStyle::State_Open ? QIcon::On : QIcon::Off; + vopt->icon.paint(painter, iconRect, vopt->decorationAlignment, mode, state); + + painter->setPen(highlightCurrent && highContrastTheme ? vopt->palette.base().color() + : vopt->palette.text().color()); + d->viewItemDrawText(painter, vopt, textRect); + + // paint a vertical marker for QListView + if (vopt->state & State_Selected) { + if (const QListView *lv = qobject_cast<const QListView *>(widget); + lv && lv->viewMode() != QListView::IconMode && !highContrastTheme) { + painter->setPen(vopt->palette.accent().color()); + const auto xPos = isRtl ? rect.right() - 1 : rect.left(); + const QLineF lines[2] = { + QLineF(xPos, rect.y() + 2, xPos, rect.y() + rect.height() - 2), + QLineF(xPos + 1, rect.y() + 2, xPos + 1, rect.y() + rect.height() - 2), + }; + painter->drawLines(lines, 2); } - } else { - QRect textRect = proxy()->subElementRect(SE_ItemViewItemText, vopt, widget); - d->viewItemDrawText(painter, vopt, textRect); } } break; diff --git a/src/sql/models/qsqlquerymodel.cpp b/src/sql/models/qsqlquerymodel.cpp index d8e10343854..6f4611d9139 100644 --- a/src/sql/models/qsqlquerymodel.cpp +++ b/src/sql/models/qsqlquerymodel.cpp @@ -561,9 +561,9 @@ QSqlError QSqlQueryModel::lastError() const \sa lastError() */ -void QSqlQueryModel::setLastError(const QSqlError &error) +void QSqlQueryModel::setLastError(const QSqlError &error) const { - Q_D(QSqlQueryModel); + Q_D(const QSqlQueryModel); d->error = error; } diff --git a/src/sql/models/qsqlquerymodel.h b/src/sql/models/qsqlquerymodel.h index 72b9b053f03..24877118865 100644 --- a/src/sql/models/qsqlquerymodel.h +++ b/src/sql/models/qsqlquerymodel.h @@ -79,7 +79,7 @@ protected: virtual void queryChange(); virtual QModelIndex indexInQuery(const QModelIndex &item) const; - void setLastError(const QSqlError &error); + void setLastError(const QSqlError &error) const; QSqlQueryModel(QSqlQueryModelPrivate &dd, QObject *parent = nullptr); }; diff --git a/src/testlib/3rdparty/valgrind/qt_attribution.json b/src/testlib/3rdparty/valgrind/qt_attribution.json index 3146fd82c57..262bc8380b4 100644 --- a/src/testlib/3rdparty/valgrind/qt_attribution.json +++ b/src/testlib/3rdparty/valgrind/qt_attribution.json @@ -11,7 +11,7 @@ "Description": "An instrumentation framework for building dynamic analysis tools.", "Homepage": "http://valgrind.org/", - "Version": "3.24.0", + "Version": "3.25.1", "PURL": "pkg:generic/valgrind@$<VERSION>?download_url=https://valgrind.org/", "License": "BSD 4-clause \"Original\" or \"Old\" License", "LicenseId": "BSD-4-Clause", diff --git a/src/testlib/3rdparty/valgrind/valgrind_p.h b/src/testlib/3rdparty/valgrind/valgrind_p.h index 77ca3ad8692..ab49937ccd4 100644 --- a/src/testlib/3rdparty/valgrind/valgrind_p.h +++ b/src/testlib/3rdparty/valgrind/valgrind_p.h @@ -89,7 +89,7 @@ || (__VALGRIND_MAJOR__ == 3 && __VALGRIND_MINOR__ >= 6)) */ #define __VALGRIND_MAJOR__ 3 -#define __VALGRIND_MINOR__ 24 +#define __VALGRIND_MINOR__ 25 #include <stdarg.h> @@ -126,6 +126,7 @@ #undef PLAT_mips32_linux #undef PLAT_mips64_linux #undef PLAT_nanomips_linux +#undef PLAT_riscv64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris @@ -172,6 +173,8 @@ # define PLAT_mips32_linux 1 #elif defined(__linux__) && defined(__nanomips__) # define PLAT_nanomips_linux 1 +#elif defined(__linux__) && defined(__riscv) && (__riscv_xlen == 64) +# define PLAT_riscv64_linux 1 #elif defined(__sun) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun) && defined(__x86_64__) @@ -1129,6 +1132,87 @@ typedef } while (0) #endif + +/* ----------------------- riscv64-linux ------------------------ */ + +#if defined(PLAT_riscv64_linux) + +typedef + struct { + unsigned long int nraddr; /* where's the code? */ + } + OrigFn; + +#define __SPECIAL_INSTRUCTION_PREAMBLE \ + ".option push\n\t" \ + ".option norvc\n\t" \ + "srli zero, zero, 3\n\t" \ + "srli zero, zero, 13\n\t" \ + "srli zero, zero, 51\n\t" \ + "srli zero, zero, 61\n\t" + +#define __SPECIAL_INSTRUCTION_POSTAMBLE \ + ".option pop\n\t" \ + +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ + _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ + \ + __extension__ \ + ({volatile unsigned long int _zzq_args[6]; \ + volatile unsigned long int _zzq_result; \ + _zzq_args[0] = (unsigned long int)(_zzq_request); \ + _zzq_args[1] = (unsigned long int)(_zzq_arg1); \ + _zzq_args[2] = (unsigned long int)(_zzq_arg2); \ + _zzq_args[3] = (unsigned long int)(_zzq_arg3); \ + _zzq_args[4] = (unsigned long int)(_zzq_arg4); \ + _zzq_args[5] = (unsigned long int)(_zzq_arg5); \ + __asm__ volatile("mv a3, %1\n\t" /*default*/ \ + "mv a4, %2\n\t" /*ptr*/ \ + __SPECIAL_INSTRUCTION_PREAMBLE \ + /* a3 = client_request ( a4 ) */ \ + "or a0, a0, a0\n\t" \ + __SPECIAL_INSTRUCTION_POSTAMBLE \ + "mv %0, a3" /*result*/ \ + : "=r" (_zzq_result) \ + : "r" ((unsigned long int)(_zzq_default)), \ + "r" (&_zzq_args[0]) \ + : "memory", "a3", "a4"); \ + _zzq_result; \ + }) + +#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ + { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ + unsigned long int __addr; \ + __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ + /* a3 = guest_NRADDR */ \ + "or a1, a1, a1\n\t" \ + __SPECIAL_INSTRUCTION_POSTAMBLE \ + "mv %0, a3" \ + : "=r" (__addr) \ + : \ + : "memory", "a3" \ + ); \ + _zzq_orig->nraddr = __addr; \ + } + +#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + __SPECIAL_INSTRUCTION_PREAMBLE \ + /* branch-and-link-to-noredir t0 */ \ + "or a2, a2, a2\n\t" \ + __SPECIAL_INSTRUCTION_POSTAMBLE + +#define VALGRIND_VEX_INJECT_IR() \ + do { \ + __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ + "or a3, a3, a3\n\t" \ + __SPECIAL_INSTRUCTION_POSTAMBLE \ + : : : "memory" \ + ); \ + } while (0) + +#endif /* PLAT_riscv64_linux */ + /* Insert assembly code for other platforms here... */ #endif /* NVALGRIND */ @@ -6606,6 +6690,456 @@ typedef #endif /* PLAT_mips64_linux */ +/* ----------------------- riscv64-linux ----------------------- */ + +#if defined(PLAT_riscv64_linux) + +/* These regs are trashed by the hidden call. */ +#define __CALLER_SAVED_REGS \ + "ra", \ + "t0", "t1", "t2", "t3", "t4", "t5", "t6", \ + "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", \ + "ft0", "ft1", "ft2", "ft3", "ft4", "ft5", "ft6", "ft7", \ + "ft8", "ft9", "ft10", "ft11", \ + "fa0", "fa1", "fa2", "fa3", "fa4", "fa5", "fa6", "fa7" + +/* s11 is callee-saved, so we can use it to save and restore sp around + the hidden call. */ +#define VALGRIND_ALIGN_STACK \ + "mv s11, sp\n\t" \ + "andi sp, sp, 0xfffffffffffffff0\n\t" +#define VALGRIND_RESTORE_STACK \ + "mv sp, s11\n\t" + +/* These CALL_FN_ macros assume that on riscv64-linux, + sizeof(unsigned long) == 8. */ + +#define CALL_FN_W_v(lval, orig) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[1]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0\n" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_W(lval, orig, arg1) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[2]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0\n" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WW(lval, orig, arg1,arg2) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[3]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0\n" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[4]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0\n" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[5]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[6]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[7]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld a5, 48(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ + arg7) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[8]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld a5, 48(%1) \n\t" \ + "ld a6, 56(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ + arg7,arg8) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[9]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld a5, 48(%1) \n\t" \ + "ld a6, 56(%1) \n\t" \ + "ld a7, 64(%1) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ + arg7,arg8,arg9) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[10]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi sp, sp, -16 \n\t" \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld a5, 48(%1) \n\t" \ + "ld a6, 56(%1) \n\t" \ + "ld a7, 64(%1) \n\t" \ + "ld t0, 72(%1) \n\t" \ + "sd t0, 0(sp) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ + arg7,arg8,arg9,arg10) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[11]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + _argvec[10] = (unsigned long)(arg10); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi sp, sp, -16 \n\t" \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld a5, 48(%1) \n\t" \ + "ld a6, 56(%1) \n\t" \ + "ld a7, 64(%1) \n\t" \ + "ld t0, 72(%1) \n\t" \ + "sd t0, 0(sp) \n\t" \ + "ld t0, 80(%1) \n\t" \ + "sd t0, 8(sp) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ + arg7,arg8,arg9,arg10,arg11) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[12]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + _argvec[10] = (unsigned long)(arg10); \ + _argvec[11] = (unsigned long)(arg11); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi sp, sp, -32 \n\t" \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld a5, 48(%1) \n\t" \ + "ld a6, 56(%1) \n\t" \ + "ld a7, 64(%1) \n\t" \ + "ld t0, 72(%1) \n\t" \ + "sd t0, 0(sp) \n\t" \ + "ld t0, 80(%1) \n\t" \ + "sd t0, 8(sp) \n\t" \ + "ld t0, 88(%1) \n\t" \ + "sd t0, 16(sp) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ + arg7,arg8,arg9,arg10,arg11, \ + arg12) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[13]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + _argvec[10] = (unsigned long)(arg10); \ + _argvec[11] = (unsigned long)(arg11); \ + _argvec[12] = (unsigned long)(arg12); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi sp, sp, -32 \n\t" \ + "ld a0, 8(%1) \n\t" \ + "ld a1, 16(%1) \n\t" \ + "ld a2, 24(%1) \n\t" \ + "ld a3, 32(%1) \n\t" \ + "ld a4, 40(%1) \n\t" \ + "ld a5, 48(%1) \n\t" \ + "ld a6, 56(%1) \n\t" \ + "ld a7, 64(%1) \n\t" \ + "ld t0, 72(%1) \n\t" \ + "sd t0, 0(sp) \n\t" \ + "ld t0, 80(%1) \n\t" \ + "sd t0, 8(sp) \n\t" \ + "ld t0, 88(%1) \n\t" \ + "sd t0, 16(sp) \n\t" \ + "ld t0, 96(%1) \n\t" \ + "sd t0, 24(sp) \n\t" \ + "ld t0, 0(%1) \n\t" /* target->t0 */ \ + VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_T0 \ + VALGRIND_RESTORE_STACK \ + "mv %0, a0" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "0" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "s11" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#endif /* PLAT_riscv64_linux */ + /* ------------------------------------------------------------------ */ /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ /* */ @@ -7162,6 +7696,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) #undef PLAT_mips32_linux #undef PLAT_mips64_linux #undef PLAT_nanomips_linux +#undef PLAT_riscv64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index f4aa45be73e..53cc849e23c 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -1176,10 +1176,10 @@ class WatchDog : public QThread public: WatchDog() + : expecting{ThreadStart} { setObjectName("QtTest Watchdog"_L1); auto locker = qt_unique_lock(mutex); - expecting.store(ThreadStart, std::memory_order_relaxed); start(); waitFor(locker, ThreadStart); } diff --git a/src/testlib/qtestlog.cpp b/src/testlib/qtestlog.cpp index f41242f357d..29cafe9aea4 100644 --- a/src/testlib/qtestlog.cpp +++ b/src/testlib/qtestlog.cpp @@ -77,14 +77,14 @@ namespace { class LoggerRegistry { using LoggersContainer = std::vector<std::shared_ptr<QAbstractTestLogger>>; - using SharedLoggersContainer = std::shared_ptr<LoggersContainer>; + using SharedLoggersContainer = std::shared_ptr<const LoggersContainer>; public: void addLogger(std::unique_ptr<QAbstractTestLogger> logger) { // read/update/clone const SharedLoggersContainer currentLoggers = load(); - SharedLoggersContainer newLoggers = currentLoggers + auto newLoggers = currentLoggers ? std::make_shared<LoggersContainer>(*currentLoggers) : std::make_shared<LoggersContainer>(); newLoggers->emplace_back(std::move(logger)); @@ -115,20 +115,20 @@ public: private: #ifdef __cpp_lib_atomic_shared_ptr - SharedLoggersContainer load() const { return loggers.load(std::memory_order_relaxed); } + SharedLoggersContainer load() const { return loggers.load(std::memory_order_acquire); } void store(SharedLoggersContainer newLoggers) { - loggers.store(std::move(newLoggers), std::memory_order_relaxed); + loggers.store(std::move(newLoggers), std::memory_order_release); } - std::atomic<SharedLoggersContainer> loggers; + std::atomic<SharedLoggersContainer> loggers = nullptr; #else SharedLoggersContainer load() const { - return std::atomic_load_explicit(&loggers, std::memory_order_relaxed); + return std::atomic_load_explicit(&loggers, std::memory_order_acquire); } void store(SharedLoggersContainer newLoggers) { - std::atomic_store_explicit(&loggers, std::move(newLoggers), std::memory_order_relaxed); + std::atomic_store_explicit(&loggers, std::move(newLoggers), std::memory_order_release); } SharedLoggersContainer loggers; #endif diff --git a/src/widgets/accessible/simplewidgets.cpp b/src/widgets/accessible/simplewidgets.cpp index 65488e6f0df..190c7b624f6 100644 --- a/src/widgets/accessible/simplewidgets.cpp +++ b/src/widgets/accessible/simplewidgets.cpp @@ -289,19 +289,32 @@ QToolButton *QAccessibleToolButton::toolButton() const bool QAccessibleToolButton::isSplitButton() const { #if QT_CONFIG(menu) - return toolButton()->menu() && toolButton()->popupMode() == QToolButton::MenuButtonPopup; + return menu() && toolButton()->popupMode() == QToolButton::MenuButtonPopup; #else return false; #endif } +#if QT_CONFIG(menu) +QMenu *QAccessibleToolButton::menu() const +{ + if (QMenu *menu = toolButton()->menu()) + return menu; + + if (QAction *defaultAction = toolButton()->defaultAction()) + return defaultAction->menu(); + + return nullptr; +} +#endif + QAccessible::State QAccessibleToolButton::state() const { QAccessible::State st = QAccessibleButton::state(); if (toolButton()->autoRaise()) st.hotTracked = true; #if QT_CONFIG(menu) - if (toolButton()->menu()) + if (menu()) st.hasPopup = true; #endif return st; @@ -316,7 +329,7 @@ QAccessible::Role QAccessibleToolButton::role() const { #if QT_CONFIG(menu) QToolButton *tb = toolButton(); - if (!tb->menu()) + if (!menu()) return tb->isCheckable() ? QAccessible::CheckBox : QAccessible::PushButton; else if (tb->popupMode() == QToolButton::DelayedPopup) return QAccessible::ButtonDropDown; @@ -328,10 +341,8 @@ QAccessible::Role QAccessibleToolButton::role() const QAccessibleInterface *QAccessibleToolButton::child(int index) const { #if QT_CONFIG(menu) - if (index == 0 && toolButton()->menu()) - { - return QAccessible::queryAccessibleInterface(toolButton()->menu()); - } + if (index == 0 && menu()) + return QAccessible::queryAccessibleInterface(menu()); #else Q_UNUSED(index); #endif diff --git a/src/widgets/accessible/simplewidgets_p.h b/src/widgets/accessible/simplewidgets_p.h index 02c23f8cba7..356ef9101b2 100644 --- a/src/widgets/accessible/simplewidgets_p.h +++ b/src/widgets/accessible/simplewidgets_p.h @@ -27,6 +27,7 @@ class QAbstractButton; class QLineEdit; class QToolButton; class QGroupBox; +class QMenu; class QMessageBox; class QProgressBar; @@ -71,6 +72,9 @@ protected: QToolButton *toolButton() const; bool isSplitButton() const; +#if QT_CONFIG(menu) + QMenu *menu() const; +#endif }; #endif // QT_CONFIG(toolbutton) diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index e9cc250c517..c341a025115 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -591,7 +591,7 @@ void QFusionStyle::drawPrimitive(PrimitiveElement elem, if (option->state & State_HasFocus && option->state & State_KeyboardFocusChange) painter->setPen(highlightedOutline); else - painter->setPen(colorScheme() == Qt::ColorScheme::Dark ? outline.lighter(150) + painter->setPen(colorScheme() == Qt::ColorScheme::Dark ? outline.lighter(240) : outline.lighter(110)); painter->drawRect(rect); diff --git a/src/widgets/styles/qfusionstyle_p_p.h b/src/widgets/styles/qfusionstyle_p_p.h index 67abdd74dc8..62641609d59 100644 --- a/src/widgets/styles/qfusionstyle_p_p.h +++ b/src/widgets/styles/qfusionstyle_p_p.h @@ -70,10 +70,7 @@ public: } if (pal.window().style() == Qt::TexturePattern) return QColor(0, 0, 0, 160); - if (colorScheme() == Qt::ColorScheme::Dark) - return pal.window().color().lighter(140); - else - return pal.window().color().darker(140); + return pal.window().color().darker(140); } QColor highlightedOutline(const QPalette &pal) const { diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp index 87c33932a8d..a1a4cfc2ce0 100644 --- a/src/widgets/widgets/qmainwindowlayout.cpp +++ b/src/widgets/widgets/qmainwindowlayout.cpp @@ -2673,8 +2673,10 @@ void QMainWindowLayout::animationFinished(QWidget *widget) parentWidget()->update(layoutState.dockAreaLayout.separatorRegion()); #if QT_CONFIG(tabbar) const auto usedTabBarsCopy = usedTabBars; // list potentially modified by animations - for (QTabBar *tab_bar : usedTabBarsCopy) - tab_bar->show(); + for (QTabBar *tab_bar : usedTabBarsCopy) { + if (usedTabBars.contains(tab_bar)) // Showing a tab bar can cause another to be deleted. + tab_bar->show(); + } #endif // QT_CONFIG(tabbar) #endif // QT_CONFIG(dockwidget) } |