summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/CMakeLists.txt6
-rw-r--r--src/corelib/Qt6AndroidDynamicFeatureHelpers.cmake152
-rw-r--r--src/corelib/Qt6AndroidGradleHelpers.cmake631
-rw-r--r--src/corelib/Qt6AndroidMacros.cmake216
-rw-r--r--src/corelib/Qt6AndroidPermissionHelpers.cmake126
-rw-r--r--src/corelib/Qt6CoreConfigExtras.cmake.in4
-rw-r--r--src/corelib/Qt6CoreMacros.cmake9
-rw-r--r--src/corelib/animation/qabstractanimation.cpp1
-rw-r--r--src/corelib/animation/qabstractanimation.h1
-rw-r--r--src/corelib/animation/qabstractanimation_p.h1
-rw-r--r--src/corelib/animation/qanimationgroup.cpp1
-rw-r--r--src/corelib/animation/qanimationgroup.h1
-rw-r--r--src/corelib/animation/qanimationgroup_p.h1
-rw-r--r--src/corelib/animation/qparallelanimationgroup.cpp1
-rw-r--r--src/corelib/animation/qparallelanimationgroup.h1
-rw-r--r--src/corelib/animation/qparallelanimationgroup_p.h1
-rw-r--r--src/corelib/animation/qpauseanimation.cpp1
-rw-r--r--src/corelib/animation/qpauseanimation.h1
-rw-r--r--src/corelib/animation/qpropertyanimation.cpp1
-rw-r--r--src/corelib/animation/qpropertyanimation.h1
-rw-r--r--src/corelib/animation/qpropertyanimation_p.h1
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.cpp1
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.h1
-rw-r--r--src/corelib/animation/qsequentialanimationgroup_p.h1
-rw-r--r--src/corelib/animation/qvariantanimation.cpp1
-rw-r--r--src/corelib/animation/qvariantanimation.h1
-rw-r--r--src/corelib/animation/qvariantanimation_p.h1
-rw-r--r--src/corelib/configure.cmake1
-rw-r--r--src/corelib/doc/REUSE.toml8
-rw-r--r--src/corelib/doc/snippets/CMakeLists.txt3
-rw-r--r--src/corelib/doc/snippets/code/doc_src_containers.cpp554
-rw-r--r--src/corelib/doc/snippets/code/doc_src_groups.cpp33
-rw-r--r--src/corelib/doc/snippets/code/doc_src_objecttrees.cpp36
-rw-r--r--src/corelib/doc/snippets/code/doc_src_properties.cpp69
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qalgorithms.cpp20
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qcache.cpp40
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qiterator.cpp557
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qnamespace.cpp2
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qplugin.cpp4
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qset.cpp193
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qvarlengtharray.cpp32
-rw-r--r--src/corelib/doc/snippets/code/doc_src_resources.cpp23
-rw-r--r--src/corelib/doc/snippets/eventfilters/CMakeLists.txt10
-rw-r--r--src/corelib/doc/snippets/qmetaobject-invokable/CMakeLists.txt8
-rw-r--r--src/corelib/doc/snippets/qmetaobject-revision/CMakeLists.txt8
-rw-r--r--src/corelib/doc/snippets/qprocess/CMakeLists.txt8
-rw-r--r--src/corelib/doc/snippets/qsignalmapper/CMakeLists.txt18
-rw-r--r--src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp65
-rw-r--r--src/corelib/doc/snippets/qsignalmapper/buttonwidget.h4
-rw-r--r--src/corelib/doc/src/cmake/qt_add_resources.qdoc4
-rw-r--r--src/corelib/doc/src/objectmodel/objecttrees.qdoc8
-rw-r--r--src/corelib/global/qlibraryinfo.cpp1
-rw-r--r--src/corelib/global/qnumeric.cpp1
-rw-r--r--src/corelib/global/qnumeric.h1
-rw-r--r--src/corelib/global/qrandom.cpp1
-rw-r--r--src/corelib/global/qrandom.h1
-rw-r--r--src/corelib/io/qfile.cpp1
-rw-r--r--src/corelib/io/qfile.h1
-rw-r--r--src/corelib/io/qfile_p.h1
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp11
-rw-r--r--src/corelib/io/qfilesystemwatcher.cpp1
-rw-r--r--src/corelib/io/qfilesystemwatcher.h1
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents.mm1
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents_p.h1
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp1
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify_p.h1
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue.cpp1
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue_p.h1
-rw-r--r--src/corelib/io/qfilesystemwatcher_p.h1
-rw-r--r--src/corelib/io/qfilesystemwatcher_polling.cpp1
-rw-r--r--src/corelib/io/qfilesystemwatcher_polling_p.h1
-rw-r--r--src/corelib/io/qfilesystemwatcher_win.cpp1
-rw-r--r--src/corelib/io/qfilesystemwatcher_win_p.h1
-rw-r--r--src/corelib/io/qiodevice.cpp8
-rw-r--r--src/corelib/io/qiodevice.h1
-rw-r--r--src/corelib/io/qiodevice_p.h1
-rw-r--r--src/corelib/io/qsavefile.cpp1
-rw-r--r--src/corelib/io/qsavefile.h1
-rw-r--r--src/corelib/io/qsavefile_p.h1
-rw-r--r--src/corelib/io/qstorageinfo.cpp34
-rw-r--r--src/corelib/io/qstorageinfo.h3
-rw-r--r--src/corelib/io/qstorageinfo_linux.cpp1
-rw-r--r--src/corelib/io/qstorageinfo_linux_p.h1
-rw-r--r--src/corelib/io/qstorageinfo_mac.cpp1
-rw-r--r--src/corelib/io/qstorageinfo_p.h1
-rw-r--r--src/corelib/io/qstorageinfo_stub.cpp1
-rw-r--r--src/corelib/io/qstorageinfo_unix.cpp1
-rw-r--r--src/corelib/io/qstorageinfo_win.cpp1
-rw-r--r--src/corelib/io/qtemporaryfile.cpp6
-rw-r--r--src/corelib/io/qurl.cpp32
-rw-r--r--src/corelib/ipc/qsharedmemory.cpp1
-rw-r--r--src/corelib/ipc/qsharedmemory.h1
-rw-r--r--src/corelib/ipc/qsharedmemory_p.h1
-rw-r--r--src/corelib/ipc/qsharedmemory_posix.cpp1
-rw-r--r--src/corelib/ipc/qsharedmemory_systemv.cpp1
-rw-r--r--src/corelib/ipc/qsharedmemory_win.cpp1
-rw-r--r--src/corelib/ipc/qsystemsemaphore.cpp1
-rw-r--r--src/corelib/ipc/qsystemsemaphore.h1
-rw-r--r--src/corelib/ipc/qsystemsemaphore_p.h1
-rw-r--r--src/corelib/ipc/qsystemsemaphore_posix.cpp1
-rw-r--r--src/corelib/ipc/qsystemsemaphore_systemv.cpp1
-rw-r--r--src/corelib/ipc/qsystemsemaphore_win.cpp1
-rw-r--r--src/corelib/ipc/qtipccommon.cpp1
-rw-r--r--src/corelib/ipc/qtipccommon.h1
-rw-r--r--src/corelib/ipc/qtipccommon_p.h1
-rw-r--r--src/corelib/itemmodels/qrangemodel_impl.h37
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp29
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h12
-rw-r--r--src/corelib/kernel/qmetaobject.cpp16
-rw-r--r--src/corelib/kernel/qmetaobjectbuilder.cpp20
-rw-r--r--src/corelib/kernel/qmetaobjectbuilder_p.h2
-rw-r--r--src/corelib/kernel/qmetatype.cpp112
-rw-r--r--src/corelib/kernel/qmetatype_p.h26
-rw-r--r--src/corelib/kernel/qproperty.cpp4
-rw-r--r--src/corelib/kernel/qsignalmapper.cpp10
-rw-r--r--src/corelib/kernel/qtranslator.cpp41
-rw-r--r--src/corelib/kernel/qvariant.h11
-rw-r--r--src/corelib/platform/windows/qt_winrtbase_p.h1
-rw-r--r--src/corelib/serialization/qcborarray.cpp20
-rw-r--r--src/corelib/serialization/qcborarray.h2
-rw-r--r--src/corelib/serialization/qcborcommon.h4
-rw-r--r--src/corelib/serialization/qcbormap.cpp20
-rw-r--r--src/corelib/serialization/qcbormap.h2
-rw-r--r--src/corelib/serialization/qcborvalue.cpp2
-rw-r--r--src/corelib/thread/qatomicwait.cpp14
-rw-r--r--src/corelib/thread/qmutex.cpp19
-rw-r--r--src/corelib/time/qdatetime.cpp17
-rw-r--r--src/corelib/time/qtimezonelocale_data_p.h2870
-rw-r--r--src/corelib/tools/qarraydata.cpp17
-rw-r--r--src/corelib/tools/qatomicscopedvaluerollback.h28
-rw-r--r--src/corelib/tools/qfreelist_p.h24
-rw-r--r--src/corelib/tools/qhashfunctions.h32
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h10
133 files changed, 3974 insertions, 2442 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index 4d83bbf794e..249b9b8c1ee 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -16,7 +16,11 @@ qt_internal_extend_sbom(WrapZLIB::WrapZLIB
if(ANDROID)
set(corelib_extra_cmake_files
- "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidMacros.cmake")
+ "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidMacros.cmake"
+ "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidDynamicFeatureHelpers.cmake"
+ "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidGradleHelpers.cmake"
+ "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidPermissionHelpers.cmake"
+ )
endif()
if(WASM)
set(corelib_extra_cmake_files
diff --git a/src/corelib/Qt6AndroidDynamicFeatureHelpers.cmake b/src/corelib/Qt6AndroidDynamicFeatureHelpers.cmake
new file mode 100644
index 00000000000..e8a81bde1d7
--- /dev/null
+++ b/src/corelib/Qt6AndroidDynamicFeatureHelpers.cmake
@@ -0,0 +1,152 @@
+# Copyright (C) 2025 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+# Collects the dynamic features for the target
+
+function(_qt_internal_android_add_dynamic_feature_deployment target)
+ get_target_property(dynamic_features ${target} _qt_android_dynamic_features)
+ if(NOT dynamic_features)
+ return()
+ endif()
+
+ foreach(dynamic_feature IN LISTS dynamic_features)
+ get_target_property(is_imported ${dynamic_feature} IMPORTED)
+ if(is_imported)
+ message(FATAL_ERROR "Imported target ${dynamic_feature} can not be a"
+ " 'DYNAMIC_FEATURE'.")
+ endif()
+
+ get_target_property(type ${dynamic_feature} TYPE)
+ if(NOT type STREQUAL "SHARED_LIBRARY")
+ message(FATAL_ERROR "Cannot make ${dynamic_feature} 'DYNAMIC_FEATURE'."
+ " The target must be the 'SHARED_LIBRARY'.")
+ endif()
+
+ get_target_property(android_type ${dynamic_feature} _qt_android_target_type)
+ if(NOT android_type STREQUAL "" AND NOT android_type MATCHES "-NOTFOUND$"
+ AND NOT android_type STREQUAL "DYNAMIC_FEATURE")
+ message(FATAL_ERROR "Cannot make ${dynamic_feature} 'DYNAMIC_FEATURE',"
+ " it's already '${android_type}'. The target must be the plain 'SHARED_LIBRARY'.")
+ endif()
+
+ # Mark the target as DYNAMIC_FEATURE, since we used it in this role once.
+ set_target_properties(${dynamic_feature} PROPERTIES _qt_android_target_type DYNAMIC_FEATURE)
+ _qt_internal_set_android_dynamic_feature_gradle_defaults(${dynamic_feature})
+
+ _qt_internal_android_get_dynamic_feature_deployment_dir(dynamic_feature_deployment_dir
+ ${target} ${dynamic_feature})
+ _qt_internal_android_generate_target_build_gradle(${dynamic_feature}
+ DEPLOYMENT_DIR "${dynamic_feature_deployment_dir}")
+ _qt_internal_android_generate_dynamic_feature_manifest(${target} ${dynamic_feature})
+ _qt_internal_android_copy_dynamic_feature(${target} ${dynamic_feature})
+ endforeach()
+endfunction()
+
+# Sets the default values of the gradle properties for the Android dynamic feature target.
+function(_qt_internal_set_android_dynamic_feature_gradle_defaults target)
+ _qt_internal_android_java_dir(android_java_dir)
+
+ # TODO: make androidx.core:core versionc configurable.
+ # Currently, it is hardcoded to 1.16.0.
+ set(implementation_dependencies "project(':app')" "'androidx.core:core:1.16.0'")
+
+ set_target_properties(${target} PROPERTIES
+ _qt_android_gradle_java_source_dirs "src;java"
+ _qt_android_gradle_aidl_source_dirs "src;aidl"
+ _qt_android_gradle_res_source_dirs "res"
+ _qt_android_gradle_resources_source_dirs "resources"
+ _qt_android_gradle_renderscript_source_dirs "src"
+ _qt_android_gradle_assets_source_dirs "assets"
+ _qt_android_gradle_jniLibs_source_dirs "libs"
+ _qt_android_manifest "AndroidManifest.xml"
+ _qt_android_gradle_implementation_dependencies "${implementation_dependencies}"
+ )
+endfunction()
+
+# Copies the dynamic feature library to the respective gradle build tree.
+function(_qt_internal_android_copy_dynamic_feature target dynamic_feature)
+ if(NOT TARGET ${dynamic_feature})
+ message(FATAL_ERROR "${dynamic_feature} is not a target.")
+ endif()
+
+ _qt_internal_android_get_dynamic_feature_deployment_dir(dynamic_feature_deployment_dir
+ ${target} ${dynamic_feature})
+
+ set(dynamic_feature_libs_dir "${dynamic_feature_deployment_dir}/libs/${CMAKE_ANDROID_ARCH_ABI}")
+ get_target_property(output_name ${dynamic_feature} OUTPUT_NAME)
+ if(NOT output_name)
+ get_target_property(suffix "${dynamic_feature}" SUFFIX)
+ set(output_name "lib${dynamic_feature}${suffix}")
+ endif()
+ set(output_file_path "${dynamic_feature_libs_dir}/${output_name}")
+ _qt_internal_copy_file_if_different_command(copy_command
+ "$<TARGET_FILE:${dynamic_feature}>"
+ "${output_file_path}"
+ )
+ add_custom_command(OUTPUT ${output_file_path}
+ COMMAND ${copy_command}
+ DEPENDS ${dynamic_feature}
+ COMMENT "Copying ${dynamic_feature} dynamic feature to ${target} deployment directory"
+ )
+ add_custom_target(${target}_deploy_dynamic_features DEPENDS "${output_file_path}")
+endfunction()
+
+# Generates the feature name strings and copy them to the respective deployment directory.
+function(_qt_internal_android_generate_dynamic_feature_names target)
+ get_target_property(dynamic_features ${target} _qt_android_dynamic_features)
+ if(NOT dynamic_features)
+ return()
+ endif()
+
+ # Collect the titles
+ string(JOIN "\n" content
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<resources>"
+ )
+ foreach(feature IN LISTS dynamic_features)
+ string(APPEND content "\n <string name=\"${feature}_title\">${feature}</string>")
+ endforeach()
+ string(APPEND content "\n</resources>")
+
+ _qt_internal_android_get_target_deployment_dir(deployment_dir ${target})
+ # TODO: androiddeployqt wipes the android build directory. Generate feature_names.xml target
+ # build dir and copy after androiddeployqt run. We should skip feature_names.xml copying when
+ # androiddeployqt is not involved into the deployment process anymore.
+ #
+ # set(output_file "${deployment_dir}/res/values/feature_names.xml")
+ set(output_file "$<TARGET_PROPERTY:${target},BINARY_DIR>/res/values/feature_names.xml")
+ _qt_internal_configure_file(GENERATE OUTPUT "${output_file}" CONTENT "${content}")
+ set(output_file_in_deployment_dir "${deployment_dir}/res/values/feature_names.xml")
+ add_custom_command(OUTPUT "${output_file_in_deployment_dir}"
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ "${output_file}"
+ "${output_file_in_deployment_dir}"
+ DEPENDS "${output_file}" ${target}_android_deploy_aux
+ VERBATIM
+ )
+ add_custom_target(${target}_copy_feature_names
+ DEPENDS
+ "${output_file_in_deployment_dir}"
+ )
+endfunction()
+
+# Returns the dynamic feature deployment directory in the target build tree.
+function(_qt_internal_android_get_dynamic_feature_deployment_dir out_var target dynamic_feature)
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ set(${out_var} "${android_build_dir}/${dynamic_feature}" PARENT_SCOPE)
+endfunction()
+
+# Generates the AndroidManifest.xml file for the dynamic_feature.
+function(_qt_internal_android_generate_dynamic_feature_manifest target dynamic_feature)
+ set(android_manifest_filename AndroidManifest.xml)
+ _qt_internal_android_get_dynamic_feature_deployment_dir(dynamic_feature_deployment_dir ${target}
+ ${dynamic_feature})
+
+ _qt_internal_android_get_template_path(template_file ${target}
+ "dynamic_feature/${android_manifest_filename}")
+
+ set(APP_TARGET "${target}")
+ set(TITLE_VAR "@string/${dynamic_feature}_title")
+
+ set(output_file "${dynamic_feature_deployment_dir}/AndroidManifest.xml")
+ _qt_internal_configure_file(CONFIGURE OUTPUT "${output_file}" INPUT "${template_file}")
+endfunction()
diff --git a/src/corelib/Qt6AndroidGradleHelpers.cmake b/src/corelib/Qt6AndroidGradleHelpers.cmake
new file mode 100644
index 00000000000..09184c93b69
--- /dev/null
+++ b/src/corelib/Qt6AndroidGradleHelpers.cmake
@@ -0,0 +1,631 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+# Returns the path to the template file from either user defined template directory, or
+# Qt default template directory.
+function(_qt_internal_android_get_template_path out_var target template_name)
+ if(template_name STREQUAL "")
+ message(FATAL_ERROR "Template name is empty."
+ " This is the Qt issue, please report a bug at https://bugreports.qt.io.")
+ endif()
+
+ _qt_internal_android_template_dir(template_directory)
+ get_filename_component(template_directory "${template_directory}" ABSOLUTE)
+
+ # The paths are ordered according to their priority, from highest to lowest.
+ set(possible_paths
+ "${template_directory}/${template_name}.in"
+ )
+
+ get_target_property(android_target_type ${target} _qt_android_target_type)
+ if(android_target_type STREQUAL "APPLICATION")
+ _qt_internal_android_get_package_source_dir(user_template_directory ${target})
+ get_filename_component(user_template_directory "${user_template_directory}" ABSOLUTE)
+
+ # Add user template with the higher priority
+ list(PREPEND possible_paths "${user_template_directory}/${template_name}.in")
+ endif()
+
+ set(template_path "")
+ foreach(possible_path IN LISTS possible_paths)
+ if(EXISTS "${possible_path}")
+ set(template_path "${possible_path}")
+ break()
+ endif()
+ endforeach()
+
+ if(template_path STREQUAL "")
+ message(FATAL_ERROR "'${template_name}' is not found."
+ " This is the Qt issue, please report a bug at https://bugreports.qt.io.")
+ endif()
+
+ set(${out_var} "${template_path}" PARENT_SCOPE)
+endfunction()
+
+# Generates the settings.gradle file for the target. Writes the result to the target android build
+# directory.
+function(_qt_internal_android_generate_bundle_settings_gradle target)
+ set(settings_gradle_filename "settings.gradle")
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ set(settings_gradle_file "${android_build_dir}/${settings_gradle_filename}")
+
+ # Skip generating the file if it's already provided by user.
+ get_target_property(deployment_files ${target} _qt_android_deployment_files)
+ if("${settings_gradle_file}" IN_LIST deployment_files)
+ return()
+ endif()
+
+ _qt_internal_android_get_template_path(template_file ${target} "${settings_gradle_filename}")
+
+ set(android_app_name "$<TARGET_PROPERTY:${target},QT_ANDROID_APP_NAME>")
+ string(JOIN "" ROOT_PROJECT_NAME
+ "$<IF:$<BOOL:${android_app_name}>,"
+ "${android_app_name},"
+ "${target}"
+ ">"
+ )
+
+ set(target_dynamic_features "$<TARGET_PROPERTY:${target},_qt_android_dynamic_features>")
+ set(include_prefix "include(\":")
+ set(include_suffix "\")")
+ set(include_glue "${include_suffix}\n${include_prefix}")
+ string(JOIN "" SUBPROJECTS
+ "$<$<BOOL:${target_dynamic_features}>:"
+ "${include_prefix}"
+ "$<JOIN:${target_dynamic_features},${include_glue}>"
+ "${include_suffix}"
+ ">"
+ )
+
+ _qt_internal_configure_file(GENERATE OUTPUT ${settings_gradle_file}
+ INPUT "${template_file}")
+ set_property(TARGET ${target} APPEND PROPERTY _qt_android_deployment_files
+ "${settings_gradle_file}")
+endfunction()
+
+# Generates the source sets for the target.
+function(_qt_internal_android_get_gradle_source_sets out_var target)
+ set(known_types java aidl res resources renderscript assets jniLibs)
+ set(source_set "")
+ set(indent " ")
+ foreach(type IN LISTS known_types)
+ set(source_dirs
+ "$<GENEX_EVAL:$<TARGET_PROPERTY:${target},_qt_android_gradle_${type}_source_dirs>>")
+ string(JOIN "" source_set
+ "${source_set}"
+ "$<$<BOOL:${source_dirs}>:"
+ "${indent}${type}.srcDirs = ['$<JOIN:${source_dirs},'$<COMMA> '>']\n"
+ ">"
+ )
+ endforeach()
+
+ set(manifest
+ "$<TARGET_PROPERTY:${target},_qt_android_manifest>")
+ string(JOIN "" source_set
+ "${source_set}"
+ "$<$<BOOL:${manifest}>:"
+ "${indent}manifest.srcFile '${manifest}'\n"
+ ">"
+ )
+ set(${out_var} "${source_set}" PARENT_SCOPE)
+endfunction()
+
+# Generates the gradle dependency list for the target.
+function(_qt_internal_android_get_gradle_dependencies out_var target)
+ # Use dependencies from file tree by default
+ set(known_dependencies
+ "implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])")
+ foreach(dep_type implementation api)
+ string(JOIN "\n " dep_prefix
+ "\n //noinspection GradleDependency"
+ "${dep_type} "
+ )
+ set(dep_postfix "")
+ set(dep_property "$<GENEX_EVAL:$<TARGET_PROPERTY:${target},_qt_android_gradle_${dep_type}_dependencies>>")
+ string(JOIN "" known_dependencies
+ "${known_dependencies}"
+ "$<$<BOOL:${dep_property}>:"
+ "${dep_prefix}$<JOIN:${dep_property},${dep_postfix}${dep_prefix}>${dep_postfix}"
+ ">"
+ )
+ endforeach()
+ set(${out_var} "${known_dependencies}" PARENT_SCOPE)
+endfunction()
+
+# Sets the default values of the gradle properties for the Android executable target.
+function(_qt_internal_set_android_application_gradle_defaults target)
+ _qt_internal_android_java_dir(android_java_dir)
+
+ set(target_dynamic_features "$<TARGET_PROPERTY:${target},_qt_android_dynamic_features>")
+ string(JOIN "" implementation_dependencies
+ "$<$<BOOL:${target_dynamic_features}>:'com.google.android.play:feature-delivery:2.1.0'>"
+ )
+ # TODO: make androidx.core:core version configurable.
+ # Currently, it is hardcoded to 1.16.0.
+ list(APPEND implementation_dependencies "'androidx.core:core:1.16.0'")
+
+ set_target_properties(${target} PROPERTIES
+ _qt_android_gradle_java_source_dirs "${android_java_dir}/src;src;java"
+ _qt_android_gradle_aidl_source_dirs "${android_java_dir}/src;src;aidl"
+ _qt_android_gradle_res_source_dirs "${android_java_dir}/res;res"
+ _qt_android_gradle_resources_source_dirs "resources"
+ _qt_android_gradle_renderscript_source_dirs "src"
+ _qt_android_gradle_assets_source_dirs "assets"
+ _qt_android_gradle_jniLibs_source_dirs "libs"
+ _qt_android_manifest "AndroidManifest.xml"
+ _qt_android_gradle_implementation_dependencies "${implementation_dependencies}"
+ )
+endfunction()
+
+# Generates the build.gradle file for the target. Writes the result to the target app deployment
+# directory.
+function(_qt_internal_android_generate_target_build_gradle target)
+ cmake_parse_arguments(PARSE_ARGV 1 arg "" "DEPLOYMENT_DIR" "")
+
+ if(NOT arg_DEPLOYMENT_DIR)
+ message(FATAL_ERROR "DEPLOYMENT_DIR is not specified.")
+ endif()
+
+ set(build_gradle_filename "build.gradle")
+ set(out_file "${arg_DEPLOYMENT_DIR}/${build_gradle_filename}")
+
+ # Skip generating the file if it's already provided by user.
+ get_target_property(deployment_files ${target} _qt_android_deployment_files)
+ if("${out_file}" IN_LIST deployment_files)
+ return()
+ endif()
+
+ # TODO: The current build.gradle.in templates hardcodes couple values that needs to be
+ # configurable in the future. For example the buildscript dependencies, or the use of
+ # androidx.core:core:1.13.1 and the dependency for all user applications.
+
+ _qt_internal_android_get_gradle_property(PACKAGE_NAME ${target}
+ QT_ANDROID_PACKAGE_NAME "org.qtproject.example.$<MAKE_C_IDENTIFIER:${target}>")
+
+ _qt_internal_android_get_target_sdk_build_tools_revision(ANDROID_BUILD_TOOLS_VERSION
+ ${target})
+
+ _qt_internal_detect_latest_android_platform(ANDROID_COMPILE_SDK_VERSION)
+ if(NOT ANDROID_COMPILE_SDK_VERSION)
+ message(FATAL_ERROR "Unable to detect the android platform in ${ANDROID_SDK_ROOT}. "
+ "Please check your Android SDK installation.")
+ endif()
+
+ _qt_internal_android_get_gradle_source_sets(SOURCE_SETS ${target})
+ _qt_internal_android_get_gradle_dependencies(GRADLE_DEPENDENCIES ${target})
+
+ _qt_internal_android_get_gradle_property(min_sdk_version ${target}
+ QT_ANDROID_MIN_SDK_VERSION "28")
+
+ _qt_internal_android_get_gradle_property(target_sdk_version ${target}
+ QT_ANDROID_TARGET_SDK_VERSION "34")
+
+ set(target_abis "$<TARGET_PROPERTY:${target},_qt_android_abis>")
+ set(target_abi_list "$<JOIN:${target_abis};${CMAKE_ANDROID_ARCH_ABI},'$<COMMA> '>")
+
+ string(JOIN "\n " DEFAULT_CONFIG_VALUES
+ "resConfig 'en'"
+ "minSdkVersion ${min_sdk_version}"
+ "targetSdkVersion ${target_sdk_version}"
+ "ndk.abiFilters = ['${target_abi_list}']"
+ )
+
+ set(target_dynamic_features "$<TARGET_PROPERTY:${target},_qt_android_dynamic_features>")
+ set(include_prefix "\":")
+ set(include_suffix "\"")
+ set(include_glue "${include_suffix}$<COMMA>${include_prefix}")
+ string(APPEND ANDROID_DEPLOYMENT_EXTRAS
+ "$<$<BOOL:${target_dynamic_features}>:dynamicFeatures = ["
+ "${include_prefix}"
+ "$<JOIN:${target_dynamic_features},${include_glue}>"
+ "${include_suffix}]"
+ ">"
+ )
+
+ get_target_property(android_target_type ${target} _qt_android_target_type)
+ if(android_target_type STREQUAL "APPLICATION")
+ set(GRADLE_PLUGIN_TYPE "com.android.application")
+ set(template_subdir "app")
+ elseif(android_target_type STREQUAL "DYNAMIC_FEATURE")
+ set(GRADLE_PLUGIN_TYPE "com.android.dynamic-feature")
+ set(template_subdir "dynamic_feature")
+ else()
+ message(FATAL_ERROR "Unsupported target type for android bundle deployment ${target}")
+ endif()
+
+ _qt_internal_android_get_template_path(template_file ${target}
+ "${template_subdir}/${build_gradle_filename}")
+ _qt_internal_configure_file(GENERATE
+ OUTPUT "${out_file}"
+ INPUT "${template_file}"
+ )
+ set_property(TARGET ${target} APPEND PROPERTY _qt_android_deployment_files "${out_file}")
+endfunction()
+
+# Prepares the artifacts for the gradle build of the target.
+function(_qt_internal_android_prepare_gradle_build target)
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ _qt_internal_android_get_target_deployment_dir(deployment_dir ${target})
+
+ _qt_internal_android_copy_gradle_files(${target} "${android_build_dir}")
+ _qt_internal_android_copy_target_package_sources(${target})
+
+ _qt_internal_android_generate_bundle_gradle_properties(${target})
+ _qt_internal_android_generate_bundle_settings_gradle(${target})
+ _qt_internal_android_generate_bundle_local_properties(${target})
+ _qt_internal_android_generate_target_build_gradle(${target} DEPLOYMENT_DIR "${deployment_dir}")
+ _qt_internal_android_generate_target_gradle_properties(${target}
+ DEPLOYMENT_DIR "${deployment_dir}")
+ _qt_internal_android_generate_target_android_manifest(${target}
+ DEPLOYMENT_DIR "${deployment_dir}")
+
+
+ _qt_internal_android_add_gradle_build(${target} apk)
+ _qt_internal_android_add_gradle_build(${target} aab)
+
+ # Make global apk, aab, and aar targets depend on the respective targets.
+ _qt_internal_android_add_global_package_dependencies(${target})
+ _qt_internal_create_global_apk_all_target_if_needed()
+endfunction()
+
+# Adds the modern gradle build targets.
+# These targets use the settings.gradle based build directory structure.
+function(_qt_internal_android_add_gradle_build target type)
+ _qt_internal_android_get_deployment_type_option(android_deployment_type_option
+ "assembleRelease" "assembleDebug")
+
+ _qt_internal_android_gradlew_name(gradlew_file_name)
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ set(gradlew "${android_build_dir}/${gradlew_file_name}")
+
+ set(extra_args "")
+ if(type STREQUAL "aab")
+ set(extra_args "bundle")
+ endif()
+
+ set(package_file_path "${android_build_dir}/${target}.${type}")
+
+ _qt_internal_android_package_path(package_build_dir ${target} ${type})
+ _qt_internal_android_get_deployment_type_option(deployment_type_suffix
+ "release" "debug")
+ set(package_build_file_path
+ "${package_build_dir}/${deployment_type_suffix}/app-${deployment_type_suffix}.${type}")
+
+ set(extra_deps "")
+ if(TARGET ${target}_copy_feature_names)
+ list(APPEND extra_deps ${target}_copy_feature_names)
+ endif()
+
+ if(TARGET ${target}_deploy_dynamic_features)
+ list(APPEND extra_deps ${target}_deploy_dynamic_features)
+ endif()
+
+ set(gradle_scripts "$<TARGET_PROPERTY:${target},_qt_android_deployment_files>")
+ add_custom_command(OUTPUT "${package_file_path}"
+ BYPRODUCTS "${package_build_file_path}"
+ COMMAND
+ "${gradlew}" ${android_deployment_type_option} ${extra_args}
+ COMMAND
+ ${CMAKE_COMMAND} -E copy_if_different
+ "${package_build_file_path}" "${package_file_path}"
+ DEPENDS
+ ${target}
+ ${gradle_scripts}
+ ${target}_copy_gradle_files
+ ${target}_android_deploy_aux
+ ${extra_deps}
+ WORKING_DIRECTORY
+ "${android_build_dir}"
+ VERBATIM
+ )
+
+ add_custom_target(${target}_make_${type} DEPENDS "${package_file_path}")
+endfunction()
+
+# Returns the path to the android executable package either apk or aab.
+function(_qt_internal_android_package_path out_var target type)
+ set(supported_package_types apk aab)
+ if(NOT type IN_LIST supported_package_types)
+ message(FATAL_ERROR "Invalid package type, supported types: ${supported_package_types}")
+ endif()
+
+ # aab packages are located in the bundle directory
+ if(type STREQUAL "aab")
+ set(type "bundle")
+ endif()
+
+ _qt_internal_android_get_target_deployment_dir(deployment_dir ${target})
+
+ set(${out_var} "${deployment_dir}/build/outputs/${type}" PARENT_SCOPE)
+endfunction()
+
+# Returns the path to the gradle build directory.
+function(_qt_internal_android_gradle_template_dir out_var)
+ if(PROJECT_NAME STREQUAL "QtBase" OR QT_SUPERBUILD)
+ set(${out_var} "${QtBase_SOURCE_DIR}/src/3rdparty/gradle" PARENT_SCOPE)
+ else()
+ set(${out_var} "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_DATA}/src/3rdparty/gradle" PARENT_SCOPE)
+ endif()
+endfunction()
+
+# Returns the path to the android java dir.
+function(_qt_internal_android_java_dir out_var)
+ if(PROJECT_NAME STREQUAL "QtBase" OR QT_SUPERBUILD)
+ set(${out_var} "${QtBase_SOURCE_DIR}/src/android/java" PARENT_SCOPE)
+ else()
+ set(${out_var} "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_DATA}/src/android/java" PARENT_SCOPE)
+ endif()
+endfunction()
+
+# Returns the platform-spefic name of the gradlew script.
+function(_qt_internal_android_gradlew_name out_var)
+ if(CMAKE_HOST_WIN32)
+ set(gradlew_file_name "gradlew.bat")
+ else()
+ set(gradlew_file_name "gradlew")
+ endif()
+
+ set(${out_var} "${gradlew_file_name}" PARENT_SCOPE)
+endfunction()
+
+# Return the path to the gradlew script.
+function(_qt_internal_android_gradlew_path out_var target)
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ set(${out_var} "${android_build_dir}/${gradlew_file_name}" PARENT_SCOPE)
+endfunction()
+
+# Returns the generator expression for the gradle_property value. Defaults to the default_value
+# argument.
+function(_qt_internal_android_get_gradle_property out_var target target_property default_value)
+ set(target_property_genex "$<GENEX_EVAL:$<TARGET_PROPERTY:${target},${target_property}>>")
+ string(JOIN "" result
+ "$<IF:$<BOOL:${target_property_genex}>,"
+ "${target_property_genex},"
+ "${default_value}"
+ ">"
+ )
+ set(${out_var} "${result}" PARENT_SCOPE)
+endfunction()
+
+# Generates gradle.properties for the specific target. Usually contains the
+# target build type(executable, dynamic feature, library).
+function(_qt_internal_android_generate_target_gradle_properties target)
+ cmake_parse_arguments(PARSE_ARGV 1 arg "" "DEPLOYMENT_DIR" "")
+
+ if(NOT arg_DEPLOYMENT_DIR)
+ message(FATAL_ERROR "DEPLOYMENT_DIR is not specified.")
+ endif()
+
+ set(gradle_properties_file_name "gradle.properties")
+ set(out_file "${arg_DEPLOYMENT_DIR}/${gradle_properties_file_name}")
+ # Skip generating the file if it's already provided by user.
+ get_target_property(deployment_files ${target} _qt_android_deployment_files)
+ if("${out_file}" IN_LIST deployment_files)
+ return()
+ endif()
+
+ _qt_internal_android_get_template_path(template_file ${target}
+ "app/${gradle_properties_file_name}")
+ _qt_internal_configure_file(CONFIGURE
+ OUTPUT "${out_file}"
+ INPUT "${template_file}"
+ )
+ set_property(TARGET ${target} APPEND PROPERTY _qt_android_deployment_files "${out_file}")
+endfunction()
+
+# Constucts generator expression that returns either target property or the default value
+function(_qt_internal_android_get_manifest_property out_var target property default)
+ set(target_property "$<TARGET_PROPERTY:${target},${property}>")
+ string(JOIN "" out_genex
+ "$<IF:$<BOOL:${target_property}>,"
+ "${target_property},"
+ "${default}"
+ ">"
+ )
+
+ set(${out_var} "${out_genex}" PARENT_SCOPE)
+endfunction()
+
+# Generates the target AndroidManifest.xml
+function(_qt_internal_android_generate_target_android_manifest target)
+ cmake_parse_arguments(PARSE_ARGV 1 arg "" "DEPLOYMENT_DIR" "")
+
+ if(NOT arg_DEPLOYMENT_DIR)
+ message(FATAL_ERROR "DEPLOYMENT_DIR is not specified.")
+ endif()
+
+ set(android_manifest_filename "AndroidManifest.xml")
+ set(out_file "${arg_DEPLOYMENT_DIR}/${android_manifest_filename}")
+
+ # Skip generating the file if it's already provided by user.
+ get_target_property(deployment_files ${target} _qt_android_deployment_files)
+ if("${out_file}" IN_LIST deployment_files)
+ return()
+ endif()
+
+ _qt_internal_android_get_template_path(template_file ${target}
+ "app/${android_manifest_filename}")
+ set(temporary_file "${out_file}.tmp")
+
+ # The file cannot be generated at cmake configure time, because androiddeployqt
+ # will override it at build time. We use this trick with temporary file to override
+ # it after the aux run of androiddeployqt.
+ add_custom_command(OUTPUT "${out_file}"
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ "${temporary_file}"
+ "${out_file}"
+ DEPENDS
+ "${template_file}"
+ "${temporary_file}"
+ ${target}_android_deploy_aux
+ )
+
+ _qt_internal_android_get_manifest_property(APP_PACKAGE_NAME ${target}
+ QT_ANDROID_PACKAGE_NAME "org.qtproject.example.$<MAKE_C_IDENTIFIER:${target}>")
+ _qt_internal_android_get_manifest_property(APP_NAME ${target}
+ QT_ANDROID_APP_NAME "${target}")
+ _qt_internal_android_get_manifest_property(APP_VERSION_CODE ${target}
+ QT_ANDROID_VERSION_CODE "1")
+ _qt_internal_android_get_manifest_property(APP_VERSION_NAME ${target}
+ QT_ANDROID_VERSION_NAME "1")
+ _qt_internal_android_get_manifest_property(APP_LIB_NAME ${target} OUTPUT_NAME "${target}")
+
+ # For application icon we substitute the whole attribute definition, but not only value
+ # otherwise it leads to the Manifest processing issue.
+ set(target_property "$<TARGET_PROPERTY:${target},QT_ANDROID_APP_ICON>")
+ string(JOIN "" APP_ICON
+ "$<$<BOOL:${target_property}>:"
+ "android:icon=\"${target_property}\""
+ ">"
+ )
+
+ file(READ "${template_file}" manifest_content)
+ string(REPLACE ">" "$<ANGLE-R>" manifest_content "${manifest_content}")
+ string(REPLACE ";" "$<SEMICOLON>" manifest_content "${manifest_content}")
+ string(REPLACE "," "$<COMMA>" manifest_content "${manifest_content}")
+
+ _qt_internal_android_convert_permissions(APP_PERMISSIONS ${target} XML)
+
+ set(feature_prefix "\n <uses-feature android:name=\"")
+ set(feature_suffix " \" android:required=\"false\" /$<ANGLE-R>")
+ set(feature_property "$<TARGET_PROPERTY:${target},QT_ANDROID_FEATURES>")
+ string(JOIN "" APP_FEATURES
+ "$<$<BOOL:${feature_property}>:"
+ "${feature_prefix}"
+ "$<JOIN:${feature_property},${feature_suffix},${feature_prefix}>"
+ "${feature_suffix}"
+ ">"
+ )
+
+ set(APP_ARGUMENTS "${QT_ANDROID_APPLICATION_ARGUMENTS}")
+
+ _qt_internal_configure_file(GENERATE OUTPUT "${temporary_file}"
+ CONTENT "${manifest_content}")
+
+ set_property(TARGET ${target} APPEND PROPERTY
+ _qt_android_deployment_files "${out_file}" "${temporary_file}")
+endfunction()
+
+# Generates the top-level gradle.properties in the android-build directory
+# The file contains the information about the versions of the android build
+# tools, the list of supported ABIs.
+function(_qt_internal_android_generate_bundle_gradle_properties target)
+ set(EXTRA_PROPERTIES "")
+
+ set(gradle_properties_file_name "gradle.properties")
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ set(out_file "${android_build_dir}/${gradle_properties_file_name}")
+
+ # Skip generating the file if it's already provided by user.
+ get_target_property(deployment_files ${target} _qt_android_deployment_files)
+ if("${out_file}" IN_LIST deployment_files)
+ return()
+ endif()
+
+ _qt_internal_android_get_template_path(template_file ${target} "${gradle_properties_file_name}")
+ _qt_internal_configure_file(CONFIGURE
+ OUTPUT "${out_file}"
+ INPUT "${template_file}"
+ )
+ set_property(TARGET ${target} APPEND PROPERTY _qt_android_deployment_files "${out_file}")
+endfunction()
+
+# Generates the local.properties for gradle builds. Contains the path to the
+# Android SDK root.
+function(_qt_internal_android_generate_bundle_local_properties target)
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ set(out_file "${android_build_dir}/local.properties")
+
+ # Skip generating the file if it's already provided by user.
+ get_target_property(deployment_files ${target} _qt_android_deployment_files)
+ if("${out_file}" IN_LIST deployment_files)
+ return()
+ endif()
+
+ file(TO_CMAKE_PATH "${ANDROID_SDK_ROOT}" ANDROID_SDK_ROOT_NATIVE)
+ _qt_internal_configure_file(CONFIGURE OUTPUT "${out_file}"
+ CONTENT "sdk.dir=${ANDROID_SDK_ROOT_NATIVE}\n")
+endfunction()
+
+# Copies the customized Android package sources to the Android build directory
+function(_qt_internal_android_copy_target_package_sources target)
+ _qt_internal_android_get_package_source_dir(package_source_dir ${target})
+
+ if(NOT package_source_dir)
+ return()
+ endif()
+ get_filename_component(package_source_dir "${package_source_dir}" ABSOLUTE)
+
+ # Collect deployment files from use-defined package source directory
+ file(GLOB_RECURSE package_files
+ LIST_DIRECTORIES false
+ RELATIVE "${package_source_dir}"
+ "${package_source_dir}/*"
+ )
+
+ # Do not copy files that we treat as CMake templates, having '.in' extention.
+ #
+ # TODO: If it ever will be an issue we may exclude only templates that are
+ # known by our build system.
+ list(FILTER package_files EXCLUDE REGEX ".+\\.in$")
+
+ _qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ list(TRANSFORM package_files PREPEND "${android_build_dir}/" OUTPUT_VARIABLE out_package_files)
+ list(TRANSFORM package_files PREPEND "${package_source_dir}/" OUTPUT_VARIABLE in_package_files)
+
+ if(in_package_files)
+ # TODO: Add cmake < 3.26 support
+ if(CMAKE_VERSION VERSION_LESS 3.26)
+ message(FATAL_ERROR "The use of QT_ANDROID_PACKAGE_SOURCE_DIR property with
+ the QT_USE_ANDROID_MODERN_BUNDLE option enabled requires CMake version >= 3.26.")
+ endif()
+ set(copy_commands COMMAND "${CMAKE_COMMAND}" -E copy_directory_if_different
+ "${package_source_dir}" "${android_build_dir}")
+ else()
+ # We actually have nothing to deploy.
+ return()
+ endif()
+
+ add_custom_command(OUTPUT ${out_package_files}
+ ${copy_commands}
+ DEPENDS
+ ${in_package_files}
+ VERBATIM
+ )
+
+ set_target_properties(${target} PROPERTIES _qt_android_deployment_files "${out_package_files}")
+endfunction()
+
+# Copies gradle scripts to a build directory.
+function(_qt_internal_android_copy_gradle_files target output_directory)
+ _qt_internal_android_gradlew_name(gradlew_file_name)
+ _qt_internal_android_gradle_template_dir(gradle_template_dir)
+
+ set(gradlew_file_src "${gradle_template_dir}/${gradlew_file_name}")
+ set(gradlew_file_dst "${output_directory}/${gradlew_file_name}")
+
+ add_custom_command(OUTPUT "${gradlew_file_dst}"
+ COMMAND
+ ${CMAKE_COMMAND} -E copy_if_different "${gradlew_file_src}" "${gradlew_file_dst}"
+ DEPENDS "${gradlew_file_src}"
+ COMMENT "Copying gradlew script for ${target}"
+ VERBATIM
+ )
+
+ # TODO: make a more precise directory copying
+ set(gradle_dir_src "${gradle_template_dir}/gradle")
+ set(gradle_dir_dst "${output_directory}/gradle")
+ add_custom_command(OUTPUT "${gradle_dir_dst}"
+ COMMAND
+ ${CMAKE_COMMAND} -E copy_directory "${gradle_dir_src}" "${gradle_dir_dst}"
+ DEPENDS "${gradle_dir_src}"
+ COMMENT "Copying gradle support files for ${target}"
+ VERBATIM
+ )
+
+ add_custom_target(${target}_copy_gradle_files
+ DEPENDS
+ "${gradlew_file_dst}"
+ "${gradle_dir_dst}"
+ )
+endfunction()
diff --git a/src/corelib/Qt6AndroidMacros.cmake b/src/corelib/Qt6AndroidMacros.cmake
index aa0e5bfed24..ed97a42c83f 100644
--- a/src/corelib/Qt6AndroidMacros.cmake
+++ b/src/corelib/Qt6AndroidMacros.cmake
@@ -120,6 +120,29 @@ function(_qt_internal_generate_android_permissions_json out_result target)
set(${out_result} "${result}" PARENT_SCOPE)
endfunction()
+# Add the specific dynamic library as the dynamic feature for the Android application target.
+function(qt6_add_android_dynamic_features target)
+ cmake_parse_arguments(PARSE_ARGV 1 arg "" "" "FEATURE_TARGETS")
+ if(NOT QT_USE_ANDROID_MODERN_BUNDLE)
+ message(FATAL_ERROR "qt6_add_android_dynamic_features is only supported with"
+ " 'QT_USE_ANDROID_MODERN_BUNDLE' enabled.")
+ endif()
+ if(NOT TARGET ${target})
+ message(FATAL_ERROR "${target} is not a target. Cannot add the dynamic features.")
+ endif()
+ get_target_property(android_type ${target} _qt_android_target_type)
+ if(NOT android_type STREQUAL "APPLICATION")
+ message(FATAL_ERROR "${target} is not an android executable target."
+ " Cannot add the dynamic features.")
+ endif()
+ if(arg_FEATURE_TARGETS)
+ set_property(TARGET ${target}
+ APPEND PROPERTY _qt_android_dynamic_features ${arg_FEATURE_TARGETS})
+ else()
+ message(WARNING "No dynamic features provided.")
+ endif()
+endfunction()
+
# Generate the deployment settings json file for a cmake target.
function(qt6_android_generate_deployment_settings target)
# Information extracted from mkspecs/features/android/android_deployment_settings.prf
@@ -324,8 +347,9 @@ function(qt6_android_generate_deployment_settings target)
__qt_internal_collect_plugin_library_files_v2("${target}" "${plugin_targets}" plugin_targets)
string(APPEND file_contents " \"android-deploy-plugins\":\"${plugin_targets}\",\n")
- _qt_internal_generate_android_permissions_json(permissions_json_array "${target}")
- string(APPEND file_contents " \"permissions\": ${permissions_json_array},\n")
+
+ _qt_internal_android_convert_permissions(permissions_genex ${target} JSON)
+ string(APPEND file_contents " \"permissions\": ${permissions_genex},\n")
# App binary
string(APPEND file_contents
@@ -415,44 +439,6 @@ if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
endfunction()
endif()
-function(_qt_internal_add_android_permission target)
- if(NOT TARGET ${target})
- message(FATAL_ERROR "Empty or invalid target for adding Android permission: (${target})")
- endif()
-
- cmake_parse_arguments(arg "" "NAME" "ATTRIBUTES" ${ARGN})
-
- if(NOT arg_NAME)
- message(FATAL_ERROR "NAME for adding Android permission cannot be empty (${target})")
- endif()
-
- set(permission_entry "${arg_NAME}")
-
- if(arg_ATTRIBUTES)
- # Permission with additional attributes
- list(LENGTH arg_ATTRIBUTES attributes_len)
- math(EXPR attributes_modulus "${attributes_len} % 2")
- if(NOT (attributes_len GREATER 1 AND attributes_modulus EQUAL 0))
- message(FATAL_ERROR "Android permission: ${arg_NAME} attributes: ${arg_ATTRIBUTES} must"
- " be name-value pairs (for example: minSdkVersion 30)")
- endif()
- # Combine name-value pairs
- set(index 0)
- set(attributes "")
- while(index LESS attributes_len)
- list(GET arg_ATTRIBUTES ${index} name)
- math(EXPR index "${index} + 1")
- list(GET arg_ATTRIBUTES ${index} value)
- string(APPEND attributes "android:${name}=\'${value}\' ")
- math(EXPR index "${index} + 1")
- endwhile()
- set(permission_entry "${permission_entry}\;${attributes}")
- endif()
-
- # Append the permission to the target's property
- set_property(TARGET ${target} APPEND PROPERTY QT_ANDROID_PERMISSIONS "${permission_entry}")
-endfunction()
-
function(qt6_add_android_permission target)
_qt_internal_add_android_permission(${ARGV})
endfunction()
@@ -519,18 +505,6 @@ function(qt6_android_add_apk_target target)
">"
)
- # Make global apk and aab targets depend on the current apk target.
- if(TARGET aab)
- add_dependencies(aab ${target}_make_aab)
- endif()
- if(TARGET aar)
- add_dependencies(aar ${target}_make_aar)
- endif()
- if(TARGET apk)
- add_dependencies(apk ${target}_make_apk)
- _qt_internal_create_global_apk_all_target_if_needed()
- endif()
-
_qt_internal_android_get_deployment_tool(deployment_tool)
# No need to use genex for the BINARY_DIR since it's read-only.
@@ -719,6 +693,10 @@ function(qt6_android_add_apk_target target)
)
add_dependencies(${target}_make_aab ${target}_prepare_apk_dir)
+ # Make global apk, aab, and aar targets depend on the respective targets.
+ _qt_internal_android_add_global_package_dependencies(${target})
+ _qt_internal_create_global_apk_all_target_if_needed()
+
if(QT_IS_ANDROID_MULTI_ABI_EXTERNAL_PROJECT)
# When building per-ABI external projects we only need to copy ABI-specific libraries and
# resources to the "main" ABI android build folder.
@@ -1661,13 +1639,26 @@ endfunction()
# module and is executed implicitly when configuring user projects.
function(_qt_internal_android_executable_finalizer target)
set_property(TARGET ${target} PROPERTY _qt_android_executable_finalizer_called TRUE)
+ set_property(TARGET ${target} PROPERTY _qt_android_in_finalizer "EXECUTABLE")
_qt_internal_expose_android_package_source_dir_to_ide(${target})
_qt_internal_configure_android_multiabi_target("${target}")
qt6_android_generate_deployment_settings("${target}")
- qt6_android_add_apk_target("${target}")
+ if(QT_USE_ANDROID_MODERN_BUNDLE)
+ _qt_internal_android_generate_dynamic_feature_names("${target}")
+ _qt_internal_android_add_dynamic_feature_deployment("${target}")
+
+ _qt_internal_android_prepare_gradle_build("${target}")
+ _qt_internal_android_add_aux_deployment("${target}")
+
+ _qt_internal_collect_apk_dependencies_defer()
+ _qt_internal_collect_apk_imported_dependencies_defer("${target}")
+ else()
+ qt6_android_add_apk_target("${target}")
+ endif()
_qt_internal_android_create_runner_wrapper("${target}")
+ set_property(TARGET ${target} PROPERTY _qt_android_in_finalizer "")
endfunction()
# Helper to add the android executable finalizer.
@@ -1737,8 +1728,9 @@ function(_qt_internal_android_app_runner_arguments target out_runner_path out_ar
set(${out_runner_path} "${runner_dir}/qt-android-runner.py" PARENT_SCOPE)
_qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
+ _qt_internal_android_get_platform_tools_path(platform_tools)
set(${out_arguments}
- "--adb" "${ANDROID_SDK_ROOT}/platform-tools/adb"
+ "--adb" "${platform_tools}/adb"
"--build-path" "${android_build_dir}"
"--apk" "${android_build_dir}/${target}.apk"
PARENT_SCOPE
@@ -1754,8 +1746,13 @@ function(_qt_internal_android_get_target_android_build_dir out_build_dir target)
endif()
endfunction()
+function(_qt_internal_android_get_target_deployment_dir out_deploy_dir target)
+ _qt_internal_android_get_target_android_build_dir(build_dir ${target})
+ set(${out_deploy_dir} "${build_dir}/app" PARENT_SCOPE)
+endfunction()
+
function(_qt_internal_expose_android_package_source_dir_to_ide target)
- get_target_property(android_package_source_dir ${target} QT_ANDROID_PACKAGE_SOURCE_DIR)
+ _qt_internal_android_get_package_source_dir(android_package_source_dir ${target})
if(android_package_source_dir)
get_target_property(target_source_dir ${target} SOURCE_DIR)
if(NOT IS_ABSOLUTE "${android_package_source_dir}")
@@ -1778,6 +1775,71 @@ function(_qt_internal_expose_android_package_source_dir_to_ide target)
endif()
endfunction()
+function(_qt_internal_android_add_aux_deployment target)
+ cmake_parse_arguments(arg "" "OUTPUT_TARGET_NAME;DEPLOYMENT_DIRECTORY" "EXTRA_ARGS" ${ARGN})
+ _qt_internal_validate_all_args_are_parsed(arg)
+
+ string(JOIN "" deployment_file
+ "$<GENEX_EVAL:"
+ "$<TARGET_PROPERTY:${target},QT_ANDROID_DEPLOYMENT_SETTINGS_FILE>"
+ ">"
+ )
+
+ _qt_internal_android_get_deployment_tool(deployment_tool)
+ if(arg_DEPLOYMENT_DIRECTORY)
+ set(deployment_dir "${arg_DEPLOYMENT_DIRECTORY}")
+ else()
+ _qt_internal_android_get_target_deployment_dir(deployment_dir ${target})
+ endif()
+
+ cmake_policy(PUSH)
+ if(POLICY CMP0116)
+ # Without explicitly setting this policy to NEW, we get a warning
+ # even though we ensure there's actually no problem here.
+ # See https://gitlab.kitware.com/cmake/cmake/-/issues/21959
+ cmake_policy(SET CMP0116 NEW)
+ set(relative_to_dir ${CMAKE_CURRENT_BINARY_DIR})
+ else()
+ set(relative_to_dir ${CMAKE_BINARY_DIR})
+ endif()
+
+ set(target_file_copy_relative_path
+ "libs/${CMAKE_ANDROID_ARCH_ABI}/$<TARGET_FILE_NAME:${target}>")
+ _qt_internal_copy_file_if_different_command(copy_command
+ "$<TARGET_FILE:${target}>"
+ "${deployment_dir}/${target_file_copy_relative_path}"
+ )
+
+ _qt_internal_android_get_use_terminal_for_deployment(uses_terminal)
+
+ # TODO: We use androiddeployqt to collect target depdenencies and produce the lib.xml file
+ # which autoloads the collected libraries. Should be done using GRE and transitive properties
+ # in the future.
+ set(libs_xml "${deployment_dir}/res/values/libs.xml")
+ add_custom_command(OUTPUT "${libs_xml}"
+ COMMAND ${copy_command}
+ COMMAND "${deployment_tool}"
+ --input "${deployment_file}"
+ --output "${deployment_dir}"
+ --builddir "${relative_to_dir}"
+ --aux-mode
+ ${arg_EXTRA_ARGS}
+ #TODO: Support signing
+ COMMENT "Deploying Android artifacts for ${target}"
+ DEPENDS "${target}" "${deployment_file}"
+ VERBATIM
+ ${uses_terminal}
+ )
+
+ if(NOT arg_OUTPUT_TARGET_NAME)
+ set(arg_OUTPUT_TARGET_NAME ${target}_android_deploy_aux)
+ endif()
+
+ add_custom_target(${arg_OUTPUT_TARGET_NAME} DEPENDS "${libs_xml}")
+
+ cmake_policy(POP)
+endfunction()
+
# Enables the terminal usage for the add_custom_command calls when verbose deployment is enabled.
function(_qt_internal_android_get_use_terminal_for_deployment out_var)
if(QT_ENABLE_VERBOSE_DEPLOYMENT)
@@ -1822,6 +1884,45 @@ function(_qt_internal_android_get_deployment_type_option out_var release_flag de
endif()
endfunction()
+# Returns the path to the android template directory, that are used by CMake
+# deployment procedures.
+function(_qt_internal_android_template_dir out_var)
+ if(PROJECT_NAME STREQUAL "QtBase" OR QT_SUPERBUILD)
+ set(${out_var} "${QtBase_SOURCE_DIR}/src/android/templates_cmake" PARENT_SCOPE)
+ else()
+ set(${out_var}
+ "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_DATA}/src/android/templates_cmake" PARENT_SCOPE)
+ endif()
+endfunction()
+
+# Return the path to the target template directory if it's set for the target.
+# Then this path is stored in the target QT_ANDROID_PACKAGE_SOURCE_DIR property
+# and can only be effectively read in android finalizers.
+function(_qt_internal_android_get_package_source_dir out_var target)
+ get_target_property(in_finalizer ${target} _qt_android_in_finalizer)
+ if(NOT in_finalizer)
+ message(FATAL_ERROR "The '_qt_internal_android_get_package_source_dir' function is"
+ " called outside the Android finalizer."
+ " This is the Qt issue, please report a bug at https://bugreports.qt.io.")
+ endif()
+ get_target_property(package_src_dir ${target} QT_ANDROID_PACKAGE_SOURCE_DIR)
+ if(NOT package_src_dir)
+ set(package_src_dir "")
+ endif()
+ set(${out_var} "${package_src_dir}" PARENT_SCOPE)
+endfunction()
+
+# Add target_make_<apk|aab> as the depednecy for the respective global apk/aab
+# target.
+function(_qt_internal_android_add_global_package_dependencies target)
+ foreach(type apk aab aar)
+ # Make global apk and aab targets depend on the current apk target.
+ if(TARGET ${type} AND TARGET ${target}_make_${type})
+ add_dependencies(${type} ${target}_make_${type})
+ endif()
+ endforeach()
+endfunction()
+
function(_qt_internal_android_get_target_abis out_abis target)
get_target_property(target_abis ${target} QT_ANDROID_ABIS)
if(target_abis)
@@ -1840,5 +1941,10 @@ function(_qt_internal_android_get_target_abis out_abis target)
set(${out_abis} "${android_abis}" PARENT_SCOPE)
endfunction()
+# Returns the path to the Android platform-tools(adb is located there).
+function(_qt_internal_android_get_platform_tools_path out_var)
+ set(${out_var} "${ANDROID_SDK_ROOT}/platform-tools" PARENT_SCOPE)
+endfunction()
+
set(QT_INTERNAL_ANDROID_TARGET_BUILD_DIR_SUPPORT ON CACHE INTERNAL
"Indicates that Qt supports per-target Android build directories")
diff --git a/src/corelib/Qt6AndroidPermissionHelpers.cmake b/src/corelib/Qt6AndroidPermissionHelpers.cmake
new file mode 100644
index 00000000000..7f851e14667
--- /dev/null
+++ b/src/corelib/Qt6AndroidPermissionHelpers.cmake
@@ -0,0 +1,126 @@
+# Copyright (C) 2025 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+# Generates the generator expression that converts the 'target'
+# QT_ANDROID_PERMISSIONS property to the specific 'type'.
+#
+# It's expected that each element in QT_ANDROID_PERMISSIONS list has specific
+# format:
+# <name>\;<permission>\\\;<extra1>\;<value>\\\;<extra2>\;<value>
+#
+# Synopsis
+# _qt_internal_android_convert_permissions(out_var target <JSON|XML>)
+#
+# Arguments
+#
+# `out_var`
+# The name of the variable where the resulting generator expression is
+# stored.
+#
+# `target`
+# The name of the target.
+#
+# `JSON`
+# Generate JSON array known by androiddeployqt.
+#
+# `XML`
+# Generate XML content compatible with AndroidManifest.xml.
+function(_qt_internal_android_convert_permissions out_var target type)
+ set(permissions_property "$<TARGET_PROPERTY:${target},QT_ANDROID_PERMISSIONS>")
+ set(permissions_genex "$<$<BOOL:${permissions_property}>:")
+ if(type STREQUAL "JSON")
+ set(pref "{ \"")
+ set(post "\" }")
+ set(indent "\n ")
+ string(APPEND permissions_genex
+ "[${indent}$<JOIN:"
+ "$<JOIN:"
+ "${pref}$<JOIN:"
+ "${permissions_property},"
+ "${post}$<COMMA>${indent}${pref}"
+ ">${post},"
+ "\": \""
+ ">,"
+ "\"$<COMMA> \""
+ ">\n ]"
+ )
+ elseif(type STREQUAL "XML")
+ set(pref "<uses-permission\n android:")
+ set(post "' /$<ANGLE-R>\n")
+ string(APPEND permissions_genex
+ "$<JOIN:"
+ "$<JOIN:"
+ "${pref}$<JOIN:"
+ "${permissions_property},"
+ "${post}${pref}"
+ ">${post}\n,"
+ "='"
+ ">,"
+ "' android:"
+ ">"
+ )
+ else()
+ message(FATAL_ERROR "Invalid type ${type}. Supported types: JSON, XML")
+ endif()
+ string(APPEND permissions_genex ">")
+
+ set(${out_var} "${permissions_genex}" PARENT_SCOPE)
+endfunction()
+
+# Add the specific Android permission to the target. The permission is stored
+# in the QT_ANDROID_PERMISSIONS property(the property is not a public API)
+# and has the following format:
+# <name>\;<permission>\\\;<extra1>\;<value>\\\;<extra2>\;<value>
+#
+# Synopsis
+# _qt_internal_add_android_permission(target NAME <permission>
+# ATTRIBUTES <extra1> <value1>
+# [<extra2> <value2>]...
+# )
+#
+# Arguments
+#
+# `target`
+# The Android target.
+#
+# `NAME`
+# The permission name. E.g. 'android.permission.CAMERA'.
+#
+# `ATTRIBUTES`
+# Extra permission attribute key-value pairs.
+# See https://developer.android.com/guide/topics/manifest/uses-permission-element
+# for details.
+function(_qt_internal_add_android_permission target)
+ if(NOT TARGET ${target})
+ message(FATAL_ERROR "Empty or invalid target for adding Android permission: (${target})")
+ endif()
+
+ cmake_parse_arguments(arg "" "NAME" "ATTRIBUTES" ${ARGN})
+
+ if(NOT arg_NAME)
+ message(FATAL_ERROR "NAME for adding Android permission cannot be empty (${target})")
+ endif()
+
+ set(permission_entry "name\;${arg_NAME}")
+ if(arg_ATTRIBUTES)
+ # Permission with additional attributes
+ list(LENGTH arg_ATTRIBUTES attributes_len)
+ math(EXPR attributes_modulus "${attributes_len} % 2")
+ if(NOT (attributes_len GREATER 1 AND attributes_modulus EQUAL 0))
+ message(FATAL_ERROR "Android permission: ${arg_NAME} attributes: ${arg_ATTRIBUTES}"
+ " must be name-value pairs (for example: minSdkVersion 30)")
+ endif()
+ # Combine name-value pairs
+ set(index 0)
+ while(index LESS attributes_len)
+ list(GET arg_ATTRIBUTES ${index} name)
+ math(EXPR index "${index} + 1")
+ list(GET arg_ATTRIBUTES ${index} value)
+ string(APPEND permission_entry "\\\;${name}\;${value}")
+ math(EXPR index "${index} + 1")
+ endwhile()
+ endif()
+
+ # Append the permission to the target's property
+ set_property(TARGET ${target} APPEND PROPERTY QT_ANDROID_PERMISSIONS "${permission_entry}")
+endfunction()
diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in
index 15405197a61..8a88d558fa8 100644
--- a/src/corelib/Qt6CoreConfigExtras.cmake.in
+++ b/src/corelib/Qt6CoreConfigExtras.cmake.in
@@ -30,6 +30,10 @@ _qt_internal_setup_deploy_support()
if(ANDROID_PLATFORM)
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
+ include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
+ include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
+ include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
+
_qt_internal_create_global_android_targets()
_qt_internal_collect_default_android_abis()
if(__qt_Core_targets_file_included)
diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake
index 3f5f9180805..5bc85ae7f7a 100644
--- a/src/corelib/Qt6CoreMacros.cmake
+++ b/src/corelib/Qt6CoreMacros.cmake
@@ -683,6 +683,9 @@ function(_qt_internal_create_executable target)
)
qt6_android_apply_arch_suffix("${target}")
+ if(QT_USE_ANDROID_MODERN_BUNDLE)
+ _qt_internal_set_android_application_gradle_defaults(${target})
+ endif()
else()
cmake_policy(PUSH)
__qt_internal_set_cmp0156()
@@ -3799,7 +3802,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 +3810,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 +3820,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/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index d74894e1e42..4388122b7b9 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.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
/*!
\class QAbstractAnimation
diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h
index 69a30556a3a..b4b43e64a1d 100644
--- a/src/corelib/animation/qabstractanimation.h
+++ b/src/corelib/animation/qabstractanimation.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 QABSTRACTANIMATION_H
#define QABSTRACTANIMATION_H
diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h
index d6c245f36f0..51c635f1bed 100644
--- a/src/corelib/animation/qabstractanimation_p.h
+++ b/src/corelib/animation/qabstractanimation_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 QABSTRACTANIMATION_P_H
#define QABSTRACTANIMATION_P_H
diff --git a/src/corelib/animation/qanimationgroup.cpp b/src/corelib/animation/qanimationgroup.cpp
index d2572a7462b..ae96069e86f 100644
--- a/src/corelib/animation/qanimationgroup.cpp
+++ b/src/corelib/animation/qanimationgroup.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
/*!
\class QAnimationGroup
diff --git a/src/corelib/animation/qanimationgroup.h b/src/corelib/animation/qanimationgroup.h
index 412e2d442ea..07d24ae1f73 100644
--- a/src/corelib/animation/qanimationgroup.h
+++ b/src/corelib/animation/qanimationgroup.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 QANIMATIONGROUP_H
#define QANIMATIONGROUP_H
diff --git a/src/corelib/animation/qanimationgroup_p.h b/src/corelib/animation/qanimationgroup_p.h
index 334f780968a..a09bc6ebcc6 100644
--- a/src/corelib/animation/qanimationgroup_p.h
+++ b/src/corelib/animation/qanimationgroup_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 QANIMATIONGROUP_P_H
#define QANIMATIONGROUP_P_H
diff --git a/src/corelib/animation/qparallelanimationgroup.cpp b/src/corelib/animation/qparallelanimationgroup.cpp
index 86e9417b595..0b43a73434f 100644
--- a/src/corelib/animation/qparallelanimationgroup.cpp
+++ b/src/corelib/animation/qparallelanimationgroup.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
/*!
\class QParallelAnimationGroup
diff --git a/src/corelib/animation/qparallelanimationgroup.h b/src/corelib/animation/qparallelanimationgroup.h
index 77bc6eabac7..9442f4f7355 100644
--- a/src/corelib/animation/qparallelanimationgroup.h
+++ b/src/corelib/animation/qparallelanimationgroup.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 QPARALLELANIMATIONGROUP_H
#define QPARALLELANIMATIONGROUP_H
diff --git a/src/corelib/animation/qparallelanimationgroup_p.h b/src/corelib/animation/qparallelanimationgroup_p.h
index 62c53d36097..482b9555c7d 100644
--- a/src/corelib/animation/qparallelanimationgroup_p.h
+++ b/src/corelib/animation/qparallelanimationgroup_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 QPARALLELANIMATIONGROUP_P_H
#define QPARALLELANIMATIONGROUP_P_H
diff --git a/src/corelib/animation/qpauseanimation.cpp b/src/corelib/animation/qpauseanimation.cpp
index 344b21946e3..74e22e2f053 100644
--- a/src/corelib/animation/qpauseanimation.cpp
+++ b/src/corelib/animation/qpauseanimation.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
/*!
\class QPauseAnimation
diff --git a/src/corelib/animation/qpauseanimation.h b/src/corelib/animation/qpauseanimation.h
index f661459f835..bf7863a171c 100644
--- a/src/corelib/animation/qpauseanimation.h
+++ b/src/corelib/animation/qpauseanimation.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 QPAUSEANIMATION_H
#define QPAUSEANIMATION_H
diff --git a/src/corelib/animation/qpropertyanimation.cpp b/src/corelib/animation/qpropertyanimation.cpp
index 04f048af753..b4c6b6ff8a6 100644
--- a/src/corelib/animation/qpropertyanimation.cpp
+++ b/src/corelib/animation/qpropertyanimation.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
/*!
\class QPropertyAnimation
diff --git a/src/corelib/animation/qpropertyanimation.h b/src/corelib/animation/qpropertyanimation.h
index 038c202b8f3..590a6ddaf15 100644
--- a/src/corelib/animation/qpropertyanimation.h
+++ b/src/corelib/animation/qpropertyanimation.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 QPROPERTYANIMATION_H
#define QPROPERTYANIMATION_H
diff --git a/src/corelib/animation/qpropertyanimation_p.h b/src/corelib/animation/qpropertyanimation_p.h
index ef5534cd9c3..c1918ae1bf8 100644
--- a/src/corelib/animation/qpropertyanimation_p.h
+++ b/src/corelib/animation/qpropertyanimation_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 QPROPERTYANIMATION_P_H
#define QPROPERTYANIMATION_P_H
diff --git a/src/corelib/animation/qsequentialanimationgroup.cpp b/src/corelib/animation/qsequentialanimationgroup.cpp
index 260481dbef5..d11249ca7ed 100644
--- a/src/corelib/animation/qsequentialanimationgroup.cpp
+++ b/src/corelib/animation/qsequentialanimationgroup.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
/*!
\class QSequentialAnimationGroup
diff --git a/src/corelib/animation/qsequentialanimationgroup.h b/src/corelib/animation/qsequentialanimationgroup.h
index 6786078170d..b7f9c1b17a1 100644
--- a/src/corelib/animation/qsequentialanimationgroup.h
+++ b/src/corelib/animation/qsequentialanimationgroup.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 QSEQUENTIALANIMATIONGROUP_H
#define QSEQUENTIALANIMATIONGROUP_H
diff --git a/src/corelib/animation/qsequentialanimationgroup_p.h b/src/corelib/animation/qsequentialanimationgroup_p.h
index cbdf204d0a6..131902b5aa5 100644
--- a/src/corelib/animation/qsequentialanimationgroup_p.h
+++ b/src/corelib/animation/qsequentialanimationgroup_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 QSEQUENTIALANIMATIONGROUP_P_H
#define QSEQUENTIALANIMATIONGROUP_P_H
diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
index be5c09519e9..bd12d5dae95 100644
--- a/src/corelib/animation/qvariantanimation.cpp
+++ b/src/corelib/animation/qvariantanimation.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 "qvariantanimation.h"
#include "qvariantanimation_p.h"
diff --git a/src/corelib/animation/qvariantanimation.h b/src/corelib/animation/qvariantanimation.h
index 4bdb9713578..172ee0d6090 100644
--- a/src/corelib/animation/qvariantanimation.h
+++ b/src/corelib/animation/qvariantanimation.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 QVARIANTANIMATION_H
#define QVARIANTANIMATION_H
diff --git a/src/corelib/animation/qvariantanimation_p.h b/src/corelib/animation/qvariantanimation_p.h
index 0ac238a882b..5fdd9666dba 100644
--- a/src/corelib/animation/qvariantanimation_p.h
+++ b/src/corelib/animation/qvariantanimation_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 QVARIANTANIMATION_P_H
#define QVARIANTANIMATION_P_H
diff --git a/src/corelib/configure.cmake b/src/corelib/configure.cmake
index 909041cf44b..096dce9e84e 100644
--- a/src/corelib/configure.cmake
+++ b/src/corelib/configure.cmake
@@ -591,6 +591,7 @@ qt_config_compile_test(cpp_winrt
runtimeobject
CODE
"// Including winrt/base.h causes an error in some configurations (Windows 10 SDK + c++20)
+# include <guiddef.h> // required by clang-cl: https://github.com/microsoft/cppwinrt/issues/1179
# include <winrt/base.h>
int main(void)
diff --git a/src/corelib/doc/REUSE.toml b/src/corelib/doc/REUSE.toml
index 254251a0b6b..969cc0d9938 100644
--- a/src/corelib/doc/REUSE.toml
+++ b/src/corelib/doc/REUSE.toml
@@ -3,23 +3,23 @@ version = 1
[[annotations]]
path = ["snippets/**"]
precedence = "closest"
-SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-FileCopyrightText = "Copyright (C) The Qt Company Ltd."
SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR BSD-3-Clause"
[[annotations]]
path = ["**qdocinc", "**/images/**"]
precedence = "closest"
-SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-FileCopyrightText = "Copyright (C) The Qt Company Ltd."
SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only"
[[annotations]]
path = ["src/corelib/doc/qtcore.qdocconf"]
precedence = "closest"
-SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-FileCopyrightText = "Copyright (C) The Qt Company Ltd."
SPDX-License-Identifier = "BSD-3-Clause"
[[annotations]]
path = ["src/corelib/doc/include/QtCoreDoc"]
precedence = "closest"
-SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-FileCopyrightText = "Copyright (C) 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"
diff --git a/src/corelib/doc/snippets/CMakeLists.txt b/src/corelib/doc/snippets/CMakeLists.txt
index 937433f2e21..78cd4f6b001 100644
--- a/src/corelib/doc/snippets/CMakeLists.txt
+++ b/src/corelib/doc/snippets/CMakeLists.txt
@@ -39,6 +39,7 @@ qt_internal_extend_target(corelib_snippets CONDITION QT_FEATURE_widgets
hellotrmain.cpp
fileinfo/main.cpp
pointer/pointer.cpp
+ qsignalmapper/buttonwidget.cpp
qsortfilterproxymodel-details/main.cpp
qstring/main.cpp
qtcast/qtcast.cpp
@@ -53,6 +54,8 @@ qt_internal_extend_target(corelib_snippets CONDITION QT_FEATURE_gui
qdebug/qdebugsnippet.cpp
)
+set_target_properties(corelib_snippets PROPERTIES COMPILE_OPTIONS "-w")
+
if ("${CMAKE_CXX_COMPILE_FEATURES}" MATCHES "cxx_std_23")
set_property(TARGET corelib_snippets PROPERTY CXX_STANDARD 23)
endif()
diff --git a/src/corelib/doc/snippets/code/doc_src_containers.cpp b/src/corelib/doc/snippets/code/doc_src_containers.cpp
index b5684624929..167437c0151 100644
--- a/src/corelib/doc/snippets/code/doc_src_containers.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_containers.cpp
@@ -3,6 +3,8 @@
#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
+#include <QtCore>
+
//! [0]
class Employee
{
@@ -18,225 +20,225 @@ private:
};
//! [0]
-//! [range_for]
-QList<QString> list = {"A", "B", "C", "D"};
-for (const auto &item : list) {
- ...
-}
-//! [range_for]
-
-//! [range_for_as_const]
-QList<QString> list = {"A", "B", "C", "D"};
-for (const auto &item : std::as_const(list)) {
- ...
-}
-//! [range_for_as_const]
-
-//! [index]
-QList<QString> list = {"A", "B", "C", "D"};
-for (qsizetype i = 0; i < list.size(); ++i) {
- const auto &item = list.at(i);
- ...
-}
-//! [index]
-
-//! [1]
-QList<QString> list = {"A", "B", "C", "D"};
-
-QListIterator<QString> i(list);
-while (i.hasNext())
- QString s = i.next();
-//! [1]
-
-
-//! [2]
-QListIterator<QString> i(list);
-i.toBack();
-while (i.hasPrevious())
- QString s = i.previous();
-//! [2]
-
-
-//! [3]
-QMutableListIterator<int> i(list);
-while (i.hasNext()) {
- if (i.next() % 2 != 0)
- i.remove();
-}
-//! [3]
-
-
-//! [4]
-QMutableListIterator<int> i(list);
-i.toBack();
-while (i.hasPrevious()) {
- if (i.previous() % 2 != 0)
- i.remove();
-}
-//! [4]
-
-
-//! [5]
-QMutableListIterator<int> i(list);
-while (i.hasNext()) {
- if (i.next() > 128)
- i.setValue(128);
-}
-//! [5]
-
-
-//! [6]
-QMutableListIterator<int> i(list);
-while (i.hasNext())
- i.next() *= 2;
-//! [6]
-
-
-//! [7]
-QMap<QString, QString> map = {
- {"Paris", "France"},
- {"Guatemala City", "Guatemala"},
- {"Mexico City", "Mexico"},
- {"Moscow", "Russia"}
-};
-...
-
-QMutableMapIterator<QString, QString> i(map);
-while (i.hasNext()) {
- if (i.next().key().endsWith("City"))
- i.remove();
-}
-//! [7]
-
-
-//! [8]
-QMap<int, QWidget *> map;
-QHash<int, QWidget *> hash;
-
-QMapIterator<int, QWidget *> i(map);
-while (i.hasNext()) {
- i.next();
- hash.insert(i.key(), i.value());
-}
-//! [8]
-
-
-//! [9]
-QMutableMapIterator<int, QWidget *> i(map);
-while (i.findNext(widget))
- i.remove();
-//! [9]
+void examles()
+{
+ {
+ //! [range_for]
+ QList<QString> list = {"A", "B", "C", "D"};
+ for (const auto &item : list) {
+ //...
+ }
+ //! [range_for]
+ }
+ {
+ //! [range_for_as_const]
+ QList<QString> list = {"A", "B", "C", "D"};
+ for (const auto &item : std::as_const(list)) {
+ //...
+ }
+ //! [range_for_as_const]
+ }
-//! [10]
-QList<QString> list = {"A", "B", "C", "D"};
+ {
+ //! [index]
+ QList<QString> list = {"A", "B", "C", "D"};
+ for (qsizetype i = 0; i < list.size(); ++i) {
+ const auto &item = list.at(i);
+ //...
+ }
+ //! [index]
+ }
-for (auto i = list.begin(), end = list.end(); i != end; ++i)
- *i = (*i).toLower();
-//! [10]
+ {
+ //! [1]
+ QList<QString> list = {"A", "B", "C", "D"};
+ QListIterator<QString> i(list);
+ while (i.hasNext())
+ QString s = i.next();
+ //! [1]
+ }
-//! [11]
-QList<QString> list = {"A", "B", "C", "D"};
+ {
+ QList<QString> list = {"A", "B", "C", "D"};
-for (auto i = list.rbegin(), rend = list.rend(); i != rend; ++i)
- *i = i->toLower();
-//! [11]
+ //! [2]
+ QListIterator<QString> i(list);
+ i.toBack();
+ while (i.hasPrevious())
+ QString s = i.previous();
+ //! [2]
+ }
+ {
+ QList<int> list = {1, 2, 3, 4};
+ {
+ //! [3]
+ QMutableListIterator<int> i(list);
+ while (i.hasNext()) {
+ if (i.next() % 2 != 0)
+ i.remove();
+ }
+ //! [3]
+ }
+
+ {
+ //! [4]
+ QMutableListIterator<int> i(list);
+ i.toBack();
+ while (i.hasPrevious()) {
+ if (i.previous() % 2 != 0)
+ i.remove();
+ }
+ //! [4]
+ }
+
+ {
+ //! [5]
+ QMutableListIterator<int> i(list);
+ while (i.hasNext()) {
+ if (i.next() > 128)
+ i.setValue(128);
+ }
+ //! [5]
+ }
+
+ {
+ //! [6]
+ QMutableListIterator<int> i(list);
+ while (i.hasNext())
+ i.next() *= 2;
+ //! [6]
+ }
+ }
-//! [12]
-for (auto i = list.cbegin(), end = list.cend(); i != end; ++i)
- qDebug() << *i;
-//! [12]
+ {
+ //! [7]
+ QMap<QString, QString> map = {
+ {"Paris", "France"},
+ {"Guatemala City", "Guatemala"},
+ {"Mexico City", "Mexico"},
+ {"Moscow", "Russia"}
+ };
+ //...
+
+ QMutableMapIterator<QString, QString> i(map);
+ while (i.hasNext()) {
+ if (i.next().key().endsWith("City"))
+ i.remove();
+ }
+ //! [7]
+ }
+ {
+ //! [10]
+ QList<QString> list = {"A", "B", "C", "D"};
-//! [13]
-QMap<int, int> map;
-...
-for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
- qDebug() << i.key() << ':' << i.value();
-//! [13]
+ for (auto i = list.begin(), end = list.end(); i != end; ++i)
+ *i = (*i).toLower();
+ //! [10]
+ }
+ {
+ //! [11]
+ QList<QString> list = {"A", "B", "C", "D"};
-//! [14]
-// RIGHT
-const QList<int> sizes = splitter->sizes();
-for (auto i = sizes.begin(), end = sizes.end(); i != end; ++i)
- ...
+ for (auto i = list.rbegin(), rend = list.rend(); i != rend; ++i)
+ *i = i->toLower();
+ //! [11]
-// WRONG
-for (auto i = splitter->sizes().begin();
- i != splitter->sizes().end(); ++i)
- ...
-//! [14]
+ //! [12]
+ for (auto i = list.cbegin(), end = list.cend(); i != end; ++i)
+ qDebug() << *i;
+ //! [12]
-//! [15]
-QList<QString> values;
-...
-QString str;
-foreach (str, values)
- qDebug() << str;
-//! [15]
+ //! [13]
+ QMap<int, int> map;
+ //...
+ for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
+ qDebug() << i.key() << ':' << i.value();
+ //! [13]
+ }
-//! [16]
-QList<QString> values;
-...
-QListIterator<QString> i(values);
-while (i.hasNext()) {
- QString s = i.next();
- qDebug() << s;
-}
-//! [16]
+ {
+ //! [15]
+ QList<QString> values;
+ //...
+ QString str;
+ foreach (str, values)
+ qDebug() << str;
+ //! [15]
+ }
+ {
+ //! [16]
+ QList<QString> values;
+ //...
+ QListIterator<QString> i(values);
+ while (i.hasNext()) {
+ QString s = i.next();
+ qDebug() << s;
+ }
+ //! [16]
+ }
-//! [17]
-QList<QString> values;
-...
-foreach (const QString &str, values)
- qDebug() << str;
-//! [17]
+ {
+ //! [17]
+ QList<QString> values;
+ //...
+ foreach (const QString &str, values)
+ qDebug() << str;
+ //! [17]
+ }
+ {
+ //! [18]
+ QList<QString> values;
+ //...
+ foreach (const QString &str, values) {
+ if (str.isEmpty())
+ break;
+ qDebug() << str;
+ }
+ //! [18]
+ }
-//! [18]
-QList<QString> values;
-...
-foreach (const QString &str, values) {
- if (str.isEmpty())
- break;
- qDebug() << str;
-}
-//! [18]
+ {
+ //! [19]
+ QMap<QString, int> map;
+ //...
+ foreach (const QString &str, map.keys())
+ qDebug() << str << ':' << map.value(str);
+ //! [19]
+ }
+ {
+ //! [20]
+ QMultiMap<QString, int> map;
+ //...
+ foreach (const QString &str, map.uniqueKeys()) {
+ foreach (int i, map.values(str))
+ qDebug() << str << ':' << i;
+ }
+ //! [20]
+ }
-//! [19]
-QMap<QString, int> map;
-...
-foreach (const QString &str, map.keys())
- qDebug() << str << ':' << map.value(str);
-//! [19]
+ {
+ #if 0
+ //! [22]
+ CONFIG += no_keywords
+ //! [22]
-//! [20]
-QMultiMap<QString, int> map;
-...
-foreach (const QString &str, map.uniqueKeys()) {
- foreach (int i, map.values(str))
- qDebug() << str << ':' << i;
+ //! [cmake_no_keywords]
+ target_compile_definitions(my_app PRIVATE QT_NO_KEYWORDS)
+ //! [cmake_no_keywords]
+ #endif
+ }
}
-//! [20]
-
-
-//! [22]
-CONFIG += no_keywords
-//! [22]
-
-
-//! [cmake_no_keywords]
-target_compile_definitions(my_app PRIVATE QT_NO_KEYWORDS)
-//! [cmake_no_keywords]
-
//! [23]
QString onlyLetters(const QString &in)
@@ -250,61 +252,111 @@ QString onlyLetters(const QString &in)
}
//! [23]
-//! [24]
-QList<int> a, b;
-a.resize(100000); // make a big list filled with 0.
-
-QList<int>::iterator i = a.begin();
-// WRONG way of using the iterator i:
-b = a;
-/*
- Now we should be careful with iterator i since it will point to shared data
- If we do *i = 4 then we would change the shared instance (both vectors)
- The behavior differs from STL containers. Avoid doing such things in Qt.
-*/
-
-a[0] = 5;
-/*
- Container a is now detached from the shared data,
- and even though i was an iterator from the container a, it now works as an iterator in b.
- Here the situation is that (*i) == 0.
-*/
-
-b.clear(); // Now the iterator i is completely invalid.
-
-int j = *i; // Undefined behavior!
-/*
- The data from b (which i pointed to) is gone.
- This would be well-defined with STL containers (and (*i) == 5),
- but with QList this is likely to crash.
-*/
-//! [24]
-
-//! [25]
-QList<int> list = {1, 2, 3, 4, 4, 5};
-QSet<int> set(list.cbegin(), list.cend());
-/*
- Will generate a QSet containing 1, 2, 3, 4, 5.
-*/
-//! [25]
-
-//! [26]
-QList<int> list = {2, 3, 1};
-
-std::sort(list.begin(), list.end());
-/*
- Sort the list, now contains { 1, 2, 3 }
-*/
-
-std::reverse(list.begin(), list.end());
-/*
- Reverse the list, now contains { 3, 2, 1 }
-*/
-
-int even_elements =
- std::count_if(list.begin(), list.end(), [](int element) { return (element % 2 == 0); });
-/*
- Count how many elements that are even numbers, 1
-*/
-
-//! [26]
+void wrap()
+{
+ //! [24]
+ QList<int> a, b;
+ a.resize(100000); // make a big list filled with 0.
+
+ QList<int>::iterator i = a.begin();
+ // WRONG way of using the iterator i:
+ b = a;
+ /*
+ Now we should be careful with iterator i since it will point to shared data
+ If we do *i = 4 then we would change the shared instance (both vectors)
+ The behavior differs from STL containers. Avoid doing such things in Qt.
+ */
+
+ a[0] = 5;
+ /*
+ Container a is now detached from the shared data,
+ and even though i was an iterator from the container a, it now works as an iterator in b.
+ Here the situation is that (*i) == 0.
+ */
+
+ b.clear(); // Now the iterator i is completely invalid.
+
+ int j = *i; // Undefined behavior!
+ /*
+ The data from b (which i pointed to) is gone.
+ This would be well-defined with STL containers (and (*i) == 5),
+ but with QList this is likely to crash.
+ */
+ //! [24]
+
+ {
+ //! [25]
+ QList<int> list = {1, 2, 3, 4, 4, 5};
+ QSet<int> set(list.cbegin(), list.cend());
+ /*
+ Will generate a QSet containing 1, 2, 3, 4, 5.
+ */
+ //! [25]
+ }
+
+ //! [26]
+ QList<int> list = {2, 3, 1};
+
+ std::sort(list.begin(), list.end());
+ /*
+ Sort the list, now contains { 1, 2, 3 }
+ */
+
+ std::reverse(list.begin(), list.end());
+ /*
+ Reverse the list, now contains { 3, 2, 1 }
+ */
+
+ int even_elements =
+ std::count_if(list.begin(), list.end(), [](int element) { return (element % 2 == 0); });
+ /*
+ Count how many elements that are even numbers, 1
+ */
+ //! [26]
+}
+
+#if __has_include(<QWidget>)
+
+#include <QWidget>
+#include <QSplitter>
+
+void examples_with_widgets()
+{
+ {
+ //! [8]
+ QMap<int, QWidget *> map;
+ QHash<int, QWidget *> hash;
+
+ QMapIterator<int, QWidget *> i(map);
+ while (i.hasNext()) {
+ i.next();
+ hash.insert(i.key(), i.value());
+ }
+ //! [8]
+ }
+
+ {
+ QMap<int, QWidget *> map;
+ QWidget* widget;
+ //! [9]
+ QMutableMapIterator<int, QWidget *> i(map);
+ while (i.findNext(widget))
+ i.remove();
+ //! [9]
+ }
+
+ QSplitter* splitter;
+
+ //! [14]
+ // RIGHT
+ const QList<int> sizes = splitter->sizes();
+ for (auto i = sizes.begin(), end = sizes.end(); i != end; ++i)
+ {/*...*/}
+
+ // WRONG
+ for (auto i = splitter->sizes().begin();
+ i != splitter->sizes().end(); ++i)
+ {/*...*/}
+ //! [14]
+}
+#endif
diff --git a/src/corelib/doc/snippets/code/doc_src_groups.cpp b/src/corelib/doc/snippets/code/doc_src_groups.cpp
index a0901904db0..2d7c2f96056 100644
--- a/src/corelib/doc/snippets/code/doc_src_groups.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_groups.cpp
@@ -1,6 +1,15 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+#include <QPen>
+#include <QPainter>
+
+class QPenPrivate {
+public:
+ int ref = 1;
+ Qt::PenStyle style;
+};
+
//! [0]
void QPen::setStyle(Qt::PenStyle style)
{
@@ -11,19 +20,21 @@ void QPen::setStyle(Qt::PenStyle style)
void QPen::detach()
{
if (d->ref != 1) {
- ... // perform a deep copy
+ //... // perform a deep copy
}
}
//! [0]
+void example()
+{
+ //! [1]
+ QPixmap p1, p2;
+ p1.load("image.bmp");
+ p2 = p1; // p1 and p2 share data
-//! [1]
-QPixmap p1, p2;
-p1.load("image.bmp");
-p2 = p1; // p1 and p2 share data
-
-QPainter paint;
-paint.begin(&p2); // cuts p2 loose from p1
-paint.drawText(0,50, "Hi");
-paint.end();
-//! [1]
+ QPainter paint;
+ paint.begin(&p2); // cuts p2 loose from p1
+ paint.drawText(0,50, "Hi");
+ paint.end();
+ //! [1]
+}
diff --git a/src/corelib/doc/snippets/code/doc_src_objecttrees.cpp b/src/corelib/doc/snippets/code/doc_src_objecttrees.cpp
index b7c71ccb6b0..8b55ad9b157 100644
--- a/src/corelib/doc/snippets/code/doc_src_objecttrees.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_objecttrees.cpp
@@ -1,23 +1,31 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//![0]
+#include <QPushButton>
+
+//![open]
int main()
{
- QWidget window;
- QPushButton quit("Quit", &window);
- ...
-}
-//![0]
+//![open]
+ {
+ //![example1]
+ QWidget window;
+ QPushButton quit("Quit", &window);
+ //...
+ //![example1]
+ }
-//![1]
-int main()
-{
- QPushButton quit("Quit");
- QWidget window;
+ {
+ //![example2]
+ QPushButton quit("Quit");
+ QWidget window;
+
+ quit.setParent(&window);
+ //...
+ //![example2]
+ }
- quit.setParent(&window);
- ...
+//![close]
}
-//![1]
+//![close]
diff --git a/src/corelib/doc/snippets/code/doc_src_properties.cpp b/src/corelib/doc/snippets/code/doc_src_properties.cpp
index 190a8437101..eafa7acda3b 100644
--- a/src/corelib/doc/snippets/code/doc_src_properties.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_properties.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+#ifdef QPROPERTY_MACRO
//! [0]
Q_PROPERTY(type name
(READ getFunction [WRITE setFunction] |
@@ -25,33 +26,40 @@ Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor)
//! [1]
-
//! [2]
Q_PROPERTY(QDate date READ getDate WRITE setDate)
//! [2]
+#endif
+#if __has_include(<QPushButton>)
+#include <QPushButton>
+void button_example()
+{
+ //! [3]
+ QPushButton *button = new QPushButton;
+ QObject *object = button;
-//! [3]
-QPushButton *button = new QPushButton;
-QObject *object = button;
-
-button->setDown(true);
-object->setProperty("down", true);
-//! [3]
-
-
-//! [4]
-QObject *object = ...
-const QMetaObject *metaobject = object->metaObject();
-int count = metaobject->propertyCount();
-for (int i=0; i<count; ++i) {
- QMetaProperty metaproperty = metaobject->property(i);
- const char *name = metaproperty.name();
- QVariant value = object->property(name);
- ...
+ button->setDown(true);
+ object->setProperty("down", true);
+ //! [3]
}
-//! [4]
+#endif
+#include <QMetaProperty>
+void qobject_example()
+{
+ //! [4]
+ QObject *object = new QObject;
+ const QMetaObject *metaobject = object->metaObject();
+ int count = metaobject->propertyCount();
+ for (int i=0; i<count; ++i) {
+ QMetaProperty metaproperty = metaobject->property(i);
+ const char *name = metaproperty.name();
+ QVariant value = object->property(name);
+ //...
+ }
+ //! [4]
+}
//! [5]
class MyClass : public QObject
@@ -85,16 +93,17 @@ private:
};
//! [5]
+void example(){
+ //! [6]
+ MyClass *myinstance = new MyClass;
+ QObject *object = myinstance;
-//! [6]
-MyClass *myinstance = new MyClass;
-QObject *object = myinstance;
-
-myinstance->setPriority(MyClass::VeryHigh);
-object->setProperty("priority", "VeryHigh");
-//! [6]
-
+ myinstance->setPriority(MyClass::VeryHigh);
+ object->setProperty("priority", "VeryHigh");
+ //! [6]
+}
+#ifdef QPROPERTY_MACRO
//! [7]
Q_CLASSINFO("DefaultProperty", "content")
//! [7]
@@ -103,7 +112,7 @@ Q_CLASSINFO("DefaultProperty", "content")
Q_PROPERTY(QColor color MEMBER m_color NOTIFY colorChanged)
Q_PROPERTY(qreal spacing MEMBER m_spacing NOTIFY spacingChanged)
Q_PROPERTY(QString text MEMBER m_text NOTIFY textChanged)
- ...
+ //...
signals:
void colorChanged();
void spacingChanged();
@@ -114,4 +123,4 @@ private:
qreal m_spacing;
QString m_text;
//! [8]
-
+#endif
diff --git a/src/corelib/doc/snippets/code/doc_src_qalgorithms.cpp b/src/corelib/doc/snippets/code/doc_src_qalgorithms.cpp
index f2b94a74165..9155345508a 100644
--- a/src/corelib/doc/snippets/code/doc_src_qalgorithms.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qalgorithms.cpp
@@ -1,11 +1,17 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//! [1]
-QList<Employee *> list;
-list.append(new Employee("Blackpool", "Stephen"));
-list.append(new Employee("Twist", "Oliver"));
+#include <QList>
+#include <QColor>
-qDeleteAll(list.begin(), list.end());
-list.clear();
-//! [1]
+void example()
+{
+ //! [1]
+ QList<QColor *> list;
+ list.append(new QColor(Qt::blue));
+ list.append(new QColor(Qt::yellow));
+
+ qDeleteAll(list.begin(), list.end());
+ list.clear();
+ //! [1]
+}
diff --git a/src/corelib/doc/snippets/code/doc_src_qcache.cpp b/src/corelib/doc/snippets/code/doc_src_qcache.cpp
index a15a8027600..3157981f3fa 100644
--- a/src/corelib/doc/snippets/code/doc_src_qcache.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qcache.cpp
@@ -1,20 +1,34 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//! [0]
-QCache<int, Employee> cache;
-//! [0]
+#include <QCache>
+struct Employee {
+ void setId(int id);
+ int id() const { return 0; }
+ void setName(const QString &name);
+};
-//! [1]
-Employee *employee = new Employee;
-employee->setId(37);
-employee->setName("Richard Schmit");
-...
-cache.insert(employee->id(), employee);
-//! [1]
+struct MyDataStructure { };
+void example()
+{
+ //! [0]
+ QCache<int, Employee> cache;
+ //! [0]
-//! [2]
-QCache<int, MyDataStructure> cache(5000);
-//! [2]
+
+ //! [1]
+ Employee *employee = new Employee;
+ employee->setId(37);
+ employee->setName("Richard Schmit");
+ //...
+ cache.insert(employee->id(), employee);
+ //! [1]
+
+ {
+ //! [2]
+ QCache<int, MyDataStructure> cache(5000);
+ //! [2]
+ }
+}
diff --git a/src/corelib/doc/snippets/code/doc_src_qiterator.cpp b/src/corelib/doc/snippets/code/doc_src_qiterator.cpp
index 0d921b87e67..209e98af522 100644
--- a/src/corelib/doc/snippets/code/doc_src_qiterator.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qiterator.cpp
@@ -1,278 +1,349 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-//! [0]
-QList<float> list;
-...
-QListIterator<float> i(list);
-while (i.hasNext())
- float f = i.next();
-//! [0]
-
-
-//! [1]
-QListIterator<float> i(list);
-i.toBack();
-while (i.hasPrevious())
- float f = i.previous();
-//! [1]
-
-//! [6]
-QSet<QString> set;
-...
-QSetIterator<QString> i(set);
-while (i.hasNext())
- float f = i.next();
-//! [6]
-
-//! [8]
-QList<float> list;
-...
-QMutableListIterator<float> i(list);
-while (i.hasNext())
- float f = i.next();
-//! [8]
-
-
-//! [9]
-QMutableListIterator<float> i(list);
-i.toBack();
-while (i.hasPrevious())
- float f = i.previous();
-//! [9]
-
-
-//! [10]
-QMutableListIterator<int> i(list);
-while (i.hasNext()) {
- int val = i.next();
- if (val < 0) {
- i.setValue(-val);
- } else if (val == 0) {
- i.remove();
+#include <QList>
+#include <QSet>
+
+void example()
+{
+ {
+ //! [0]
+ QList<float> list;
+ //...
+ QListIterator<float> i(list);
+ while (i.hasNext())
+ float f = i.next();
+ //! [0]
}
-}
-//! [10]
-
-//! [17]
-QSet<float> set;
-...
-QMutableSetIterator<float> i(set);
-while (i.hasNext())
- float f = i.next();
-//! [17]
-//! [19]
-QMutableListIterator<int> i(list);
-while (i.hasNext()) {
- int val = i.next();
- if (val < -32768 || val > 32767)
- i.remove();
-}
-//! [19]
-
-//! [22]
-QMutableSetIterator<int> i(set);
-while (i.hasNext()) {
- int val = i.next();
- if (val < -32768 || val > 32767)
- i.remove();
-}
-//! [22]
-
-
-//! [23]
-QMutableListIterator<double> i(list);
-while (i.hasNext()) {
- double val = i.next();
- i.setValue(std::sqrt(val));
-}
-//! [23]
-
-//! [26]
-QMap<int, QWidget *> map;
-...
-QMapIterator<int, QWidget *> i(map);
-while (i.hasNext()) {
- i.next();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [26]
-
-
-//! [27]
-QMapIterator<int, QWidget *> i(map);
-i.toBack();
-while (i.hasPrevious()) {
- i.previous();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [27]
-
-
-//! [28]
-QMapIterator<int, QWidget *> i(map);
-while (i.findNext(widget)) {
- qDebug() << "Found widget " << widget << " under key "
- << i.key();
-}
-//! [28]
-
-//! [26multi]
-QMultiMap<int, QWidget *> multimap;
-...
-QMultiMapIterator<int, QWidget *> i(multimap);
-while (i.hasNext()) {
- i.next();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [26multi]
+ QList<float> list;
+ {
+ //! [1]
+ QListIterator<float> i(list);
+ i.toBack();
+ while (i.hasPrevious())
+ float f = i.previous();
+ //! [1]
+ }
-//! [27multi]
-QMultiMapIterator<int, QWidget *> i(multimap);
-i.toBack();
-while (i.hasPrevious()) {
- i.previous();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [27multi]
+ {
+ //! [6]
+ QSet<QString> set;
+ //...
+ QSetIterator<QString> i(set);
+ while (i.hasNext())
+ QString f = i.next();
+ //! [6]
+ }
+ {
+ //! [8]
+ QList<float> list;
+ //...
+ QMutableListIterator<float> i(list);
+ while (i.hasNext())
+ float f = i.next();
+ //! [8]
+ }
-//! [28multi]
-QMultiMapIterator<int, QWidget *> i(multimap);
-while (i.findNext(widget)) {
- qDebug() << "Found widget " << widget << " under key "
- << i.key();
-}
-//! [28multi]
+ {
+ //! [9]
+ QMutableListIterator<float> i(list);
+ i.toBack();
+ while (i.hasPrevious())
+ float f = i.previous();
+ //! [9]
+ }
+ {
+ QList<int> list = {1, 2, 3, 4, 5};
+ //! [10]
+ QMutableListIterator<int> i(list);
+ while (i.hasNext()) {
+ int val = i.next();
+ if (val < 0) {
+ i.setValue(-val);
+ } else if (val == 0) {
+ i.remove();
+ }
+ }
+ //! [10]
+ }
-//! [29]
-QHash<int, QWidget *> hash;
-...
-QHashIterator<int, QWidget *> i(hash);
-while (i.hasNext()) {
- i.next();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [29]
+ {
+ //! [17]
+ QSet<float> set;
+ //...
+ QMutableSetIterator<float> i(set);
+ while (i.hasNext())
+ float f = i.next();
+ //! [17]
+ }
+ {
+ QList<int> list = {1, 2, 3, 4, 5};
+ //! [19]
+ QMutableListIterator<int> i(list);
+ while (i.hasNext()) {
+ int val = i.next();
+ if (val < -32768 || val > 32767)
+ i.remove();
+ }
+ //! [19]
+ }
-//! [31]
-QHashIterator<int, QWidget *> i(hash);
-while (i.findNext(widget)) {
- qDebug() << "Found widget " << widget << " under key "
- << i.key();
-}
-//! [31]
+ {
+ QSet<int> set;
+ //! [22]
+ QMutableSetIterator<int> i(set);
+ while (i.hasNext()) {
+ int val = i.next();
+ if (val < -32768 || val > 32767)
+ i.remove();
+ }
+ //! [22]
+ }
+ {
+ QList<double> list;
+ //! [23]
+ QMutableListIterator<double> i(list);
+ while (i.hasNext()) {
+ double val = i.next();
+ i.setValue(std::sqrt(val));
+ }
+ //! [23]
+ }
-//! [32]
-QMap<int, QWidget *> map;
-...
-QMutableMapIterator<int, QWidget *> i(map);
-while (i.hasNext()) {
- i.next();
- qDebug() << i.key() << ": " << i.value();
+ {
+ //! [25]
+ QList<int> list;
+ //...
+ QListIterator<int> i(list);
+ while (i.hasNext())
+ int val = i.next();
+ //! [25]
+ }
}
-//! [32]
-
-//! [33]
-QMutableMapIterator<int, QWidget *> i(map);
-i.toBack();
-while (i.hasPrevious()) {
- i.previous();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [33]
+#if __has_include(<QWidget>)
+#include <QWidget>
+void example_widgets()
+{
+ QMap<int, QWidget *> map;
+ {
+ //! [26]
+ QMap<int, QWidget *> map;
+ //...
+ QMapIterator<int, QWidget *> i(map);
+ while (i.hasNext()) {
+ i.next();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [26]
+ }
+ {
+ //! [27]
+ QMapIterator<int, QWidget *> i(map);
+ i.toBack();
+ while (i.hasPrevious()) {
+ i.previous();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [27]
+ }
-//! [34]
-QMutableMapIterator<int, QWidget *> i(map);
-while (i.findNext(widget)) {
- qDebug() << "Found widget " << widget << " under key "
- << i.key();
-}
-//! [34]
+ QWidget *widget;
+ {
+ //! [28]
+ QMapIterator<int, QWidget *> i(map);
+ while (i.findNext(widget)) {
+ qDebug() << "Found widget " << widget << " under key "
+ << i.key();
+ }
+ //! [28]
+ }
+ {
+ //! [26multi]
+ QMultiMap<int, QWidget *> multimap;
+ //...
+ QMultiMapIterator<int, QWidget *> i(multimap);
+ while (i.hasNext()) {
+ i.next();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [26multi]
+ }
-//! [35]
-QMutableMapIterator<QString, QString> i(map);
-while (i.hasNext()) {
- i.next();
- if (i.key() == i.value())
- i.remove();
-}
-//! [35]
+ QMultiMap<int, QWidget *> multimap;
+ {
+ //! [27multi]
+ QMultiMapIterator<int, QWidget *> i(multimap);
+ i.toBack();
+ while (i.hasPrevious()) {
+ i.previous();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [27multi]
+ }
+ {
+ //! [28multi]
+ QMultiMapIterator<int, QWidget *> i(multimap);
+ while (i.findNext(widget)) {
+ qDebug() << "Found widget " << widget << " under key "
+ << i.key();
+ }
+ //! [28multi]
+ }
-//! [32multi]
-QMultiMap<int, QWidget *> multimap;
-...
-QMutableMultiMapIterator<int, QWidget *> i(multimap);
-while (i.hasNext()) {
- i.next();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [32multi]
+ {
+ //! [29]
+ QHash<int, QWidget *> hash;
+ //...
+ QHashIterator<int, QWidget *> i(hash);
+ while (i.hasNext()) {
+ i.next();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [29]
+ }
+ QHash<int, QWidget *> hash;
+ {
+ //! [31]
+ QHashIterator<int, QWidget *> i(hash);
+ while (i.findNext(widget)) {
+ qDebug() << "Found widget " << widget << " under key "
+ << i.key();
+ }
+ //! [31]
+ }
-//! [33multi]
-QMutableMultiMapIterator<int, QWidget *> i(multimap);
-i.toBack();
-while (i.hasPrevious()) {
- i.previous();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [33multi]
+ {
+ //! [32]
+ QMap<int, QWidget *> map;
+ //...
+ QMutableMapIterator<int, QWidget *> i(map);
+ while (i.hasNext()) {
+ i.next();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [32]
+ }
+ {
+ //! [33]
+ QMutableMapIterator<int, QWidget *> i(map);
+ i.toBack();
+ while (i.hasPrevious()) {
+ i.previous();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [33]
+ }
-//! [34multi]
-QMutableMultiMapIterator<int, QWidget *> i(multimap);
-while (i.findNext(widget)) {
- qDebug() << "Found widget " << widget << " under key "
- << i.key();
-}
-//! [34multi]
+ {
+ //! [34]
+ QMutableMapIterator<int, QWidget *> i(map);
+ while (i.findNext(widget)) {
+ qDebug() << "Found widget " << widget << " under key "
+ << i.key();
+ }
+ //! [34]
+ }
+ {
+ QMap<QString, QString> map;
+ //! [35]
+ QMutableMapIterator<QString, QString> i(map);
+ while (i.hasNext()) {
+ i.next();
+ if (i.key() == i.value())
+ i.remove();
+ }
+ //! [35]
+ }
-//! [35multi]
-QMutableMultiMapIterator<QString, QString> i(multimap);
-while (i.hasNext()) {
- i.next();
- if (i.key() == i.value())
- i.remove();
-}
-//! [35multi]
+ {
+ //! [32multi]
+ QMultiMap<int, QWidget *> multimap;
+ //...
+ QMutableMultiMapIterator<int, QWidget *> i(multimap);
+ while (i.hasNext()) {
+ i.next();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [32multi]
+ }
+ {
+ //! [33multi]
+ QMutableMultiMapIterator<int, QWidget *> i(multimap);
+ i.toBack();
+ while (i.hasPrevious()) {
+ i.previous();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [33multi]
+ }
-//! [36]
-QHash<int, QWidget *> hash;
-...
-QMutableHashIterator<QString, QWidget *> i(hash);
-while (i.hasNext()) {
- i.next();
- qDebug() << i.key() << ": " << i.value();
-}
-//! [36]
+ {
+ //! [34multi]
+ QMutableMultiMapIterator<int, QWidget *> i(multimap);
+ while (i.findNext(widget)) {
+ qDebug() << "Found widget " << widget << " under key "
+ << i.key();
+ }
+ //! [34multi]
+ }
+ {
+ QMultiMap<QString, QString> multimap;
+ //! [35multi]
+ QMutableMultiMapIterator<QString, QString> i(multimap);
+ while (i.hasNext()) {
+ i.next();
+ if (i.key() == i.value())
+ i.remove();
+ }
+ //! [35multi]
+ }
-//! [38]
-QMutableHashIterator<int, QWidget *> i(hash);
-while (i.findNext(widget)) {
- qDebug() << "Found widget " << widget << " under key "
- << i.key();
-}
-//! [38]
+ {
+ //! [36]
+ QHash<int, QWidget *> hash;
+ //...
+ QMutableHashIterator<int, QWidget *> i(hash);
+ while (i.hasNext()) {
+ i.next();
+ qDebug() << i.key() << ": " << i.value();
+ }
+ //! [36]
+ }
+ {
+ //! [38]
+ QMutableHashIterator<int, QWidget *> i(hash);
+ while (i.findNext(widget)) {
+ qDebug() << "Found widget " << widget << " under key "
+ << i.key();
+ }
+ //! [38]
+ }
-//! [39]
-QMutableHashIterator<QString, QString> i(hash);
-while (i.hasNext()) {
- i.next();
- if (i.key() == i.value())
- i.remove();
+ {
+ QHash<QString, QString> hash;
+ //! [39]
+ QMutableHashIterator<QString, QString> i(hash);
+ while (i.hasNext()) {
+ i.next();
+ if (i.key() == i.value())
+ i.remove();
+ }
+ //! [39]
+ }
}
-//! [39]
+#endif
diff --git a/src/corelib/doc/snippets/code/doc_src_qnamespace.cpp b/src/corelib/doc/snippets/code/doc_src_qnamespace.cpp
index 10845855840..d753874f0dd 100644
--- a/src/corelib/doc/snippets/code/doc_src_qnamespace.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qnamespace.cpp
@@ -1,6 +1,8 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+#include <QEvent>
+
//! [1]
enum CustomEventPriority
{
diff --git a/src/corelib/doc/snippets/code/doc_src_qplugin.cpp b/src/corelib/doc/snippets/code/doc_src_qplugin.cpp
index 3bca27b9661..4382d13838a 100644
--- a/src/corelib/doc/snippets/code/doc_src_qplugin.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qplugin.cpp
@@ -1,10 +1,12 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+#include <QtPlugin>
+
//! [0]
namespace Foo
{
- struct MyInterface { ... };
+ struct MyInterface { /*...*/ };
}
Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface")
diff --git a/src/corelib/doc/snippets/code/doc_src_qset.cpp b/src/corelib/doc/snippets/code/doc_src_qset.cpp
index 98a6f336f5a..8342e1d6f98 100644
--- a/src/corelib/doc/snippets/code/doc_src_qset.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qset.cpp
@@ -1,107 +1,134 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//! [0]
-QSet<QString> set;
-//! [0]
+#include <QtCore>
+#include <iostream>
+using namespace std;
+void snippets_0_3()
+{
+ //! [0]
+ QSet<QString> set;
+ //! [0]
-//! [1]
-set.insert("one");
-set.insert("three");
-set.insert("seven");
-//! [1]
+ //! [1]
+ set.insert("one");
+ set.insert("three");
+ set.insert("seven");
+ //! [1]
-//! [2]
-set << "twelve" << "fifteen" << "nineteen";
-//! [2]
+ //! [2]
+ set << "twelve" << "fifteen" << "nineteen";
+ //! [2]
-//! [3]
-if (!set.contains("ninety-nine"))
- ...
-//! [3]
-
-//! [4]
-QSetIterator<QWidget *> i(set);
-while (i.hasNext()) {
- QWidget *w = i.next();
- qDebug() << w;
+ //! [3]
+ if (!set.contains("ninety-nine"))
+ {/*...*/}
+ //! [3]
}
-//! [4]
-
-//! [5]
-for (auto i = set.cbegin(), end = set.cend(); i != end; ++i)
- qDebug() << *i;
-//! [5]
+#if __has_include(<QWidget>)
+#include <QWidget>
-//! [6]
-QSet<QString> set;
-...
-for (const auto &value : set)
- qDebug() << value;
-//! [6]
+void example_widgets()
+{
+ QSet<QWidget *> set;
+ //! [4]
+ QSetIterator<QWidget *> i(set);
+ while (i.hasNext()) {
+ QWidget *w = i.next();
+ qDebug() << w;
+ }
+ //! [4]
+}
+#endif
+
+void snippets_5_12()
+{
+ QSet<QString> set;
+
+ //! [5]
+ for (auto i = set.cbegin(), end = set.cend(); i != end; ++i)
+ qDebug() << *i;
+ //! [5]
+
+ {
+ //! [6]
+ QSet<QString> set;
+ //...
+ for (const auto &value : set)
+ qDebug() << value;
+ //! [6]
+ }
+ {
+ QString values[3];
+ //! [7]
+ QSet<QString> set;
+ set.reserve(20000);
+ for (int i = 0; i < 20000; ++i)
+ set.insert(values[i]);
+ //! [7]
+ }
-//! [7]
-QSet<QString> set;
-set.reserve(20000);
-for (int i = 0; i < 20000; ++i)
- set.insert(values[i]);
-//! [7]
+ {
+ //! [8]
+ QSet<QString> set = {"January", "February", /*...*/ "December"};
+ // i is a QSet<QString>::iterator
+ for (auto i = set.begin(), end = set.end(); i != end; ++i)
+ qDebug() << *i;
+ //! [8]
+ }
-//! [8]
-QSet<QString> set = {"January", "February", ... "December"}
+ {
+ //! [9]
+ QSet<QString> set = {"January", "February", /*...*/ "December"};
+
+ auto i = set.begin();
+ while (i != set.end()) {
+ if ((*i).startsWith('J')) {
+ i = set.erase(i);
+ } else {
+ ++i;
+ }
+ }
+ //! [9]
+ }
-// i is a QSet<QString>::iterator
-for (auto i = set.begin(), end = set.end(); i != end; ++i)
- qDebug() << *i;
-//! [8]
+ {
+ //! [10]
+ QSet<QString> set;
+ //...
+ const auto predicate = [](const QString &s) { return s.compare("Jeanette", Qt::CaseInsensitive) == 0; };
+ QSet<QString>::iterator it = std::find_if(set.begin(), set.end(), predicate);
+ if (it != set.end())
+ cout << "Found Jeanette" << endl;
+ //! [10]
+ }
+ {
+ //! [11]
+ QSet<QString> set = {"January", "February", /*...*/ "December"};
-//! [9]
-QSet<QString> set = {"January", "February", ... "December"};
+ // i is QSet<QString>::const_iterator
+ for (auto i = set.cbegin(), end = set.cend(); i != end; ++i)
+ qDebug() << *i;
+ //! [11]
+ }
-auto i = set.begin();
-while (i != set.end()) {
- if ((*i).startsWith('J')) {
- i = set.erase(i);
- } else {
- ++i;
+ {
+ //! [12]
+ QSet<QString> set;
+ //...
+ const auto predicate = [](const QString &s) { return s.compare("Jeanette", Qt::CaseInsensitive) == 0; };
+ QSet<QString>::const_iterator it = std::find_if(set.cbegin(), set.cend(), predicate);
+ if (it != set.constEnd())
+ cout << "Found Jeanette" << endl;
+ //! [12]
}
}
-//! [9]
-
-
-//! [10]
-QSet<QString> set;
-...
-const auto predicate = [](const QString &s) { return s.compare("Jeanette", Qt::CaseInsensitive) == 0; };
-QSet<QString>::iterator it = std::find_if(set.begin(), set.end(), predicate);
-if (it != set.end())
- cout << "Found Jeanette" << endl;
-//! [10]
-
-
-//! [11]
-QSet<QString> set = {"January", "February", ... "December"};
-
-// i is QSet<QString>::const_iterator
-for (auto i = set.cbegin(), end = set.cend(); i != end; ++i)
- qDebug() << *i;
-//! [11]
-
-
-//! [12]
-QSet<QString> set;
-...
-const auto predicate = [](const QString &s) { return s.compare("Jeanette", Qt::CaseInsensitive) == 0; };
-QSet<QString>::const_iterator it = std::find_if(set.cbegin(), set.cend(), predicate);
-if (it != set.constEnd())
- cout << "Found Jeanette" << endl;
-//! [12]
diff --git a/src/corelib/doc/snippets/code/doc_src_qvarlengtharray.cpp b/src/corelib/doc/snippets/code/doc_src_qvarlengtharray.cpp
index 080874fc77d..4d2ccc82c2e 100644
--- a/src/corelib/doc/snippets/code/doc_src_qvarlengtharray.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qvarlengtharray.cpp
@@ -1,21 +1,24 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+#include <QVarLengthArray>
+
+#if 0
//! [0]
-int myfunc(int n)
+int myfunc_wrong(int n)
{
int table[n + 1]; // WRONG
- ...
+ //...
return table[n];
}
//! [0]
-
+#endif
//! [1]
-int myfunc(int n)
+int myfunc_correct(int n)
{
int *table = new int[n + 1];
- ...
+ //...
int ret = table[n];
delete[] table;
return ret;
@@ -24,18 +27,21 @@ int myfunc(int n)
//! [2]
-int myfunc(int n)
+int myfunc_q(int n)
{
QVarLengthArray<int, 1024> array(n + 1);
- ...
+ //...
return array[n];
}
//! [2]
-//! [3]
-QVarLengthArray<int> array(10);
-int *data = array.data();
-for (int i = 0; i < 10; ++i)
- data[i] = 2 * i;
-//! [3]
+void example()
+{
+ //! [3]
+ QVarLengthArray<int> array(10);
+ int *data = array.data();
+ for (int i = 0; i < 10; ++i)
+ data[i] = 2 * i;
+ //! [3]
+}
diff --git a/src/corelib/doc/snippets/code/doc_src_resources.cpp b/src/corelib/doc/snippets/code/doc_src_resources.cpp
index 04ecf810ec1..9a244b9239d 100644
--- a/src/corelib/doc/snippets/code/doc_src_resources.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_resources.cpp
@@ -1,10 +1,25 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//! [4]
-QResource::registerResource("/path/to/myresource.rcc");
-//! [4]
+#include <QResource>
+#include <QFile>
+void wrap()
+{
+ //! [4]
+ QResource::registerResource("/path/to/myresource.rcc");
+ //! [4]
+}
+
+class BaseClass {
+ public:
+ BaseClass() {}
+};
+
+class MyClass : BaseClass {
+ public:
+ MyClass();
+};
//! [5]
MyClass::MyClass() : BaseClass()
@@ -12,6 +27,6 @@ MyClass::MyClass() : BaseClass()
Q_INIT_RESOURCE(resources);
QFile file(":/myfile.dat");
- ...
+ //...
}
//! [5]
diff --git a/src/corelib/doc/snippets/eventfilters/CMakeLists.txt b/src/corelib/doc/snippets/eventfilters/CMakeLists.txt
index ea381e425a5..7da83cbdf6e 100644
--- a/src/corelib/doc/snippets/eventfilters/CMakeLists.txt
+++ b/src/corelib/doc/snippets/eventfilters/CMakeLists.txt
@@ -1,17 +1,19 @@
-add_library(snippets_eventfilters OBJECT)
+add_library(corelib_snippets_eventfilters OBJECT)
-target_link_libraries(snippets_eventfilters PRIVATE
+set_target_properties(corelib_snippets_eventfilters PROPERTIES COMPILE_OPTIONS "-w")
+
+target_link_libraries(corelib_snippets_eventfilters PRIVATE
Qt::Core
)
-qt_internal_extend_target(snippets_eventfilters CONDITION QT_FEATURE_widgets
+qt_internal_extend_target(corelib_snippets_eventfilters CONDITION QT_FEATURE_widgets
LIBRARIES
Qt::Widgets
SOURCE
main.cpp
)
-qt_internal_extend_target(snippets_eventfilters CONDITION QT_FEATURE_gui
+qt_internal_extend_target(corelib_snippets_eventfilters CONDITION QT_FEATURE_gui
LIBRARIES
Qt::Gui
SOURCES
diff --git a/src/corelib/doc/snippets/qmetaobject-invokable/CMakeLists.txt b/src/corelib/doc/snippets/qmetaobject-invokable/CMakeLists.txt
index 76bb79951a3..972bf43d9b1 100644
--- a/src/corelib/doc/snippets/qmetaobject-invokable/CMakeLists.txt
+++ b/src/corelib/doc/snippets/qmetaobject-invokable/CMakeLists.txt
@@ -2,13 +2,15 @@ if(NOT QT_FEATURE_widgets)
return()
endif()
-add_library(snippets_qmetaobject-invokable OBJECT)
+add_library(corelib_snippets_qmetaobject-invokable OBJECT)
-target_link_libraries(snippets_qmetaobject-invokable PRIVATE
+set_target_properties(corelib_snippets_qmetaobject-invokable PROPERTIES COMPILE_OPTIONS "-w")
+
+target_link_libraries(corelib_snippets_qmetaobject-invokable PRIVATE
Qt::Core
)
-qt_internal_extend_target(snippets_qmetaobject-invokable CONDITION QT_FEATURE_widgets
+qt_internal_extend_target(corelib_snippets_qmetaobject-invokable CONDITION QT_FEATURE_widgets
LIBRARIES
Qt::Widgets
SOURCES
diff --git a/src/corelib/doc/snippets/qmetaobject-revision/CMakeLists.txt b/src/corelib/doc/snippets/qmetaobject-revision/CMakeLists.txt
index 0cadf9380b1..369b2e15315 100644
--- a/src/corelib/doc/snippets/qmetaobject-revision/CMakeLists.txt
+++ b/src/corelib/doc/snippets/qmetaobject-revision/CMakeLists.txt
@@ -2,13 +2,15 @@ if(NOT QT_FEATURE_widgets)
return()
endif()
-add_library(snippets_qmetaobject-revision OBJECT)
+add_library(corelib_snippets_qmetaobject-revision OBJECT)
-target_link_libraries(snippets_qmetaobject-revision PRIVATE
+set_target_properties(corelib_snippets_qmetaobject-revision PROPERTIES COMPILE_OPTIONS "-w")
+
+target_link_libraries(corelib_snippets_qmetaobject-revision PRIVATE
Qt::Core
)
-qt_internal_extend_target(snippets_qmetaobject-revision CONDITION QT_FEATURE_widgets
+qt_internal_extend_target(corelib_snippets_qmetaobject-revision CONDITION QT_FEATURE_widgets
LIBRARIES
Qt::Widgets
SOURCES
diff --git a/src/corelib/doc/snippets/qprocess/CMakeLists.txt b/src/corelib/doc/snippets/qprocess/CMakeLists.txt
index 07b66d0b36b..d00e051ed9b 100644
--- a/src/corelib/doc/snippets/qprocess/CMakeLists.txt
+++ b/src/corelib/doc/snippets/qprocess/CMakeLists.txt
@@ -1,8 +1,12 @@
-add_library(snippets_qprocess OBJECT
+set(CMAKE_UNITY_BUILD OFF)
+
+add_library(corelib_snippets_qprocess OBJECT
qprocess-createprocessargumentsmodifier.cpp
qprocess-simpleexecution.cpp
)
-target_link_libraries(snippets_qprocess PRIVATE
+set_target_properties(corelib_snippets_qprocess PROPERTIES COMPILE_OPTIONS "-w")
+
+target_link_libraries(corelib_snippets_qprocess PRIVATE
Qt::Core
)
diff --git a/src/corelib/doc/snippets/qsignalmapper/CMakeLists.txt b/src/corelib/doc/snippets/qsignalmapper/CMakeLists.txt
deleted file mode 100644
index 086ddbf9c5e..00000000000
--- a/src/corelib/doc/snippets/qsignalmapper/CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-if(NOT TARGET Qt::Widgets)
- return()
-endif()
-
-add_library(snippets_qsignalmapper OBJECT
- buttonwidget.cpp
-)
-
-add_compile_definitions(EXAMPLE_ONE)
-
-target_link_libraries(snippets_qsignalmapper PRIVATE
- Qt::Core
-)
-
-qt_internal_extend_target(snippets_qsignalmapper CONDITION QT_FEATURE_widgets
- LIBRARIES
- Qt::Widgets
-)
diff --git a/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp b/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp
index 1f9e53f1385..cdbf83a977d 100644
--- a/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp
+++ b/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp
@@ -5,39 +5,40 @@
#include <QtWidgets>
-#ifdef EXAMPLE_ONE
-//! [0]
-ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent)
- : QWidget(parent)
-{
- signalMapper = new QSignalMapper(this);
+ //! [OpenCtor]
+ ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent)
+ : QWidget(parent)
+ {
+ //! [OpenCtor]
+ {
+ //![OldNotation]
+ signalMapper = new QSignalMapper(this);
- QGridLayout *gridLayout = new QGridLayout(this);
- for (int i = 0; i < texts.size(); ++i) {
- QPushButton *button = new QPushButton(texts[i]);
- connect(button, &QPushButton::clicked, signalMapper, qOverload<>(&QSignalMapper::map));
-//! [0] //! [1]
- signalMapper->setMapping(button, texts[i]);
- gridLayout->addWidget(button, i / 3, i % 3);
+ QGridLayout *gridLayout = new QGridLayout(this);
+ for (int i = 0; i < texts.size(); ++i) {
+ QPushButton *button = new QPushButton(texts[i]);
+ connect(button, &QPushButton::clicked, signalMapper, qOverload<>(&QSignalMapper::map));
+ signalMapper->setMapping(button, texts[i]);
+ gridLayout->addWidget(button, i / 3, i % 3);
+ }
+
+ connect(signalMapper, &QSignalMapper::mappedString,
+ this, &ButtonWidget::clicked);
+ //![OldNotation]
+ }
+
+ {
+ //![ModernNotation]
+ QGridLayout *gridLayout = new QGridLayout(this);
+ for (int i = 0; i < texts.size(); ++i) {
+ QString text = texts[i];
+ QPushButton *button = new QPushButton(text);
+ connect(button, &QPushButton::clicked, [this, text] { clicked(text); });
+ gridLayout->addWidget(button, i / 3, i % 3);
+ }
+ //![ModernNotation]
}
- connect(signalMapper, &QSignalMapper::mappedString,
-//! [1] //! [2]
- this, &ButtonWidget::clicked);
-}
-//! [2]
-#else
-//! [3]
-ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent)
- : QWidget(parent)
-{
- QGridLayout *gridLayout = new QGridLayout(this);
- for (int i = 0; i < texts.size(); ++i) {
- QString text = texts[i];
- QPushButton *button = new QPushButton(text);
- connect(button, &QPushButton::clicked, [this, text] { clicked(text); });
- gridLayout->addWidget(button, i / 3, i % 3);
+ //! [CloseBrackets]
}
-}
-//! [3]
-#endif
+ //! [CloseBrackets]
diff --git a/src/corelib/doc/snippets/qsignalmapper/buttonwidget.h b/src/corelib/doc/snippets/qsignalmapper/buttonwidget.h
index 537c21c9141..cd75628dc2b 100644
--- a/src/corelib/doc/snippets/qsignalmapper/buttonwidget.h
+++ b/src/corelib/doc/snippets/qsignalmapper/buttonwidget.h
@@ -4,10 +4,8 @@
#ifndef BUTTONWIDGET_H
#define BUTTONWIDGET_H
-#include <QWidget>
+#include <QtWidgets>
-class QSignalMapper;
-class QString;
//! [0]
class ButtonWidget : public QWidget
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/doc/src/objectmodel/objecttrees.qdoc b/src/corelib/doc/src/objectmodel/objecttrees.qdoc
index 8939a534d40..25245fd5de8 100644
--- a/src/corelib/doc/src/objectmodel/objecttrees.qdoc
+++ b/src/corelib/doc/src/objectmodel/objecttrees.qdoc
@@ -59,7 +59,9 @@
behavior applies. Normally, the order of destruction still doesn't
present a problem. Consider the following snippet:
- \snippet code/doc_src_objecttrees.cpp 0
+ \snippet code/doc_src_objecttrees.cpp open
+ \snippet code/doc_src_objecttrees.cpp example1
+ \snippet code/doc_src_objecttrees.cpp close
The parent, \c window, and the child, \c quit, are both \l {QObject}
{QObjects} because QPushButton inherits QWidget, and QWidget inherits
@@ -73,7 +75,9 @@
But now consider what happens if we swap the order of construction, as
shown in this second snippet:
- \snippet code/doc_src_objecttrees.cpp 1
+ \snippet code/doc_src_objecttrees.cpp open
+ \snippet code/doc_src_objecttrees.cpp example2
+ \snippet code/doc_src_objecttrees.cpp close
In this case, the order of destruction causes a problem. The parent's
destructor is called first because it was created last. It then calls
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/qfile.cpp b/src/corelib/io/qfile.cpp
index c645e57bdb6..8c22483fbfe 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2020 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:significant reason:default
#include "qplatformdefs.h"
#include "qdebug.h"
diff --git a/src/corelib/io/qfile.h b/src/corelib/io/qfile.h
index c115a6aee98..11546d87d9c 100644
--- a/src/corelib/io/qfile.h
+++ b/src/corelib/io/qfile.h
@@ -1,6 +1,7 @@
// Copyright (C) 2020 The Qt Company Ltd.
// 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
#ifndef QFILE_H
#define QFILE_H
diff --git a/src/corelib/io/qfile_p.h b/src/corelib/io/qfile_p.h
index 126da28b0f9..a50fe575f8e 100644
--- a/src/corelib/io/qfile_p.h
+++ b/src/corelib/io/qfile_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 QFILE_P_H
#define QFILE_P_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/qsavefile.cpp b/src/corelib/io/qsavefile.cpp
index 91f168f20f6..a7d101dc124 100644
--- a/src/corelib/io/qsavefile.cpp
+++ b/src/corelib/io/qsavefile.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2012 David Faure <[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:guaranteed-behavior
#include "qsavefile.h"
diff --git a/src/corelib/io/qsavefile.h b/src/corelib/io/qsavefile.h
index bf0a91bae74..5e8cffe7c38 100644
--- a/src/corelib/io/qsavefile.h
+++ b/src/corelib/io/qsavefile.h
@@ -1,5 +1,6 @@
// Copyright (C) 2012 David Faure <[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:header-decls-only
#ifndef QSAVEFILE_H
#define QSAVEFILE_H
diff --git a/src/corelib/io/qsavefile_p.h b/src/corelib/io/qsavefile_p.h
index 50ecdad2daf..e1dcc0abe23 100644
--- a/src/corelib/io/qsavefile_p.h
+++ b/src/corelib/io/qsavefile_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2013 David Faure <[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:header-decls-only
#ifndef QSAVEFILE_P_H
#define QSAVEFILE_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..038db4d857e 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"
@@ -881,6 +882,11 @@ void QTemporaryFile::setFileTemplate(const QString &name)
be used for a similar purpose too, particularly if the destination file is
not temporary.
+ \note Calling rename() does not disable autoRemove. If you want the renamed
+ file to persist, you must call setAutoRemove and set it to \c false after
+ calling rename(). Otherwise, the file will be deleted when the QTemporaryFile
+ object is destroyed.
+
\sa QSaveFile, QSaveFile::commit(), QFile::rename()
*/
bool QTemporaryFile::rename(const QString &newName)
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..1b711ba16bd 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
@@ -2562,8 +2552,9 @@ static QStringList winCmdArgs()
Otherwise, the arguments() are constructed from the return value of
\l{https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea}{GetCommandLine()}.
- As a result of this, the string given by arguments().at(0) might not be
- the program name on Windows, depending on how the application was started.
+ As a result of this, the string given by arguments().at(0)
+ might not be the exact program used to start the application
+ on Windows.
\sa applicationFilePath(), QCommandLineParser
*/
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..de5f27f9619 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
{
@@ -3149,6 +3149,20 @@ bool QMetaMethod::invokeOnGadget(void *gadget,
representation. The scope() function returns the class scope this
enumerator was declared in.
+ To use QMetaEnum functionality, register the enumerator within the meta-object
+ system using the Q_ENUM macro.
+
+ \code
+ enum AppleType {
+ Big,
+ Small
+ };
+ Q_ENUM(AppleType)
+
+ QMetaEnum metaEnum = QMetaEnum::fromType<ModelApple::AppleType>();
+ qDebug() << metaEnum.valueToKey(ModelApple::Big);
+ \endcode
+
\sa QMetaObject, QMetaMethod, QMetaProperty
*/
diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp
index 60bcdedba13..445009ea000 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(Required);
+ 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/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 1242a40f185..45c947004f5 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -981,12 +981,6 @@ void QMetaType::unregisterMetaType(QMetaType type)
than the QMetaType \a rhs, otherwise returns \c false.
*/
-/*! \internal */
-bool QMetaTypeModuleHelper::convert(const void *, int, void *, int) const
-{
- return false;
-}
-
static constexpr auto createStaticTypeToIdMap()
{
#define QT_ADD_STATIC_METATYPE(MetaTypeName, MetaTypeId, RealName) \
@@ -1049,8 +1043,8 @@ static bool qIntegerConversionFromFPHelper(From from, To *to)
return true;
}
-// NOLINTNEXTLINE(cppcoreguidelines-virtual-class-destructor): this is not a base class
-static constexpr struct : QMetaTypeModuleHelper
+namespace {
+struct QCoreVariantHelper : QMetaTypeModuleHelper
{
template<typename T, typename LiteralWrapper =
std::conditional_t<std::is_same_v<T, QString>, QLatin1StringView, const char *>>
@@ -1060,7 +1054,8 @@ static constexpr struct : QMetaTypeModuleHelper
return !(str.isEmpty() || str == LiteralWrapper("0") || str == LiteralWrapper("false"));
}
- const QtPrivate::QMetaTypeInterface *interfaceForType(int type) const override {
+ static const QtPrivate::QMetaTypeInterface *interfaceForType(int type)
+ {
switch (type) {
QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(QT_METATYPE_CONVERT_ID_TO_TYPE)
QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(QT_METATYPE_CONVERT_ID_TO_TYPE)
@@ -1072,11 +1067,14 @@ static constexpr struct : QMetaTypeModuleHelper
}
}
-#ifndef QT_BOOTSTRAPPED
- bool convert(const void *from, int fromTypeId, void *to, int toTypeId) const override
+ static bool convert(const void *from, int fromTypeId, void *to, int toTypeId)
{
Q_ASSERT(fromTypeId != toTypeId);
+#ifdef QT_BOOTSTRAPPED
+ Q_UNUSED(from);
+ Q_UNUSED(to);
+#else
// canConvert calls with two nullptr
bool onlyCheck = (from == nullptr && to == nullptr);
@@ -1747,26 +1745,28 @@ QT_WARNING_DISABLE_CLANG("-Wtautological-compare")
QT_WARNING_POP
}
+#endif // !QT_BOOTSTRAPPED
return false;
}
-#endif // !QT_BOOTSTRAPPED
-} metatypeHelper = {};
+};
+} // unnamed namespace
-Q_CONSTINIT Q_CORE_EXPORT const QMetaTypeModuleHelper *qMetaTypeGuiHelper = nullptr;
-Q_CONSTINIT Q_CORE_EXPORT const QMetaTypeModuleHelper *qMetaTypeWidgetsHelper = nullptr;
+Q_CONSTINIT Q_CORE_EXPORT QMetaTypeModuleHelper qMetaTypeGuiHelper = {};
+Q_CONSTINIT Q_CORE_EXPORT QMetaTypeModuleHelper qMetaTypeWidgetsHelper = {};
-static const QMetaTypeModuleHelper *qModuleHelperForType(int type)
+#ifndef QT_BOOTSTRAPPED
+static bool tryConvertBuiltinTypes(const void *from, int fromTypeId, void *to, int toTypeId)
{
+ int type = qMax(fromTypeId, toTypeId);
if (type <= QMetaType::LastCoreType)
- return &metatypeHelper;
+ return QCoreVariantHelper::convert(from, fromTypeId, to, toTypeId);
if (type >= QMetaType::FirstGuiType && type <= QMetaType::LastGuiType)
- return qMetaTypeGuiHelper;
+ return qMetaTypeGuiHelper.convert(from, fromTypeId, to, toTypeId);
else if (type >= QMetaType::FirstWidgetsType && type <= QMetaType::LastWidgetsType)
- return qMetaTypeWidgetsHelper;
- return nullptr;
+ return qMetaTypeWidgetsHelper.convert(from, fromTypeId, to, toTypeId);
+ return false;
}
-#ifndef QT_BOOTSTRAPPED
template<typename T, typename Key>
class QMetaTypeFunctionRegistry
{
@@ -2471,10 +2471,8 @@ bool QMetaType::convert(QMetaType fromType, const void *from, QMetaType toType,
int fromTypeId = fromType.id();
int toTypeId = toType.id();
- if (auto moduleHelper = qModuleHelperForType(qMax(fromTypeId, toTypeId))) {
- if (moduleHelper->convert(from, fromTypeId, to, toTypeId))
- return true;
- }
+ if (tryConvertBuiltinTypes(from, fromTypeId, to, toTypeId))
+ return true;
const auto f = customTypesConversionRegistry()->function({fromTypeId, toTypeId});
if (f)
return (*f)(from, to);
@@ -2676,10 +2674,9 @@ bool QMetaType::canConvert(QMetaType fromType, QMetaType toType)
if (fromTypeId == toTypeId)
return true;
- if (auto moduleHelper = qModuleHelperForType(qMax(fromTypeId, toTypeId))) {
- if (moduleHelper->convert(nullptr, fromTypeId, nullptr, toTypeId))
- return true;
- }
+ if (tryConvertBuiltinTypes(nullptr, fromTypeId, nullptr, toTypeId))
+ return true;
+
const ConverterFunction * const f =
customTypesConversionRegistry()->function(std::make_pair(fromTypeId, toTypeId));
if (f)
@@ -2879,8 +2876,12 @@ void QMetaType::registerNormalizedTypedef(const NS(QByteArray) & normalizedTypeN
static const QtPrivate::QMetaTypeInterface *interfaceForStaticType(int typeId)
{
Q_ASSERT(typeId < QMetaType::User);
- if (auto moduleHelper = qModuleHelperForType(typeId))
- return moduleHelper->interfaceForType(typeId);
+ if (typeId <= QMetaType::LastCoreType)
+ return QCoreVariantHelper::interfaceForType(typeId);
+ if (typeId >= QMetaType::FirstGuiType && typeId <= QMetaType::LastGuiType)
+ return qMetaTypeGuiHelper.interfaceForType(typeId);
+ if (typeId >= QMetaType::FirstWidgetsType && typeId <= QMetaType::LastWidgetsType)
+ return qMetaTypeWidgetsHelper.interfaceForType(typeId);
return nullptr;
}
@@ -2909,40 +2910,18 @@ bool QMetaType::isRegistered(int type)
return interfaceForTypeNoWarning(type) != nullptr;
}
-namespace {
-enum NormalizeTypeMode {
- DontNormalizeType,
- TryNormalizeType
-};
-}
-template <NormalizeTypeMode tryNormalizedType> static inline
-const QtPrivate::QMetaTypeInterface *qMetaTypeTypeImpl(QByteArrayView name)
+static const QtPrivate::QMetaTypeInterface *findMetaTypeByName(QByteArrayView name)
{
- if (name.isEmpty())
- return nullptr;
-
+ Q_PRE(!name.isEmpty());
int type = qMetaTypeStaticType(name);
if (type != QMetaType::UnknownType) {
return interfaceForStaticType(type);
#ifndef QT_BOOTSTRAPPED
- } else {
- QReadLocker locker(&customTypeRegistry()->lock);
+ } else if (customTypeRegistry.exists()) {
+ QReadLocker locker(&customTypeRegistry->lock);
auto it = customTypeRegistry->aliases.constFind(name);
if (it != customTypeRegistry->aliases.constEnd())
return it.value().data();
-
-#ifndef QT_NO_QOBJECT
- if (tryNormalizedType) {
- const char *typeName = name.constData();
- const NS(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName);
- type = qMetaTypeStaticType(normalizedTypeName);
- if (type == QMetaType::UnknownType) {
- return customTypeRegistry->aliases.value(normalizedTypeName).data();
- } else {
- return interfaceForStaticType(type);
- }
- }
-#endif
#endif
}
return nullptr;
@@ -2969,7 +2948,9 @@ const QtPrivate::QMetaTypeInterface *qMetaTypeTypeImpl(QByteArrayView name)
*/
int qMetaTypeTypeInternal(QByteArrayView name)
{
- const QtPrivate::QMetaTypeInterface *iface = qMetaTypeTypeImpl<DontNormalizeType>(name);
+ const QtPrivate::QMetaTypeInterface *iface = nullptr;
+ if (!name.isEmpty())
+ iface = findMetaTypeByName(name);
return iface ? iface->typeId.loadRelaxed() : QMetaType::UnknownType;
}
@@ -3138,7 +3119,20 @@ QMetaType QMetaType::underlyingType() const
*/
QMetaType QMetaType::fromName(QByteArrayView typeName)
{
- return QMetaType(qMetaTypeTypeImpl<TryNormalizeType>(typeName));
+ if (typeName.isEmpty())
+ return QMetaType();
+
+ const QtPrivate::QMetaTypeInterface *iface = findMetaTypeByName(typeName);
+ if (iface)
+ return QMetaType(iface);
+
+#if !defined(QT_NO_QOBJECT)
+ const NS(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName.constData());
+ if (normalizedTypeName != typeName)
+ iface = findMetaTypeByName(normalizedTypeName);
+#endif
+
+ return QMetaType(iface);
}
/*!
diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h
index c05bce5fc8f..b39e1de0be2 100644
--- a/src/corelib/kernel/qmetatype_p.h
+++ b/src/corelib/kernel/qmetatype_p.h
@@ -40,25 +40,29 @@ QT_BEGIN_NAMESPACE
assign_and_return \
}
-class Q_CORE_EXPORT QMetaTypeModuleHelper
+struct QMetaTypeModuleHelper
{
- Q_DISABLE_COPY_MOVE(QMetaTypeModuleHelper)
-protected:
- QMetaTypeModuleHelper() = default;
- ~QMetaTypeModuleHelper() = default;
-public:
- Q_WEAK_OVERLOAD // prevent it from entering the ABI and rendering constexpr useless
static constexpr auto makePair(int from, int to) -> quint64
{
return (quint64(from) << 32) + quint64(to);
}
- virtual const QtPrivate::QMetaTypeInterface *interfaceForType(int) const = 0;
- virtual bool convert(const void *, int, void *, int) const;
+ static const QtPrivate::QMetaTypeInterface *interfaceForType_dummy(int)
+ {
+ return nullptr;
+ }
+
+ static bool convert_dummy(const void *, int, void *, int)
+ {
+ return false;
+ }
+
+ decltype(&interfaceForType_dummy) interfaceForType = &interfaceForType_dummy;
+ decltype(&convert_dummy) convert = &convert_dummy;
};
-extern Q_CORE_EXPORT const QMetaTypeModuleHelper *qMetaTypeGuiHelper;
-extern Q_CORE_EXPORT const QMetaTypeModuleHelper *qMetaTypeWidgetsHelper;
+extern Q_CORE_EXPORT QMetaTypeModuleHelper qMetaTypeGuiHelper;
+extern Q_CORE_EXPORT QMetaTypeModuleHelper qMetaTypeWidgetsHelper;
namespace QtMetaTypePrivate {
template<typename T>
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/qsignalmapper.cpp b/src/corelib/kernel/qsignalmapper.cpp
index 65d766db4a9..96e909d1be7 100644
--- a/src/corelib/kernel/qsignalmapper.cpp
+++ b/src/corelib/kernel/qsignalmapper.cpp
@@ -74,9 +74,9 @@ public:
The only function that we need to implement is the constructor:
- \snippet qsignalmapper/buttonwidget.cpp 0
- \snippet qsignalmapper/buttonwidget.cpp 1
- \snippet qsignalmapper/buttonwidget.cpp 2
+ \snippet qsignalmapper/buttonwidget.cpp OpenCtor
+ \snippet qsignalmapper/buttonwidget.cpp OldNotation
+ \snippet qsignalmapper/buttonwidget.cpp CloseBrackets
A list of texts is passed to the constructor. A signal mapper is
constructed and for each text in the list a QPushButton is
@@ -92,7 +92,9 @@ public:
slots. The example above can be rewritten simpler without QSignalMapper
by connecting to a lambda function.
- \snippet qsignalmapper/buttonwidget.cpp 3
+ \snippet qsignalmapper/buttonwidget.cpp OpenCtor
+ \snippet qsignalmapper/buttonwidget.cpp ModernNotation
+ \snippet qsignalmapper/buttonwidget.cpp CloseBrackets
\sa QObject, QButtonGroup, QActionGroup
*/
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index 47483dc6470..c8348aba16a 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -39,6 +39,8 @@
#include <vector>
#include <memory>
+#include <QtCore/qmutex.h>
+
QT_BEGIN_NAMESPACE
Q_STATIC_LOGGING_CATEGORY(lcTranslator, "qt.core.qtranslator")
@@ -259,6 +261,8 @@ class QTranslatorPrivate : public QObjectPrivate
public:
enum { Contexts = 0x2f, Hashes = 0x42, Messages = 0x69, NumerusRules = 0x88, Dependencies = 0x96, Language = 0xa7 };
+ mutable QMutex lock;
+
QTranslatorPrivate() :
#if defined(QT_USE_MMAP)
used_mmap(0),
@@ -463,12 +467,7 @@ 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));
-
+ QMutexLocker locker(&d->lock);
d->clear();
QString prefix;
@@ -744,12 +743,7 @@ 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));
-
+ QMutexLocker locker(&d->lock);
d->clear();
return d->load_translation(locale, filename, prefix, directory, suffix);
}
@@ -769,12 +763,7 @@ 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));
-
+ QMutexLocker locker(&d->lock);
d->clear();
if (!data || len < MagicLength || memcmp(data, magic, MagicLength))
@@ -1048,6 +1037,7 @@ searchDependencies:
void QTranslatorPrivate::clear()
{
+ Q_Q(QTranslator);
if (unmapPointer && unmapLength) {
#if defined(QT_USE_MMAP)
if (used_mmap) {
@@ -1075,9 +1065,15 @@ void QTranslatorPrivate::clear()
language.clear();
filePath.clear();
+
+ if (QCoreApplicationPrivate::isTranslatorInstalled(q))
+ QCoreApplication::postEvent(QCoreApplication::instance(),
+ new QEvent(QEvent::LanguageChange));
}
/*!
+ \threadsafe
+
Returns the translation for the key (\a context, \a sourceText,
\a disambiguation). If none is found, also tries (\a context, \a
sourceText, ""). If that still fails, returns a null string.
@@ -1099,7 +1095,14 @@ QString QTranslator::translate(const char *context, const char *sourceText, cons
int n) const
{
Q_D(const QTranslator);
- return d->do_translate(context, sourceText, disambiguation, n);
+
+ // Return early to avoid a deadlock in case translate() is called
+ // from a code path triggered by QTranslator::load()
+ if (!d->lock.tryLock())
+ return QString();
+ QString result = d->do_translate(context, sourceText, disambiguation, n);
+ d->lock.unlock();
+ return result;
}
/*!
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index 31f5869c9d9..e9d3ffb9ae3 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -332,7 +332,16 @@ public:
inline void swap(QVariant &other) noexcept { std::swap(d, other.d); }
int userType() const { return typeId(); }
- int typeId() const { return metaType().id(); }
+ int typeId() const
+ {
+ // QVariant types are always registered (see fromMetaType())
+ const QtPrivate::QMetaTypeInterface *mt = metaType().iface();
+ if (!mt)
+ return 0;
+ int id = mt->typeId.loadRelaxed();
+ // Q_ASSUME(id > 0);
+ return id;
+ }
const char *typeName() const;
QMetaType metaType() const;
diff --git a/src/corelib/platform/windows/qt_winrtbase_p.h b/src/corelib/platform/windows/qt_winrtbase_p.h
index fb7366f93de..79c2bdf6b1c 100644
--- a/src/corelib/platform/windows/qt_winrtbase_p.h
+++ b/src/corelib/platform/windows/qt_winrtbase_p.h
@@ -18,6 +18,7 @@
#include <QtCore/qglobal.h>
#if QT_CONFIG(cpp_winrt)
+# include <guiddef.h> // required by clang-cl: https://github.com/microsoft/cppwinrt/issues/1179
# include <winrt/base.h>
# include <QtCore/private/qfactorycacheregistration_p.h>
// Workaround for Windows SDK bug.
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/thread/qatomicwait.cpp b/src/corelib/thread/qatomicwait.cpp
index 3d70333ca7b..25ca771643b 100644
--- a/src/corelib/thread/qatomicwait.cpp
+++ b/src/corelib/thread/qatomicwait.cpp
@@ -4,6 +4,7 @@
#include "qatomicwait_p.h"
#include <qendian.h>
+#include "qfutex_p.h"
#include "qwaitcondition_p.h"
#include <array>
@@ -96,8 +97,21 @@ struct QAtomicWaitLocks
};
} // unnamed namespace
+static inline void checkFutexUse()
+{
+#if !defined(QATOMICWAIT_USE_FALLBACK)
+ if (QtFutex::futexAvailable()) {
+ // This will disable the code and data on systems where futexes are
+ // always available (currently: FreeBSD, Linux, Windows).
+ qFatal("Implementation should have used futex!");
+ }
+#endif
+}
+
static QAtomicWaitLocks &atomicLocks() noexcept
{
+ checkFutexUse();
+
static QAtomicWaitLocks global {};
return global;
}
diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp
index bd3b269c0b7..832d87332b0 100644
--- a/src/corelib/thread/qmutex.cpp
+++ b/src/corelib/thread/qmutex.cpp
@@ -120,8 +120,8 @@ void QBasicMutex::destroyInternal(void *ptr)
Locks the mutex. If another thread has locked the mutex then this
call will block until that thread has unlocked it.
- Calling this function multiple times on the same mutex from the
- same thread will cause a \e dead-lock.
+ If the mutex was already locked by the current thread, this call will
+ never return, causing a \e dead-lock.
\sa unlock()
*/
@@ -140,9 +140,6 @@ void QBasicMutex::destroyInternal(void *ptr)
If the lock was obtained, the mutex must be unlocked with unlock()
before another thread can successfully lock it.
- Calling this function multiple times on the same mutex from the
- same thread will cause a \e dead-lock.
-
\sa lock(), unlock()
*/
@@ -157,9 +154,6 @@ void QBasicMutex::destroyInternal(void *ptr)
If the lock was obtained, the mutex must be unlocked with unlock()
before another thread can successfully lock it.
- Calling this function multiple times on the same mutex from the
- same thread will cause a \e dead-lock.
-
\sa lock(), unlock()
*/
@@ -172,9 +166,6 @@ void QBasicMutex::destroyInternal(void *ptr)
If the lock was obtained, the mutex must be unlocked with unlock()
before another thread can successfully lock it.
- Calling this function multiple times on the same mutex from the
- same thread will cause a \e dead-lock.
-
\sa lock(), unlock()
*/
@@ -202,9 +193,6 @@ void QBasicMutex::destroyInternal(void *ptr)
If the lock was obtained, the mutex must be unlocked with unlock()
before another thread can successfully lock it.
- Calling this function multiple times on the same mutex from the
- same thread will cause a \e dead-lock.
-
\sa lock(), unlock()
*/
@@ -222,9 +210,6 @@ void QBasicMutex::destroyInternal(void *ptr)
If the lock was obtained, the mutex must be unlocked with unlock()
before another thread can successfully lock it.
- Calling this function multiple times on the same mutex from the
- same thread will cause a \e dead-lock.
-
\sa lock(), unlock()
*/
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/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/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index a9d334e28f3..e0c0110b794 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -592,7 +592,10 @@ class QWeakPointer
{
typedef QtSharedPointer::ExternalRefCountData Data;
template <typename X>
- using IfCompatible = typename std::enable_if<std::is_convertible<X*, T*>::value, bool>::type;
+ using IfCompatible = std::enable_if_t<std::conjunction_v<
+ std::negation<std::is_same<T, X>>, // don't make accidental copy/move SMFs
+ std::is_convertible<X*, T*>
+ >, bool>;
template <typename X>
using IfVirtualBase = typename std::enable_if<qxp::is_virtual_base_of_v<T, X>, bool>::type;
@@ -768,6 +771,11 @@ private:
{ return *this = QWeakPointer<T>(ptr, true); }
#ifndef QT_NO_QOBJECT
+ Q_NODISCARD_CTOR
+ QWeakPointer(T *ptr, bool)
+ : d{ptr ? Data::getAndRef(ptr) : nullptr}, value{ptr}
+ { }
+
template <class X, IfCompatible<X> = true>
Q_NODISCARD_CTOR
inline QWeakPointer(X *ptr, bool) : d(ptr ? Data::getAndRef(ptr) : nullptr), value(ptr)