summaryrefslogtreecommitdiffstats
path: root/contrib/python
diff options
context:
space:
mode:
authorAlexSm <[email protected]>2024-02-12 10:25:32 +0100
committerGitHub <[email protected]>2024-02-12 10:25:32 +0100
commit12610a7bf38a4f1215aeb6eeea5e27e271c17e50 (patch)
treefce5b3816c5d68d91d7f1f6617c65b04e92f79a9 /contrib/python
parentb314cf4cbae67afc30e1f9c2f14047de0ad996cb (diff)
parent6a0655781d6103303eed0d377c3fb0955e468b5b (diff)
Merge pull request #1777 from alexv-smirnov/mergelibs13
Library import 13
Diffstat (limited to 'contrib/python')
-rw-r--r--contrib/python/MarkupSafe/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/MarkupSafe/py3/markupsafe/__init__.py45
-rw-r--r--contrib/python/MarkupSafe/py3/ya.make2
-rw-r--r--contrib/python/argcomplete/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete1
-rw-r--r--contrib/python/argcomplete/py3/ya.make2
-rw-r--r--contrib/python/clickhouse-connect/.dist-info/METADATA7
-rw-r--r--contrib/python/clickhouse-connect/README.md2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/__version__.py2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py8
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py6
-rw-r--r--contrib/python/clickhouse-connect/ya.make2
-rw-r--r--contrib/python/google-auth/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py35
-rw-r--r--contrib/python/google-auth/py3/google/auth/version.py2
-rw-r--r--contrib/python/google-auth/py3/google/oauth2/credentials.py42
-rw-r--r--contrib/python/google-auth/py3/google/oauth2/id_token.py3
-rw-r--r--contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py61
-rw-r--r--contrib/python/google-auth/py3/tests/oauth2/test_credentials.py7
-rw-r--r--contrib/python/google-auth/py3/ya.make2
-rw-r--r--contrib/python/hypothesis/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/hypothesis/py3/_hypothesis_globals.py4
-rw-r--r--contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py8
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/configuration.py29
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/control.py6
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/core.py10
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/compat.py21
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py38
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py2
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py18
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py3
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/observability.py2
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/internal/reflection.py11
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py58
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py19
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/version.py2
-rw-r--r--contrib/python/hypothesis/py3/ya.make2
-rw-r--r--contrib/python/matplotlib/py3/src/_image_resample.h2
-rw-r--r--contrib/python/numpy/include/numpy/core/feature_detection_misc.h5
-rw-r--r--contrib/python/numpy/py3/.dist-info/METADATA7
-rw-r--r--contrib/python/numpy/py3/LICENSES_bundled.txt5
-rw-r--r--contrib/python/numpy/py3/numpy/__config__.py.in22
-rw-r--r--contrib/python/numpy/py3/numpy/array_api/__init__.py2
-rw-r--r--contrib/python/numpy/py3/numpy/array_api/linalg.py6
-rw-r--r--contrib/python/numpy/py3/numpy/core/code_generators/genapi.py9
-rw-r--r--contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py7
-rw-r--r--contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py7
-rw-r--r--contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h3
-rw-r--r--contrib/python/numpy/py3/numpy/core/generate_numpy_api.py251
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c4
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c5
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c3
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c174
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src14
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c64
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src24
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c770
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src3
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c30
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src9
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c974
-rw-r--r--contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src7
-rw-r--r--contrib/python/numpy/py3/numpy/core/tests/test_numeric.py9
-rw-r--r--[-rwxr-xr-x]contrib/python/numpy/py3/numpy/f2py/crackfortran.py0
-rw-r--r--[-rwxr-xr-x]contrib/python/numpy/py3/numpy/f2py/f2py2e.py0
-rw-r--r--[-rwxr-xr-x]contrib/python/numpy/py3/numpy/f2py/rules.py0
-rw-r--r--contrib/python/numpy/py3/numpy/f2py/tests/util.py1
-rw-r--r--contrib/python/numpy/py3/numpy/lib/function_base.py3
-rw-r--r--contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py4
-rw-r--r--contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp4
-rw-r--r--contrib/python/numpy/py3/numpy/random/ya.make1
-rw-r--r--[-rwxr-xr-x]contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py0
-rw-r--r--[-rwxr-xr-x]contrib/python/numpy/py3/numpy/testing/setup.py0
-rw-r--r--contrib/python/numpy/py3/numpy/tests/test_public_api.py2
-rw-r--r--contrib/python/numpy/py3/numpy/tests/test_warnings.py5
-rw-r--r--contrib/python/numpy/py3/numpy/typing/tests/test_typing.py2
-rw-r--r--contrib/python/numpy/py3/numpy/version.py2
-rw-r--r--contrib/python/numpy/py3/tests/ya.make6
-rw-r--r--contrib/python/numpy/py3/ya.make3
-rw-r--r--contrib/python/pluggy/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/pluggy/py3/pluggy/__init__.py6
-rw-r--r--contrib/python/pluggy/py3/pluggy/_callers.py39
-rw-r--r--contrib/python/pluggy/py3/pluggy/_hooks.py22
-rw-r--r--contrib/python/pluggy/py3/pluggy/_manager.py18
-rw-r--r--contrib/python/pluggy/py3/pluggy/_result.py15
-rw-r--r--contrib/python/pluggy/py3/pluggy/_version.py16
-rw-r--r--contrib/python/pluggy/py3/pluggy/_warnings.py27
-rw-r--r--contrib/python/pluggy/py3/ya.make3
-rw-r--r--contrib/python/pytz/py2/.dist-info/METADATA3
-rw-r--r--contrib/python/pytz/py2/pytz/__init__.py4
-rw-r--r--contrib/python/pytz/py2/pytz/tests/test_tzinfo.py4
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Godthabbin1903 -> 1889 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelonbin1652 -> 1652 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Montrealbin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Nassaubin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigonbin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Nuukbin1903 -> 1889 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysundbin1902 -> 1935 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Baybin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/America/Torontobin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Caseybin370 -> 423 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostokbin151 -> 213 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almatybin983 -> 983 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gazabin3808 -> 3844 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebronbin3836 -> 3872 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minhbin337 -> 337 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanaybin997 -> 1025 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigonbin337 -> 337 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/Canada/Easternbin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab17
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/leapseconds19
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi3961
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/zone.tab24
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab29
-rw-r--r--contrib/python/pytz/py2/pytz/zoneinfo/zonenow.tab303
-rw-r--r--contrib/python/pytz/py2/ya.make3
-rw-r--r--contrib/python/pytz/py3/.dist-info/METADATA3
-rw-r--r--contrib/python/pytz/py3/pytz/__init__.py4
-rw-r--r--contrib/python/pytz/py3/pytz/tests/test_tzinfo.py4
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Godthabbin1903 -> 1889 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelonbin1652 -> 1652 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Montrealbin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Nassaubin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigonbin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Nuukbin1903 -> 1889 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysundbin1902 -> 1935 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Baybin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/America/Torontobin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Caseybin370 -> 423 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostokbin151 -> 213 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almatybin983 -> 983 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gazabin3808 -> 3844 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebronbin3836 -> 3872 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minhbin337 -> 337 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanaybin997 -> 1025 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigonbin337 -> 337 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/Canada/Easternbin3494 -> 3494 bytes
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab17
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/leapseconds19
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi3961
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/zone.tab24
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab29
-rw-r--r--contrib/python/pytz/py3/pytz/zoneinfo/zonenow.tab303
-rw-r--r--contrib/python/pytz/py3/ya.make3
-rw-r--r--contrib/python/types-protobuf/.dist-info/METADATA4
-rw-r--r--contrib/python/types-protobuf/google-stubs/py.typed1
-rw-r--r--contrib/python/types-protobuf/ya.make3
-rw-r--r--contrib/python/wcwidth/py2/.dist-info/METADATA10
-rw-r--r--contrib/python/wcwidth/py2/README.rst8
-rw-r--r--contrib/python/wcwidth/py2/tests/test_core.py57
-rw-r--r--contrib/python/wcwidth/py2/tests/test_table_integrity.py15
-rw-r--r--contrib/python/wcwidth/py2/wcwidth/__init__.py2
-rw-r--r--contrib/python/wcwidth/py2/wcwidth/table_wide.py148
-rw-r--r--contrib/python/wcwidth/py2/wcwidth/table_zero.py40
-rw-r--r--contrib/python/wcwidth/py2/wcwidth/wcwidth.py7
-rw-r--r--contrib/python/wcwidth/py2/ya.make2
157 files changed, 6746 insertions, 5354 deletions
diff --git a/contrib/python/MarkupSafe/py3/.dist-info/METADATA b/contrib/python/MarkupSafe/py3/.dist-info/METADATA
index bced1652399..c221b8e50e5 100644
--- a/contrib/python/MarkupSafe/py3/.dist-info/METADATA
+++ b/contrib/python/MarkupSafe/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: MarkupSafe
-Version: 2.1.3
+Version: 2.1.4
Summary: Safely add untrusted strings to HTML/XML markup.
Home-page: https://palletsprojects.com/p/markupsafe/
Maintainer: Pallets
diff --git a/contrib/python/MarkupSafe/py3/markupsafe/__init__.py b/contrib/python/MarkupSafe/py3/markupsafe/__init__.py
index 21d31960385..2f401a81539 100644
--- a/contrib/python/MarkupSafe/py3/markupsafe/__init__.py
+++ b/contrib/python/MarkupSafe/py3/markupsafe/__init__.py
@@ -1,5 +1,4 @@
import functools
-import re
import string
import sys
import typing as t
@@ -14,10 +13,7 @@ if t.TYPE_CHECKING:
_P = te.ParamSpec("_P")
-__version__ = "2.1.3"
-
-_strip_comments_re = re.compile(r"<!--.*?-->", re.DOTALL)
-_strip_tags_re = re.compile(r"<.*?>", re.DOTALL)
+__version__ = "2.1.4"
def _simple_escaping_wrapper(func: "t.Callable[_P, str]") -> "t.Callable[_P, Markup]":
@@ -162,10 +158,41 @@ class Markup(str):
>>> Markup("Main &raquo;\t<em>About</em>").striptags()
'Main » About'
"""
- # Use two regexes to avoid ambiguous matches.
- value = _strip_comments_re.sub("", self)
- value = _strip_tags_re.sub("", value)
- value = " ".join(value.split())
+ # collapse spaces
+ value = " ".join(self.split())
+
+ # Look for comments then tags separately. Otherwise, a comment that
+ # contains a tag would end early, leaving some of the comment behind.
+
+ while True:
+ # keep finding comment start marks
+ start = value.find("<!--")
+
+ if start == -1:
+ break
+
+ # find a comment end mark beyond the start, otherwise stop
+ end = value.find("-->", start)
+
+ if end == -1:
+ break
+
+ value = f"{value[:start]}{value[end + 3:]}"
+
+ # remove tags using the same method
+ while True:
+ start = value.find("<")
+
+ if start == -1:
+ break
+
+ end = value.find(">", start)
+
+ if end == -1:
+ break
+
+ value = f"{value[:start]}{value[end + 1:]}"
+
return self.__class__(value).unescape()
@classmethod
diff --git a/contrib/python/MarkupSafe/py3/ya.make b/contrib/python/MarkupSafe/py3/ya.make
index 453504e5726..3583a8035e2 100644
--- a/contrib/python/MarkupSafe/py3/ya.make
+++ b/contrib/python/MarkupSafe/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(2.1.3)
+VERSION(2.1.4)
LICENSE(BSD-3-Clause)
diff --git a/contrib/python/argcomplete/py3/.dist-info/METADATA b/contrib/python/argcomplete/py3/.dist-info/METADATA
index c86dfbcaf55..4fe1c2bb9ee 100644
--- a/contrib/python/argcomplete/py3/.dist-info/METADATA
+++ b/contrib/python/argcomplete/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: argcomplete
-Version: 3.2.1
+Version: 3.2.2
Summary: Bash tab completion for argparse
Home-page: https://github.com/kislyuk/argcomplete
Author: Andrey Kislyuk
diff --git a/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete b/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete
index 3023ff289ed..502bf5effc6 100644
--- a/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete
+++ b/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete
@@ -144,6 +144,7 @@ _python_argcomplete_global() {
__python_argcomplete_expand_tilde_by_ref executable
else
executable="${words[1]}"
+ __python_argcomplete_expand_tilde_by_ref executable
req_argv=( "${words[@]:1}" )
fi
diff --git a/contrib/python/argcomplete/py3/ya.make b/contrib/python/argcomplete/py3/ya.make
index ceca768f4d3..4f82b20e4e8 100644
--- a/contrib/python/argcomplete/py3/ya.make
+++ b/contrib/python/argcomplete/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(3.2.1)
+VERSION(3.2.2)
LICENSE(Apache-2.0)
diff --git a/contrib/python/clickhouse-connect/.dist-info/METADATA b/contrib/python/clickhouse-connect/.dist-info/METADATA
index 7d7c0d18416..59c9d0db259 100644
--- a/contrib/python/clickhouse-connect/.dist-info/METADATA
+++ b/contrib/python/clickhouse-connect/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: clickhouse-connect
-Version: 0.6.23
+Version: 0.7.0
Summary: ClickHouse Database Core Driver for Python, Pandas, and Superset
Home-page: https://github.com/ClickHouse/clickhouse-connect
Author: ClickHouse Inc.
@@ -10,12 +10,11 @@ Keywords: clickhouse,superset,sqlalchemy,http,driver
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
-Requires-Python: ~=3.7
+Requires-Python: ~=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: certifi
@@ -52,7 +51,7 @@ ClickHouse Connect currently uses the ClickHouse HTTP interface for maximum comp
pip install clickhouse-connect
```
-ClickHouse Connect requires Python 3.7 or higher.
+ClickHouse Connect requires Python 3.8 or higher.
### Superset Connectivity
diff --git a/contrib/python/clickhouse-connect/README.md b/contrib/python/clickhouse-connect/README.md
index 4298c161c9c..59f419e3f21 100644
--- a/contrib/python/clickhouse-connect/README.md
+++ b/contrib/python/clickhouse-connect/README.md
@@ -16,7 +16,7 @@ ClickHouse Connect currently uses the ClickHouse HTTP interface for maximum comp
pip install clickhouse-connect
```
-ClickHouse Connect requires Python 3.7 or higher.
+ClickHouse Connect requires Python 3.8 or higher.
### Superset Connectivity
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
index 35ae43369d8..861cc502994 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
@@ -1 +1 @@
-version = '0.6.23'
+version = '0.7.0'
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py
index 3ec8f0a1091..d8936e67c23 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py
@@ -40,7 +40,7 @@ class ChInspector(Inspector):
raise NoResultFound(f'Table {full_table} does not exist')
columns = []
for row in result_set:
- sqla_type = sqla_type_from_name(row.type)
+ sqla_type = sqla_type_from_name(row.type.replace('\n', ''))
col = {'name': row.name,
'type': sqla_type,
'nullable': sqla_type.nullable,
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py
index c8fa9e6116f..7d72b95aa31 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py
@@ -74,7 +74,7 @@ class HttpClient(Client):
"""
self.url = f'{interface}://{host}:{port}'
self.headers = {}
- ch_settings = settings or {}
+ ch_settings = dict_copy(settings, self.params)
self.http = pool_mgr
if interface == 'https':
if not https_proxy:
@@ -113,7 +113,11 @@ class HttpClient(Client):
self._read_format = self._write_format = 'Native'
self._transform = NativeTransform()
- connect_timeout, send_receive_timeout = coerce_int(connect_timeout), coerce_int(send_receive_timeout)
+ # There is use cases when client need to disable timeouts.
+ if connect_timeout is not None:
+ connect_timeout = coerce_int(connect_timeout)
+ if send_receive_timeout is not None:
+ send_receive_timeout = coerce_int(send_receive_timeout)
self.timeout = Timeout(connect=connect_timeout, read=send_receive_timeout)
self.http_retries = 1
self._send_progress = None
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py
index 054c7b686a3..38407d1c63c 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py
@@ -16,8 +16,12 @@ class ColumnDef(NamedTuple):
ttl_expression: str
@property
+ def type_name(self):
+ return self.type.replace('\n', '').strip()
+
+ @property
def ch_type(self):
- return get_from_name(self.type)
+ return get_from_name(self.type_name)
class SettingDef(NamedTuple):
diff --git a/contrib/python/clickhouse-connect/ya.make b/contrib/python/clickhouse-connect/ya.make
index 5087f8af8a6..7db828de236 100644
--- a/contrib/python/clickhouse-connect/ya.make
+++ b/contrib/python/clickhouse-connect/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(0.6.23)
+VERSION(0.7.0)
LICENSE(Apache-2.0)
diff --git a/contrib/python/google-auth/py3/.dist-info/METADATA b/contrib/python/google-auth/py3/.dist-info/METADATA
index 2820e8856dd..48bac82c9db 100644
--- a/contrib/python/google-auth/py3/.dist-info/METADATA
+++ b/contrib/python/google-auth/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: google-auth
-Version: 2.26.2
+Version: 2.27.0
Summary: Google Authentication Library
Home-page: https://github.com/googleapis/google-auth-library-python
Author: Google Cloud Platform
diff --git a/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py b/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py
index a035c7697af..7541c1d8cfa 100644
--- a/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py
+++ b/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py
@@ -32,7 +32,11 @@ from google.auth.transport import requests as google_auth_requests
from google.oauth2 import _client
-class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject):
+class Credentials(
+ credentials.Scoped,
+ credentials.CredentialsWithQuotaProject,
+ credentials.CredentialsWithUniverseDomain,
+):
"""Compute Engine Credentials.
These credentials use the Google Compute Engine metadata server to obtain
@@ -57,6 +61,7 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject):
quota_project_id=None,
scopes=None,
default_scopes=None,
+ universe_domain=None,
):
"""
Args:
@@ -68,6 +73,10 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject):
scopes (Optional[Sequence[str]]): The list of scopes for the credentials.
default_scopes (Optional[Sequence[str]]): Default scopes passed by a
Google client library. Use 'scopes' for user-defined scopes.
+ universe_domain (Optional[str]): The universe domain. If not
+ provided or None, credential will attempt to fetch the value
+ from metadata server. If metadata server doesn't have universe
+ domain endpoint, then the default googleapis.com will be used.
"""
super(Credentials, self).__init__()
self._service_account_email = service_account_email
@@ -76,6 +85,9 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject):
self._default_scopes = default_scopes
self._universe_domain_cached = False
self._universe_domain_request = google_auth_requests.Request()
+ if universe_domain:
+ self._universe_domain = universe_domain
+ self._universe_domain_cached = True
def _retrieve_info(self, request):
"""Retrieve information about the service account.
@@ -146,23 +158,40 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject):
@_helpers.copy_docstring(credentials.CredentialsWithQuotaProject)
def with_quota_project(self, quota_project_id):
- return self.__class__(
+ creds = self.__class__(
service_account_email=self._service_account_email,
quota_project_id=quota_project_id,
scopes=self._scopes,
+ default_scopes=self._default_scopes,
)
+ creds._universe_domain = self._universe_domain
+ creds._universe_domain_cached = self._universe_domain_cached
+ return creds
@_helpers.copy_docstring(credentials.Scoped)
def with_scopes(self, scopes, default_scopes=None):
# Compute Engine credentials can not be scoped (the metadata service
# ignores the scopes parameter). App Engine, Cloud Run and Flex support
# requesting scopes.
- return self.__class__(
+ creds = self.__class__(
scopes=scopes,
default_scopes=default_scopes,
service_account_email=self._service_account_email,
quota_project_id=self._quota_project_id,
)
+ creds._universe_domain = self._universe_domain
+ creds._universe_domain_cached = self._universe_domain_cached
+ return creds
+
+ @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain)
+ def with_universe_domain(self, universe_domain):
+ return self.__class__(
+ scopes=self._scopes,
+ default_scopes=self._default_scopes,
+ service_account_email=self._service_account_email,
+ quota_project_id=self._quota_project_id,
+ universe_domain=universe_domain,
+ )
_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds
diff --git a/contrib/python/google-auth/py3/google/auth/version.py b/contrib/python/google-auth/py3/google/auth/version.py
index 6d53c4c4118..e1fa722c811 100644
--- a/contrib/python/google-auth/py3/google/auth/version.py
+++ b/contrib/python/google-auth/py3/google/auth/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.26.2"
+__version__ = "2.27.0"
diff --git a/contrib/python/google-auth/py3/google/oauth2/credentials.py b/contrib/python/google-auth/py3/google/oauth2/credentials.py
index 41f4a05bb6e..c239beed134 100644
--- a/contrib/python/google-auth/py3/google/oauth2/credentials.py
+++ b/contrib/python/google-auth/py3/google/oauth2/credentials.py
@@ -87,6 +87,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
granted_scopes=None,
trust_boundary=None,
universe_domain=_DEFAULT_UNIVERSE_DOMAIN,
+ account=None,
):
"""
Args:
@@ -131,6 +132,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
trust_boundary (str): String representation of trust boundary meta.
universe_domain (Optional[str]): The universe domain. The default
universe domain is googleapis.com.
+ account (Optional[str]): The account associated with the credential.
"""
super(Credentials, self).__init__()
self.token = token
@@ -149,6 +151,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
self._enable_reauth_refresh = enable_reauth_refresh
self._trust_boundary = trust_boundary
self._universe_domain = universe_domain or _DEFAULT_UNIVERSE_DOMAIN
+ self._account = account or ""
def __getstate__(self):
"""A __getstate__ method must exist for the __setstate__ to be called
@@ -189,6 +192,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
self._refresh_handler = None
self._refresh_worker = None
self._use_non_blocking_refresh = d.get("_use_non_blocking_refresh", False)
+ self._account = d.get("_account", "")
@property
def refresh_token(self):
@@ -268,6 +272,11 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
raise TypeError("The provided refresh_handler is not a callable or None.")
self._refresh_handler = value
+ @property
+ def account(self):
+ """str: The user account associated with the credential. If the account is unknown an empty string is returned."""
+ return self._account
+
@_helpers.copy_docstring(credentials.CredentialsWithQuotaProject)
def with_quota_project(self, quota_project_id):
@@ -286,6 +295,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
enable_reauth_refresh=self._enable_reauth_refresh,
trust_boundary=self._trust_boundary,
universe_domain=self._universe_domain,
+ account=self._account,
)
@_helpers.copy_docstring(credentials.CredentialsWithTokenUri)
@@ -306,6 +316,35 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
enable_reauth_refresh=self._enable_reauth_refresh,
trust_boundary=self._trust_boundary,
universe_domain=self._universe_domain,
+ account=self._account,
+ )
+
+ def with_account(self, account):
+ """Returns a copy of these credentials with a modified account.
+
+ Args:
+ account (str): The account to set
+
+ Returns:
+ google.oauth2.credentials.Credentials: A new credentials instance.
+ """
+
+ return self.__class__(
+ self.token,
+ refresh_token=self.refresh_token,
+ id_token=self.id_token,
+ token_uri=self._token_uri,
+ client_id=self.client_id,
+ client_secret=self.client_secret,
+ scopes=self.scopes,
+ default_scopes=self.default_scopes,
+ granted_scopes=self.granted_scopes,
+ quota_project_id=self.quota_project_id,
+ rapt_token=self.rapt_token,
+ enable_reauth_refresh=self._enable_reauth_refresh,
+ trust_boundary=self._trust_boundary,
+ universe_domain=self._universe_domain,
+ account=account,
)
@_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain)
@@ -326,6 +365,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
enable_reauth_refresh=self._enable_reauth_refresh,
trust_boundary=self._trust_boundary,
universe_domain=universe_domain,
+ account=self._account,
)
def _metric_header_for_usage(self):
@@ -474,6 +514,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
rapt_token=info.get("rapt_token"), # may not exist
trust_boundary=info.get("trust_boundary"), # may not exist
universe_domain=info.get("universe_domain"), # may not exist
+ account=info.get("account", ""), # may not exist
)
@classmethod
@@ -518,6 +559,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr
"scopes": self.scopes,
"rapt_token": self.rapt_token,
"universe_domain": self._universe_domain,
+ "account": self._account,
}
if self.expiry: # flatten expiry timestamp
prep["expiry"] = self.expiry.isoformat() + "Z"
diff --git a/contrib/python/google-auth/py3/google/oauth2/id_token.py b/contrib/python/google-auth/py3/google/oauth2/id_token.py
index 2b1abec2b42..e5dda508da2 100644
--- a/contrib/python/google-auth/py3/google/oauth2/id_token.py
+++ b/contrib/python/google-auth/py3/google/oauth2/id_token.py
@@ -62,7 +62,6 @@ import os
from google.auth import environment_vars
from google.auth import exceptions
from google.auth import jwt
-import google.auth.transport.requests
# The URL that provides public certificates for verifying ID tokens issued
@@ -282,6 +281,8 @@ def fetch_id_token_credentials(audience, request=None):
# Create a request object if not provided.
if not request:
+ import google.auth.transport.requests
+
request = google.auth.transport.requests.Request()
if _metadata.ping(request):
diff --git a/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py b/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py
index 5d6ccdcdec6..f04bb1304a8 100644
--- a/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py
+++ b/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py
@@ -50,13 +50,27 @@ ID_TOKEN_REQUEST_METRICS_HEADER_VALUE = (
"gl-python/3.7 auth/1.1 auth-request-type/it cred-type/mds"
)
+FAKE_SERVICE_ACCOUNT_EMAIL = "[email protected]"
+FAKE_QUOTA_PROJECT_ID = "fake-quota-project"
+FAKE_SCOPES = ["scope1", "scope2"]
+FAKE_DEFAULT_SCOPES = ["scope3", "scope4"]
+FAKE_UNIVERSE_DOMAIN = "fake-universe-domain"
+
class TestCredentials(object):
credentials = None
+ credentials_with_all_fields = None
@pytest.fixture(autouse=True)
def credentials_fixture(self):
self.credentials = credentials.Credentials()
+ self.credentials_with_all_fields = credentials.Credentials(
+ service_account_email=FAKE_SERVICE_ACCOUNT_EMAIL,
+ quota_project_id=FAKE_QUOTA_PROJECT_ID,
+ scopes=FAKE_SCOPES,
+ default_scopes=FAKE_DEFAULT_SCOPES,
+ universe_domain=FAKE_UNIVERSE_DOMAIN,
+ )
def test_default_state(self):
assert not self.credentials.valid
@@ -68,6 +82,9 @@ class TestCredentials(object):
assert self.credentials.service_account_email == "default"
# No quota project
assert not self.credentials._quota_project_id
+ # Universe domain is the default and not cached
+ assert self.credentials._universe_domain == "googleapis.com"
+ assert not self.credentials._universe_domain_cached
@mock.patch(
"google.auth._helpers.utcnow",
@@ -187,17 +204,35 @@ class TestCredentials(object):
assert self.credentials.valid
def test_with_quota_project(self):
- quota_project_creds = self.credentials.with_quota_project("project-foo")
+ creds = self.credentials_with_all_fields.with_quota_project("project-foo")
- assert quota_project_creds._quota_project_id == "project-foo"
+ assert creds._quota_project_id == "project-foo"
+ assert creds._service_account_email == FAKE_SERVICE_ACCOUNT_EMAIL
+ assert creds._scopes == FAKE_SCOPES
+ assert creds._default_scopes == FAKE_DEFAULT_SCOPES
+ assert creds.universe_domain == FAKE_UNIVERSE_DOMAIN
+ assert creds._universe_domain_cached
def test_with_scopes(self):
- assert self.credentials._scopes is None
-
scopes = ["one", "two"]
- self.credentials = self.credentials.with_scopes(scopes)
+ creds = self.credentials_with_all_fields.with_scopes(scopes)
- assert self.credentials._scopes == scopes
+ assert creds._scopes == scopes
+ assert creds._quota_project_id == FAKE_QUOTA_PROJECT_ID
+ assert creds._service_account_email == FAKE_SERVICE_ACCOUNT_EMAIL
+ assert creds._default_scopes is None
+ assert creds.universe_domain == FAKE_UNIVERSE_DOMAIN
+ assert creds._universe_domain_cached
+
+ def test_with_universe_domain(self):
+ creds = self.credentials_with_all_fields.with_universe_domain("universe_domain")
+
+ assert creds._scopes == FAKE_SCOPES
+ assert creds._quota_project_id == FAKE_QUOTA_PROJECT_ID
+ assert creds._service_account_email == FAKE_SERVICE_ACCOUNT_EMAIL
+ assert creds._default_scopes == FAKE_DEFAULT_SCOPES
+ assert creds.universe_domain == "universe_domain"
+ assert creds._universe_domain_cached
def test_token_usage_metrics(self):
self.credentials.token = "token"
@@ -213,8 +248,9 @@ class TestCredentials(object):
return_value="fake_universe_domain",
)
def test_universe_domain(self, get_universe_domain):
- self.credentials._universe_domain_cached = False
- self.credentials._universe_domain = "googleapis.com"
+ # Check the default state
+ assert not self.credentials._universe_domain_cached
+ assert self.credentials._universe_domain == "googleapis.com"
# calling the universe_domain property should trigger a call to
# get_universe_domain to fetch the value. The value should be cached.
@@ -232,6 +268,15 @@ class TestCredentials(object):
self.credentials._universe_domain_request
)
+ @mock.patch("google.auth.compute_engine._metadata.get_universe_domain")
+ def test_user_provided_universe_domain(self, get_universe_domain):
+ assert self.credentials_with_all_fields.universe_domain == FAKE_UNIVERSE_DOMAIN
+ assert self.credentials_with_all_fields._universe_domain_cached
+
+ # Since user provided universe_domain, we will not call the universe
+ # domain endpoint.
+ get_universe_domain.assert_not_called()
+
class TestIDTokenCredentials(object):
credentials = None
diff --git a/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py b/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py
index 5f1dcf3cbfc..67b6b9c1ad3 100644
--- a/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py
+++ b/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py
@@ -794,6 +794,12 @@ class TestCredentials(object):
new_creds = creds.with_universe_domain("dummy_universe.com")
assert new_creds.universe_domain == "dummy_universe.com"
+ def test_with_account(self):
+ creds = credentials.Credentials(token="token")
+ assert creds.account == ""
+ new_creds = creds.with_account("[email protected]")
+ assert new_creds.account == "[email protected]"
+
def test_with_token_uri(self):
info = AUTH_USER_INFO.copy()
@@ -889,6 +895,7 @@ class TestCredentials(object):
assert json_asdict.get("client_secret") == creds.client_secret
assert json_asdict.get("expiry") == info["expiry"]
assert json_asdict.get("universe_domain") == creds.universe_domain
+ assert json_asdict.get("account") == creds.account
# Test with a `strip` arg
json_output = creds.to_json(strip=["client_secret"])
diff --git a/contrib/python/google-auth/py3/ya.make b/contrib/python/google-auth/py3/ya.make
index 976b926bffa..5ece69bc982 100644
--- a/contrib/python/google-auth/py3/ya.make
+++ b/contrib/python/google-auth/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(2.26.2)
+VERSION(2.27.0)
LICENSE(Apache-2.0)
diff --git a/contrib/python/hypothesis/py3/.dist-info/METADATA b/contrib/python/hypothesis/py3/.dist-info/METADATA
index c94200ebd37..135737b7315 100644
--- a/contrib/python/hypothesis/py3/.dist-info/METADATA
+++ b/contrib/python/hypothesis/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: hypothesis
-Version: 6.94.0
+Version: 6.97.0
Summary: A library for property-based testing
Home-page: https://hypothesis.works
Author: David R. MacIver and Zac Hatfield-Dodds
diff --git a/contrib/python/hypothesis/py3/_hypothesis_globals.py b/contrib/python/hypothesis/py3/_hypothesis_globals.py
index e97e0918795..1f3eb6fd6d7 100644
--- a/contrib/python/hypothesis/py3/_hypothesis_globals.py
+++ b/contrib/python/hypothesis/py3/_hypothesis_globals.py
@@ -16,9 +16,9 @@ depending on either. This file should have no imports outside of stdlib.
import os
in_initialization = 1
-"""If nonzero, indicates that hypothesis is still initializing (importing or loading
+"""If >0, indicates that hypothesis is still initializing (importing or loading
the test environment). `import hypothesis` will cause this number to be decremented,
-and the pytest plugin increments at load time, then decrements it just before the test
+and the pytest plugin increments at load time, then decrements it just before each test
session starts. However, this leads to a hole in coverage if another pytest plugin
imports hypothesis before our plugin is loaded. HYPOTHESIS_EXTEND_INITIALIZATION may
be set to pre-increment the value on behalf of _hypothesis_pytestplugin, plugging the
diff --git a/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py b/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py
index 944304ccdb5..e82b528bb53 100644
--- a/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py
+++ b/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py
@@ -101,7 +101,6 @@ else:
# need balanced increment/decrement in configure/sessionstart to support nested
# pytest (e.g. runpytest_inprocess), so this early increment in effect replaces
# the first one in pytest_configure.
- _configured = False
if not os.environ.get("HYPOTHESIS_EXTEND_INITIALIZATION"):
_hypothesis_globals.in_initialization += 1
if "hypothesis" in sys.modules:
@@ -163,12 +162,6 @@ else:
return f"hypothesis profile {settings._current_profile!r}{settings_str}"
def pytest_configure(config):
- global _configured
- # skip first increment because we pre-incremented at import time
- if _configured:
- _hypothesis_globals.in_initialization += 1
- _configured = True
-
config.addinivalue_line("markers", "hypothesis: Tests which use hypothesis.")
if not _any_hypothesis_option(config):
return
@@ -430,6 +423,7 @@ else:
item.add_marker("hypothesis")
def pytest_sessionstart(session):
+ # Note: may be called multiple times, so we can go negative
_hypothesis_globals.in_initialization -= 1
# Monkeypatch some internals to prevent applying @pytest.fixture() to a
diff --git a/contrib/python/hypothesis/py3/hypothesis/configuration.py b/contrib/python/hypothesis/py3/hypothesis/configuration.py
index 2586c729f7d..b7bc8879ceb 100644
--- a/contrib/python/hypothesis/py3/hypothesis/configuration.py
+++ b/contrib/python/hypothesis/py3/hypothesis/configuration.py
@@ -9,6 +9,7 @@
# obtain one at https://mozilla.org/MPL/2.0/.
import os
+import sys
import warnings
from pathlib import Path
@@ -45,7 +46,7 @@ _first_postinit_what = None
def check_sideeffect_during_initialization(
- what: str, *fmt_args: object, extra: str = ""
+ what: str, *fmt_args: object, is_restart: bool = False
) -> None:
"""Called from locations that should not be executed during initialization, for example
touching disk or materializing lazy/deferred strategies from plugins. If initialization
@@ -60,13 +61,29 @@ def check_sideeffect_during_initialization(
# notice_initialization_restarted() to be called if in_initialization changes away from zero.
if _first_postinit_what is not None:
return
- elif _hypothesis_globals.in_initialization:
+ elif _hypothesis_globals.in_initialization > 0:
+ msg = what.format(*fmt_args)
+ if is_restart:
+ when = "between importing hypothesis and loading the hypothesis plugin"
+ elif "_hypothesis_pytestplugin" in sys.modules or os.getenv(
+ "HYPOTHESIS_EXTEND_INITIALIZATION"
+ ):
+ when = "during pytest plugin or conftest initialization"
+ else: # pragma: no cover
+ # This can be triggered by Hypothesis plugins, but is really annoying
+ # to test automatically - drop st.text().example() in hypothesis.run()
+ # to manually confirm that we get the warning.
+ when = "at import time"
# Note: -Werror is insufficient under pytest, as doesn't take effect until
# test session start.
- msg = what.format(*fmt_args)
+ text = (
+ f"Slow code in plugin: avoid {msg} {when}! Set PYTHONWARNINGS=error "
+ "to get a traceback and show which plugin is responsible."
+ )
+ if is_restart:
+ text += " Additionally, set HYPOTHESIS_EXTEND_INITIALIZATION=1 to pinpoint the exact location."
warnings.warn(
- f"Slow code in plugin: avoid {msg} at import time! Set PYTHONWARNINGS=error "
- "to get a traceback and show which plugin is responsible." + extra,
+ text,
HypothesisSideeffectWarning,
stacklevel=3,
)
@@ -87,5 +104,5 @@ def notice_initialization_restarted(*, warn: bool = True) -> None:
check_sideeffect_during_initialization(
what,
*fmt_args,
- extra=" Additionally, set HYPOTHESIS_EXTEND_INITIALIZATION=1 to pinpoint the exact location.",
+ is_restart=True,
)
diff --git a/contrib/python/hypothesis/py3/hypothesis/control.py b/contrib/python/hypothesis/py3/hypothesis/control.py
index 5b662197a79..92b26069c5a 100644
--- a/contrib/python/hypothesis/py3/hypothesis/control.py
+++ b/contrib/python/hypothesis/py3/hypothesis/control.py
@@ -23,7 +23,7 @@ from hypothesis.internal.reflection import get_pretty_function_description
from hypothesis.internal.validation import check_type
from hypothesis.reporting import report, verbose_report
from hypothesis.utils.dynamicvariables import DynamicVariable
-from hypothesis.vendor.pretty import IDKey
+from hypothesis.vendor.pretty import IDKey, pretty
def _calling_function_name(frame):
@@ -167,9 +167,11 @@ def should_note():
return context.is_final or settings.default.verbosity >= Verbosity.verbose
-def note(value: str) -> None:
+def note(value: object) -> None:
"""Report this value for the minimal failing example."""
if should_note():
+ if not isinstance(value, str):
+ value = pretty(value)
report(value)
diff --git a/contrib/python/hypothesis/py3/hypothesis/core.py b/contrib/python/hypothesis/py3/hypothesis/core.py
index 75f1cc70e98..17876c37157 100644
--- a/contrib/python/hypothesis/py3/hypothesis/core.py
+++ b/contrib/python/hypothesis/py3/hypothesis/core.py
@@ -920,11 +920,11 @@ class StateForActualGivenExecution:
except TypeError as e:
# If we sampled from a sequence of strategies, AND failed with a
# TypeError, *AND that exception mentions SearchStrategy*, add a note:
- if "SearchStrategy" in str(e):
- try:
- add_note(e, data._sampled_from_all_strategies_elements_message)
- except AttributeError:
- pass
+ if "SearchStrategy" in str(e) and hasattr(
+ data, "_sampled_from_all_strategies_elements_message"
+ ):
+ msg, format_arg = data._sampled_from_all_strategies_elements_message
+ add_note(e, msg.format(format_arg))
raise
# self.test_runner can include the execute_example method, or setup/teardown
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/compat.py b/contrib/python/hypothesis/py3/hypothesis/internal/compat.py
index 41e8ce61d11..24e30b112b9 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/compat.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/compat.py
@@ -16,7 +16,7 @@ import platform
import sys
import typing
from functools import partial
-from typing import Any, ForwardRef, get_args
+from typing import Any, ForwardRef, List, Optional, get_args
try:
BaseExceptionGroup = BaseExceptionGroup
@@ -180,6 +180,25 @@ def ceil(x):
return y
+def extract_bits(x: int, /, width: Optional[int] = None) -> List[int]:
+ assert x >= 0
+ result = []
+ while x:
+ result.append(x & 1)
+ x >>= 1
+ if width is not None:
+ result = (result + [0] * width)[:width]
+ result.reverse()
+ return result
+
+
+# int.bit_count was added sometime around python 3.9
+try:
+ bit_count = int.bit_count
+except AttributeError: # pragma: no cover
+ bit_count = lambda self: sum(extract_bits(abs(self)))
+
+
def bad_django_TestCase(runner):
if runner is None or "django.test" not in sys.modules:
return False
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py
index 03f489fa50d..8b8462d24d4 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py
@@ -1093,12 +1093,12 @@ class PrimitiveProvider:
if clamped != result and not (math.isnan(result) and allow_nan):
self._cd.stop_example(discard=True)
self._cd.start_example(DRAW_FLOAT_LABEL)
- self._write_float(clamped)
+ self._draw_float(forced=clamped)
result = clamped
else:
result = nasty_floats[i - 1]
- self._write_float(result)
+ self._draw_float(forced=result)
self._cd.stop_example() # (DRAW_FLOAT_LABEL)
self._cd.stop_example() # (FLOAT_STRATEGY_DO_DRAW_LABEL)
@@ -1170,23 +1170,13 @@ class PrimitiveProvider:
# sign_aware_lte(forced, -0.0) does not correctly handle the
# math.nan case here.
forced_sign_bit = math.copysign(1, forced) == -1
-
- self._cd.start_example(DRAW_FLOAT_LABEL)
- try:
- is_negative = self._cd.draw_bits(1, forced=forced_sign_bit)
- f = lex_to_float(
- self._cd.draw_bits(
- 64, forced=None if forced is None else float_to_lex(abs(forced))
- )
+ is_negative = self._cd.draw_bits(1, forced=forced_sign_bit)
+ f = lex_to_float(
+ self._cd.draw_bits(
+ 64, forced=None if forced is None else float_to_lex(abs(forced))
)
- return -f if is_negative else f
- finally:
- self._cd.stop_example()
-
- def _write_float(self, f: float) -> None:
- sign = float_to_int(f) >> 63
- self._cd.draw_bits(1, forced=sign)
- self._cd.draw_bits(64, forced=float_to_lex(abs(f)))
+ )
+ return -f if is_negative else f
def _draw_unbounded_integer(self, *, forced: Optional[int] = None) -> int:
forced_i = None
@@ -1487,7 +1477,7 @@ class ConjectureData:
assert min_value is not None
assert max_value is not None
width = max_value - min_value + 1
- assert width <= 1024 # arbitrary practical limit
+ assert width <= 255 # arbitrary practical limit
assert len(weights) == width
if forced is not None and (min_value is None or max_value is None):
@@ -1558,6 +1548,16 @@ class ConjectureData:
return self.provider.draw_bytes(size, forced=forced)
def draw_boolean(self, p: float = 0.5, *, forced: Optional[bool] = None) -> bool:
+ # Internally, we treat probabilities lower than 1 / 2**64 as
+ # unconditionally false.
+ #
+ # Note that even if we lift this 64 bit restriction in the future, p
+ # cannot be 0 (1) when forced is True (False).
+ if forced is True:
+ assert p > 2 ** (-64)
+ if forced is False:
+ assert p < (1 - 2 ** (-64))
+
return self.provider.draw_boolean(p, forced=forced)
def as_result(self) -> Union[ConjectureResult, _Overrun]:
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py
index 2b82bea07c0..407686a1018 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py
@@ -99,7 +99,7 @@ del i, b
def decode_exponent(e: int) -> int:
- """Take draw_bits(11) and turn it into a suitable floating point exponent
+ """Take an integer and turn it into a suitable floating point exponent
such that lexicographically simpler leads to simpler floats."""
assert 0 <= e <= MAX_EXPONENT
return ENCODING_TABLE[e]
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py
index 97b913d79e6..61f9d742bb0 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py
@@ -172,14 +172,24 @@ class Sampler:
forced_choice = ( # pragma: no branch # https://github.com/nedbat/coveragepy/issues/1617
None
if forced is None
- else next((b, a, a_c) for (b, a, a_c) in self.table if forced in (b, a))
+ else next(
+ (base, alternate, alternate_chance)
+ for (base, alternate, alternate_chance) in self.table
+ if forced == base or (forced == alternate and alternate_chance > 0)
+ )
)
base, alternate, alternate_chance = data.choice(
self.table, forced=forced_choice
)
- use_alternate = data.draw_boolean(
- alternate_chance, forced=None if forced is None else forced == alternate
- )
+ forced_use_alternate = None
+ if forced is not None:
+ # we maintain this invariant when picking forced_choice above.
+ # This song and dance about alternate_chance > 0 is to avoid forcing
+ # e.g. draw_boolean(p=0, forced=True), which is an error.
+ forced_use_alternate = forced == alternate and alternate_chance > 0
+ assert forced == base or forced_use_alternate
+
+ use_alternate = data.draw_boolean(alternate_chance, forced=forced_use_alternate)
data.stop_example()
if use_alternate:
assert forced is None or alternate == forced, (forced, alternate)
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py b/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py
index 4a143c80b82..88162b63323 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py
@@ -99,6 +99,9 @@ class IntervalSet:
def __and__(self, other):
return self.intersection(other)
+ def __eq__(self, other):
+ return isinstance(other, IntervalSet) and (other.intervals == self.intervals)
+
def union(self, other):
"""Merge two sequences of intervals into a single tuple of intervals.
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/observability.py b/contrib/python/hypothesis/py3/hypothesis/internal/observability.py
index 284a2072d75..eb083f8be19 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/observability.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/observability.py
@@ -108,6 +108,6 @@ if (
# Remove files more than a week old, to cap the size on disk
max_age = (date.today() - timedelta(days=8)).isoformat()
- for f in storage_directory("observed").glob("*.jsonl"):
+ for f in storage_directory("observed", intent_to_write=False).glob("*.jsonl"):
if f.stem < max_age: # pragma: no branch
f.unlink(missing_ok=True)
diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py b/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py
index d5ea7161f3b..e62ab28f36a 100644
--- a/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py
+++ b/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py
@@ -19,6 +19,7 @@ import re
import sys
import textwrap
import types
+import warnings
from functools import partial, wraps
from io import StringIO
from keyword import iskeyword
@@ -27,6 +28,7 @@ from types import ModuleType
from typing import TYPE_CHECKING, Any, Callable
from unittest.mock import _patch as PatchType
+from hypothesis.errors import HypothesisWarning
from hypothesis.internal.compat import PYPY, is_typed_named_tuple
from hypothesis.utils.conventions import not_set
from hypothesis.vendor.pretty import pretty
@@ -478,6 +480,15 @@ def repr_call(f, args, kwargs, *, reorder=True):
rep = nicerepr(f)
if rep.startswith("lambda") and ":" in rep:
rep = f"({rep})"
+ repr_len = len(rep) + sum(len(b) for b in bits) # approx
+ if repr_len > 30000:
+ warnings.warn(
+ "Generating overly large repr. This is an expensive operation, and with "
+ f"a length of {repr_len//1000} kB is is unlikely to be useful. Use -Wignore "
+ "to ignore the warning, or -Werror to get a traceback.",
+ HypothesisWarning,
+ stacklevel=2,
+ )
return rep + "(" + ", ".join(bits) + ")"
diff --git a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py
index 028d8405c7e..800a8c4e56e 100644
--- a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py
+++ b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py
@@ -70,6 +70,7 @@ from hypothesis.internal.charmap import (
from hypothesis.internal.compat import (
Concatenate,
ParamSpec,
+ bit_count,
ceil,
floor,
get_type_hints,
@@ -202,6 +203,48 @@ def sampled_from(
that behaviour, use ``sampled_from(seq) if seq else nothing()``.
"""
values = check_sample(elements, "sampled_from")
+ try:
+ if isinstance(elements, type) and issubclass(elements, enum.Enum):
+ repr_ = f"sampled_from({elements.__module__}.{elements.__name__})"
+ else:
+ repr_ = f"sampled_from({elements!r})"
+ except Exception: # pragma: no cover
+ repr_ = None
+ if isclass(elements) and issubclass(elements, enum.Flag):
+ # Combinations of enum.Flag members (including empty) are also members. We generate these
+ # dynamically, because static allocation takes O(2^n) memory. LazyStrategy is used for the
+ # ease of force_repr.
+ # Add all named values, both flag bits (== list(elements)) and aliases. The aliases are
+ # necessary for full coverage for flags that would fail enum.NAMED_FLAGS check, and they
+ # are also nice values to shrink to.
+ flags = sorted(
+ set(elements.__members__.values()),
+ key=lambda v: (bit_count(v.value), v.value),
+ )
+ # Finally, try to construct the empty state if it is not named. It's placed at the
+ # end so that we shrink to named values.
+ flags_with_empty = flags
+ if not flags or flags[0].value != 0:
+ try:
+ flags_with_empty = [*flags, elements(0)]
+ except TypeError: # pragma: no cover
+ # Happens on some python versions (at least 3.12) when there are no named values
+ pass
+ inner = [
+ # Consider one or no named flags set, with shrink-to-named-flag behaviour.
+ # Special cases (length zero or one) are handled by the inner sampled_from.
+ sampled_from(flags_with_empty),
+ ]
+ if len(flags) > 1:
+ inner += [
+ # Uniform distribution over number of named flags or combinations set. The overlap
+ # at r=1 is intentional, it may lead to oversampling but gives consistent shrinking
+ # behaviour.
+ integers(min_value=1, max_value=len(flags))
+ .flatmap(lambda r: sets(sampled_from(flags), min_size=r, max_size=r))
+ .map(lambda s: elements(reduce(operator.or_, s))),
+ ]
+ return LazyStrategy(one_of, args=inner, kwargs={}, force_repr=repr_)
if not values:
if (
isinstance(elements, type)
@@ -217,21 +260,6 @@ def sampled_from(
raise InvalidArgument("Cannot sample from a length-zero sequence.")
if len(values) == 1:
return just(values[0])
- try:
- if isinstance(elements, type) and issubclass(elements, enum.Enum):
- repr_ = f"sampled_from({elements.__module__}.{elements.__name__})"
- else:
- repr_ = f"sampled_from({elements!r})"
- except Exception: # pragma: no cover
- repr_ = None
- if isclass(elements) and issubclass(elements, enum.Flag):
- # Combinations of enum.Flag members are also members. We generate
- # these dynamically, because static allocation takes O(2^n) memory.
- # LazyStrategy is used for the ease of force_repr.
- inner = sets(sampled_from(list(values)), min_size=1).map(
- lambda s: reduce(operator.or_, s)
- )
- return LazyStrategy(lambda: inner, args=[], kwargs={}, force_repr=repr_)
return SampledFromStrategy(values, repr_)
diff --git a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py
index d2b33f2673d..af2fa729370 100644
--- a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py
+++ b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py
@@ -473,6 +473,8 @@ class SampledFromStrategy(SearchStrategy):
non-empty subset of the elements.
"""
+ _MAX_FILTER_CALLS = 10_000
+
def __init__(self, elements, repr_=None, transformations=()):
super().__init__()
self.elements = cu.check_sample(elements, "sampled_from")
@@ -531,18 +533,10 @@ class SampledFromStrategy(SearchStrategy):
if isinstance(result, SearchStrategy) and all(
isinstance(x, SearchStrategy) for x in self.elements
):
- max_num_strats = 3
- preamble = (
- f"(first {max_num_strats}) "
- if len(self.elements) > max_num_strats
- else ""
- )
- strat_reprs = ", ".join(
- map(get_pretty_function_description, self.elements[:max_num_strats])
- )
data._sampled_from_all_strategies_elements_message = (
"sample_from was given a collection of strategies: "
- f"{preamble}{strat_reprs}. Was one_of intended?"
+ "{!r}. Was one_of intended?",
+ self.elements,
)
if result is filter_not_satisfied:
data.mark_invalid(f"Aborted test because unable to satisfy {self!r}")
@@ -575,8 +569,7 @@ class SampledFromStrategy(SearchStrategy):
# Impose an arbitrary cutoff to prevent us from wasting too much time
# on very large element lists.
- cutoff = 10000
- max_good_indices = min(max_good_indices, cutoff)
+ max_good_indices = min(max_good_indices, self._MAX_FILTER_CALLS - 3)
# Before building the list of allowed indices, speculatively choose
# one of them. We don't yet know how many allowed indices there will be,
@@ -588,7 +581,7 @@ class SampledFromStrategy(SearchStrategy):
# just use that and return immediately. Note that we also track the
# allowed elements, in case of .map(some_stateful_function)
allowed = []
- for i in range(min(len(self.elements), cutoff)):
+ for i in range(min(len(self.elements), self._MAX_FILTER_CALLS - 3)):
if i not in known_bad_indices:
element = self.get_element(i)
if element is not filter_not_satisfied:
diff --git a/contrib/python/hypothesis/py3/hypothesis/version.py b/contrib/python/hypothesis/py3/hypothesis/version.py
index fd4613cb616..41fe61ff7ef 100644
--- a/contrib/python/hypothesis/py3/hypothesis/version.py
+++ b/contrib/python/hypothesis/py3/hypothesis/version.py
@@ -8,5 +8,5 @@
# v. 2.0. If a copy of the MPL was not distributed with this file, You can
# obtain one at https://mozilla.org/MPL/2.0/.
-__version_info__ = (6, 94, 0)
+__version_info__ = (6, 97, 0)
__version__ = ".".join(map(str, __version_info__))
diff --git a/contrib/python/hypothesis/py3/ya.make b/contrib/python/hypothesis/py3/ya.make
index 476e93730ed..8be1df19a1c 100644
--- a/contrib/python/hypothesis/py3/ya.make
+++ b/contrib/python/hypothesis/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(6.94.0)
+VERSION(6.97.0)
LICENSE(MPL-2.0)
diff --git a/contrib/python/matplotlib/py3/src/_image_resample.h b/contrib/python/matplotlib/py3/src/_image_resample.h
index 10763fb01d3..2c91da40873 100644
--- a/contrib/python/matplotlib/py3/src/_image_resample.h
+++ b/contrib/python/matplotlib/py3/src/_image_resample.h
@@ -21,6 +21,8 @@
#include "agg_workaround.h"
+#include <type_traits>
+
// Based on:
//----------------------------------------------------------------------------
diff --git a/contrib/python/numpy/include/numpy/core/feature_detection_misc.h b/contrib/python/numpy/include/numpy/core/feature_detection_misc.h
new file mode 100644
index 00000000000..0e6447fbd11
--- /dev/null
+++ b/contrib/python/numpy/include/numpy/core/feature_detection_misc.h
@@ -0,0 +1,5 @@
+#ifdef USE_PYTHON3
+#include <contrib/python/numpy/py3/numpy/core/feature_detection_misc.h>
+#else
+#error #include <contrib/python/numpy/py2/numpy/core/feature_detection_misc.h>
+#endif
diff --git a/contrib/python/numpy/py3/.dist-info/METADATA b/contrib/python/numpy/py3/.dist-info/METADATA
index 5e515025ecf..8246dc4ed3b 100644
--- a/contrib/python/numpy/py3/.dist-info/METADATA
+++ b/contrib/python/numpy/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: numpy
-Version: 1.26.3
+Version: 1.26.4
Summary: Fundamental package for array computing in Python
Home-page: https://numpy.org
Author: Travis E. Oliphant et al.
@@ -70,11 +70,6 @@ License: Copyright (c) 2005-2023, NumPy Developers.
License: Apache 2.0
For license text, see vendored-meson/meson/COPYING
- Name: meson-python
- Files: vendored-meson/meson-python/*
- License: MIT
- For license text, see vendored-meson/meson-python/LICENSE
-
Name: spin
Files: .spin/cmds.py
License: BSD-3
diff --git a/contrib/python/numpy/py3/LICENSES_bundled.txt b/contrib/python/numpy/py3/LICENSES_bundled.txt
index 26faf7ff302..aae0e774fae 100644
--- a/contrib/python/numpy/py3/LICENSES_bundled.txt
+++ b/contrib/python/numpy/py3/LICENSES_bundled.txt
@@ -30,11 +30,6 @@ Files: vendored-meson/meson/*
License: Apache 2.0
For license text, see vendored-meson/meson/COPYING
-Name: meson-python
-Files: vendored-meson/meson-python/*
-License: MIT
- For license text, see vendored-meson/meson-python/LICENSE
-
Name: spin
Files: .spin/cmds.py
License: BSD-3
diff --git a/contrib/python/numpy/py3/numpy/__config__.py.in b/contrib/python/numpy/py3/numpy/__config__.py.in
index 6c6c21cb85d..f3b32c28c10 100644
--- a/contrib/python/numpy/py3/numpy/__config__.py.in
+++ b/contrib/python/numpy/py3/numpy/__config__.py.in
@@ -32,21 +32,27 @@ CONFIG = _cleanup(
"Compilers": {
"c": {
"name": "@C_COMP@",
- "linker": "@C_COMP_LINKER_ID@",
+ "linker": r"@C_COMP_LINKER_ID@",
"version": "@C_COMP_VERSION@",
- "commands": "@C_COMP_CMD_ARRAY@",
+ "commands": r"@C_COMP_CMD_ARRAY@",
+ "args": r"@C_COMP_ARGS@",
+ "linker args": r"@C_COMP_LINK_ARGS@",
},
"cython": {
"name": "@CYTHON_COMP@",
- "linker": "@CYTHON_COMP_LINKER_ID@",
+ "linker": r"@CYTHON_COMP_LINKER_ID@",
"version": "@CYTHON_COMP_VERSION@",
- "commands": "@CYTHON_COMP_CMD_ARRAY@",
+ "commands": r"@CYTHON_COMP_CMD_ARRAY@",
+ "args": r"@CYTHON_COMP_ARGS@",
+ "linker args": r"@CYTHON_COMP_LINK_ARGS@",
},
"c++": {
"name": "@CPP_COMP@",
- "linker": "@CPP_COMP_LINKER_ID@",
+ "linker": r"@CPP_COMP_LINKER_ID@",
"version": "@CPP_COMP_VERSION@",
- "commands": "@CPP_COMP_CMD_ARRAY@",
+ "commands": r"@CPP_COMP_CMD_ARRAY@",
+ "args": r"@CPP_COMP_ARGS@",
+ "linker args": r"@CPP_COMP_LINK_ARGS@",
},
},
"Machine Information": {
@@ -72,7 +78,7 @@ CONFIG = _cleanup(
"detection method": "@BLAS_TYPE_NAME@",
"include directory": r"@BLAS_INCLUDEDIR@",
"lib directory": r"@BLAS_LIBDIR@",
- "openblas configuration": "@BLAS_OPENBLAS_CONFIG@",
+ "openblas configuration": r"@BLAS_OPENBLAS_CONFIG@",
"pc file directory": r"@BLAS_PCFILEDIR@",
},
"lapack": {
@@ -82,7 +88,7 @@ CONFIG = _cleanup(
"detection method": "@LAPACK_TYPE_NAME@",
"include directory": r"@LAPACK_INCLUDEDIR@",
"lib directory": r"@LAPACK_LIBDIR@",
- "openblas configuration": "@LAPACK_OPENBLAS_CONFIG@",
+ "openblas configuration": r"@LAPACK_OPENBLAS_CONFIG@",
"pc file directory": r"@LAPACK_PCFILEDIR@",
},
},
diff --git a/contrib/python/numpy/py3/numpy/array_api/__init__.py b/contrib/python/numpy/py3/numpy/array_api/__init__.py
index 77f227882e3..edc3205fd5c 100644
--- a/contrib/python/numpy/py3/numpy/array_api/__init__.py
+++ b/contrib/python/numpy/py3/numpy/array_api/__init__.py
@@ -127,7 +127,7 @@ __all__ = ["__array_api_version__"]
from ._constants import e, inf, nan, pi, newaxis
-__all__ += ["e", "inf", "nan", "pi"]
+__all__ += ["e", "inf", "nan", "pi", "newaxis"]
from ._creation_functions import (
asarray,
diff --git a/contrib/python/numpy/py3/numpy/array_api/linalg.py b/contrib/python/numpy/py3/numpy/array_api/linalg.py
index 09af9dfc3ae..c18360f6e6f 100644
--- a/contrib/python/numpy/py3/numpy/array_api/linalg.py
+++ b/contrib/python/numpy/py3/numpy/array_api/linalg.py
@@ -9,6 +9,7 @@ from ._dtypes import (
complex128
)
from ._manipulation_functions import reshape
+from ._elementwise_functions import conj
from ._array_object import Array
from ..core.numeric import normalize_axis_tuple
@@ -53,7 +54,10 @@ def cholesky(x: Array, /, *, upper: bool = False) -> Array:
raise TypeError('Only floating-point dtypes are allowed in cholesky')
L = np.linalg.cholesky(x._array)
if upper:
- return Array._new(L).mT
+ U = Array._new(L).mT
+ if U.dtype in [complex64, complex128]:
+ U = conj(U)
+ return U
return Array._new(L)
# Note: cross is the numpy top-level namespace, not np.linalg
diff --git a/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py b/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py
index 2cdaba52d9e..d9d7862b287 100644
--- a/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py
+++ b/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py
@@ -304,15 +304,6 @@ def find_functions(filename, tag='API'):
fo.close()
return functions
-def should_rebuild(targets, source_files):
- from distutils.dep_util import newer_group
- for t in targets:
- if not os.path.exists(t):
- return True
- sources = API_FILES + list(source_files) + [__file__]
- if newer_group(sources, targets[0], missing='newer'):
- return True
- return False
def write_file(filename, data):
"""
diff --git a/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py b/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py
index ae38c4efc2e..640bae9e5ff 100644
--- a/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py
+++ b/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py
@@ -148,12 +148,7 @@ def generate_api(output_dir, force=False):
targets = (h_file, c_file)
sources = numpy_api.multiarray_api
-
- if (not force and not genapi.should_rebuild(targets, [numpy_api.__file__, __file__])):
- return targets
- else:
- do_generate_api(targets, sources)
-
+ do_generate_api(targets, sources)
return targets
def do_generate_api(targets, sources):
diff --git a/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py b/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py
index e03299a52cf..3734cbd6a06 100644
--- a/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py
+++ b/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py
@@ -125,12 +125,7 @@ def generate_api(output_dir, force=False):
targets = (h_file, c_file)
sources = ['ufunc_api_order.txt']
-
- if (not force and not genapi.should_rebuild(targets, sources + [__file__])):
- return targets
- else:
- do_generate_api(targets, sources)
-
+ do_generate_api(targets, sources)
return targets
def do_generate_api(targets, sources):
diff --git a/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h b/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h
index bc14d16d04f..d8bbfbd8b23 100644
--- a/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h
+++ b/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h
@@ -1,6 +1,9 @@
+#define _GNU_SOURCE
#include <stdio.h>
#include <fcntl.h>
+#if 0 /* Only for setup_common.py, not the C compiler */
off_t ftello(FILE *stream);
int fseeko(FILE *stream, off_t offset, int whence);
int fallocate(int, int, off_t, off_t);
+#endif
diff --git a/contrib/python/numpy/py3/numpy/core/generate_numpy_api.py b/contrib/python/numpy/py3/numpy/core/generate_numpy_api.py
new file mode 100644
index 00000000000..640bae9e5ff
--- /dev/null
+++ b/contrib/python/numpy/py3/numpy/core/generate_numpy_api.py
@@ -0,0 +1,251 @@
+#!/usr/bin/env python3
+import os
+import argparse
+
+import genapi
+from genapi import \
+ TypeApi, GlobalVarApi, FunctionApi, BoolValuesApi
+
+import numpy_api
+
+# use annotated api when running under cpychecker
+h_template = r"""
+#if defined(_MULTIARRAYMODULE) || defined(WITH_CPYCHECKER_STEALS_REFERENCE_TO_ARG_ATTRIBUTE)
+
+typedef struct {
+ PyObject_HEAD
+ npy_bool obval;
+} PyBoolScalarObject;
+
+extern NPY_NO_EXPORT PyTypeObject PyArrayMapIter_Type;
+extern NPY_NO_EXPORT PyTypeObject PyArrayNeighborhoodIter_Type;
+extern NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2];
+
+%s
+
+#else
+
+#if defined(PY_ARRAY_UNIQUE_SYMBOL)
+#define PyArray_API PY_ARRAY_UNIQUE_SYMBOL
+#endif
+
+#if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY)
+extern void **PyArray_API;
+#else
+#if defined(PY_ARRAY_UNIQUE_SYMBOL)
+void **PyArray_API;
+#else
+static void **PyArray_API=NULL;
+#endif
+#endif
+
+%s
+
+#if !defined(NO_IMPORT_ARRAY) && !defined(NO_IMPORT)
+static int
+_import_array(void)
+{
+ int st;
+ PyObject *numpy = PyImport_ImportModule("numpy.core._multiarray_umath");
+ PyObject *c_api = NULL;
+
+ if (numpy == NULL) {
+ return -1;
+ }
+ c_api = PyObject_GetAttrString(numpy, "_ARRAY_API");
+ Py_DECREF(numpy);
+ if (c_api == NULL) {
+ return -1;
+ }
+
+ if (!PyCapsule_CheckExact(c_api)) {
+ PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is not PyCapsule object");
+ Py_DECREF(c_api);
+ return -1;
+ }
+ PyArray_API = (void **)PyCapsule_GetPointer(c_api, NULL);
+ Py_DECREF(c_api);
+ if (PyArray_API == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is NULL pointer");
+ return -1;
+ }
+
+ /* Perform runtime check of C API version */
+ if (NPY_VERSION != PyArray_GetNDArrayCVersion()) {
+ PyErr_Format(PyExc_RuntimeError, "module compiled against "\
+ "ABI version 0x%%x but this version of numpy is 0x%%x", \
+ (int) NPY_VERSION, (int) PyArray_GetNDArrayCVersion());
+ return -1;
+ }
+ if (NPY_FEATURE_VERSION > PyArray_GetNDArrayCFeatureVersion()) {
+ PyErr_Format(PyExc_RuntimeError, "module compiled against "\
+ "API version 0x%%x but this version of numpy is 0x%%x . "\
+ "Check the section C-API incompatibility at the "\
+ "Troubleshooting ImportError section at "\
+ "https://numpy.org/devdocs/user/troubleshooting-importerror.html"\
+ "#c-api-incompatibility "\
+ "for indications on how to solve this problem .", \
+ (int) NPY_FEATURE_VERSION, (int) PyArray_GetNDArrayCFeatureVersion());
+ return -1;
+ }
+
+ /*
+ * Perform runtime check of endianness and check it matches the one set by
+ * the headers (npy_endian.h) as a safeguard
+ */
+ st = PyArray_GetEndianness();
+ if (st == NPY_CPU_UNKNOWN_ENDIAN) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "FATAL: module compiled as unknown endian");
+ return -1;
+ }
+#if NPY_BYTE_ORDER == NPY_BIG_ENDIAN
+ if (st != NPY_CPU_BIG) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "FATAL: module compiled as big endian, but "
+ "detected different endianness at runtime");
+ return -1;
+ }
+#elif NPY_BYTE_ORDER == NPY_LITTLE_ENDIAN
+ if (st != NPY_CPU_LITTLE) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "FATAL: module compiled as little endian, but "
+ "detected different endianness at runtime");
+ return -1;
+ }
+#endif
+
+ return 0;
+}
+
+#define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NULL; } }
+
+#define import_array1(ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return ret; } }
+
+#define import_array2(msg, ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; } }
+
+#endif
+
+#endif
+"""
+
+
+c_template = r"""
+/* These pointers will be stored in the C-object for use in other
+ extension modules
+*/
+
+void *PyArray_API[] = {
+%s
+};
+"""
+
+def generate_api(output_dir, force=False):
+ basename = 'multiarray_api'
+
+ h_file = os.path.join(output_dir, '__%s.h' % basename)
+ c_file = os.path.join(output_dir, '__%s.c' % basename)
+ targets = (h_file, c_file)
+
+ sources = numpy_api.multiarray_api
+ do_generate_api(targets, sources)
+ return targets
+
+def do_generate_api(targets, sources):
+ header_file = targets[0]
+ c_file = targets[1]
+
+ global_vars = sources[0]
+ scalar_bool_values = sources[1]
+ types_api = sources[2]
+ multiarray_funcs = sources[3]
+
+ multiarray_api = sources[:]
+
+ module_list = []
+ extension_list = []
+ init_list = []
+
+ # Check multiarray api indexes
+ multiarray_api_index = genapi.merge_api_dicts(multiarray_api)
+ genapi.check_api_dict(multiarray_api_index)
+
+ numpyapi_list = genapi.get_api_functions('NUMPY_API',
+ multiarray_funcs)
+
+ # Create dict name -> *Api instance
+ api_name = 'PyArray_API'
+ multiarray_api_dict = {}
+ for f in numpyapi_list:
+ name = f.name
+ index = multiarray_funcs[name][0]
+ annotations = multiarray_funcs[name][1:]
+ multiarray_api_dict[f.name] = FunctionApi(f.name, index, annotations,
+ f.return_type,
+ f.args, api_name)
+
+ for name, val in global_vars.items():
+ index, type = val
+ multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name)
+
+ for name, val in scalar_bool_values.items():
+ index = val[0]
+ multiarray_api_dict[name] = BoolValuesApi(name, index, api_name)
+
+ for name, val in types_api.items():
+ index = val[0]
+ internal_type = None if len(val) == 1 else val[1]
+ multiarray_api_dict[name] = TypeApi(
+ name, index, 'PyTypeObject', api_name, internal_type)
+
+ if len(multiarray_api_dict) != len(multiarray_api_index):
+ keys_dict = set(multiarray_api_dict.keys())
+ keys_index = set(multiarray_api_index.keys())
+ raise AssertionError(
+ "Multiarray API size mismatch - "
+ "index has extra keys {}, dict has extra keys {}"
+ .format(keys_index - keys_dict, keys_dict - keys_index)
+ )
+
+ extension_list = []
+ for name, index in genapi.order_dict(multiarray_api_index):
+ api_item = multiarray_api_dict[name]
+ extension_list.append(api_item.define_from_array_api_string())
+ init_list.append(api_item.array_api_define())
+ module_list.append(api_item.internal_define())
+
+ # Write to header
+ s = h_template % ('\n'.join(module_list), '\n'.join(extension_list))
+ genapi.write_file(header_file, s)
+
+ # Write to c-code
+ s = c_template % ',\n'.join(init_list)
+ genapi.write_file(c_file, s)
+
+ return targets
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "-o",
+ "--outdir",
+ type=str,
+ help="Path to the output directory"
+ )
+ parser.add_argument(
+ "-i",
+ "--ignore",
+ type=str,
+ help="An ignored input - may be useful to add a "
+ "dependency between custom targets"
+ )
+ args = parser.parse_args()
+
+ outdir_abs = os.path.join(os.getcwd(), args.outdir)
+
+ generate_api(outdir_abs)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c b/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c
index 64a85f6fb20..bd149f8b437 100644
--- a/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c
+++ b/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c
@@ -656,7 +656,7 @@ npy__cpu_init_features(void)
/***************** ARM ******************/
-#elif defined(__arm__) || defined(__aarch64__)
+#elif defined(__arm__) || defined(__aarch64__) || defined(_M_ARM64)
static inline void
npy__cpu_init_features_arm8(void)
@@ -781,7 +781,7 @@ npy__cpu_init_features(void)
return;
#endif
// We have nothing else todo
-#if defined(NPY_HAVE_ASIMD) || defined(__aarch64__) || (defined(__ARM_ARCH) && __ARM_ARCH >= 8)
+#if defined(NPY_HAVE_ASIMD) || defined(__aarch64__) || (defined(__ARM_ARCH) && __ARM_ARCH >= 8) || defined(_M_ARM64)
#if defined(NPY_HAVE_FPHP) || defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC)
npy__cpu_have[NPY_CPU_FEATURE_FPHP] = 1;
#endif
diff --git a/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c b/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c
index 60c1a1b9b01..8ec0aeefb7a 100644
--- a/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c
+++ b/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c
@@ -23,8 +23,9 @@
#include "array_coercion.h"
#include "refcount.h"
-int
-fallocate(int fd, int mode, off_t offset, off_t len);
+#if defined(HAVE_FALLOCATE) && defined(__linux__)
+#include <fcntl.h>
+#endif
/*
* allocate nbytes of diskspace for file fp
diff --git a/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c b/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c
index 15257804bc6..a38f90e76c6 100644
--- a/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c
+++ b/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c
@@ -59,6 +59,9 @@
*/
#if defined HAVE_BACKTRACE && defined HAVE_DLFCN_H && ! defined PYPY_VERSION
+
+#include <feature_detection_misc.h>
+
/* 1 prints elided operations, 2 prints stacktraces */
#define NPY_ELIDE_DEBUG 0
#define NPY_MAX_STACKSIZE 10
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c
index 25fae7f711c..0d80a969667 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c
@@ -46,8 +46,16 @@
* q = TRUNC((n - (-dsign ) + (-nsign))/d) - (-qsign);
********************************************************************************/
+#if (defined(NPY_HAVE_VSX) && !defined(NPY_HAVE_VSX4)) || defined(NPY_HAVE_NEON)
+ // Due to integer 128-bit multiplication emulation, SIMD 64-bit division
+ // may not perform well on both neon and up to VSX3 compared to scalar
+ // division.
+ #define SIMD_DISABLE_DIV64_OPT
+#endif
+
#if NPY_SIMD
-#line 45
+#line 52
+#if 8 < 64 || (8 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_s8(char **args, npy_intp len)
{
@@ -107,8 +115,10 @@ simd_divide_by_scalar_contig_s8(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
-#line 45
+#line 52
+#if 16 < 64 || (16 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_s16(char **args, npy_intp len)
{
@@ -168,8 +178,10 @@ simd_divide_by_scalar_contig_s16(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
-#line 45
+#line 52
+#if 32 < 64 || (32 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_s32(char **args, npy_intp len)
{
@@ -229,8 +241,10 @@ simd_divide_by_scalar_contig_s32(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
-#line 45
+#line 52
+#if 64 < 64 || (64 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_s64(char **args, npy_intp len)
{
@@ -290,9 +304,11 @@ simd_divide_by_scalar_contig_s64(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
-#line 111
+#line 120
+#if 8 < 64 || (8 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_u8(char **args, npy_intp len)
{
@@ -314,8 +330,10 @@ simd_divide_by_scalar_contig_u8(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
-#line 111
+#line 120
+#if 16 < 64 || (16 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_u16(char **args, npy_intp len)
{
@@ -337,8 +355,10 @@ simd_divide_by_scalar_contig_u16(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
-#line 111
+#line 120
+#if 32 < 64 || (32 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_u32(char **args, npy_intp len)
{
@@ -360,8 +380,10 @@ simd_divide_by_scalar_contig_u32(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
-#line 111
+#line 120
+#if 64 < 64 || (64 == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_u64(char **args, npy_intp len)
{
@@ -383,11 +405,12 @@ simd_divide_by_scalar_contig_u64(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
#if defined(NPY_HAVE_VSX4)
-#line 140
+#line 151
/*
* Computes division of 2 8-bit signed/unsigned integer vectors
*
@@ -452,7 +475,7 @@ vsx4_div_u16(npyv_u16 a, npyv_u16 b)
#define vsx4_div_u32 vec_div
#define vsx4_div_u64 vec_div
-#line 140
+#line 151
/*
* Computes division of 2 8-bit signed/unsigned integer vectors
*
@@ -518,7 +541,7 @@ vsx4_div_s16(npyv_s16 a, npyv_s16 b)
#define vsx4_div_s64 vec_div
-#line 210
+#line 221
static inline void
vsx4_simd_divide_contig_u8(char **args, npy_intp len)
{
@@ -552,7 +575,7 @@ vsx4_simd_divide_contig_u8(char **args, npy_intp len)
npyv_cleanup();
}
-#line 210
+#line 221
static inline void
vsx4_simd_divide_contig_u16(char **args, npy_intp len)
{
@@ -586,7 +609,7 @@ vsx4_simd_divide_contig_u16(char **args, npy_intp len)
npyv_cleanup();
}
-#line 210
+#line 221
static inline void
vsx4_simd_divide_contig_u32(char **args, npy_intp len)
{
@@ -620,7 +643,7 @@ vsx4_simd_divide_contig_u32(char **args, npy_intp len)
npyv_cleanup();
}
-#line 210
+#line 221
static inline void
vsx4_simd_divide_contig_u64(char **args, npy_intp len)
{
@@ -655,7 +678,7 @@ vsx4_simd_divide_contig_u64(char **args, npy_intp len)
}
-#line 249
+#line 260
static inline void
vsx4_simd_divide_contig_s8(char **args, npy_intp len)
{
@@ -724,7 +747,7 @@ vsx4_simd_divide_contig_s8(char **args, npy_intp len)
npyv_cleanup();
}
-#line 249
+#line 260
static inline void
vsx4_simd_divide_contig_s16(char **args, npy_intp len)
{
@@ -793,7 +816,7 @@ vsx4_simd_divide_contig_s16(char **args, npy_intp len)
npyv_cleanup();
}
-#line 249
+#line 260
static inline void
vsx4_simd_divide_contig_s32(char **args, npy_intp len)
{
@@ -862,7 +885,7 @@ vsx4_simd_divide_contig_s32(char **args, npy_intp len)
npyv_cleanup();
}
-#line 249
+#line 260
static inline void
vsx4_simd_divide_contig_s64(char **args, npy_intp len)
{
@@ -938,28 +961,27 @@ vsx4_simd_divide_contig_s64(char **args, npy_intp len)
** Defining ufunc inner functions
********************************************************************************/
-#line 329
+#line 340
#undef TO_SIMD_SFX
#if 0
-#line 334
+#line 345
#elif NPY_BITSOF_BYTE == 8
#define TO_SIMD_SFX(X) X##_s8
-#line 334
+#line 345
#elif NPY_BITSOF_BYTE == 16
#define TO_SIMD_SFX(X) X##_s16
-#line 334
+#line 345
#elif NPY_BITSOF_BYTE == 32
#define TO_SIMD_SFX(X) X##_s32
-#line 334
+#line 345
#elif NPY_BITSOF_BYTE == 64
#define TO_SIMD_SFX(X) X##_s64
#endif
-
-#if NPY_BITSOF_BYTE == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON))
+#if NPY_BITSOF_BYTE == 64 && defined(SIMD_DISABLE_DIV64_OPT)
#undef TO_SIMD_SFX
#endif
@@ -1042,28 +1064,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_divide_indexed)
}
-#line 329
+#line 340
#undef TO_SIMD_SFX
#if 0
-#line 334
+#line 345
#elif NPY_BITSOF_SHORT == 8
#define TO_SIMD_SFX(X) X##_s8
-#line 334
+#line 345
#elif NPY_BITSOF_SHORT == 16
#define TO_SIMD_SFX(X) X##_s16
-#line 334
+#line 345
#elif NPY_BITSOF_SHORT == 32
#define TO_SIMD_SFX(X) X##_s32
-#line 334
+#line 345
#elif NPY_BITSOF_SHORT == 64
#define TO_SIMD_SFX(X) X##_s64
#endif
-
-#if NPY_BITSOF_SHORT == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON))
+#if NPY_BITSOF_SHORT == 64 && defined(SIMD_DISABLE_DIV64_OPT)
#undef TO_SIMD_SFX
#endif
@@ -1146,28 +1167,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_divide_indexed)
}
-#line 329
+#line 340
#undef TO_SIMD_SFX
#if 0
-#line 334
+#line 345
#elif NPY_BITSOF_INT == 8
#define TO_SIMD_SFX(X) X##_s8
-#line 334
+#line 345
#elif NPY_BITSOF_INT == 16
#define TO_SIMD_SFX(X) X##_s16
-#line 334
+#line 345
#elif NPY_BITSOF_INT == 32
#define TO_SIMD_SFX(X) X##_s32
-#line 334
+#line 345
#elif NPY_BITSOF_INT == 64
#define TO_SIMD_SFX(X) X##_s64
#endif
-
-#if NPY_BITSOF_INT == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON))
+#if NPY_BITSOF_INT == 64 && defined(SIMD_DISABLE_DIV64_OPT)
#undef TO_SIMD_SFX
#endif
@@ -1250,28 +1270,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_divide_indexed)
}
-#line 329
+#line 340
#undef TO_SIMD_SFX
#if 0
-#line 334
+#line 345
#elif NPY_BITSOF_LONG == 8
#define TO_SIMD_SFX(X) X##_s8
-#line 334
+#line 345
#elif NPY_BITSOF_LONG == 16
#define TO_SIMD_SFX(X) X##_s16
-#line 334
+#line 345
#elif NPY_BITSOF_LONG == 32
#define TO_SIMD_SFX(X) X##_s32
-#line 334
+#line 345
#elif NPY_BITSOF_LONG == 64
#define TO_SIMD_SFX(X) X##_s64
#endif
-
-#if NPY_BITSOF_LONG == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON))
+#if NPY_BITSOF_LONG == 64 && defined(SIMD_DISABLE_DIV64_OPT)
#undef TO_SIMD_SFX
#endif
@@ -1354,28 +1373,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_divide_indexed)
}
-#line 329
+#line 340
#undef TO_SIMD_SFX
#if 0
-#line 334
+#line 345
#elif NPY_BITSOF_LONGLONG == 8
#define TO_SIMD_SFX(X) X##_s8
-#line 334
+#line 345
#elif NPY_BITSOF_LONGLONG == 16
#define TO_SIMD_SFX(X) X##_s16
-#line 334
+#line 345
#elif NPY_BITSOF_LONGLONG == 32
#define TO_SIMD_SFX(X) X##_s32
-#line 334
+#line 345
#elif NPY_BITSOF_LONGLONG == 64
#define TO_SIMD_SFX(X) X##_s64
#endif
-
-#if NPY_BITSOF_LONGLONG == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON))
+#if NPY_BITSOF_LONGLONG == 64 && defined(SIMD_DISABLE_DIV64_OPT)
#undef TO_SIMD_SFX
#endif
@@ -1459,22 +1477,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_divide_indexed)
-#line 429
+#line 439
#undef TO_SIMD_SFX
#if 0
-#line 434
+#line 444
#elif NPY_BITSOF_BYTE == 8
#define TO_SIMD_SFX(X) X##_u8
-#line 434
+#line 444
#elif NPY_BITSOF_BYTE == 16
#define TO_SIMD_SFX(X) X##_u16
-#line 434
+#line 444
#elif NPY_BITSOF_BYTE == 32
#define TO_SIMD_SFX(X) X##_u32
-#line 434
+#line 444
#elif NPY_BITSOF_BYTE == 64
#define TO_SIMD_SFX(X) X##_u64
@@ -1560,22 +1578,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_divide_indexed)
}
-#line 429
+#line 439
#undef TO_SIMD_SFX
#if 0
-#line 434
+#line 444
#elif NPY_BITSOF_SHORT == 8
#define TO_SIMD_SFX(X) X##_u8
-#line 434
+#line 444
#elif NPY_BITSOF_SHORT == 16
#define TO_SIMD_SFX(X) X##_u16
-#line 434
+#line 444
#elif NPY_BITSOF_SHORT == 32
#define TO_SIMD_SFX(X) X##_u32
-#line 434
+#line 444
#elif NPY_BITSOF_SHORT == 64
#define TO_SIMD_SFX(X) X##_u64
@@ -1661,22 +1679,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_divide_indexed)
}
-#line 429
+#line 439
#undef TO_SIMD_SFX
#if 0
-#line 434
+#line 444
#elif NPY_BITSOF_INT == 8
#define TO_SIMD_SFX(X) X##_u8
-#line 434
+#line 444
#elif NPY_BITSOF_INT == 16
#define TO_SIMD_SFX(X) X##_u16
-#line 434
+#line 444
#elif NPY_BITSOF_INT == 32
#define TO_SIMD_SFX(X) X##_u32
-#line 434
+#line 444
#elif NPY_BITSOF_INT == 64
#define TO_SIMD_SFX(X) X##_u64
@@ -1762,22 +1780,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_divide_indexed)
}
-#line 429
+#line 439
#undef TO_SIMD_SFX
#if 0
-#line 434
+#line 444
#elif NPY_BITSOF_LONG == 8
#define TO_SIMD_SFX(X) X##_u8
-#line 434
+#line 444
#elif NPY_BITSOF_LONG == 16
#define TO_SIMD_SFX(X) X##_u16
-#line 434
+#line 444
#elif NPY_BITSOF_LONG == 32
#define TO_SIMD_SFX(X) X##_u32
-#line 434
+#line 444
#elif NPY_BITSOF_LONG == 64
#define TO_SIMD_SFX(X) X##_u64
@@ -1863,22 +1881,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_divide_indexed)
}
-#line 429
+#line 439
#undef TO_SIMD_SFX
#if 0
-#line 434
+#line 444
#elif NPY_BITSOF_LONGLONG == 8
#define TO_SIMD_SFX(X) X##_u8
-#line 434
+#line 444
#elif NPY_BITSOF_LONGLONG == 16
#define TO_SIMD_SFX(X) X##_u16
-#line 434
+#line 444
#elif NPY_BITSOF_LONGLONG == 32
#define TO_SIMD_SFX(X) X##_u32
-#line 434
+#line 444
#elif NPY_BITSOF_LONGLONG == 64
#define TO_SIMD_SFX(X) X##_u64
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src
index e07bb79808a..d056046e054 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src
@@ -36,12 +36,20 @@
* q = TRUNC((n - (-dsign ) + (-nsign))/d) - (-qsign);
********************************************************************************/
+#if (defined(NPY_HAVE_VSX) && !defined(NPY_HAVE_VSX4)) || defined(NPY_HAVE_NEON)
+ // Due to integer 128-bit multiplication emulation, SIMD 64-bit division
+ // may not perform well on both neon and up to VSX3 compared to scalar
+ // division.
+ #define SIMD_DISABLE_DIV64_OPT
+#endif
+
#if NPY_SIMD
/**begin repeat
* Signed types
* #sfx = s8, s16, s32, s64#
* #len = 8, 16, 32, 64#
*/
+#if @len@ < 64 || (@len@ == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len)
{
@@ -101,6 +109,7 @@ simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
/**end repeat**/
/**begin repeat
@@ -108,6 +117,7 @@ simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len)
* #sfx = u8, u16, u32, u64#
* #len = 8, 16, 32, 64#
*/
+#if @len@ < 64 || (@len@ == 64 && !defined(SIMD_DISABLE_DIV64_OPT))
static inline void
simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len)
{
@@ -129,6 +139,7 @@ simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len)
}
npyv_cleanup();
}
+#endif
/**end repeat**/
#if defined(NPY_HAVE_VSX4)
@@ -335,8 +346,7 @@ vsx4_simd_divide_contig_@sfx@(char **args, npy_intp len)
#define TO_SIMD_SFX(X) X##_s@len@
/**end repeat1**/
#endif
-
-#if NPY_BITSOF_@TYPE@ == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON))
+#if NPY_BITSOF_@TYPE@ == 64 && defined(SIMD_DISABLE_DIV64_OPT)
#undef TO_SIMD_SFX
#endif
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c
index 5e9827a14cf..8f446c3a8d8 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c
@@ -134,18 +134,6 @@ fma_blend(__m256 x, __m256 y, __m256 ymask)
}
NPY_FINLINE __m256
-fma_invert_mask_ps(__m256 ymask)
-{
- return _mm256_andnot_ps(ymask, _mm256_set1_ps(-1.0));
-}
-
-NPY_FINLINE __m256i
-fma_invert_mask_pd(__m256i ymask)
-{
- return _mm256_andnot_si256(ymask, _mm256_set1_epi32(0xFFFFFFFF));
-}
-
-NPY_FINLINE __m256
fma_get_exponent(__m256 x)
{
/*
@@ -321,18 +309,6 @@ avx512_blend(__m512 x, __m512 y, __mmask16 ymask)
return _mm512_mask_mov_ps(x, ymask, y);
}
-NPY_FINLINE __mmask16
-avx512_invert_mask_ps(__mmask16 ymask)
-{
- return _mm512_knot(ymask);
-}
-
-NPY_FINLINE __mmask8
-avx512_invert_mask_pd(__mmask8 ymask)
-{
- return _mm512_knot(ymask);
-}
-
NPY_FINLINE __m512
avx512_get_exponent(__m512 x)
{
@@ -384,7 +360,7 @@ avx512_permute_x8var_pd(__m512d t0, __m512d t1, __m512d t2, __m512d t3,
/********************************************************************************
** Defining the SIMD kernels
********************************************************************************/
-#line 396
+#line 372
#ifdef SIMD_AVX2_FMA3
/*
* Vectorized Cody-Waite range reduction technique
@@ -683,7 +659,7 @@ simd_log_FLOAT(npy_float * op,
}
#endif // SIMD_AVX2_FMA3
-#line 396
+#line 372
#ifdef SIMD_AVX512F
/*
* Vectorized Cody-Waite range reduction technique
@@ -984,7 +960,7 @@ simd_log_FLOAT(npy_float * op,
#if NPY_SIMD && defined(NPY_HAVE_AVX512_SKX) && defined(NPY_CAN_LINK_SVML)
-#line 700
+#line 676
static void
simd_exp_f64(const npyv_lanetype_f64 *src, npy_intp ssrc,
npyv_lanetype_f64 *dst, npy_intp sdst, npy_intp len)
@@ -1015,7 +991,7 @@ simd_exp_f64(const npyv_lanetype_f64 *src, npy_intp ssrc,
npyv_cleanup();
}
-#line 700
+#line 676
static void
simd_log_f64(const npyv_lanetype_f64 *src, npy_intp ssrc,
npyv_lanetype_f64 *dst, npy_intp sdst, npy_intp len)
@@ -1298,49 +1274,49 @@ AVX512F_log_DOUBLE(npy_double * op,
__m256i vindex = _mm256_loadu_si256((__m256i*)&indexarr[0]);
/* Load lookup table data */
- #line 985
+ #line 961
__m512d mLUT_TOP_0 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*0]));
__m512d mLUT_TAIL_0 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*0]));
-#line 985
+#line 961
__m512d mLUT_TOP_1 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*1]));
__m512d mLUT_TAIL_1 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*1]));
-#line 985
+#line 961
__m512d mLUT_TOP_2 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*2]));
__m512d mLUT_TAIL_2 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*2]));
-#line 985
+#line 961
__m512d mLUT_TOP_3 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*3]));
__m512d mLUT_TAIL_3 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*3]));
-#line 985
+#line 961
__m512d mLUT_TOP_4 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*4]));
__m512d mLUT_TAIL_4 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*4]));
-#line 985
+#line 961
__m512d mLUT_TOP_5 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*5]));
__m512d mLUT_TAIL_5 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*5]));
-#line 985
+#line 961
__m512d mLUT_TOP_6 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*6]));
__m512d mLUT_TAIL_6 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*6]));
-#line 985
+#line 961
__m512d mLUT_TOP_7 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*7]));
__m512d mLUT_TAIL_7 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*7]));
@@ -1487,7 +1463,7 @@ AVX512F_log_DOUBLE(npy_double * op,
#endif // NPY_CAN_LINK_SVML
#ifdef SIMD_AVX512_SKX
-#line 1149
+#line 1125
static inline void
AVX512_SKX_ldexp_FLOAT(char **args, npy_intp const *dimensions, npy_intp const *steps)
{
@@ -1634,7 +1610,7 @@ AVX512_SKX_frexp_FLOAT(char **args, npy_intp const *dimensions, npy_intp const *
}
}
-#line 1149
+#line 1125
static inline void
AVX512_SKX_ldexp_DOUBLE(char **args, npy_intp const *dimensions, npy_intp const *steps)
{
@@ -1787,7 +1763,7 @@ AVX512_SKX_frexp_DOUBLE(char **args, npy_intp const *dimensions, npy_intp const
/********************************************************************************
** Defining ufunc inner functions
********************************************************************************/
-#line 1305
+#line 1281
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_exp)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
@@ -1816,7 +1792,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_exp)
#endif
}
-#line 1305
+#line 1281
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_log)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
@@ -1846,7 +1822,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_log)
}
-#line 1338
+#line 1314
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_exp)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
@@ -1879,7 +1855,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_exp)
}
-#line 1338
+#line 1314
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_log)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
@@ -1913,7 +1889,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_log)
-#line 1378
+#line 1354
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_frexp)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -1945,7 +1921,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_ldexp)
}
}
-#line 1378
+#line 1354
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_frexp)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src
index 1fac3c150c7..85dac9c20dd 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src
@@ -124,18 +124,6 @@ fma_blend(__m256 x, __m256 y, __m256 ymask)
}
NPY_FINLINE __m256
-fma_invert_mask_ps(__m256 ymask)
-{
- return _mm256_andnot_ps(ymask, _mm256_set1_ps(-1.0));
-}
-
-NPY_FINLINE __m256i
-fma_invert_mask_pd(__m256i ymask)
-{
- return _mm256_andnot_si256(ymask, _mm256_set1_epi32(0xFFFFFFFF));
-}
-
-NPY_FINLINE __m256
fma_get_exponent(__m256 x)
{
/*
@@ -311,18 +299,6 @@ avx512_blend(__m512 x, __m512 y, __mmask16 ymask)
return _mm512_mask_mov_ps(x, ymask, y);
}
-NPY_FINLINE __mmask16
-avx512_invert_mask_ps(__mmask16 ymask)
-{
- return _mm512_knot(ymask);
-}
-
-NPY_FINLINE __mmask8
-avx512_invert_mask_pd(__mmask8 ymask)
-{
- return _mm512_knot(ymask);
-}
-
NPY_FINLINE __m512
avx512_get_exponent(__m512 x)
{
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c
index ad8c1ef3978..97a78b0e121 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c
@@ -320,7 +320,8 @@ simd_binary_ccc_max_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2,
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1,
const npyv_lanetype_s8 *ip2, npy_intp sip2,
@@ -483,7 +484,8 @@ simd_binary_ccc_min_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2,
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1,
const npyv_lanetype_s8 *ip2, npy_intp sip2,
@@ -646,7 +648,8 @@ simd_binary_ccc_maxp_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1,
const npyv_lanetype_s8 *ip2, npy_intp sip2,
@@ -809,7 +812,8 @@ simd_binary_ccc_minp_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1,
const npyv_lanetype_s8 *ip2, npy_intp sip2,
@@ -974,7 +978,8 @@ simd_binary_ccc_max_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2,
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1,
const npyv_lanetype_u8 *ip2, npy_intp sip2,
@@ -1137,7 +1142,8 @@ simd_binary_ccc_min_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2,
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1,
const npyv_lanetype_u8 *ip2, npy_intp sip2,
@@ -1300,7 +1306,8 @@ simd_binary_ccc_maxp_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1,
const npyv_lanetype_u8 *ip2, npy_intp sip2,
@@ -1463,7 +1470,8 @@ simd_binary_ccc_minp_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1,
const npyv_lanetype_u8 *ip2, npy_intp sip2,
@@ -1628,7 +1636,8 @@ simd_binary_ccc_max_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1,
const npyv_lanetype_s16 *ip2, npy_intp sip2,
@@ -1791,7 +1800,8 @@ simd_binary_ccc_min_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1,
const npyv_lanetype_s16 *ip2, npy_intp sip2,
@@ -1954,7 +1964,8 @@ simd_binary_ccc_maxp_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1,
const npyv_lanetype_s16 *ip2, npy_intp sip2,
@@ -2117,7 +2128,8 @@ simd_binary_ccc_minp_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1,
const npyv_lanetype_s16 *ip2, npy_intp sip2,
@@ -2282,7 +2294,8 @@ simd_binary_ccc_max_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1,
const npyv_lanetype_u16 *ip2, npy_intp sip2,
@@ -2445,7 +2458,8 @@ simd_binary_ccc_min_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1,
const npyv_lanetype_u16 *ip2, npy_intp sip2,
@@ -2608,7 +2622,8 @@ simd_binary_ccc_maxp_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1,
const npyv_lanetype_u16 *ip2, npy_intp sip2,
@@ -2771,7 +2786,8 @@ simd_binary_ccc_minp_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1,
const npyv_lanetype_u16 *ip2, npy_intp sip2,
@@ -2936,7 +2952,8 @@ simd_binary_ccc_max_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1,
const npyv_lanetype_s32 *ip2, npy_intp sip2,
@@ -3099,7 +3116,8 @@ simd_binary_ccc_min_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1,
const npyv_lanetype_s32 *ip2, npy_intp sip2,
@@ -3262,7 +3280,8 @@ simd_binary_ccc_maxp_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1,
const npyv_lanetype_s32 *ip2, npy_intp sip2,
@@ -3425,7 +3444,8 @@ simd_binary_ccc_minp_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1,
const npyv_lanetype_s32 *ip2, npy_intp sip2,
@@ -3590,7 +3610,8 @@ simd_binary_ccc_max_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1,
const npyv_lanetype_u32 *ip2, npy_intp sip2,
@@ -3753,7 +3774,8 @@ simd_binary_ccc_min_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1,
const npyv_lanetype_u32 *ip2, npy_intp sip2,
@@ -3916,7 +3938,8 @@ simd_binary_ccc_maxp_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1,
const npyv_lanetype_u32 *ip2, npy_intp sip2,
@@ -4079,7 +4102,8 @@ simd_binary_ccc_minp_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1,
const npyv_lanetype_u32 *ip2, npy_intp sip2,
@@ -4244,7 +4268,8 @@ simd_binary_ccc_max_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1,
const npyv_lanetype_s64 *ip2, npy_intp sip2,
@@ -4407,7 +4432,8 @@ simd_binary_ccc_min_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1,
const npyv_lanetype_s64 *ip2, npy_intp sip2,
@@ -4570,7 +4596,8 @@ simd_binary_ccc_maxp_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1,
const npyv_lanetype_s64 *ip2, npy_intp sip2,
@@ -4733,7 +4760,8 @@ simd_binary_ccc_minp_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1,
const npyv_lanetype_s64 *ip2, npy_intp sip2,
@@ -4898,7 +4926,8 @@ simd_binary_ccc_max_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1,
const npyv_lanetype_u64 *ip2, npy_intp sip2,
@@ -5061,7 +5090,8 @@ simd_binary_ccc_min_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1,
const npyv_lanetype_u64 *ip2, npy_intp sip2,
@@ -5224,7 +5254,8 @@ simd_binary_ccc_maxp_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1,
const npyv_lanetype_u64 *ip2, npy_intp sip2,
@@ -5387,7 +5418,8 @@ simd_binary_ccc_minp_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 0
+#if 0 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1,
const npyv_lanetype_u64 *ip2, npy_intp sip2,
@@ -5552,7 +5584,8 @@ simd_binary_ccc_max_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1,
const npyv_lanetype_f32 *ip2, npy_intp sip2,
@@ -5715,7 +5748,8 @@ simd_binary_ccc_min_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1,
const npyv_lanetype_f32 *ip2, npy_intp sip2,
@@ -5878,7 +5912,8 @@ simd_binary_ccc_maxp_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1,
const npyv_lanetype_f32 *ip2, npy_intp sip2,
@@ -6041,7 +6076,8 @@ simd_binary_ccc_minp_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1,
const npyv_lanetype_f32 *ip2, npy_intp sip2,
@@ -6206,7 +6242,8 @@ simd_binary_ccc_max_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_max_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
const npyv_lanetype_f64 *ip2, npy_intp sip2,
@@ -6369,7 +6406,8 @@ simd_binary_ccc_min_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 *i
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_min_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
const npyv_lanetype_f64 *ip2, npy_intp sip2,
@@ -6532,7 +6570,8 @@ simd_binary_ccc_maxp_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_maxp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
const npyv_lanetype_f64 *ip2, npy_intp sip2,
@@ -6695,7 +6734,8 @@ simd_binary_ccc_minp_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 *
}
}
// non-contiguous for float 32/64-bit memory access
-#if 1
+#if 1 && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
const npyv_lanetype_f64 *ip2, npy_intp sip2,
@@ -6744,10 +6784,10 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
/*******************************************************************************
** Defining ufunc inner functions
******************************************************************************/
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -6763,7 +6803,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -6779,7 +6819,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -6795,7 +6835,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -6813,7 +6853,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1,
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -6921,22 +6961,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1));
npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2));
*((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1));
npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2));
*((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1));
npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2));
*((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1));
npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2));
*((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -6988,7 +7028,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -7096,22 +7136,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1));
npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2));
*((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1));
npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2));
*((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1));
npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2));
*((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1));
npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2));
*((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -7163,7 +7203,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -7271,22 +7311,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1));
npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2));
*((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1));
npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2));
*((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1));
npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2));
*((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1));
npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2));
*((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -7338,7 +7378,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -7446,22 +7486,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1));
npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2));
*((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1));
npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2));
*((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1));
npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2));
*((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1));
npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2));
*((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -7514,10 +7554,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -7533,7 +7573,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -7549,7 +7589,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -7565,7 +7605,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -7583,7 +7623,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -7691,22 +7731,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1));
npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2));
*((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1));
npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2));
*((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1));
npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2));
*((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1));
npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2));
*((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -7758,7 +7798,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -7866,22 +7906,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1));
npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2));
*((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1));
npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2));
*((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1));
npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2));
*((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1));
npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2));
*((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -7933,7 +7973,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -8041,22 +8081,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1));
npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2));
*((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1));
npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2));
*((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1));
npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2));
*((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1));
npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2));
*((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -8108,7 +8148,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -8216,22 +8256,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1));
npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2));
*((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1));
npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2));
*((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1));
npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2));
*((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1));
npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2));
*((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -8284,10 +8324,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -8303,7 +8343,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -8319,7 +8359,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -8335,7 +8375,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -8353,7 +8393,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -8461,22 +8501,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1));
npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2));
*((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1));
npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2));
*((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1));
npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2));
*((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1));
npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2));
*((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -8528,7 +8568,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -8636,22 +8676,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1));
npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2));
*((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1));
npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2));
*((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1));
npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2));
*((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1));
npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2));
*((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -8703,7 +8743,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -8811,22 +8851,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1));
npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2));
*((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1));
npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2));
*((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1));
npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2));
*((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1));
npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2));
*((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -8878,7 +8918,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -8986,22 +9026,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1));
npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2));
*((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1));
npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2));
*((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1));
npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2));
*((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1));
npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2));
*((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -9054,10 +9094,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -9073,7 +9113,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -9089,7 +9129,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -9105,7 +9145,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -9123,7 +9163,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -9231,22 +9271,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1));
npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2));
*((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1));
npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2));
*((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1));
npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2));
*((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1));
npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2));
*((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -9298,7 +9338,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -9406,22 +9446,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1));
npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2));
*((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1));
npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2));
*((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1));
npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2));
*((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1));
npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2));
*((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -9473,7 +9513,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -9581,22 +9621,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1));
npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2));
*((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1));
npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2));
*((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1));
npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2));
*((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1));
npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2));
*((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -9648,7 +9688,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -9756,22 +9796,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1));
npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2));
*((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1));
npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2));
*((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1));
npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2));
*((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1));
npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2));
*((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -9824,10 +9864,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -9843,7 +9883,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -9859,7 +9899,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -9875,7 +9915,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -9893,7 +9933,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -10001,22 +10041,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1));
npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2));
*((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1));
npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2));
*((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1));
npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2));
*((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1));
npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2));
*((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -10068,7 +10108,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -10176,22 +10216,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1));
npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2));
*((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1));
npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2));
*((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1));
npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2));
*((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1));
npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2));
*((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -10243,7 +10283,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -10351,22 +10391,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1));
npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2));
*((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1));
npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2));
*((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1));
npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2));
*((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1));
npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2));
*((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -10418,7 +10458,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -10526,22 +10566,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1));
npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2));
*((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1));
npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2));
*((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1));
npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2));
*((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1));
npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2));
*((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -10594,10 +10634,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -10613,7 +10653,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -10629,7 +10669,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -10645,7 +10685,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_BYTE == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -10663,7 +10703,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -10771,22 +10811,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1));
npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2));
*((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1));
npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2));
*((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1));
npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2));
*((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1));
npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2));
*((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -10838,7 +10878,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -10946,22 +10986,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1));
npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2));
*((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1));
npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2));
*((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1));
npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2));
*((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1));
npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2));
*((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -11013,7 +11053,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -11121,22 +11161,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1));
npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2));
*((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1));
npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2));
*((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1));
npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2));
*((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1));
npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2));
*((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -11188,7 +11228,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -11296,22 +11336,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1));
npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2));
*((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1));
npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2));
*((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1));
npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2));
*((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1));
npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2));
*((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -11364,10 +11404,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -11383,7 +11423,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -11399,7 +11439,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -11415,7 +11455,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_SHORT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -11433,7 +11473,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -11541,22 +11581,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1));
npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2));
*((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1));
npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2));
*((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1));
npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2));
*((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1));
npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2));
*((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -11608,7 +11648,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -11716,22 +11756,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1));
npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2));
*((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1));
npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2));
*((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1));
npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2));
*((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1));
npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2));
*((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -11783,7 +11823,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -11891,22 +11931,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1));
npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2));
*((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1));
npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2));
*((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1));
npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2));
*((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1));
npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2));
*((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -11958,7 +11998,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -12066,22 +12106,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1));
npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2));
*((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1));
npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2));
*((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1));
npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2));
*((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1));
npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2));
*((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -12134,10 +12174,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -12153,7 +12193,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -12169,7 +12209,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -12185,7 +12225,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_INT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -12203,7 +12243,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -12311,22 +12351,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1));
npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2));
*((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1));
npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2));
*((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1));
npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2));
*((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1));
npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2));
*((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -12378,7 +12418,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -12486,22 +12526,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1));
npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2));
*((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1));
npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2));
*((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1));
npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2));
*((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1));
npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2));
*((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -12553,7 +12593,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -12661,22 +12701,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1));
npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2));
*((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1));
npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2));
*((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1));
npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2));
*((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1));
npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2));
*((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -12728,7 +12768,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -12836,22 +12876,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1));
npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2));
*((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1));
npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2));
*((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1));
npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2));
*((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1));
npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2));
*((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -12904,10 +12944,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -12923,7 +12963,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -12939,7 +12979,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -12955,7 +12995,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -12973,7 +13013,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -13081,22 +13121,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1));
npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2));
*((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1));
npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2));
*((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1));
npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2));
*((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1));
npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2));
*((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -13148,7 +13188,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -13256,22 +13296,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1));
npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2));
*((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1));
npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2));
*((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1));
npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2));
*((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1));
npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2));
*((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -13323,7 +13363,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -13431,22 +13471,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1));
npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2));
*((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1));
npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2));
*((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1));
npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2));
*((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1));
npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2));
*((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -13498,7 +13538,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -13606,22 +13646,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1));
npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2));
*((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1));
npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2));
*((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1));
npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2));
*((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1));
npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2));
*((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -13674,10 +13714,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -13693,7 +13733,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -13709,7 +13749,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -13725,7 +13765,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -13743,7 +13783,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_max_i
@@ -13851,22 +13891,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1));
npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2));
*((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1));
npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2));
*((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1));
npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2));
*((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1));
npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2));
*((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -13918,7 +13958,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (0 && 0)
#define SCALAR_OP scalar_min_i
@@ -14026,22 +14066,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1));
npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2));
*((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1));
npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2));
*((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1));
npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2));
*((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1));
npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2));
*((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -14093,7 +14133,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_maxp_i
@@ -14201,22 +14241,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1));
npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2));
*((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1));
npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2));
*((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1));
npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2));
*((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1));
npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2));
*((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -14268,7 +14308,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (0 && 1)
#define SCALAR_OP scalar_minp_i
@@ -14376,22 +14416,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1));
npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2));
*((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1));
npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2));
*((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1));
npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2));
*((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1));
npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2));
*((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -14444,10 +14484,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 8
#if 1
#define TO_SIMD_SFX(X) X##_f8
@@ -14463,7 +14503,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 16
#if 1
#define TO_SIMD_SFX(X) X##_f16
@@ -14479,7 +14519,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 32
#if 1
#define TO_SIMD_SFX(X) X##_f32
@@ -14495,7 +14535,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 64
#if 1
#define TO_SIMD_SFX(X) X##_f64
@@ -14513,7 +14553,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (1 && 0)
#define SCALAR_OP scalar_max_f
@@ -14621,22 +14661,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1));
npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2));
*((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1));
npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2));
*((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1));
npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2));
*((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1));
npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2));
*((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -14688,7 +14728,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (1 && 0)
#define SCALAR_OP scalar_min_f
@@ -14796,22 +14836,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1));
npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2));
*((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1));
npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2));
*((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1));
npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2));
*((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1));
npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2));
*((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -14863,7 +14903,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (1 && 1)
#define SCALAR_OP scalar_maxp_f
@@ -14971,22 +15011,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1));
npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2));
*((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1));
npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2));
*((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1));
npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2));
*((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1));
npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2));
*((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -15038,7 +15078,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (1 && 1)
#define SCALAR_OP scalar_minp_f
@@ -15146,22 +15186,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1));
npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2));
*((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1));
npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2));
*((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1));
npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2));
*((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1));
npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2));
*((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -15214,10 +15254,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 8
#if 1
#define TO_SIMD_SFX(X) X##_f8
@@ -15233,7 +15273,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 16
#if 1
#define TO_SIMD_SFX(X) X##_f16
@@ -15249,7 +15289,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 32
#if 1
#define TO_SIMD_SFX(X) X##_f32
@@ -15265,7 +15305,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 64
#if 1
#define TO_SIMD_SFX(X) X##_f64
@@ -15283,7 +15323,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (1 && 0)
#define SCALAR_OP scalar_max_d
@@ -15391,22 +15431,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1));
npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2));
*((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1));
npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2));
*((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1));
npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2));
*((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1));
npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2));
*((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -15458,7 +15498,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (1 && 0)
#define SCALAR_OP scalar_min_d
@@ -15566,22 +15606,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1));
npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2));
*((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1));
npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2));
*((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1));
npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2));
*((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1));
npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2));
*((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -15633,7 +15673,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (1 && 1)
#define SCALAR_OP scalar_maxp_d
@@ -15741,22 +15781,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1));
npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2));
*((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1));
npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2));
*((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1));
npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2));
*((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1));
npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2));
*((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -15808,7 +15848,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (1 && 1)
#define SCALAR_OP scalar_minp_d
@@ -15916,22 +15956,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1));
npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2));
*((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1));
npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2));
*((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1));
npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2));
*((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1));
npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2));
*((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -15984,10 +16024,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 293
+#line 294
#undef TO_SIMD_SFX
#if 0
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 8
#if 1
#define TO_SIMD_SFX(X) X##_f8
@@ -16003,7 +16043,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 16
#if 1
#define TO_SIMD_SFX(X) X##_f16
@@ -16019,7 +16059,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 32
#if 1
#define TO_SIMD_SFX(X) X##_f32
@@ -16035,7 +16075,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed)
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 298
+#line 299
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 64
#if 1
#define TO_SIMD_SFX(X) X##_f64
@@ -16053,7 +16093,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed)
#endif
-#line 320
+#line 321
#if !0 || (1 && 0)
#define SCALAR_OP scalar_max_l
@@ -16161,22 +16201,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_maximum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1));
npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2));
*((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1));
npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2));
*((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1));
npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2));
*((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1));
npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2));
*((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -16228,7 +16268,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_maximum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !0 || (1 && 0)
#define SCALAR_OP scalar_min_l
@@ -16336,22 +16376,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_minimum)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1));
npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2));
*((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1));
npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2));
*((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1));
npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2));
*((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1));
npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2));
*((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -16403,7 +16443,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_minimum_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (1 && 1)
#define SCALAR_OP scalar_maxp_l
@@ -16511,22 +16551,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_fmax)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1));
npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2));
*((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1));
npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2));
*((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1));
npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2));
*((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1));
npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2));
*((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
@@ -16578,7 +16618,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_fmax_indexed)
#endif // !fp_only || (is_fp && fp_only)
-#line 320
+#line 321
#if !1 || (1 && 1)
#define SCALAR_OP scalar_minp_l
@@ -16686,22 +16726,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_fmin)
* result of iteration 1.
*/
- #line 430
+ #line 431
npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1));
npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2));
*((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0);
-#line 430
+#line 431
npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1));
npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2));
*((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1);
-#line 430
+#line 431
npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1));
npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2));
*((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2);
-#line 430
+#line 431
npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1));
npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2));
*((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3);
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src
index 236e2e2eb76..319072c01fb 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src
@@ -225,7 +225,8 @@ simd_binary_ccc_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip1, const npyv_lanety
}
}
// non-contiguous for float 32/64-bit memory access
-#if @is_fp@
+#if @is_fp@ && !defined(NPY_HAVE_NEON)
+// unroll scalars faster than non-contiguous vector load/store on Arm
static inline void
simd_binary_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip1, npy_intp sip1,
const npyv_lanetype_@sfx@ *ip2, npy_intp sip2,
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c
index 9d9bc64a160..30ce938d663 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c
@@ -26,8 +26,8 @@
* when there's no native FUSED support instead of fallback to libc
*/
#if NPY_SIMD_FMA3 // native support
-#line 23
-#if NPY_SIMD_F64
+#line 24
+#if NPY_SIMD_F64 && 0
/*
* Vectorized Cody-Waite range reduction technique
* Performs the reduction step x* = x - y*C in three steps:
@@ -46,8 +46,8 @@ simd_range_reduction_f64(npyv_f64 x, npyv_f64 y, npyv_f64 c1, npyv_f64 c2, npyv_
}
#endif
-#line 23
-#if NPY_SIMD_F32
+#line 24
+#if NPY_SIMD_F32 && 1
/*
* Vectorized Cody-Waite range reduction technique
* Performs the reduction step x* = x - y*C in three steps:
@@ -66,9 +66,11 @@ simd_range_reduction_f32(npyv_f32 x, npyv_f32 y, npyv_f32 c1, npyv_f32 c2, npyv_
}
#endif
-
-#if NPY_SIMD_F64
-#line 47
+/* Disable SIMD code and revert to libm: see
+ * https://mail.python.org/archives/list/[email protected]/thread/C6EYZZSR4EWGVKHAZXLE7IBILRMNVK7L/
+ * for detailed discussion on this*/
+#if 0 // NPY_SIMD_F64
+#line 50
#if defined(NPY_OS_WIN32) || defined(NPY_OS_CYGWIN)
NPY_FINLINE npyv_f64
#else
@@ -90,7 +92,7 @@ simd_cos_scalar_f64(npyv_f64 out, npy_uint64 cmp_bits)
return npyv_loada_f64(out_copy);
}
-#line 47
+#line 50
#if defined(NPY_OS_WIN32) || defined(NPY_OS_CYGWIN)
NPY_FINLINE npyv_f64
#else
@@ -208,7 +210,7 @@ simd_sin_poly_f64(npyv_f64 r, npyv_u64 ir, npyv_u64 sign)
return npyv_reinterpret_f64_u64(npyv_xor_u64(npyv_xor_u64(npyv_reinterpret_u64_f64(y), sign), odd));
}
-#line 167
+#line 170
NPY_FINLINE void
simd_cos_f64(const double *src, npy_intp ssrc, double *dst, npy_intp sdst, npy_intp len)
{
@@ -254,7 +256,7 @@ simd_cos_f64(const double *src, npy_intp ssrc, double *dst, npy_intp sdst, npy_i
npyv_cleanup();
}
-#line 167
+#line 170
NPY_FINLINE void
simd_sin_f64(const double *src, npy_intp ssrc, double *dst, npy_intp sdst, npy_intp len)
{
@@ -473,7 +475,7 @@ simd_sincos_f32(const float *src, npy_intp ssrc, float *dst, npy_intp sdst,
#endif // NPY_SIMD_FP32
#endif // NYP_SIMD_FMA3
-#line 388
+#line 391
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_cos)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
@@ -507,7 +509,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_cos)
#endif
}
-#line 388
+#line 391
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_sin)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
@@ -542,7 +544,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_sin)
}
-#line 426
+#line 429
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_sin)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
@@ -572,7 +574,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_sin)
#endif
}
-#line 426
+#line 429
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_cos)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data))
{
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src
index f07cb70f397..31de906098e 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src
@@ -19,8 +19,9 @@
/**begin repeat
* #check = F64, F32#
* #sfx = f64, f32#
+ * #enable = 0, 1#
*/
-#if NPY_SIMD_@check@
+#if NPY_SIMD_@check@ && @enable@
/*
* Vectorized Cody-Waite range reduction technique
* Performs the reduction step x* = x - y*C in three steps:
@@ -39,8 +40,10 @@ simd_range_reduction_@sfx@(npyv_@sfx@ x, npyv_@sfx@ y, npyv_@sfx@ c1, npyv_@sfx@
}
#endif
/**end repeat**/
-
-#if NPY_SIMD_F64
+/* Disable SIMD code and revert to libm: see
+ * https://mail.python.org/archives/list/[email protected]/thread/C6EYZZSR4EWGVKHAZXLE7IBILRMNVK7L/
+ * for detailed discussion on this*/
+#if 0 // NPY_SIMD_F64
/**begin repeat
* #op = cos, sin#
*/
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c
index 3ea2747d9e4..b2d3b0976ad 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c
@@ -604,6 +604,8 @@ simd_unary_nc_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride,
npyv_lanetype_s8 *op, npy_intp ostride,
@@ -614,112 +616,112 @@ simd_unary_nn_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_s8 v_0 = npyv_loadn_s8(ip + 0 * vstep * istride, istride);
npyv_s8 r_0 = npyv_negative_s8(v_0);
npyv_storen_s8(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_s8 v_1 = npyv_loadn_s8(ip + 1 * vstep * istride, istride);
npyv_s8 r_1 = npyv_negative_s8(v_1);
npyv_storen_s8(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_s8 v_2 = npyv_loadn_s8(ip + 2 * vstep * istride, istride);
npyv_s8 r_2 = npyv_negative_s8(v_2);
npyv_storen_s8(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_s8 v_3 = npyv_loadn_s8(ip + 3 * vstep * istride, istride);
npyv_s8 r_3 = npyv_negative_s8(v_3);
npyv_storen_s8(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_s8 v_4 = npyv_loadn_s8(ip + 4 * vstep * istride, istride);
npyv_s8 r_4 = npyv_negative_s8(v_4);
npyv_storen_s8(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_s8 v_5 = npyv_loadn_s8(ip + 5 * vstep * istride, istride);
npyv_s8 r_5 = npyv_negative_s8(v_5);
npyv_storen_s8(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_s8 v_6 = npyv_loadn_s8(ip + 6 * vstep * istride, istride);
npyv_s8 r_6 = npyv_negative_s8(v_6);
npyv_storen_s8(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_s8 v_7 = npyv_loadn_s8(ip + 7 * vstep * istride, istride);
npyv_s8 r_7 = npyv_negative_s8(v_7);
npyv_storen_s8(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_s8 v_8 = npyv_loadn_s8(ip + 8 * vstep * istride, istride);
npyv_s8 r_8 = npyv_negative_s8(v_8);
npyv_storen_s8(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_s8 v_9 = npyv_loadn_s8(ip + 9 * vstep * istride, istride);
npyv_s8 r_9 = npyv_negative_s8(v_9);
npyv_storen_s8(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_s8 v_10 = npyv_loadn_s8(ip + 10 * vstep * istride, istride);
npyv_s8 r_10 = npyv_negative_s8(v_10);
npyv_storen_s8(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_s8 v_11 = npyv_loadn_s8(ip + 11 * vstep * istride, istride);
npyv_s8 r_11 = npyv_negative_s8(v_11);
npyv_storen_s8(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_s8 v_12 = npyv_loadn_s8(ip + 12 * vstep * istride, istride);
npyv_s8 r_12 = npyv_negative_s8(v_12);
npyv_storen_s8(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_s8 v_13 = npyv_loadn_s8(ip + 13 * vstep * istride, istride);
npyv_s8 r_13 = npyv_negative_s8(v_13);
npyv_storen_s8(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_s8 v_14 = npyv_loadn_s8(ip + 14 * vstep * istride, istride);
npyv_s8 r_14 = npyv_negative_s8(v_14);
npyv_storen_s8(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_s8 v_15 = npyv_loadn_s8(ip + 15 * vstep * istride, istride);
npyv_s8 r_15 = npyv_negative_s8(v_15);
@@ -738,6 +740,7 @@ simd_unary_nn_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 0
#undef UNROLL
#endif // NPY_SIMD
@@ -1167,6 +1170,8 @@ simd_unary_nc_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride,
npyv_lanetype_u8 *op, npy_intp ostride,
@@ -1177,112 +1182,112 @@ simd_unary_nn_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_u8 v_0 = npyv_loadn_u8(ip + 0 * vstep * istride, istride);
npyv_u8 r_0 = npyv_negative_u8(v_0);
npyv_storen_u8(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_u8 v_1 = npyv_loadn_u8(ip + 1 * vstep * istride, istride);
npyv_u8 r_1 = npyv_negative_u8(v_1);
npyv_storen_u8(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_u8 v_2 = npyv_loadn_u8(ip + 2 * vstep * istride, istride);
npyv_u8 r_2 = npyv_negative_u8(v_2);
npyv_storen_u8(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_u8 v_3 = npyv_loadn_u8(ip + 3 * vstep * istride, istride);
npyv_u8 r_3 = npyv_negative_u8(v_3);
npyv_storen_u8(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_u8 v_4 = npyv_loadn_u8(ip + 4 * vstep * istride, istride);
npyv_u8 r_4 = npyv_negative_u8(v_4);
npyv_storen_u8(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_u8 v_5 = npyv_loadn_u8(ip + 5 * vstep * istride, istride);
npyv_u8 r_5 = npyv_negative_u8(v_5);
npyv_storen_u8(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_u8 v_6 = npyv_loadn_u8(ip + 6 * vstep * istride, istride);
npyv_u8 r_6 = npyv_negative_u8(v_6);
npyv_storen_u8(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_u8 v_7 = npyv_loadn_u8(ip + 7 * vstep * istride, istride);
npyv_u8 r_7 = npyv_negative_u8(v_7);
npyv_storen_u8(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_u8 v_8 = npyv_loadn_u8(ip + 8 * vstep * istride, istride);
npyv_u8 r_8 = npyv_negative_u8(v_8);
npyv_storen_u8(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_u8 v_9 = npyv_loadn_u8(ip + 9 * vstep * istride, istride);
npyv_u8 r_9 = npyv_negative_u8(v_9);
npyv_storen_u8(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_u8 v_10 = npyv_loadn_u8(ip + 10 * vstep * istride, istride);
npyv_u8 r_10 = npyv_negative_u8(v_10);
npyv_storen_u8(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_u8 v_11 = npyv_loadn_u8(ip + 11 * vstep * istride, istride);
npyv_u8 r_11 = npyv_negative_u8(v_11);
npyv_storen_u8(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_u8 v_12 = npyv_loadn_u8(ip + 12 * vstep * istride, istride);
npyv_u8 r_12 = npyv_negative_u8(v_12);
npyv_storen_u8(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_u8 v_13 = npyv_loadn_u8(ip + 13 * vstep * istride, istride);
npyv_u8 r_13 = npyv_negative_u8(v_13);
npyv_storen_u8(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_u8 v_14 = npyv_loadn_u8(ip + 14 * vstep * istride, istride);
npyv_u8 r_14 = npyv_negative_u8(v_14);
npyv_storen_u8(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_u8 v_15 = npyv_loadn_u8(ip + 15 * vstep * istride, istride);
npyv_u8 r_15 = npyv_negative_u8(v_15);
@@ -1301,6 +1306,7 @@ simd_unary_nn_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 0
#undef UNROLL
#endif // NPY_SIMD
@@ -1730,6 +1736,8 @@ simd_unary_nc_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride,
npyv_lanetype_s16 *op, npy_intp ostride,
@@ -1740,112 +1748,112 @@ simd_unary_nn_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_s16 v_0 = npyv_loadn_s16(ip + 0 * vstep * istride, istride);
npyv_s16 r_0 = npyv_negative_s16(v_0);
npyv_storen_s16(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_s16 v_1 = npyv_loadn_s16(ip + 1 * vstep * istride, istride);
npyv_s16 r_1 = npyv_negative_s16(v_1);
npyv_storen_s16(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_s16 v_2 = npyv_loadn_s16(ip + 2 * vstep * istride, istride);
npyv_s16 r_2 = npyv_negative_s16(v_2);
npyv_storen_s16(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_s16 v_3 = npyv_loadn_s16(ip + 3 * vstep * istride, istride);
npyv_s16 r_3 = npyv_negative_s16(v_3);
npyv_storen_s16(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_s16 v_4 = npyv_loadn_s16(ip + 4 * vstep * istride, istride);
npyv_s16 r_4 = npyv_negative_s16(v_4);
npyv_storen_s16(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_s16 v_5 = npyv_loadn_s16(ip + 5 * vstep * istride, istride);
npyv_s16 r_5 = npyv_negative_s16(v_5);
npyv_storen_s16(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_s16 v_6 = npyv_loadn_s16(ip + 6 * vstep * istride, istride);
npyv_s16 r_6 = npyv_negative_s16(v_6);
npyv_storen_s16(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_s16 v_7 = npyv_loadn_s16(ip + 7 * vstep * istride, istride);
npyv_s16 r_7 = npyv_negative_s16(v_7);
npyv_storen_s16(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_s16 v_8 = npyv_loadn_s16(ip + 8 * vstep * istride, istride);
npyv_s16 r_8 = npyv_negative_s16(v_8);
npyv_storen_s16(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_s16 v_9 = npyv_loadn_s16(ip + 9 * vstep * istride, istride);
npyv_s16 r_9 = npyv_negative_s16(v_9);
npyv_storen_s16(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_s16 v_10 = npyv_loadn_s16(ip + 10 * vstep * istride, istride);
npyv_s16 r_10 = npyv_negative_s16(v_10);
npyv_storen_s16(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_s16 v_11 = npyv_loadn_s16(ip + 11 * vstep * istride, istride);
npyv_s16 r_11 = npyv_negative_s16(v_11);
npyv_storen_s16(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_s16 v_12 = npyv_loadn_s16(ip + 12 * vstep * istride, istride);
npyv_s16 r_12 = npyv_negative_s16(v_12);
npyv_storen_s16(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_s16 v_13 = npyv_loadn_s16(ip + 13 * vstep * istride, istride);
npyv_s16 r_13 = npyv_negative_s16(v_13);
npyv_storen_s16(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_s16 v_14 = npyv_loadn_s16(ip + 14 * vstep * istride, istride);
npyv_s16 r_14 = npyv_negative_s16(v_14);
npyv_storen_s16(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_s16 v_15 = npyv_loadn_s16(ip + 15 * vstep * istride, istride);
npyv_s16 r_15 = npyv_negative_s16(v_15);
@@ -1864,6 +1872,7 @@ simd_unary_nn_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 0
#undef UNROLL
#endif // NPY_SIMD
@@ -2293,6 +2302,8 @@ simd_unary_nc_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride,
npyv_lanetype_u16 *op, npy_intp ostride,
@@ -2303,112 +2314,112 @@ simd_unary_nn_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_u16 v_0 = npyv_loadn_u16(ip + 0 * vstep * istride, istride);
npyv_u16 r_0 = npyv_negative_u16(v_0);
npyv_storen_u16(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_u16 v_1 = npyv_loadn_u16(ip + 1 * vstep * istride, istride);
npyv_u16 r_1 = npyv_negative_u16(v_1);
npyv_storen_u16(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_u16 v_2 = npyv_loadn_u16(ip + 2 * vstep * istride, istride);
npyv_u16 r_2 = npyv_negative_u16(v_2);
npyv_storen_u16(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_u16 v_3 = npyv_loadn_u16(ip + 3 * vstep * istride, istride);
npyv_u16 r_3 = npyv_negative_u16(v_3);
npyv_storen_u16(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_u16 v_4 = npyv_loadn_u16(ip + 4 * vstep * istride, istride);
npyv_u16 r_4 = npyv_negative_u16(v_4);
npyv_storen_u16(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_u16 v_5 = npyv_loadn_u16(ip + 5 * vstep * istride, istride);
npyv_u16 r_5 = npyv_negative_u16(v_5);
npyv_storen_u16(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_u16 v_6 = npyv_loadn_u16(ip + 6 * vstep * istride, istride);
npyv_u16 r_6 = npyv_negative_u16(v_6);
npyv_storen_u16(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_u16 v_7 = npyv_loadn_u16(ip + 7 * vstep * istride, istride);
npyv_u16 r_7 = npyv_negative_u16(v_7);
npyv_storen_u16(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_u16 v_8 = npyv_loadn_u16(ip + 8 * vstep * istride, istride);
npyv_u16 r_8 = npyv_negative_u16(v_8);
npyv_storen_u16(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_u16 v_9 = npyv_loadn_u16(ip + 9 * vstep * istride, istride);
npyv_u16 r_9 = npyv_negative_u16(v_9);
npyv_storen_u16(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_u16 v_10 = npyv_loadn_u16(ip + 10 * vstep * istride, istride);
npyv_u16 r_10 = npyv_negative_u16(v_10);
npyv_storen_u16(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_u16 v_11 = npyv_loadn_u16(ip + 11 * vstep * istride, istride);
npyv_u16 r_11 = npyv_negative_u16(v_11);
npyv_storen_u16(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_u16 v_12 = npyv_loadn_u16(ip + 12 * vstep * istride, istride);
npyv_u16 r_12 = npyv_negative_u16(v_12);
npyv_storen_u16(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_u16 v_13 = npyv_loadn_u16(ip + 13 * vstep * istride, istride);
npyv_u16 r_13 = npyv_negative_u16(v_13);
npyv_storen_u16(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_u16 v_14 = npyv_loadn_u16(ip + 14 * vstep * istride, istride);
npyv_u16 r_14 = npyv_negative_u16(v_14);
npyv_storen_u16(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_u16 v_15 = npyv_loadn_u16(ip + 15 * vstep * istride, istride);
npyv_u16 r_15 = npyv_negative_u16(v_15);
@@ -2427,6 +2438,7 @@ simd_unary_nn_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 0
#undef UNROLL
#endif // NPY_SIMD
@@ -2856,6 +2868,8 @@ simd_unary_nc_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride,
npyv_lanetype_s32 *op, npy_intp ostride,
@@ -2866,112 +2880,112 @@ simd_unary_nn_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_s32 v_0 = npyv_loadn_s32(ip + 0 * vstep * istride, istride);
npyv_s32 r_0 = npyv_negative_s32(v_0);
npyv_storen_s32(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_s32 v_1 = npyv_loadn_s32(ip + 1 * vstep * istride, istride);
npyv_s32 r_1 = npyv_negative_s32(v_1);
npyv_storen_s32(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_s32 v_2 = npyv_loadn_s32(ip + 2 * vstep * istride, istride);
npyv_s32 r_2 = npyv_negative_s32(v_2);
npyv_storen_s32(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_s32 v_3 = npyv_loadn_s32(ip + 3 * vstep * istride, istride);
npyv_s32 r_3 = npyv_negative_s32(v_3);
npyv_storen_s32(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_s32 v_4 = npyv_loadn_s32(ip + 4 * vstep * istride, istride);
npyv_s32 r_4 = npyv_negative_s32(v_4);
npyv_storen_s32(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_s32 v_5 = npyv_loadn_s32(ip + 5 * vstep * istride, istride);
npyv_s32 r_5 = npyv_negative_s32(v_5);
npyv_storen_s32(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_s32 v_6 = npyv_loadn_s32(ip + 6 * vstep * istride, istride);
npyv_s32 r_6 = npyv_negative_s32(v_6);
npyv_storen_s32(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_s32 v_7 = npyv_loadn_s32(ip + 7 * vstep * istride, istride);
npyv_s32 r_7 = npyv_negative_s32(v_7);
npyv_storen_s32(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_s32 v_8 = npyv_loadn_s32(ip + 8 * vstep * istride, istride);
npyv_s32 r_8 = npyv_negative_s32(v_8);
npyv_storen_s32(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_s32 v_9 = npyv_loadn_s32(ip + 9 * vstep * istride, istride);
npyv_s32 r_9 = npyv_negative_s32(v_9);
npyv_storen_s32(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_s32 v_10 = npyv_loadn_s32(ip + 10 * vstep * istride, istride);
npyv_s32 r_10 = npyv_negative_s32(v_10);
npyv_storen_s32(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_s32 v_11 = npyv_loadn_s32(ip + 11 * vstep * istride, istride);
npyv_s32 r_11 = npyv_negative_s32(v_11);
npyv_storen_s32(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_s32 v_12 = npyv_loadn_s32(ip + 12 * vstep * istride, istride);
npyv_s32 r_12 = npyv_negative_s32(v_12);
npyv_storen_s32(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_s32 v_13 = npyv_loadn_s32(ip + 13 * vstep * istride, istride);
npyv_s32 r_13 = npyv_negative_s32(v_13);
npyv_storen_s32(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_s32 v_14 = npyv_loadn_s32(ip + 14 * vstep * istride, istride);
npyv_s32 r_14 = npyv_negative_s32(v_14);
npyv_storen_s32(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_s32 v_15 = npyv_loadn_s32(ip + 15 * vstep * istride, istride);
npyv_s32 r_15 = npyv_negative_s32(v_15);
@@ -2990,6 +3004,7 @@ simd_unary_nn_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 1
#undef UNROLL
#endif // NPY_SIMD
@@ -3419,6 +3434,8 @@ simd_unary_nc_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride,
npyv_lanetype_u32 *op, npy_intp ostride,
@@ -3429,112 +3446,112 @@ simd_unary_nn_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_u32 v_0 = npyv_loadn_u32(ip + 0 * vstep * istride, istride);
npyv_u32 r_0 = npyv_negative_u32(v_0);
npyv_storen_u32(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_u32 v_1 = npyv_loadn_u32(ip + 1 * vstep * istride, istride);
npyv_u32 r_1 = npyv_negative_u32(v_1);
npyv_storen_u32(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_u32 v_2 = npyv_loadn_u32(ip + 2 * vstep * istride, istride);
npyv_u32 r_2 = npyv_negative_u32(v_2);
npyv_storen_u32(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_u32 v_3 = npyv_loadn_u32(ip + 3 * vstep * istride, istride);
npyv_u32 r_3 = npyv_negative_u32(v_3);
npyv_storen_u32(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_u32 v_4 = npyv_loadn_u32(ip + 4 * vstep * istride, istride);
npyv_u32 r_4 = npyv_negative_u32(v_4);
npyv_storen_u32(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_u32 v_5 = npyv_loadn_u32(ip + 5 * vstep * istride, istride);
npyv_u32 r_5 = npyv_negative_u32(v_5);
npyv_storen_u32(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_u32 v_6 = npyv_loadn_u32(ip + 6 * vstep * istride, istride);
npyv_u32 r_6 = npyv_negative_u32(v_6);
npyv_storen_u32(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_u32 v_7 = npyv_loadn_u32(ip + 7 * vstep * istride, istride);
npyv_u32 r_7 = npyv_negative_u32(v_7);
npyv_storen_u32(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_u32 v_8 = npyv_loadn_u32(ip + 8 * vstep * istride, istride);
npyv_u32 r_8 = npyv_negative_u32(v_8);
npyv_storen_u32(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_u32 v_9 = npyv_loadn_u32(ip + 9 * vstep * istride, istride);
npyv_u32 r_9 = npyv_negative_u32(v_9);
npyv_storen_u32(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_u32 v_10 = npyv_loadn_u32(ip + 10 * vstep * istride, istride);
npyv_u32 r_10 = npyv_negative_u32(v_10);
npyv_storen_u32(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_u32 v_11 = npyv_loadn_u32(ip + 11 * vstep * istride, istride);
npyv_u32 r_11 = npyv_negative_u32(v_11);
npyv_storen_u32(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_u32 v_12 = npyv_loadn_u32(ip + 12 * vstep * istride, istride);
npyv_u32 r_12 = npyv_negative_u32(v_12);
npyv_storen_u32(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_u32 v_13 = npyv_loadn_u32(ip + 13 * vstep * istride, istride);
npyv_u32 r_13 = npyv_negative_u32(v_13);
npyv_storen_u32(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_u32 v_14 = npyv_loadn_u32(ip + 14 * vstep * istride, istride);
npyv_u32 r_14 = npyv_negative_u32(v_14);
npyv_storen_u32(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_u32 v_15 = npyv_loadn_u32(ip + 15 * vstep * istride, istride);
npyv_u32 r_15 = npyv_negative_u32(v_15);
@@ -3553,6 +3570,7 @@ simd_unary_nn_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 1
#undef UNROLL
#endif // NPY_SIMD
@@ -3982,6 +4000,8 @@ simd_unary_nc_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride,
npyv_lanetype_s64 *op, npy_intp ostride,
@@ -3992,112 +4012,112 @@ simd_unary_nn_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_s64 v_0 = npyv_loadn_s64(ip + 0 * vstep * istride, istride);
npyv_s64 r_0 = npyv_negative_s64(v_0);
npyv_storen_s64(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_s64 v_1 = npyv_loadn_s64(ip + 1 * vstep * istride, istride);
npyv_s64 r_1 = npyv_negative_s64(v_1);
npyv_storen_s64(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_s64 v_2 = npyv_loadn_s64(ip + 2 * vstep * istride, istride);
npyv_s64 r_2 = npyv_negative_s64(v_2);
npyv_storen_s64(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_s64 v_3 = npyv_loadn_s64(ip + 3 * vstep * istride, istride);
npyv_s64 r_3 = npyv_negative_s64(v_3);
npyv_storen_s64(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_s64 v_4 = npyv_loadn_s64(ip + 4 * vstep * istride, istride);
npyv_s64 r_4 = npyv_negative_s64(v_4);
npyv_storen_s64(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_s64 v_5 = npyv_loadn_s64(ip + 5 * vstep * istride, istride);
npyv_s64 r_5 = npyv_negative_s64(v_5);
npyv_storen_s64(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_s64 v_6 = npyv_loadn_s64(ip + 6 * vstep * istride, istride);
npyv_s64 r_6 = npyv_negative_s64(v_6);
npyv_storen_s64(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_s64 v_7 = npyv_loadn_s64(ip + 7 * vstep * istride, istride);
npyv_s64 r_7 = npyv_negative_s64(v_7);
npyv_storen_s64(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_s64 v_8 = npyv_loadn_s64(ip + 8 * vstep * istride, istride);
npyv_s64 r_8 = npyv_negative_s64(v_8);
npyv_storen_s64(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_s64 v_9 = npyv_loadn_s64(ip + 9 * vstep * istride, istride);
npyv_s64 r_9 = npyv_negative_s64(v_9);
npyv_storen_s64(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_s64 v_10 = npyv_loadn_s64(ip + 10 * vstep * istride, istride);
npyv_s64 r_10 = npyv_negative_s64(v_10);
npyv_storen_s64(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_s64 v_11 = npyv_loadn_s64(ip + 11 * vstep * istride, istride);
npyv_s64 r_11 = npyv_negative_s64(v_11);
npyv_storen_s64(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_s64 v_12 = npyv_loadn_s64(ip + 12 * vstep * istride, istride);
npyv_s64 r_12 = npyv_negative_s64(v_12);
npyv_storen_s64(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_s64 v_13 = npyv_loadn_s64(ip + 13 * vstep * istride, istride);
npyv_s64 r_13 = npyv_negative_s64(v_13);
npyv_storen_s64(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_s64 v_14 = npyv_loadn_s64(ip + 14 * vstep * istride, istride);
npyv_s64 r_14 = npyv_negative_s64(v_14);
npyv_storen_s64(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_s64 v_15 = npyv_loadn_s64(ip + 15 * vstep * istride, istride);
npyv_s64 r_15 = npyv_negative_s64(v_15);
@@ -4116,6 +4136,7 @@ simd_unary_nn_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 1
#undef UNROLL
#endif // NPY_SIMD
@@ -4545,6 +4566,8 @@ simd_unary_nc_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride,
npyv_lanetype_u64 *op, npy_intp ostride,
@@ -4555,112 +4578,112 @@ simd_unary_nn_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_u64 v_0 = npyv_loadn_u64(ip + 0 * vstep * istride, istride);
npyv_u64 r_0 = npyv_negative_u64(v_0);
npyv_storen_u64(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_u64 v_1 = npyv_loadn_u64(ip + 1 * vstep * istride, istride);
npyv_u64 r_1 = npyv_negative_u64(v_1);
npyv_storen_u64(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_u64 v_2 = npyv_loadn_u64(ip + 2 * vstep * istride, istride);
npyv_u64 r_2 = npyv_negative_u64(v_2);
npyv_storen_u64(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_u64 v_3 = npyv_loadn_u64(ip + 3 * vstep * istride, istride);
npyv_u64 r_3 = npyv_negative_u64(v_3);
npyv_storen_u64(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_u64 v_4 = npyv_loadn_u64(ip + 4 * vstep * istride, istride);
npyv_u64 r_4 = npyv_negative_u64(v_4);
npyv_storen_u64(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_u64 v_5 = npyv_loadn_u64(ip + 5 * vstep * istride, istride);
npyv_u64 r_5 = npyv_negative_u64(v_5);
npyv_storen_u64(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_u64 v_6 = npyv_loadn_u64(ip + 6 * vstep * istride, istride);
npyv_u64 r_6 = npyv_negative_u64(v_6);
npyv_storen_u64(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_u64 v_7 = npyv_loadn_u64(ip + 7 * vstep * istride, istride);
npyv_u64 r_7 = npyv_negative_u64(v_7);
npyv_storen_u64(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_u64 v_8 = npyv_loadn_u64(ip + 8 * vstep * istride, istride);
npyv_u64 r_8 = npyv_negative_u64(v_8);
npyv_storen_u64(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_u64 v_9 = npyv_loadn_u64(ip + 9 * vstep * istride, istride);
npyv_u64 r_9 = npyv_negative_u64(v_9);
npyv_storen_u64(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_u64 v_10 = npyv_loadn_u64(ip + 10 * vstep * istride, istride);
npyv_u64 r_10 = npyv_negative_u64(v_10);
npyv_storen_u64(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_u64 v_11 = npyv_loadn_u64(ip + 11 * vstep * istride, istride);
npyv_u64 r_11 = npyv_negative_u64(v_11);
npyv_storen_u64(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_u64 v_12 = npyv_loadn_u64(ip + 12 * vstep * istride, istride);
npyv_u64 r_12 = npyv_negative_u64(v_12);
npyv_storen_u64(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_u64 v_13 = npyv_loadn_u64(ip + 13 * vstep * istride, istride);
npyv_u64 r_13 = npyv_negative_u64(v_13);
npyv_storen_u64(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_u64 v_14 = npyv_loadn_u64(ip + 14 * vstep * istride, istride);
npyv_u64 r_14 = npyv_negative_u64(v_14);
npyv_storen_u64(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_u64 v_15 = npyv_loadn_u64(ip + 15 * vstep * istride, istride);
npyv_u64 r_15 = npyv_negative_u64(v_15);
@@ -4679,6 +4702,7 @@ simd_unary_nn_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 1
#undef UNROLL
#endif // NPY_SIMD
@@ -5108,6 +5132,8 @@ simd_unary_nc_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride,
npyv_lanetype_f32 *op, npy_intp ostride,
@@ -5118,112 +5144,112 @@ simd_unary_nn_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_f32 v_0 = npyv_loadn_f32(ip + 0 * vstep * istride, istride);
npyv_f32 r_0 = npyv_negative_f32(v_0);
npyv_storen_f32(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_f32 v_1 = npyv_loadn_f32(ip + 1 * vstep * istride, istride);
npyv_f32 r_1 = npyv_negative_f32(v_1);
npyv_storen_f32(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_f32 v_2 = npyv_loadn_f32(ip + 2 * vstep * istride, istride);
npyv_f32 r_2 = npyv_negative_f32(v_2);
npyv_storen_f32(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_f32 v_3 = npyv_loadn_f32(ip + 3 * vstep * istride, istride);
npyv_f32 r_3 = npyv_negative_f32(v_3);
npyv_storen_f32(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_f32 v_4 = npyv_loadn_f32(ip + 4 * vstep * istride, istride);
npyv_f32 r_4 = npyv_negative_f32(v_4);
npyv_storen_f32(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_f32 v_5 = npyv_loadn_f32(ip + 5 * vstep * istride, istride);
npyv_f32 r_5 = npyv_negative_f32(v_5);
npyv_storen_f32(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_f32 v_6 = npyv_loadn_f32(ip + 6 * vstep * istride, istride);
npyv_f32 r_6 = npyv_negative_f32(v_6);
npyv_storen_f32(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_f32 v_7 = npyv_loadn_f32(ip + 7 * vstep * istride, istride);
npyv_f32 r_7 = npyv_negative_f32(v_7);
npyv_storen_f32(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_f32 v_8 = npyv_loadn_f32(ip + 8 * vstep * istride, istride);
npyv_f32 r_8 = npyv_negative_f32(v_8);
npyv_storen_f32(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_f32 v_9 = npyv_loadn_f32(ip + 9 * vstep * istride, istride);
npyv_f32 r_9 = npyv_negative_f32(v_9);
npyv_storen_f32(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_f32 v_10 = npyv_loadn_f32(ip + 10 * vstep * istride, istride);
npyv_f32 r_10 = npyv_negative_f32(v_10);
npyv_storen_f32(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_f32 v_11 = npyv_loadn_f32(ip + 11 * vstep * istride, istride);
npyv_f32 r_11 = npyv_negative_f32(v_11);
npyv_storen_f32(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_f32 v_12 = npyv_loadn_f32(ip + 12 * vstep * istride, istride);
npyv_f32 r_12 = npyv_negative_f32(v_12);
npyv_storen_f32(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_f32 v_13 = npyv_loadn_f32(ip + 13 * vstep * istride, istride);
npyv_f32 r_13 = npyv_negative_f32(v_13);
npyv_storen_f32(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_f32 v_14 = npyv_loadn_f32(ip + 14 * vstep * istride, istride);
npyv_f32 r_14 = npyv_negative_f32(v_14);
npyv_storen_f32(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_f32 v_15 = npyv_loadn_f32(ip + 15 * vstep * istride, istride);
npyv_f32 r_15 = npyv_negative_f32(v_15);
@@ -5242,6 +5268,7 @@ simd_unary_nn_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 1
#undef UNROLL
#endif // NPY_SIMD_F32
@@ -5671,6 +5698,8 @@ simd_unary_nc_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
npyv_lanetype_f64 *op, npy_intp ostride,
@@ -5681,112 +5710,112 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
// unrolled vector loop
for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) {
- #line 211
+ #line 213
#if UNROLL > 0
npyv_f64 v_0 = npyv_loadn_f64(ip + 0 * vstep * istride, istride);
npyv_f64 r_0 = npyv_negative_f64(v_0);
npyv_storen_f64(op + 0 * vstep * ostride, ostride, r_0);
#endif
-#line 211
+#line 213
#if UNROLL > 1
npyv_f64 v_1 = npyv_loadn_f64(ip + 1 * vstep * istride, istride);
npyv_f64 r_1 = npyv_negative_f64(v_1);
npyv_storen_f64(op + 1 * vstep * ostride, ostride, r_1);
#endif
-#line 211
+#line 213
#if UNROLL > 2
npyv_f64 v_2 = npyv_loadn_f64(ip + 2 * vstep * istride, istride);
npyv_f64 r_2 = npyv_negative_f64(v_2);
npyv_storen_f64(op + 2 * vstep * ostride, ostride, r_2);
#endif
-#line 211
+#line 213
#if UNROLL > 3
npyv_f64 v_3 = npyv_loadn_f64(ip + 3 * vstep * istride, istride);
npyv_f64 r_3 = npyv_negative_f64(v_3);
npyv_storen_f64(op + 3 * vstep * ostride, ostride, r_3);
#endif
-#line 211
+#line 213
#if UNROLL > 4
npyv_f64 v_4 = npyv_loadn_f64(ip + 4 * vstep * istride, istride);
npyv_f64 r_4 = npyv_negative_f64(v_4);
npyv_storen_f64(op + 4 * vstep * ostride, ostride, r_4);
#endif
-#line 211
+#line 213
#if UNROLL > 5
npyv_f64 v_5 = npyv_loadn_f64(ip + 5 * vstep * istride, istride);
npyv_f64 r_5 = npyv_negative_f64(v_5);
npyv_storen_f64(op + 5 * vstep * ostride, ostride, r_5);
#endif
-#line 211
+#line 213
#if UNROLL > 6
npyv_f64 v_6 = npyv_loadn_f64(ip + 6 * vstep * istride, istride);
npyv_f64 r_6 = npyv_negative_f64(v_6);
npyv_storen_f64(op + 6 * vstep * ostride, ostride, r_6);
#endif
-#line 211
+#line 213
#if UNROLL > 7
npyv_f64 v_7 = npyv_loadn_f64(ip + 7 * vstep * istride, istride);
npyv_f64 r_7 = npyv_negative_f64(v_7);
npyv_storen_f64(op + 7 * vstep * ostride, ostride, r_7);
#endif
-#line 211
+#line 213
#if UNROLL > 8
npyv_f64 v_8 = npyv_loadn_f64(ip + 8 * vstep * istride, istride);
npyv_f64 r_8 = npyv_negative_f64(v_8);
npyv_storen_f64(op + 8 * vstep * ostride, ostride, r_8);
#endif
-#line 211
+#line 213
#if UNROLL > 9
npyv_f64 v_9 = npyv_loadn_f64(ip + 9 * vstep * istride, istride);
npyv_f64 r_9 = npyv_negative_f64(v_9);
npyv_storen_f64(op + 9 * vstep * ostride, ostride, r_9);
#endif
-#line 211
+#line 213
#if UNROLL > 10
npyv_f64 v_10 = npyv_loadn_f64(ip + 10 * vstep * istride, istride);
npyv_f64 r_10 = npyv_negative_f64(v_10);
npyv_storen_f64(op + 10 * vstep * ostride, ostride, r_10);
#endif
-#line 211
+#line 213
#if UNROLL > 11
npyv_f64 v_11 = npyv_loadn_f64(ip + 11 * vstep * istride, istride);
npyv_f64 r_11 = npyv_negative_f64(v_11);
npyv_storen_f64(op + 11 * vstep * ostride, ostride, r_11);
#endif
-#line 211
+#line 213
#if UNROLL > 12
npyv_f64 v_12 = npyv_loadn_f64(ip + 12 * vstep * istride, istride);
npyv_f64 r_12 = npyv_negative_f64(v_12);
npyv_storen_f64(op + 12 * vstep * ostride, ostride, r_12);
#endif
-#line 211
+#line 213
#if UNROLL > 13
npyv_f64 v_13 = npyv_loadn_f64(ip + 13 * vstep * istride, istride);
npyv_f64 r_13 = npyv_negative_f64(v_13);
npyv_storen_f64(op + 13 * vstep * ostride, ostride, r_13);
#endif
-#line 211
+#line 213
#if UNROLL > 14
npyv_f64 v_14 = npyv_loadn_f64(ip + 14 * vstep * istride, istride);
npyv_f64 r_14 = npyv_negative_f64(v_14);
npyv_storen_f64(op + 14 * vstep * ostride, ostride, r_14);
#endif
-#line 211
+#line 213
#if UNROLL > 15
npyv_f64 v_15 = npyv_loadn_f64(ip + 15 * vstep * istride, istride);
npyv_f64 r_15 = npyv_negative_f64(v_15);
@@ -5805,6 +5834,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
*op = scalar_negative(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // 1
#undef UNROLL
#endif // NPY_SIMD_F64
@@ -5814,10 +5844,10 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
/********************************************************************************
** Defining ufunc inner functions
********************************************************************************/
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -5833,7 +5863,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -5849,7 +5879,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -5865,7 +5895,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -5883,7 +5913,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride,
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -5921,8 +5951,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -5945,97 +5975,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_ubyte in_0 = *((const npy_ubyte *)(ip + 0 * istep));
*((npy_ubyte *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_ubyte in_1 = *((const npy_ubyte *)(ip + 1 * istep));
*((npy_ubyte *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_ubyte in_2 = *((const npy_ubyte *)(ip + 2 * istep));
*((npy_ubyte *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_ubyte in_3 = *((const npy_ubyte *)(ip + 3 * istep));
*((npy_ubyte *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_ubyte in_4 = *((const npy_ubyte *)(ip + 4 * istep));
*((npy_ubyte *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_ubyte in_5 = *((const npy_ubyte *)(ip + 5 * istep));
*((npy_ubyte *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_ubyte in_6 = *((const npy_ubyte *)(ip + 6 * istep));
*((npy_ubyte *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_ubyte in_7 = *((const npy_ubyte *)(ip + 7 * istep));
*((npy_ubyte *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_ubyte in_8 = *((const npy_ubyte *)(ip + 8 * istep));
*((npy_ubyte *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_ubyte in_9 = *((const npy_ubyte *)(ip + 9 * istep));
*((npy_ubyte *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_ubyte in_10 = *((const npy_ubyte *)(ip + 10 * istep));
*((npy_ubyte *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_ubyte in_11 = *((const npy_ubyte *)(ip + 11 * istep));
*((npy_ubyte *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_ubyte in_12 = *((const npy_ubyte *)(ip + 12 * istep));
*((npy_ubyte *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_ubyte in_13 = *((const npy_ubyte *)(ip + 13 * istep));
*((npy_ubyte *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_ubyte in_14 = *((const npy_ubyte *)(ip + 14 * istep));
*((npy_ubyte *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_ubyte in_15 = *((const npy_ubyte *)(ip + 15 * istep));
*((npy_ubyte *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -6055,10 +6085,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -6074,7 +6104,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -6090,7 +6120,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -6106,7 +6136,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -6124,7 +6154,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -6162,8 +6192,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -6186,97 +6216,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_ushort in_0 = *((const npy_ushort *)(ip + 0 * istep));
*((npy_ushort *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_ushort in_1 = *((const npy_ushort *)(ip + 1 * istep));
*((npy_ushort *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_ushort in_2 = *((const npy_ushort *)(ip + 2 * istep));
*((npy_ushort *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_ushort in_3 = *((const npy_ushort *)(ip + 3 * istep));
*((npy_ushort *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_ushort in_4 = *((const npy_ushort *)(ip + 4 * istep));
*((npy_ushort *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_ushort in_5 = *((const npy_ushort *)(ip + 5 * istep));
*((npy_ushort *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_ushort in_6 = *((const npy_ushort *)(ip + 6 * istep));
*((npy_ushort *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_ushort in_7 = *((const npy_ushort *)(ip + 7 * istep));
*((npy_ushort *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_ushort in_8 = *((const npy_ushort *)(ip + 8 * istep));
*((npy_ushort *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_ushort in_9 = *((const npy_ushort *)(ip + 9 * istep));
*((npy_ushort *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_ushort in_10 = *((const npy_ushort *)(ip + 10 * istep));
*((npy_ushort *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_ushort in_11 = *((const npy_ushort *)(ip + 11 * istep));
*((npy_ushort *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_ushort in_12 = *((const npy_ushort *)(ip + 12 * istep));
*((npy_ushort *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_ushort in_13 = *((const npy_ushort *)(ip + 13 * istep));
*((npy_ushort *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_ushort in_14 = *((const npy_ushort *)(ip + 14 * istep));
*((npy_ushort *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_ushort in_15 = *((const npy_ushort *)(ip + 15 * istep));
*((npy_ushort *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -6296,10 +6326,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -6315,7 +6345,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -6331,7 +6361,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -6347,7 +6377,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -6365,7 +6395,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -6403,8 +6433,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -6427,97 +6457,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_uint in_0 = *((const npy_uint *)(ip + 0 * istep));
*((npy_uint *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_uint in_1 = *((const npy_uint *)(ip + 1 * istep));
*((npy_uint *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_uint in_2 = *((const npy_uint *)(ip + 2 * istep));
*((npy_uint *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_uint in_3 = *((const npy_uint *)(ip + 3 * istep));
*((npy_uint *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_uint in_4 = *((const npy_uint *)(ip + 4 * istep));
*((npy_uint *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_uint in_5 = *((const npy_uint *)(ip + 5 * istep));
*((npy_uint *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_uint in_6 = *((const npy_uint *)(ip + 6 * istep));
*((npy_uint *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_uint in_7 = *((const npy_uint *)(ip + 7 * istep));
*((npy_uint *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_uint in_8 = *((const npy_uint *)(ip + 8 * istep));
*((npy_uint *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_uint in_9 = *((const npy_uint *)(ip + 9 * istep));
*((npy_uint *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_uint in_10 = *((const npy_uint *)(ip + 10 * istep));
*((npy_uint *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_uint in_11 = *((const npy_uint *)(ip + 11 * istep));
*((npy_uint *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_uint in_12 = *((const npy_uint *)(ip + 12 * istep));
*((npy_uint *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_uint in_13 = *((const npy_uint *)(ip + 13 * istep));
*((npy_uint *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_uint in_14 = *((const npy_uint *)(ip + 14 * istep));
*((npy_uint *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_uint in_15 = *((const npy_uint *)(ip + 15 * istep));
*((npy_uint *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -6537,10 +6567,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -6556,7 +6586,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -6572,7 +6602,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -6588,7 +6618,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -6606,7 +6636,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -6644,8 +6674,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -6668,97 +6698,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_ulong in_0 = *((const npy_ulong *)(ip + 0 * istep));
*((npy_ulong *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_ulong in_1 = *((const npy_ulong *)(ip + 1 * istep));
*((npy_ulong *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_ulong in_2 = *((const npy_ulong *)(ip + 2 * istep));
*((npy_ulong *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_ulong in_3 = *((const npy_ulong *)(ip + 3 * istep));
*((npy_ulong *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_ulong in_4 = *((const npy_ulong *)(ip + 4 * istep));
*((npy_ulong *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_ulong in_5 = *((const npy_ulong *)(ip + 5 * istep));
*((npy_ulong *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_ulong in_6 = *((const npy_ulong *)(ip + 6 * istep));
*((npy_ulong *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_ulong in_7 = *((const npy_ulong *)(ip + 7 * istep));
*((npy_ulong *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_ulong in_8 = *((const npy_ulong *)(ip + 8 * istep));
*((npy_ulong *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_ulong in_9 = *((const npy_ulong *)(ip + 9 * istep));
*((npy_ulong *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_ulong in_10 = *((const npy_ulong *)(ip + 10 * istep));
*((npy_ulong *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_ulong in_11 = *((const npy_ulong *)(ip + 11 * istep));
*((npy_ulong *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_ulong in_12 = *((const npy_ulong *)(ip + 12 * istep));
*((npy_ulong *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_ulong in_13 = *((const npy_ulong *)(ip + 13 * istep));
*((npy_ulong *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_ulong in_14 = *((const npy_ulong *)(ip + 14 * istep));
*((npy_ulong *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_ulong in_15 = *((const npy_ulong *)(ip + 15 * istep));
*((npy_ulong *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -6778,10 +6808,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -6797,7 +6827,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -6813,7 +6843,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -6829,7 +6859,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -6847,7 +6877,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -6885,8 +6915,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -6909,97 +6939,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_ulonglong in_0 = *((const npy_ulonglong *)(ip + 0 * istep));
*((npy_ulonglong *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_ulonglong in_1 = *((const npy_ulonglong *)(ip + 1 * istep));
*((npy_ulonglong *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_ulonglong in_2 = *((const npy_ulonglong *)(ip + 2 * istep));
*((npy_ulonglong *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_ulonglong in_3 = *((const npy_ulonglong *)(ip + 3 * istep));
*((npy_ulonglong *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_ulonglong in_4 = *((const npy_ulonglong *)(ip + 4 * istep));
*((npy_ulonglong *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_ulonglong in_5 = *((const npy_ulonglong *)(ip + 5 * istep));
*((npy_ulonglong *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_ulonglong in_6 = *((const npy_ulonglong *)(ip + 6 * istep));
*((npy_ulonglong *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_ulonglong in_7 = *((const npy_ulonglong *)(ip + 7 * istep));
*((npy_ulonglong *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_ulonglong in_8 = *((const npy_ulonglong *)(ip + 8 * istep));
*((npy_ulonglong *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_ulonglong in_9 = *((const npy_ulonglong *)(ip + 9 * istep));
*((npy_ulonglong *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_ulonglong in_10 = *((const npy_ulonglong *)(ip + 10 * istep));
*((npy_ulonglong *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_ulonglong in_11 = *((const npy_ulonglong *)(ip + 11 * istep));
*((npy_ulonglong *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_ulonglong in_12 = *((const npy_ulonglong *)(ip + 12 * istep));
*((npy_ulonglong *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_ulonglong in_13 = *((const npy_ulonglong *)(ip + 13 * istep));
*((npy_ulonglong *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_ulonglong in_14 = *((const npy_ulonglong *)(ip + 14 * istep));
*((npy_ulonglong *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_ulonglong in_15 = *((const npy_ulonglong *)(ip + 15 * istep));
*((npy_ulonglong *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -7019,10 +7049,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -7038,7 +7068,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -7054,7 +7084,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -7070,7 +7100,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_BYTE == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -7088,7 +7118,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -7126,8 +7156,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -7150,97 +7180,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_byte in_0 = *((const npy_byte *)(ip + 0 * istep));
*((npy_byte *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_byte in_1 = *((const npy_byte *)(ip + 1 * istep));
*((npy_byte *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_byte in_2 = *((const npy_byte *)(ip + 2 * istep));
*((npy_byte *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_byte in_3 = *((const npy_byte *)(ip + 3 * istep));
*((npy_byte *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_byte in_4 = *((const npy_byte *)(ip + 4 * istep));
*((npy_byte *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_byte in_5 = *((const npy_byte *)(ip + 5 * istep));
*((npy_byte *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_byte in_6 = *((const npy_byte *)(ip + 6 * istep));
*((npy_byte *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_byte in_7 = *((const npy_byte *)(ip + 7 * istep));
*((npy_byte *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_byte in_8 = *((const npy_byte *)(ip + 8 * istep));
*((npy_byte *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_byte in_9 = *((const npy_byte *)(ip + 9 * istep));
*((npy_byte *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_byte in_10 = *((const npy_byte *)(ip + 10 * istep));
*((npy_byte *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_byte in_11 = *((const npy_byte *)(ip + 11 * istep));
*((npy_byte *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_byte in_12 = *((const npy_byte *)(ip + 12 * istep));
*((npy_byte *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_byte in_13 = *((const npy_byte *)(ip + 13 * istep));
*((npy_byte *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_byte in_14 = *((const npy_byte *)(ip + 14 * istep));
*((npy_byte *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_byte in_15 = *((const npy_byte *)(ip + 15 * istep));
*((npy_byte *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -7260,10 +7290,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -7279,7 +7309,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -7295,7 +7325,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -7311,7 +7341,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_SHORT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -7329,7 +7359,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -7367,8 +7397,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -7391,97 +7421,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_short in_0 = *((const npy_short *)(ip + 0 * istep));
*((npy_short *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_short in_1 = *((const npy_short *)(ip + 1 * istep));
*((npy_short *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_short in_2 = *((const npy_short *)(ip + 2 * istep));
*((npy_short *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_short in_3 = *((const npy_short *)(ip + 3 * istep));
*((npy_short *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_short in_4 = *((const npy_short *)(ip + 4 * istep));
*((npy_short *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_short in_5 = *((const npy_short *)(ip + 5 * istep));
*((npy_short *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_short in_6 = *((const npy_short *)(ip + 6 * istep));
*((npy_short *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_short in_7 = *((const npy_short *)(ip + 7 * istep));
*((npy_short *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_short in_8 = *((const npy_short *)(ip + 8 * istep));
*((npy_short *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_short in_9 = *((const npy_short *)(ip + 9 * istep));
*((npy_short *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_short in_10 = *((const npy_short *)(ip + 10 * istep));
*((npy_short *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_short in_11 = *((const npy_short *)(ip + 11 * istep));
*((npy_short *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_short in_12 = *((const npy_short *)(ip + 12 * istep));
*((npy_short *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_short in_13 = *((const npy_short *)(ip + 13 * istep));
*((npy_short *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_short in_14 = *((const npy_short *)(ip + 14 * istep));
*((npy_short *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_short in_15 = *((const npy_short *)(ip + 15 * istep));
*((npy_short *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -7501,10 +7531,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -7520,7 +7550,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -7536,7 +7566,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -7552,7 +7582,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_INT == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -7570,7 +7600,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -7608,8 +7638,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -7632,97 +7662,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_int in_0 = *((const npy_int *)(ip + 0 * istep));
*((npy_int *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_int in_1 = *((const npy_int *)(ip + 1 * istep));
*((npy_int *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_int in_2 = *((const npy_int *)(ip + 2 * istep));
*((npy_int *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_int in_3 = *((const npy_int *)(ip + 3 * istep));
*((npy_int *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_int in_4 = *((const npy_int *)(ip + 4 * istep));
*((npy_int *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_int in_5 = *((const npy_int *)(ip + 5 * istep));
*((npy_int *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_int in_6 = *((const npy_int *)(ip + 6 * istep));
*((npy_int *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_int in_7 = *((const npy_int *)(ip + 7 * istep));
*((npy_int *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_int in_8 = *((const npy_int *)(ip + 8 * istep));
*((npy_int *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_int in_9 = *((const npy_int *)(ip + 9 * istep));
*((npy_int *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_int in_10 = *((const npy_int *)(ip + 10 * istep));
*((npy_int *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_int in_11 = *((const npy_int *)(ip + 11 * istep));
*((npy_int *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_int in_12 = *((const npy_int *)(ip + 12 * istep));
*((npy_int *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_int in_13 = *((const npy_int *)(ip + 13 * istep));
*((npy_int *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_int in_14 = *((const npy_int *)(ip + 14 * istep));
*((npy_int *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_int in_15 = *((const npy_int *)(ip + 15 * istep));
*((npy_int *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -7742,10 +7772,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -7761,7 +7791,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -7777,7 +7807,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -7793,7 +7823,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -7811,7 +7841,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -7849,8 +7879,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -7873,97 +7903,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_long in_0 = *((const npy_long *)(ip + 0 * istep));
*((npy_long *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_long in_1 = *((const npy_long *)(ip + 1 * istep));
*((npy_long *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_long in_2 = *((const npy_long *)(ip + 2 * istep));
*((npy_long *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_long in_3 = *((const npy_long *)(ip + 3 * istep));
*((npy_long *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_long in_4 = *((const npy_long *)(ip + 4 * istep));
*((npy_long *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_long in_5 = *((const npy_long *)(ip + 5 * istep));
*((npy_long *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_long in_6 = *((const npy_long *)(ip + 6 * istep));
*((npy_long *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_long in_7 = *((const npy_long *)(ip + 7 * istep));
*((npy_long *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_long in_8 = *((const npy_long *)(ip + 8 * istep));
*((npy_long *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_long in_9 = *((const npy_long *)(ip + 9 * istep));
*((npy_long *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_long in_10 = *((const npy_long *)(ip + 10 * istep));
*((npy_long *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_long in_11 = *((const npy_long *)(ip + 11 * istep));
*((npy_long *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_long in_12 = *((const npy_long *)(ip + 12 * istep));
*((npy_long *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_long in_13 = *((const npy_long *)(ip + 13 * istep));
*((npy_long *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_long in_14 = *((const npy_long *)(ip + 14 * istep));
*((npy_long *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_long in_15 = *((const npy_long *)(ip + 15 * istep));
*((npy_long *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -7983,10 +8013,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8
#if 0
#define TO_SIMD_SFX(X) X##_f8
@@ -8002,7 +8032,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16
#if 0
#define TO_SIMD_SFX(X) X##_f16
@@ -8018,7 +8048,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32
#if 0
#define TO_SIMD_SFX(X) X##_f32
@@ -8034,7 +8064,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64
#if 0
#define TO_SIMD_SFX(X) X##_f64
@@ -8052,7 +8082,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -8090,8 +8120,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -8114,97 +8144,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_longlong in_0 = *((const npy_longlong *)(ip + 0 * istep));
*((npy_longlong *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_longlong in_1 = *((const npy_longlong *)(ip + 1 * istep));
*((npy_longlong *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_longlong in_2 = *((const npy_longlong *)(ip + 2 * istep));
*((npy_longlong *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_longlong in_3 = *((const npy_longlong *)(ip + 3 * istep));
*((npy_longlong *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_longlong in_4 = *((const npy_longlong *)(ip + 4 * istep));
*((npy_longlong *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_longlong in_5 = *((const npy_longlong *)(ip + 5 * istep));
*((npy_longlong *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_longlong in_6 = *((const npy_longlong *)(ip + 6 * istep));
*((npy_longlong *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_longlong in_7 = *((const npy_longlong *)(ip + 7 * istep));
*((npy_longlong *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_longlong in_8 = *((const npy_longlong *)(ip + 8 * istep));
*((npy_longlong *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_longlong in_9 = *((const npy_longlong *)(ip + 9 * istep));
*((npy_longlong *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_longlong in_10 = *((const npy_longlong *)(ip + 10 * istep));
*((npy_longlong *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_longlong in_11 = *((const npy_longlong *)(ip + 11 * istep));
*((npy_longlong *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_longlong in_12 = *((const npy_longlong *)(ip + 12 * istep));
*((npy_longlong *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_longlong in_13 = *((const npy_longlong *)(ip + 13 * istep));
*((npy_longlong *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_longlong in_14 = *((const npy_longlong *)(ip + 14 * istep));
*((npy_longlong *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_longlong in_15 = *((const npy_longlong *)(ip + 15 * istep));
*((npy_longlong *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -8224,10 +8254,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 8
#if 1
#define TO_SIMD_SFX(X) X##_f8
@@ -8243,7 +8273,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 16
#if 1
#define TO_SIMD_SFX(X) X##_f16
@@ -8259,7 +8289,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 32
#if 1
#define TO_SIMD_SFX(X) X##_f32
@@ -8275,7 +8305,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_FLOAT == 64
#if 1
#define TO_SIMD_SFX(X) X##_f64
@@ -8293,7 +8323,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -8331,8 +8361,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -8355,97 +8385,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_float in_0 = *((const npy_float *)(ip + 0 * istep));
*((npy_float *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_float in_1 = *((const npy_float *)(ip + 1 * istep));
*((npy_float *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_float in_2 = *((const npy_float *)(ip + 2 * istep));
*((npy_float *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_float in_3 = *((const npy_float *)(ip + 3 * istep));
*((npy_float *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_float in_4 = *((const npy_float *)(ip + 4 * istep));
*((npy_float *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_float in_5 = *((const npy_float *)(ip + 5 * istep));
*((npy_float *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_float in_6 = *((const npy_float *)(ip + 6 * istep));
*((npy_float *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_float in_7 = *((const npy_float *)(ip + 7 * istep));
*((npy_float *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_float in_8 = *((const npy_float *)(ip + 8 * istep));
*((npy_float *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_float in_9 = *((const npy_float *)(ip + 9 * istep));
*((npy_float *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_float in_10 = *((const npy_float *)(ip + 10 * istep));
*((npy_float *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_float in_11 = *((const npy_float *)(ip + 11 * istep));
*((npy_float *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_float in_12 = *((const npy_float *)(ip + 12 * istep));
*((npy_float *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_float in_13 = *((const npy_float *)(ip + 13 * istep));
*((npy_float *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_float in_14 = *((const npy_float *)(ip + 14 * istep));
*((npy_float *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_float in_15 = *((const npy_float *)(ip + 15 * istep));
*((npy_float *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -8465,10 +8495,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 8
#if 1
#define TO_SIMD_SFX(X) X##_f8
@@ -8484,7 +8514,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 16
#if 1
#define TO_SIMD_SFX(X) X##_f16
@@ -8500,7 +8530,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 32
#if 1
#define TO_SIMD_SFX(X) X##_f32
@@ -8516,7 +8546,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_DOUBLE == 64
#if 1
#define TO_SIMD_SFX(X) X##_f64
@@ -8534,7 +8564,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -8572,8 +8602,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -8596,97 +8626,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_double in_0 = *((const npy_double *)(ip + 0 * istep));
*((npy_double *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_double in_1 = *((const npy_double *)(ip + 1 * istep));
*((npy_double *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_double in_2 = *((const npy_double *)(ip + 2 * istep));
*((npy_double *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_double in_3 = *((const npy_double *)(ip + 3 * istep));
*((npy_double *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_double in_4 = *((const npy_double *)(ip + 4 * istep));
*((npy_double *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_double in_5 = *((const npy_double *)(ip + 5 * istep));
*((npy_double *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_double in_6 = *((const npy_double *)(ip + 6 * istep));
*((npy_double *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_double in_7 = *((const npy_double *)(ip + 7 * istep));
*((npy_double *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_double in_8 = *((const npy_double *)(ip + 8 * istep));
*((npy_double *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_double in_9 = *((const npy_double *)(ip + 9 * istep));
*((npy_double *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_double in_10 = *((const npy_double *)(ip + 10 * istep));
*((npy_double *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_double in_11 = *((const npy_double *)(ip + 11 * istep));
*((npy_double *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_double in_12 = *((const npy_double *)(ip + 12 * istep));
*((npy_double *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_double in_13 = *((const npy_double *)(ip + 13 * istep));
*((npy_double *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_double in_14 = *((const npy_double *)(ip + 14 * istep));
*((npy_double *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_double in_15 = *((const npy_double *)(ip + 15 * istep));
*((npy_double *)(op + 15 * ostep)) = scalar_negative(in_15);
@@ -8706,10 +8736,10 @@ clear:
#endif
}
-#line 254
+#line 257
#undef TO_SIMD_SFX
#if 0
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 8
#if 1
#define TO_SIMD_SFX(X) X##_f8
@@ -8725,7 +8755,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s8
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 16
#if 1
#define TO_SIMD_SFX(X) X##_f16
@@ -8741,7 +8771,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s16
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 32
#if 1
#define TO_SIMD_SFX(X) X##_f32
@@ -8757,7 +8787,7 @@ clear:
#define TO_SIMD_SFX(X) X##_s32
#endif
-#line 259
+#line 262
#elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 64
#if 1
#define TO_SIMD_SFX(X) X##_f64
@@ -8775,7 +8805,7 @@ clear:
#endif
-#line 280
+#line 283
NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_negative)
(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func))
{
@@ -8813,8 +8843,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_negative)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_negative)(
@@ -8837,97 +8867,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_negative)
*/
#define UNROLL 8
for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) {
- #line 344
+ #line 347
#if UNROLL > 0
const npy_longdouble in_0 = *((const npy_longdouble *)(ip + 0 * istep));
*((npy_longdouble *)(op + 0 * ostep)) = scalar_negative(in_0);
#endif
-#line 344
+#line 347
#if UNROLL > 1
const npy_longdouble in_1 = *((const npy_longdouble *)(ip + 1 * istep));
*((npy_longdouble *)(op + 1 * ostep)) = scalar_negative(in_1);
#endif
-#line 344
+#line 347
#if UNROLL > 2
const npy_longdouble in_2 = *((const npy_longdouble *)(ip + 2 * istep));
*((npy_longdouble *)(op + 2 * ostep)) = scalar_negative(in_2);
#endif
-#line 344
+#line 347
#if UNROLL > 3
const npy_longdouble in_3 = *((const npy_longdouble *)(ip + 3 * istep));
*((npy_longdouble *)(op + 3 * ostep)) = scalar_negative(in_3);
#endif
-#line 344
+#line 347
#if UNROLL > 4
const npy_longdouble in_4 = *((const npy_longdouble *)(ip + 4 * istep));
*((npy_longdouble *)(op + 4 * ostep)) = scalar_negative(in_4);
#endif
-#line 344
+#line 347
#if UNROLL > 5
const npy_longdouble in_5 = *((const npy_longdouble *)(ip + 5 * istep));
*((npy_longdouble *)(op + 5 * ostep)) = scalar_negative(in_5);
#endif
-#line 344
+#line 347
#if UNROLL > 6
const npy_longdouble in_6 = *((const npy_longdouble *)(ip + 6 * istep));
*((npy_longdouble *)(op + 6 * ostep)) = scalar_negative(in_6);
#endif
-#line 344
+#line 347
#if UNROLL > 7
const npy_longdouble in_7 = *((const npy_longdouble *)(ip + 7 * istep));
*((npy_longdouble *)(op + 7 * ostep)) = scalar_negative(in_7);
#endif
-#line 344
+#line 347
#if UNROLL > 8
const npy_longdouble in_8 = *((const npy_longdouble *)(ip + 8 * istep));
*((npy_longdouble *)(op + 8 * ostep)) = scalar_negative(in_8);
#endif
-#line 344
+#line 347
#if UNROLL > 9
const npy_longdouble in_9 = *((const npy_longdouble *)(ip + 9 * istep));
*((npy_longdouble *)(op + 9 * ostep)) = scalar_negative(in_9);
#endif
-#line 344
+#line 347
#if UNROLL > 10
const npy_longdouble in_10 = *((const npy_longdouble *)(ip + 10 * istep));
*((npy_longdouble *)(op + 10 * ostep)) = scalar_negative(in_10);
#endif
-#line 344
+#line 347
#if UNROLL > 11
const npy_longdouble in_11 = *((const npy_longdouble *)(ip + 11 * istep));
*((npy_longdouble *)(op + 11 * ostep)) = scalar_negative(in_11);
#endif
-#line 344
+#line 347
#if UNROLL > 12
const npy_longdouble in_12 = *((const npy_longdouble *)(ip + 12 * istep));
*((npy_longdouble *)(op + 12 * ostep)) = scalar_negative(in_12);
#endif
-#line 344
+#line 347
#if UNROLL > 13
const npy_longdouble in_13 = *((const npy_longdouble *)(ip + 13 * istep));
*((npy_longdouble *)(op + 13 * ostep)) = scalar_negative(in_13);
#endif
-#line 344
+#line 347
#if UNROLL > 14
const npy_longdouble in_14 = *((const npy_longdouble *)(ip + 14 * istep));
*((npy_longdouble *)(op + 14 * ostep)) = scalar_negative(in_14);
#endif
-#line 344
+#line 347
#if UNROLL > 15
const npy_longdouble in_15 = *((const npy_longdouble *)(ip + 15 * istep));
*((npy_longdouble *)(op + 15 * ostep)) = scalar_negative(in_15);
diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src
index 1e2a81d20b2..bfe4d892d0c 100644
--- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src
+++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src
@@ -195,6 +195,8 @@ simd_unary_nc_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip, npy_intp istride,
#undef UNROLL
#define UNROLL 2
#endif
+// X86 does better with unrolled scalar for heavy non-contiguous
+#ifndef NPY_HAVE_SSE2
static NPY_INLINE void
simd_unary_nn_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip, npy_intp istride,
npyv_lanetype_@sfx@ *op, npy_intp ostride,
@@ -226,6 +228,7 @@ simd_unary_nn_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip, npy_intp istride,
*op = scalar_@intrin@(*ip);
}
}
+#endif // NPY_HAVE_SSE2
#endif // @supports_ncontig@
#undef UNROLL
#endif // @simd_chk@
@@ -314,8 +317,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(@TYPE@_@kind@)
);
goto clear;
}
- // SSE2 does better with unrolled scalar for heavy non-contiguous
- #if !defined(NPY_HAVE_SSE2)
+ // X86 does better with unrolled scalar for heavy non-contiguous
+ #ifndef NPY_HAVE_SSE2
else if (istride != 1 && ostride != 1) {
// non-contiguous input and output
TO_SIMD_SFX(simd_unary_nn_@intrin@)(
diff --git a/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py b/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py
index 1bbdde13177..a88189e03ec 100644
--- a/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py
+++ b/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py
@@ -477,7 +477,14 @@ class TestBoolCmp:
self.signd[self.ed] *= -1.
self.signf[1::6][self.ef[1::6]] = -np.inf
self.signd[1::6][self.ed[1::6]] = -np.inf
- self.signf[3::6][self.ef[3::6]] = -np.nan
+ # On RISC-V, many operations that produce NaNs, such as converting
+ # a -NaN from f64 to f32, return a canonical NaN. The canonical
+ # NaNs are always positive. See section 11.3 NaN Generation and
+ # Propagation of the RISC-V Unprivileged ISA for more details.
+ # We disable the float32 sign test on riscv64 for -np.nan as the sign
+ # of the NaN will be lost when it's converted to a float32.
+ if platform.processor() != 'riscv64':
+ self.signf[3::6][self.ef[3::6]] = -np.nan
self.signd[3::6][self.ed[3::6]] = -np.nan
self.signf[4::6][self.ef[4::6]] = -0.
self.signd[4::6][self.ed[4::6]] = -0.
diff --git a/contrib/python/numpy/py3/numpy/f2py/crackfortran.py b/contrib/python/numpy/py3/numpy/f2py/crackfortran.py
index 8d3fc27608b..8d3fc27608b 100755..100644
--- a/contrib/python/numpy/py3/numpy/f2py/crackfortran.py
+++ b/contrib/python/numpy/py3/numpy/f2py/crackfortran.py
diff --git a/contrib/python/numpy/py3/numpy/f2py/f2py2e.py b/contrib/python/numpy/py3/numpy/f2py/f2py2e.py
index ce22b2d8a9e..ce22b2d8a9e 100755..100644
--- a/contrib/python/numpy/py3/numpy/f2py/f2py2e.py
+++ b/contrib/python/numpy/py3/numpy/f2py/f2py2e.py
diff --git a/contrib/python/numpy/py3/numpy/f2py/rules.py b/contrib/python/numpy/py3/numpy/f2py/rules.py
index 009365e0476..009365e0476 100755..100644
--- a/contrib/python/numpy/py3/numpy/f2py/rules.py
+++ b/contrib/python/numpy/py3/numpy/f2py/rules.py
diff --git a/contrib/python/numpy/py3/numpy/f2py/tests/util.py b/contrib/python/numpy/py3/numpy/f2py/tests/util.py
index 75b257cdb82..6ed6c0855fb 100644
--- a/contrib/python/numpy/py3/numpy/f2py/tests/util.py
+++ b/contrib/python/numpy/py3/numpy/f2py/tests/util.py
@@ -20,6 +20,7 @@ import contextlib
import numpy
from pathlib import Path
+from numpy.compat import asstr
from numpy._utils import asunicode
from numpy.testing import temppath, IS_WASM
from importlib import import_module
diff --git a/contrib/python/numpy/py3/numpy/lib/function_base.py b/contrib/python/numpy/py3/numpy/lib/function_base.py
index e75aca1e58e..a3dab04d333 100644
--- a/contrib/python/numpy/py3/numpy/lib/function_base.py
+++ b/contrib/python/numpy/py3/numpy/lib/function_base.py
@@ -4655,7 +4655,8 @@ def _lerp(a, b, t, out=None):
diff_b_a = subtract(b, a)
# asanyarray is a stop-gap until gh-13105
lerp_interpolation = asanyarray(add(a, diff_b_a * t, out=out))
- subtract(b, diff_b_a * (1 - t), out=lerp_interpolation, where=t >= 0.5)
+ subtract(b, diff_b_a * (1 - t), out=lerp_interpolation, where=t >= 0.5,
+ casting='unsafe', dtype=type(lerp_interpolation.dtype))
if lerp_interpolation.ndim == 0 and out is None:
lerp_interpolation = lerp_interpolation[()] # unpack 0d arrays
return lerp_interpolation
diff --git a/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py b/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py
index 11e44630e79..2bb73b60038 100644
--- a/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py
+++ b/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py
@@ -3606,6 +3606,10 @@ class TestQuantile:
assert_equal(q, Fraction(7, 2))
assert_equal(type(q), Fraction)
+ q = np.quantile(x, .5)
+ assert_equal(q, 1.75)
+ assert_equal(type(q), np.float64)
+
q = np.quantile(x, Fraction(1, 2))
assert_equal(q, Fraction(7, 4))
assert_equal(type(q), Fraction)
diff --git a/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp b/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp
index 0c0b35e9c0e..3b5effe14a6 100644
--- a/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp
+++ b/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp
@@ -2259,7 +2259,7 @@ process_geev_results(GEEV_PARAMS_t<typ> *params, scalar_trait)
}
}
-
+#if 0
static inline fortran_int
call_geev(GEEV_PARAMS_t<fortran_complex>* params)
{
@@ -2275,6 +2275,8 @@ call_geev(GEEV_PARAMS_t<fortran_complex>* params)
&rv);
return rv;
}
+#endif
+
static inline fortran_int
call_geev(GEEV_PARAMS_t<fortran_doublecomplex>* params)
{
diff --git a/contrib/python/numpy/py3/numpy/random/ya.make b/contrib/python/numpy/py3/numpy/random/ya.make
index bce5742ba53..6cc93532fb7 100644
--- a/contrib/python/numpy/py3/numpy/random/ya.make
+++ b/contrib/python/numpy/py3/numpy/random/ya.make
@@ -15,7 +15,6 @@ ADDINCL(
CFLAGS(
-DHAVE_CBLAS
-DHAVE_NPY_CONFIG_H=1
- -DNO_ATLAS_INFO=1
-D_FILE_OFFSET_BITS=64
-D_LARGEFILE64_SOURCE=1
-D_LARGEFILE_SOURCE=1
diff --git a/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py b/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py
index c1d4cdff8fd..c1d4cdff8fd 100755..100644
--- a/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py
+++ b/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py
diff --git a/contrib/python/numpy/py3/numpy/testing/setup.py b/contrib/python/numpy/py3/numpy/testing/setup.py
index 6f203e87271..6f203e87271 100755..100644
--- a/contrib/python/numpy/py3/numpy/testing/setup.py
+++ b/contrib/python/numpy/py3/numpy/testing/setup.py
diff --git a/contrib/python/numpy/py3/numpy/tests/test_public_api.py b/contrib/python/numpy/py3/numpy/tests/test_public_api.py
index 3711c2f96b2..5a90650fd81 100644
--- a/contrib/python/numpy/py3/numpy/tests/test_public_api.py
+++ b/contrib/python/numpy/py3/numpy/tests/test_public_api.py
@@ -185,7 +185,7 @@ PUBLIC_ALIASED_MODULES = [
PRIVATE_BUT_PRESENT_MODULES = ['numpy.' + s for s in [
"compat",
"compat.py3k",
- #"conftest",
+ "conftest",
"core",
"core.arrayprint",
"core.defchararray",
diff --git a/contrib/python/numpy/py3/numpy/tests/test_warnings.py b/contrib/python/numpy/py3/numpy/tests/test_warnings.py
index ee5124c5d51..df90fcef8c5 100644
--- a/contrib/python/numpy/py3/numpy/tests/test_warnings.py
+++ b/contrib/python/numpy/py3/numpy/tests/test_warnings.py
@@ -5,7 +5,6 @@ all of these occurrences but should catch almost all.
import pytest
from pathlib import Path
-import sys
import ast
import tokenize
import numpy
@@ -33,7 +32,7 @@ class FindFuncs(ast.NodeVisitor):
ast.NodeVisitor.generic_visit(self, node)
if p.ls[-1] == 'simplefilter' or p.ls[-1] == 'filterwarnings':
- if node.args[0].s == "ignore":
+ if node.args[0].value == "ignore":
raise AssertionError(
"warnings should have an appropriate stacklevel; found in "
"{} on line {}".format(self.__filename, node.lineno))
@@ -57,8 +56,6 @@ class FindFuncs(ast.NodeVisitor):
@pytest.mark.slow
[email protected](sys.version_info >= (3, 12),
- reason="Deprecation warning in ast")
def test_warning_calls():
# combined "ignore" and stacklevel error
base = Path(numpy.__file__).parent
diff --git a/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py b/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py
index 68c6f5d03fa..6f778e55157 100644
--- a/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py
+++ b/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py
@@ -86,8 +86,6 @@ def strip_func(match: re.Match[str]) -> str:
return match.groups()[1]
[email protected](NO_MYPY, reason="Mypy is not installed")
@pytest.fixture(scope="module", autouse=True)
def run_mypy() -> None:
"""Clears the cache and run mypy before running any of the typing tests.
diff --git a/contrib/python/numpy/py3/numpy/version.py b/contrib/python/numpy/py3/numpy/version.py
index 692240a4865..e96055ea6d4 100644
--- a/contrib/python/numpy/py3/numpy/version.py
+++ b/contrib/python/numpy/py3/numpy/version.py
@@ -1,5 +1,5 @@
-version = "1.26.3"
+version = "1.26.4"
__version__ = version
full_version = version
diff --git a/contrib/python/numpy/py3/tests/ya.make b/contrib/python/numpy/py3/tests/ya.make
index 0a655a46999..5df3fb04286 100644
--- a/contrib/python/numpy/py3/tests/ya.make
+++ b/contrib/python/numpy/py3/tests/ya.make
@@ -26,6 +26,11 @@ SRCDIR(
contrib/python/numpy/py3
)
+PY_SRCS(
+ TOP_LEVEL
+ numpy/conftest.py
+)
+
TEST_SRCS(
numpy/array_api/tests/__init__.py
numpy/array_api/tests/test_array_object.py
@@ -39,7 +44,6 @@ TEST_SRCS(
numpy/array_api/tests/test_validation.py
numpy/compat/tests/__init__.py
numpy/compat/tests/test_compat.py
- numpy/conftest.py
numpy/core/tests/__init__.py
numpy/core/tests/_locales.py
numpy/core/tests/test__exceptions.py
diff --git a/contrib/python/numpy/py3/ya.make b/contrib/python/numpy/py3/ya.make
index 92042220c3d..a6a43be5f15 100644
--- a/contrib/python/numpy/py3/ya.make
+++ b/contrib/python/numpy/py3/ya.make
@@ -2,7 +2,7 @@ PY3_LIBRARY()
PROVIDES(numpy)
-VERSION(1.26.3)
+VERSION(1.26.4)
LICENSE(BSD-3-Clause)
@@ -42,7 +42,6 @@ NO_CHECK_IMPORTS(
CFLAGS(
-DHAVE_CBLAS
-DHAVE_NPY_CONFIG_H=1
- -DNO_ATLAS_INFO=1
-D_FILE_OFFSET_BITS=64
-D_LARGEFILE64_SOURCE=1
-D_LARGEFILE_SOURCE=1
diff --git a/contrib/python/pluggy/py3/.dist-info/METADATA b/contrib/python/pluggy/py3/.dist-info/METADATA
index 684704f432b..c4c3312518b 100644
--- a/contrib/python/pluggy/py3/.dist-info/METADATA
+++ b/contrib/python/pluggy/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pluggy
-Version: 1.3.0
+Version: 1.4.0
Summary: plugin and hook calling mechanisms for python
Home-page: https://github.com/pytest-dev/pluggy
Author: Holger Krekel
diff --git a/contrib/python/pluggy/py3/pluggy/__init__.py b/contrib/python/pluggy/py3/pluggy/__init__.py
index 9d9e873bd09..2adf9454f80 100644
--- a/contrib/python/pluggy/py3/pluggy/__init__.py
+++ b/contrib/python/pluggy/py3/pluggy/__init__.py
@@ -18,6 +18,8 @@ __all__ = [
"HookspecMarker",
"HookimplMarker",
"Result",
+ "PluggyWarning",
+ "PluggyTeardownRaisedWarning",
]
from ._manager import PluginManager, PluginValidationError
@@ -31,3 +33,7 @@ from ._hooks import (
HookimplOpts,
HookImpl,
)
+from ._warnings import (
+ PluggyWarning,
+ PluggyTeardownRaisedWarning,
+)
diff --git a/contrib/python/pluggy/py3/pluggy/_callers.py b/contrib/python/pluggy/py3/pluggy/_callers.py
index 6498eaed640..787f56bac24 100644
--- a/contrib/python/pluggy/py3/pluggy/_callers.py
+++ b/contrib/python/pluggy/py3/pluggy/_callers.py
@@ -3,27 +3,52 @@ Call loop machinery
"""
from __future__ import annotations
+import warnings
from typing import cast
from typing import Generator
from typing import Mapping
+from typing import NoReturn
from typing import Sequence
from typing import Tuple
from typing import Union
from ._hooks import HookImpl
-from ._result import _raise_wrapfail
from ._result import HookCallError
from ._result import Result
+from ._warnings import PluggyTeardownRaisedWarning
# Need to distinguish between old- and new-style hook wrappers.
-# Wrapping one a singleton tuple is the fastest type-safe way I found to do it.
+# Wrapping with a tuple is the fastest type-safe way I found to do it.
Teardown = Union[
- Tuple[Generator[None, Result[object], None]],
+ Tuple[Generator[None, Result[object], None], HookImpl],
Generator[None, object, object],
]
+def _raise_wrapfail(
+ wrap_controller: (
+ Generator[None, Result[object], None] | Generator[None, object, object]
+ ),
+ msg: str,
+) -> NoReturn:
+ co = wrap_controller.gi_code
+ raise RuntimeError(
+ "wrap_controller at %r %s:%d %s"
+ % (co.co_name, co.co_filename, co.co_firstlineno, msg)
+ )
+
+
+def _warn_teardown_exception(
+ hook_name: str, hook_impl: HookImpl, e: BaseException
+) -> None:
+ msg = "A plugin raised an exception during an old-style hookwrapper teardown.\n"
+ msg += f"Plugin: {hook_impl.plugin_name}, Hook: {hook_name}\n"
+ msg += f"{type(e).__name__}: {e}\n"
+ msg += "For more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarning" # noqa: E501
+ warnings.warn(PluggyTeardownRaisedWarning(msg), stacklevel=5)
+
+
def _multicall(
hook_name: str,
hook_impls: Sequence[HookImpl],
@@ -60,7 +85,7 @@ def _multicall(
res = hook_impl.function(*args)
wrapper_gen = cast(Generator[None, Result[object], None], res)
next(wrapper_gen) # first yield
- teardowns.append((wrapper_gen,))
+ teardowns.append((wrapper_gen, hook_impl))
except StopIteration:
_raise_wrapfail(wrapper_gen, "did not yield")
elif hook_impl.wrapper:
@@ -128,9 +153,13 @@ def _multicall(
if isinstance(teardown, tuple):
try:
teardown[0].send(outcome)
- _raise_wrapfail(teardown[0], "has second yield")
except StopIteration:
pass
+ except BaseException as e:
+ _warn_teardown_exception(hook_name, teardown[1], e)
+ raise
+ else:
+ _raise_wrapfail(teardown[0], "has second yield")
else:
try:
if outcome._exception is not None:
diff --git a/contrib/python/pluggy/py3/pluggy/_hooks.py b/contrib/python/pluggy/py3/pluggy/_hooks.py
index 916ca70489c..7c8420f4dea 100644
--- a/contrib/python/pluggy/py3/pluggy/_hooks.py
+++ b/contrib/python/pluggy/py3/pluggy/_hooks.py
@@ -389,6 +389,13 @@ class HookCaller:
#: Name of the hook getting called.
self.name: Final = name
self._hookexec: Final = hook_execute
+ # The hookimpls list. The caller iterates it *in reverse*. Format:
+ # 1. trylast nonwrappers
+ # 2. nonwrappers
+ # 3. tryfirst nonwrappers
+ # 4. trylast wrappers
+ # 5. wrappers
+ # 6. tryfirst wrappers
self._hookimpls: Final[list[HookImpl]] = []
self._call_history: _CallHistory | None = None
# TODO: Document, or make private.
@@ -490,7 +497,8 @@ class HookCaller:
), "Cannot directly call a historic hook - use call_historic instead."
self._verify_all_args_are_provided(kwargs)
firstresult = self.spec.opts.get("firstresult", False) if self.spec else False
- return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
+ # Copy because plugins may register other plugins during iteration (#438).
+ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
def call_historic(
self,
@@ -511,7 +519,8 @@ class HookCaller:
self._call_history.append((kwargs, result_callback))
# Historizing hooks don't return results.
# Remember firstresult isn't compatible with historic.
- res = self._hookexec(self.name, self._hookimpls, kwargs, False)
+ # Copy because plugins may register other plugins during iteration (#438).
+ res = self._hookexec(self.name, self._hookimpls.copy(), kwargs, False)
if result_callback is None:
return
if isinstance(res, list):
@@ -541,10 +550,11 @@ class HookCaller:
hookimpl = HookImpl(None, "<temp>", method, opts)
# Find last non-tryfirst nonwrapper method.
i = len(hookimpls) - 1
- while (
- i >= 0
- and hookimpls[i].tryfirst
- and not (hookimpls[i].hookwrapper or hookimpls[i].wrapper)
+ while i >= 0 and (
+ # Skip wrappers.
+ (hookimpls[i].hookwrapper or hookimpls[i].wrapper)
+ # Skip tryfirst nonwrappers.
+ or hookimpls[i].tryfirst
):
i -= 1
hookimpls.insert(i + 1, hookimpl)
diff --git a/contrib/python/pluggy/py3/pluggy/_manager.py b/contrib/python/pluggy/py3/pluggy/_manager.py
index 84717e6eaa7..ce1e107a60c 100644
--- a/contrib/python/pluggy/py3/pluggy/_manager.py
+++ b/contrib/python/pluggy/py3/pluggy/_manager.py
@@ -1,6 +1,5 @@
from __future__ import annotations
-import importlib.metadata
import inspect
import types
import warnings
@@ -11,6 +10,7 @@ from typing import Final
from typing import Iterable
from typing import Mapping
from typing import Sequence
+from typing import TYPE_CHECKING
from . import _tracing
from ._callers import _multicall
@@ -26,6 +26,10 @@ from ._hooks import HookspecOpts
from ._hooks import normalize_hookimpl_opts
from ._result import Result
+if TYPE_CHECKING:
+ # importtlib.metadata import is slow, defer it.
+ import importlib.metadata
+
_BeforeTrace = Callable[[str, Sequence[HookImpl], Mapping[str, Any]], None]
_AfterTrace = Callable[[Result[Any], str, Sequence[HookImpl], Mapping[str, Any]], None]
@@ -231,6 +235,16 @@ class PluginManager:
"""Return whether the given plugin name is blocked."""
return name in self._name2plugin and self._name2plugin[name] is None
+ def unblock(self, name: str) -> bool:
+ """Unblocks a name.
+
+ Returns whether the name was actually blocked.
+ """
+ if self._name2plugin.get(name, -1) is None:
+ del self._name2plugin[name]
+ return True
+ return False
+
def add_hookspecs(self, module_or_class: _Namespace) -> None:
"""Add new hook specifications defined in the given ``module_or_class``.
@@ -384,6 +398,8 @@ class PluginManager:
:return:
The number of plugins loaded by this call.
"""
+ import importlib.metadata
+
count = 0
for dist in list(importlib.metadata.distributions()):
for ep in dist.entry_points:
diff --git a/contrib/python/pluggy/py3/pluggy/_result.py b/contrib/python/pluggy/py3/pluggy/_result.py
index 29859eb92dc..aa21fa13805 100644
--- a/contrib/python/pluggy/py3/pluggy/_result.py
+++ b/contrib/python/pluggy/py3/pluggy/_result.py
@@ -7,9 +7,7 @@ from types import TracebackType
from typing import Callable
from typing import cast
from typing import final
-from typing import Generator
from typing import Generic
-from typing import NoReturn
from typing import Optional
from typing import Tuple
from typing import Type
@@ -20,19 +18,6 @@ _ExcInfo = Tuple[Type[BaseException], BaseException, Optional[TracebackType]]
ResultType = TypeVar("ResultType")
-def _raise_wrapfail(
- wrap_controller: (
- Generator[None, Result[ResultType], None] | Generator[None, object, object]
- ),
- msg: str,
-) -> NoReturn:
- co = wrap_controller.gi_code
- raise RuntimeError(
- "wrap_controller at %r %s:%d %s"
- % (co.co_name, co.co_filename, co.co_firstlineno, msg)
- )
-
-
class HookCallError(Exception):
"""Hook was called incorrectly."""
diff --git a/contrib/python/pluggy/py3/pluggy/_version.py b/contrib/python/pluggy/py3/pluggy/_version.py
index 4a742d246fc..ee6c4d7d052 100644
--- a/contrib/python/pluggy/py3/pluggy/_version.py
+++ b/contrib/python/pluggy/py3/pluggy/_version.py
@@ -1,4 +1,16 @@
# file generated by setuptools_scm
# don't change, don't track in version control
-__version__ = version = '1.3.0'
-__version_tuple__ = version_tuple = (1, 3, 0)
+TYPE_CHECKING = False
+if TYPE_CHECKING:
+ from typing import Tuple, Union
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
+else:
+ VERSION_TUPLE = object
+
+version: str
+__version__: str
+__version_tuple__: VERSION_TUPLE
+version_tuple: VERSION_TUPLE
+
+__version__ = version = '1.4.0'
+__version_tuple__ = version_tuple = (1, 4, 0)
diff --git a/contrib/python/pluggy/py3/pluggy/_warnings.py b/contrib/python/pluggy/py3/pluggy/_warnings.py
new file mode 100644
index 00000000000..6356c770c7d
--- /dev/null
+++ b/contrib/python/pluggy/py3/pluggy/_warnings.py
@@ -0,0 +1,27 @@
+from typing import final
+
+
+class PluggyWarning(UserWarning):
+ """Base class for all warnings emitted by pluggy."""
+
+ __module__ = "pluggy"
+
+
+@final
+class PluggyTeardownRaisedWarning(PluggyWarning):
+ """A plugin raised an exception during an :ref:`old-style hookwrapper
+ <old_style_hookwrappers>` teardown.
+
+ Such exceptions are not handled by pluggy, and may cause subsequent
+ teardowns to be executed at unexpected times, or be skipped entirely.
+
+ This is an issue in the plugin implementation.
+
+ If the exception is unintended, fix the underlying cause.
+
+ If the exception is intended, switch to :ref:`new-style hook wrappers
+ <hookwrappers>`, or use :func:`result.force_exception()
+ <pluggy.Result.force_exception>` to set the exception instead of raising.
+ """
+
+ __module__ = "pluggy"
diff --git a/contrib/python/pluggy/py3/ya.make b/contrib/python/pluggy/py3/ya.make
index 7302e7c37d5..8dc442cdd17 100644
--- a/contrib/python/pluggy/py3/ya.make
+++ b/contrib/python/pluggy/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(1.3.0)
+VERSION(1.4.0)
LICENSE(MIT)
@@ -17,6 +17,7 @@ PY_SRCS(
pluggy/_result.py
pluggy/_tracing.py
pluggy/_version.py
+ pluggy/_warnings.py
)
RESOURCE_FILES(
diff --git a/contrib/python/pytz/py2/.dist-info/METADATA b/contrib/python/pytz/py2/.dist-info/METADATA
index 9aec2fcc9b4..2cb10460745 100644
--- a/contrib/python/pytz/py2/.dist-info/METADATA
+++ b/contrib/python/pytz/py2/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pytz
-Version: 2023.3.post1
+Version: 2024.1
Summary: World timezone definitions, modern and historical
Home-page: http://pythonhosted.org/pytz
Author: Stuart Bishop
@@ -36,6 +36,7 @@ Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
+License-File: LICENSE.txt
pytz - World Timezone Definitions for Python
============================================
diff --git a/contrib/python/pytz/py2/pytz/__init__.py b/contrib/python/pytz/py2/pytz/__init__.py
index f975943bc7a..55c1f965673 100644
--- a/contrib/python/pytz/py2/pytz/__init__.py
+++ b/contrib/python/pytz/py2/pytz/__init__.py
@@ -22,8 +22,8 @@ from pytz.tzfile import build_tzinfo
# The IANA (nee Olson) database is updated several times a year.
-OLSON_VERSION = '2023c'
-VERSION = '2023.3.post1' # pip compatible version number.
+OLSON_VERSION = '2024a'
+VERSION = '2024.1' # pip compatible version number.
__version__ = VERSION
OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling
diff --git a/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py b/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py
index 7d74920e135..000daabe86c 100644
--- a/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py
+++ b/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py
@@ -27,8 +27,8 @@ from pytz.tzinfo import DstTzInfo, StaticTzInfo # noqa
# I test for expected version to ensure the correct version of pytz is
# actually being tested.
-EXPECTED_VERSION = '2023.3.post1'
-EXPECTED_OLSON_VERSION = '2023c'
+EXPECTED_VERSION = '2024.1'
+EXPECTED_OLSON_VERSION = '2024a'
fmt = '%Y-%m-%d %H:%M:%S %Z%z'
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab b/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab
index adb7934aadf..29958cf12a9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon b/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon
index 5eccd861071..f780ea990ff 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal b/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk
index adb7934aadf..29958cf12a9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund b/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund
index 286d13216eb..9bf411ef5ad 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay b/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto b/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey
index 4b98133d7af..586a7653ef2 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok
index 62bdcac14db..016e06b1bbc 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty
index 91c916a3a5d..855abbd6e3e 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza
index c9b2ff90823..dd5781e8ae2 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron
index 64194fd85c6..a64fc9e7b25 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh
index a213d290e1a..9c45ed991a2 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay
index f8baf676496..2ee9ef7e985 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon
index a213d290e1a..9c45ed991a2 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern b/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern
Binary files differ
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab b/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab
index be3348d11a7..402c015ec6b 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab
@@ -3,17 +3,22 @@
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
#
-# From Paul Eggert (2022-11-18):
+# From Paul Eggert (2023-09-06):
# This file contains a table of two-letter country codes. Columns are
# separated by a single tab. Lines beginning with '#' are comments.
# All text uses UTF-8 encoding. The columns of the table are as follows:
#
# 1. ISO 3166-1 alpha-2 country code, current as of
-# ISO 3166-1 N1087 (2022-09-02). See: Updates on ISO 3166-1
-# https://isotc.iso.org/livelink/livelink/Open/16944257
-# 2. The usual English name for the coded region,
-# chosen so that alphabetic sorting of subsets produces helpful lists.
-# This is not the same as the English name in the ISO 3166 tables.
+# ISO/TC 46 N1108 (2023-04-05). See: ISO/TC 46 Documents
+# https://www.iso.org/committee/48750.html?view=documents
+# 2. The usual English name for the coded region. This sometimes
+# departs from ISO-listed names, sometimes so that sorted subsets
+# of names are useful (e.g., "Samoa (American)" and "Samoa
+# (western)" rather than "American Samoa" and "Samoa"),
+# sometimes to avoid confusion among non-experts (e.g.,
+# "Czech Republic" and "Turkey" rather than "Czechia" and "Türkiye"),
+# and sometimes to omit needless detail or churn (e.g., "Netherlands"
+# rather than "Netherlands (the)" or "Netherlands (Kingdom of the)").
#
# The table is sorted by country code.
#
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds b/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds
index a6a170aa702..ce150bfe0dc 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds
@@ -3,13 +3,10 @@
# This file is in the public domain.
# This file is generated automatically from the data in the public-domain
-# NIST format leap-seconds.list file, which can be copied from
-# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>
-# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>.
-# The NIST file is used instead of its IERS upstream counterpart
+# NIST/IERS format leap-seconds.list file, which can be copied from
# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>
-# because under US law the NIST file is public domain
-# whereas the IERS file's copyright and license status is unclear.
+# or, in a variant with different comments, from
+# <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>.
# For more about leap-seconds.list, please see
# The NTP Timescale and Leap Seconds
# <https://www.eecis.udel.edu/~mills/leap.html>.
@@ -72,11 +69,11 @@ Leap 2016 Dec 31 23:59:60 + S
# Any additional leap seconds will come after this.
# This Expires line is commented out for now,
# so that pre-2020a zic implementations do not reject this file.
-#Expires 2023 Dec 28 00:00:00
+#Expires 2024 Dec 28 00:00:00
# POSIX timestamps for the data in this file:
-#updated 1467936000 (2016-07-08 00:00:00 UTC)
-#expires 1703721600 (2023-12-28 00:00:00 UTC)
+#updated 1704708379 (2024-01-08 10:06:19 UTC)
+#expires 1735344000 (2024-12-28 00:00:00 UTC)
-# Updated through IERS Bulletin C65
-# File expires on: 28 December 2023
+# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
+# File expires on 28 December 2024
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi b/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi
index 23d99be4535..b5a03be786d 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi
@@ -1,4 +1,4 @@
-# version unknown-dirty
+# version unknown
# This zic input file is in the public domain.
R d 1916 o - Jun 14 23s 1 S
R d 1916 1919 - O Su>=1 23s 0 -
@@ -22,27 +22,6 @@ R d 1978 o - Mar 24 1 1 S
R d 1978 o - S 22 3 0 -
R d 1980 o - Ap 25 0 1 S
R d 1980 o - O 31 2 0 -
-Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16
-0:9:21 - PMT 1911 Mar 11
-0 d WE%sT 1940 F 25 2
-1 d CE%sT 1946 O 7
-0 - WET 1956 Ja 29
-1 - CET 1963 Ap 14
-0 d WE%sT 1977 O 21
-1 d CE%sT 1979 O 26
-0 d WE%sT 1981 May
-1 - CET
-Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u
--2 - -02 1942 S
--2 1 -01 1945 O 15
--2 - -02 1975 N 25 2
--1 - -01
-Z Africa/Ndjamena 1:0:12 - LMT 1912
-1 - WAT 1979 O 14
-1 1 WAST 1980 Mar 8
-1 - WAT
-Z Africa/Abidjan -0:16:8 - LMT 1912
-0 - GMT
R K 1940 o - Jul 15 0 1 S
R K 1940 o - O 1 0 0 -
R K 1941 o - Ap 15 0 1 S
@@ -77,21 +56,6 @@ R K 2014 o - Jul 31 24 1 S
R K 2014 o - S lastTh 24 0 -
R K 2023 ma - Ap lastF 0 1 S
R K 2023 ma - O lastTh 24 0 -
-Z Africa/Cairo 2:5:9 - LMT 1900 O
-2 K EE%sT
-Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u
--1 - -01 1975
-0 - GMT
-Z Africa/Nairobi 2:27:16 - LMT 1908 May
-2:30 - +0230 1928 Jun 30 24
-3 - EAT 1930 Ja 4 24
-2:30 - +0230 1936 D 31 24
-2:45 - +0245 1942 Jul 31 24
-3 - EAT
-Z Africa/Monrovia -0:43:8 - LMT 1882
--0:43:8 - MMT 1919 Mar
--0:44:30 - MMT 1972 Ja 7
-0 - GMT
R L 1951 o - O 14 2 1 S
R L 1952 o - Ja 1 0 0 -
R L 1953 o - O 9 2 1 S
@@ -109,21 +73,10 @@ R L 1997 o - Ap 4 0 1 S
R L 1997 o - O 4 0 0 -
R L 2013 o - Mar lastF 1 1 S
R L 2013 o - O lastF 2 0 -
-Z Africa/Tripoli 0:52:44 - LMT 1920
-1 L CE%sT 1959
-2 - EET 1982
-1 L CE%sT 1990 May 4
-2 - EET 1996 S 30
-1 L CE%sT 1997 O 4
-2 - EET 2012 N 10 2
-1 L CE%sT 2013 O 25 2
-2 - EET
R MU 1982 o - O 10 0 1 -
R MU 1983 o - Mar 21 0 0 -
R MU 2008 o - O lastSu 2 1 -
R MU 2009 o - Mar lastSu 2 0 -
-Z Indian/Mauritius 3:50 - LMT 1907
-4 MU +04/+05
R M 1939 o - S 12 0 1 -
R M 1939 o - N 19 0 0 -
R M 1940 o - F 25 0 1 -
@@ -307,53 +260,15 @@ R M 2086 o - Ap 14 3 -1 -
R M 2086 o - May 19 2 0 -
R M 2087 o - Mar 30 3 -1 -
R M 2087 o - May 11 2 0 -
-Z Africa/Casablanca -0:30:20 - LMT 1913 O 26
-0 M +00/+01 1984 Mar 16
-1 - +01 1986
-0 M +00/+01 2018 O 28 3
-1 M +01/+00
-Z Africa/El_Aaiun -0:52:48 - LMT 1934
--1 - -01 1976 Ap 14
-0 M +00/+01 2018 O 28 3
-1 M +01/+00
-Z Africa/Maputo 2:10:20 - LMT 1903 Mar
-2 - CAT
R NA 1994 o - Mar 21 0 -1 WAT
R NA 1994 2017 - S Su>=1 2 0 CAT
R NA 1995 2017 - Ap Su>=1 2 -1 WAT
-Z Africa/Windhoek 1:8:24 - LMT 1892 F 8
-1:30 - +0130 1903 Mar
-2 - SAST 1942 S 20 2
-2 1 SAST 1943 Mar 21 2
-2 - SAST 1990 Mar 21
-2 NA %s
-Z Africa/Lagos 0:13:35 - LMT 1905 Jul
-0 - GMT 1908 Jul
-0:13:35 - LMT 1914
-0:30 - +0030 1919 S
-1 - WAT
-Z Africa/Sao_Tome 0:26:56 - LMT 1884
--0:36:45 - LMT 1912 Ja 1 0u
-0 - GMT 2018 Ja 1 1
-1 - WAT 2019 Ja 1 2
-0 - GMT
R SA 1942 1943 - S Su>=15 2 1 -
R SA 1943 1944 - Mar Su>=15 2 0 -
-Z Africa/Johannesburg 1:52 - LMT 1892 F 8
-1:30 - SAST 1903 Mar
-2 SA SAST
R SD 1970 o - May 1 0 1 S
R SD 1970 1985 - O 15 0 0 -
R SD 1971 o - Ap 30 0 1 S
R SD 1972 1985 - Ap lastSu 0 1 S
-Z Africa/Khartoum 2:10:8 - LMT 1931
-2 SD CA%sT 2000 Ja 15 12
-3 - EAT 2017 N
-2 - CAT
-Z Africa/Juba 2:6:28 - LMT 1931
-2 SD CA%sT 2000 Ja 15 12
-3 - EAT 2021 F
-2 - CAT
R n 1939 o - Ap 15 23s 1 S
R n 1939 o - N 18 23s 0 -
R n 1940 o - F 25 23s 1 S
@@ -379,80 +294,14 @@ R n 2005 o - May 1 0s 1 S
R n 2005 o - S 30 1s 0 -
R n 2006 2008 - Mar lastSu 2s 1 S
R n 2006 2008 - O lastSu 2s 0 -
-Z Africa/Tunis 0:40:44 - LMT 1881 May 12
-0:9:21 - PMT 1911 Mar 11
-1 n CE%sT
-Z Antarctica/Casey 0 - -00 1969
-8 - +08 2009 O 18 2
-11 - +11 2010 Mar 5 2
-8 - +08 2011 O 28 2
-11 - +11 2012 F 21 17u
-8 - +08 2016 O 22
-11 - +11 2018 Mar 11 4
-8 - +08 2018 O 7 4
-11 - +11 2019 Mar 17 3
-8 - +08 2019 O 4 3
-11 - +11 2020 Mar 8 3
-8 - +08 2020 O 4 0:1
-11 - +11
-Z Antarctica/Davis 0 - -00 1957 Ja 13
-7 - +07 1964 N
-0 - -00 1969 F
-7 - +07 2009 O 18 2
-5 - +05 2010 Mar 10 20u
-7 - +07 2011 O 28 2
-5 - +05 2012 F 21 20u
-7 - +07
-Z Antarctica/Mawson 0 - -00 1954 F 13
-6 - +06 2009 O 18 2
-5 - +05
R Tr 2005 ma - Mar lastSu 1u 2 +02
R Tr 2004 ma - O lastSu 1u 0 +00
-Z Antarctica/Troll 0 - -00 2005 F 12
-0 Tr %s
-Z Antarctica/Rothera 0 - -00 1976 D
--3 - -03
-Z Asia/Kabul 4:36:48 - LMT 1890
-4 - +04 1945
-4:30 - +0430
R AM 2011 o - Mar lastSu 2s 1 -
R AM 2011 o - O lastSu 2s 0 -
-Z Asia/Yerevan 2:58 - LMT 1924 May 2
-3 - +03 1957 Mar
-4 R +04/+05 1991 Mar 31 2s
-3 R +03/+04 1995 S 24 2s
-4 - +04 1997
-4 R +04/+05 2011
-4 AM +04/+05
R AZ 1997 2015 - Mar lastSu 4 1 -
R AZ 1997 2015 - O lastSu 5 0 -
-Z Asia/Baku 3:19:24 - LMT 1924 May 2
-3 - +03 1957 Mar
-4 R +04/+05 1991 Mar 31 2s
-3 R +03/+04 1992 S lastSu 2s
-4 - +04 1996
-4 E +04/+05 1997
-4 AZ +04/+05
R BD 2009 o - Jun 19 23 1 -
R BD 2009 o - D 31 24 0 -
-Z Asia/Dhaka 6:1:40 - LMT 1890
-5:53:20 - HMT 1941 O
-6:30 - +0630 1942 May 15
-5:30 - +0530 1942 S
-6:30 - +0630 1951 S 30
-6 - +06 2009
-6 BD +06/+07
-Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15
-5:30 - +0530 1987 O
-6 - +06
-Z Indian/Chagos 4:49:40 - LMT 1907
-5 - +05 1996
-6 - +06
-Z Asia/Yangon 6:24:47 - LMT 1880
-6:24:47 - RMT 1920
-6:30 - +0630 1942 May
-9 - +09 1945 May 3
-6:30 - +0630
R Sh 1919 o - Ap 12 24 1 D
R Sh 1919 o - S 30 24 0 S
R Sh 1940 o - Jun 1 0 1 D
@@ -470,11 +319,6 @@ R Sh 1948 1949 - S 30 24 0 S
R CN 1986 o - May 4 2 1 D
R CN 1986 1991 - S Su>=11 2 0 S
R CN 1987 1991 - Ap Su>=11 2 1 D
-Z Asia/Shanghai 8:5:43 - LMT 1901
-8 Sh C%sT 1949 May 28
-8 CN C%sT
-Z Asia/Urumqi 5:50:20 - LMT 1928
-6 - +06
R HK 1946 o - Ap 21 0 1 S
R HK 1946 o - D 1 3:30s 0 -
R HK 1947 o - Ap 13 3:30s 1 S
@@ -489,12 +333,6 @@ R HK 1965 1976 - O Su>=16 3:30 0 -
R HK 1973 o - D 30 3:30 1 S
R HK 1979 o - May 13 3:30 1 S
R HK 1979 o - O 21 3:30 0 -
-Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u
-8 - HKT 1941 Jun 15 3
-8 1 HKST 1941 O 1 4
-8 0:30 HKWT 1941 D 25
-9 - JST 1945 N 18 2
-8 HK HK%sT
R f 1946 o - May 15 0 1 D
R f 1946 o - O 1 0 0 S
R f 1947 o - Ap 15 0 1 D
@@ -510,10 +348,6 @@ R f 1974 1975 - Ap 1 0 1 D
R f 1974 1975 - O 1 0 0 S
R f 1979 o - Jul 1 0 1 D
R f 1979 o - O 1 0 0 S
-Z Asia/Taipei 8:6 - LMT 1896
-8 - CST 1937 O
-9 - JST 1945 S 21 1
-8 f C%sT
R _ 1942 1943 - Ap 30 23 1 -
R _ 1942 o - N 17 23 0 -
R _ 1943 o - S 30 23 0 S
@@ -541,10 +375,6 @@ R _ 1973 o - D 30 3:30 1 D
R _ 1975 1976 - Ap Su>=16 3:30 1 D
R _ 1979 o - May 13 3:30 1 D
R _ 1979 o - O Su>=16 3:30 0 S
-Z Asia/Macau 7:34:10 - LMT 1904 O 30
-8 - CST 1941 D 21 23
-9 _ +09/+10 1945 S 30 24
-8 _ C%sT
R CY 1975 o - Ap 13 0 1 S
R CY 1975 o - O 12 0 0 -
R CY 1976 o - May 15 0 1 S
@@ -554,65 +384,6 @@ R CY 1977 o - S 25 0 0 -
R CY 1978 o - O 2 0 0 -
R CY 1979 1997 - S lastSu 0 0 -
R CY 1981 1998 - Mar lastSu 0 1 S
-Z Asia/Nicosia 2:13:28 - LMT 1921 N 14
-2 CY EE%sT 1998 S
-2 E EE%sT
-Z Asia/Famagusta 2:15:48 - LMT 1921 N 14
-2 CY EE%sT 1998 S
-2 E EE%sT 2016 S 8
-3 - +03 2017 O 29 1u
-2 E EE%sT
-Z Asia/Tbilisi 2:59:11 - LMT 1880
-2:59:11 - TBMT 1924 May 2
-3 - +03 1957 Mar
-4 R +04/+05 1991 Mar 31 2s
-3 R +03/+04 1992
-3 e +03/+04 1994 S lastSu
-4 e +04/+05 1996 O lastSu
-4 1 +05 1997 Mar lastSu
-4 e +04/+05 2004 Jun 27
-3 R +03/+04 2005 Mar lastSu 2
-4 - +04
-Z Asia/Dili 8:22:20 - LMT 1912
-8 - +08 1942 F 21 23
-9 - +09 1976 May 3
-8 - +08 2000 S 17
-9 - +09
-Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28
-5:53:20 - HMT 1870
-5:21:10 - MMT 1906
-5:30 - IST 1941 O
-5:30 1 +0630 1942 May 15
-5:30 - IST 1942 S
-5:30 1 +0630 1945 O 15
-5:30 - IST
-Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10
-7:7:12 - BMT 1923 D 31 16:40u
-7:20 - +0720 1932 N
-7:30 - +0730 1942 Mar 23
-9 - +09 1945 S 23
-7:30 - +0730 1948 May
-8 - +08 1950 May
-7:30 - +0730 1964
-7 - WIB
-Z Asia/Pontianak 7:17:20 - LMT 1908 May
-7:17:20 - PMT 1932 N
-7:30 - +0730 1942 Ja 29
-9 - +09 1945 S 23
-7:30 - +0730 1948 May
-8 - +08 1950 May
-7:30 - +0730 1964
-8 - WITA 1988
-7 - WIB
-Z Asia/Makassar 7:57:36 - LMT 1920
-7:57:36 - MMT 1932 N
-8 - +08 1942 F 9
-9 - +09 1945 S 23
-8 - WITA
-Z Asia/Jayapura 9:22:48 - LMT 1932 N
-9 - +09 1944 S
-9:30 - +0930 1964
-9 - WIT
R i 1910 o - Ja 1 0 0 -
R i 1977 o - Mar 21 23 1 -
R i 1977 o - O 20 24 0 -
@@ -653,11 +424,6 @@ R i 2020 o - Mar 20 24 1 -
R i 2020 o - S 20 24 0 -
R i 2021 2022 - Mar 21 24 1 -
R i 2021 2022 - S 21 24 0 -
-Z Asia/Tehran 3:25:44 - LMT 1916
-3:25:44 - TMT 1935 Jun 13
-3:30 i +0330/+0430 1977 O 20 24
-4 i +04/+05 1979
-3:30 i +0330/+0430
R IQ 1982 o - May 1 0 1 -
R IQ 1982 1984 - O 1 0 0 -
R IQ 1983 o - Mar 31 0 1 -
@@ -666,10 +432,6 @@ R IQ 1985 1990 - S lastSu 1s 0 -
R IQ 1986 1990 - Mar lastSu 1s 1 -
R IQ 1991 2007 - Ap 1 3s 1 -
R IQ 1991 2007 - O 1 3s 0 -
-Z Asia/Baghdad 2:57:40 - LMT 1890
-2:57:36 - BMT 1918
-3 - +03 1982 May
-3 IQ +03/+04
R Z 1940 o - May 31 24u 1 D
R Z 1940 o - S 30 24u 0 S
R Z 1940 o - N 16 24u 1 D
@@ -755,15 +517,10 @@ R Z 2011 o - O 2 2 0 S
R Z 2012 o - S 23 2 0 S
R Z 2013 ma - Mar F>=23 2 1 D
R Z 2013 ma - O lastSu 2 0 S
-Z Asia/Jerusalem 2:20:54 - LMT 1880
-2:20:40 - JMT 1918
-2 Z I%sT
R JP 1948 o - May Sa>=1 24 1 D
R JP 1948 1951 - S Sa>=8 25 0 S
R JP 1949 o - Ap Sa>=1 24 1 D
R JP 1950 1951 - May Sa>=1 24 1 D
-Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u
-9 JP J%sT
R J 1973 o - Jun 6 0 1 S
R J 1973 1975 - O 1 0 0 -
R J 1974 1977 - May 1 0 1 S
@@ -796,83 +553,10 @@ R J 2013 o - D 20 0 0 -
R J 2014 2021 - Mar lastTh 24 1 S
R J 2014 2022 - O lastF 0s 0 -
R J 2022 o - F lastTh 24 1 S
-Z Asia/Amman 2:23:44 - LMT 1931
-2 J EE%sT 2022 O 28 0s
-3 - +03
-Z Asia/Almaty 5:7:48 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 R +05/+06 1992 Ja 19 2s
-6 R +06/+07 2004 O 31 2s
-6 - +06
-Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1991 S 29 2s
-5 R +05/+06 1992 Ja 19 2s
-6 R +06/+07 1992 Mar 29 2s
-5 R +05/+06 2004 O 31 2s
-6 - +06 2018 D 21
-5 - +05
-Z Asia/Qostanay 4:14:28 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 2004 O 31 2s
-6 - +06
-Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 2004 O 31 2s
-5 - +05
-Z Asia/Aqtau 3:21:4 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 1994 S 25 2s
-4 R +04/+05 2004 O 31 2s
-5 - +05
-Z Asia/Atyrau 3:27:44 - LMT 1924 May 2
-3 - +03 1930 Jun 21
-5 - +05 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 1999 Mar 28 2s
-4 R +04/+05 2004 O 31 2s
-5 - +05
-Z Asia/Oral 3:25:24 - LMT 1924 May 2
-3 - +03 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1989 Mar 26 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 1992 Mar 29 2s
-4 R +04/+05 2004 O 31 2s
-5 - +05
R KG 1992 1996 - Ap Su>=7 0s 1 -
R KG 1992 1996 - S lastSu 0 0 -
R KG 1997 2005 - Mar lastSu 2:30 1 -
R KG 1997 2004 - O lastSu 2:30 0 -
-Z Asia/Bishkek 4:58:24 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 R +05/+06 1991 Au 31 2
-5 KG +05/+06 2005 Au 12
-6 - +06
R KR 1948 o - Jun 1 0 1 D
R KR 1948 o - S 12 24 0 S
R KR 1949 o - Ap 3 0 1 D
@@ -887,18 +571,6 @@ R KR 1957 1960 - May Su>=1 0 1 D
R KR 1957 1960 - S Sa>=17 24 0 S
R KR 1987 1988 - May Su>=8 2 1 D
R KR 1987 1988 - O Su>=8 3 0 S
-Z Asia/Seoul 8:27:52 - LMT 1908 Ap
-8:30 - KST 1912
-9 - JST 1945 S 8
-9 KR K%sT 1954 Mar 21
-8:30 KR K%sT 1961 Au 10
-9 KR K%sT
-Z Asia/Pyongyang 8:23 - LMT 1908 Ap
-8:30 - KST 1912
-9 - JST 1945 Au 24
-9 - KST 2015 Au 15
-8:30 - KST 2018 May 4 23:30
-9 - KST
R l 1920 o - Mar 28 0 1 S
R l 1920 o - O 25 0 0 -
R l 1921 o - Ap 3 0 1 S
@@ -923,18 +595,8 @@ R l 1992 o - O 4 0 0 -
R l 1993 ma - Mar lastSu 0 1 S
R l 1993 1998 - S lastSu 0 0 -
R l 1999 ma - O lastSu 0 0 -
-Z Asia/Beirut 2:22 - LMT 1880
-2 l EE%sT
R NB 1935 1941 - S 14 0 0:20 -
R NB 1935 1941 - D 14 0 0 -
-Z Asia/Kuching 7:21:20 - LMT 1926 Mar
-7:30 - +0730 1933
-8 NB +08/+0820 1942 F 16
-9 - +09 1945 S 12
-8 - +08
-Z Indian/Maldives 4:54 - LMT 1880
-4:54 - MMT 1960
-5 - +05
R X 1983 1984 - Ap 1 0 1 -
R X 1983 o - O 1 0 0 -
R X 1985 1998 - Mar lastSu 0 1 -
@@ -944,31 +606,11 @@ R X 2001 2006 - S lastSa 2 0 -
R X 2002 2006 - Mar lastSa 2 1 -
R X 2015 2016 - Mar lastSa 2 1 -
R X 2015 2016 - S lastSa 0 0 -
-Z Asia/Hovd 6:6:36 - LMT 1905 Au
-6 - +06 1978
-7 X +07/+08
-Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au
-7 - +07 1978
-8 X +08/+09
-Z Asia/Choibalsan 7:38 - LMT 1905 Au
-7 - +07 1978
-8 - +08 1983 Ap
-9 X +09/+10 2008 Mar 31
-8 X +08/+09
-Z Asia/Kathmandu 5:41:16 - LMT 1920
-5:30 - +0530 1986
-5:45 - +0545
R PK 2002 o - Ap Su>=2 0 1 S
R PK 2002 o - O Su>=2 0 0 -
R PK 2008 o - Jun 1 0 1 S
R PK 2008 2009 - N 1 0 0 -
R PK 2009 o - Ap 15 0 1 S
-Z Asia/Karachi 4:28:12 - LMT 1907
-5:30 - +0530 1942 S
-5:30 1 +0630 1945 O 15
-5:30 - +0530 1951 S 30
-5 - +05 1971 Mar 26
-5 PK PK%sT
R P 1999 2005 - Ap F>=15 0 1 S
R P 1999 2003 - O F>=15 0 0 -
R P 2004 o - O 1 1 0 -
@@ -1001,136 +643,90 @@ R P 2021 o - O 29 1 0 -
R P 2022 o - Mar 27 0 1 S
R P 2022 2035 - O Sa<=30 2 0 -
R P 2023 o - Ap 29 2 1 S
-R P 2024 o - Ap 13 2 1 S
-R P 2025 o - Ap 5 2 1 S
+R P 2024 o - Ap 20 2 1 S
+R P 2025 o - Ap 12 2 1 S
R P 2026 2054 - Mar Sa<=30 2 1 S
R P 2036 o - O 18 2 0 -
R P 2037 o - O 10 2 0 -
R P 2038 o - S 25 2 0 -
R P 2039 o - S 17 2 0 -
-R P 2039 o - O 22 2 1 S
-R P 2039 2067 - O Sa<=30 2 0 -
R P 2040 o - S 1 2 0 -
-R P 2040 o - O 13 2 1 S
+R P 2040 o - O 20 2 1 S
+R P 2040 2067 - O Sa<=30 2 0 -
R P 2041 o - Au 24 2 0 -
-R P 2041 o - S 28 2 1 S
+R P 2041 o - O 5 2 1 S
R P 2042 o - Au 16 2 0 -
-R P 2042 o - S 20 2 1 S
+R P 2042 o - S 27 2 1 S
R P 2043 o - Au 1 2 0 -
-R P 2043 o - S 12 2 1 S
+R P 2043 o - S 19 2 1 S
R P 2044 o - Jul 23 2 0 -
-R P 2044 o - Au 27 2 1 S
+R P 2044 o - S 3 2 1 S
R P 2045 o - Jul 15 2 0 -
-R P 2045 o - Au 19 2 1 S
+R P 2045 o - Au 26 2 1 S
R P 2046 o - Jun 30 2 0 -
-R P 2046 o - Au 11 2 1 S
+R P 2046 o - Au 18 2 1 S
R P 2047 o - Jun 22 2 0 -
-R P 2047 o - Jul 27 2 1 S
+R P 2047 o - Au 3 2 1 S
R P 2048 o - Jun 6 2 0 -
-R P 2048 o - Jul 18 2 1 S
+R P 2048 o - Jul 25 2 1 S
R P 2049 o - May 29 2 0 -
-R P 2049 o - Jul 3 2 1 S
+R P 2049 o - Jul 10 2 1 S
R P 2050 o - May 21 2 0 -
-R P 2050 o - Jun 25 2 1 S
+R P 2050 o - Jul 2 2 1 S
R P 2051 o - May 6 2 0 -
-R P 2051 o - Jun 17 2 1 S
+R P 2051 o - Jun 24 2 1 S
R P 2052 o - Ap 27 2 0 -
-R P 2052 o - Jun 1 2 1 S
+R P 2052 o - Jun 8 2 1 S
R P 2053 o - Ap 12 2 0 -
-R P 2053 o - May 24 2 1 S
+R P 2053 o - May 31 2 1 S
R P 2054 o - Ap 4 2 0 -
-R P 2054 o - May 16 2 1 S
-R P 2055 o - May 1 2 1 S
-R P 2056 o - Ap 22 2 1 S
-R P 2057 o - Ap 7 2 1 S
-R P 2058 ma - Mar Sa<=30 2 1 S
+R P 2054 o - May 23 2 1 S
+R P 2055 o - May 8 2 1 S
+R P 2056 o - Ap 29 2 1 S
+R P 2057 o - Ap 14 2 1 S
+R P 2058 o - Ap 6 2 1 S
+R P 2059 ma - Mar Sa<=30 2 1 S
R P 2068 o - O 20 2 0 -
R P 2069 o - O 12 2 0 -
R P 2070 o - O 4 2 0 -
R P 2071 o - S 19 2 0 -
R P 2072 o - S 10 2 0 -
-R P 2072 o - O 15 2 1 S
+R P 2072 o - O 22 2 1 S
+R P 2072 ma - O Sa<=30 2 0 -
R P 2073 o - S 2 2 0 -
-R P 2073 o - O 7 2 1 S
+R P 2073 o - O 14 2 1 S
R P 2074 o - Au 18 2 0 -
-R P 2074 o - S 29 2 1 S
+R P 2074 o - O 6 2 1 S
R P 2075 o - Au 10 2 0 -
-R P 2075 o - S 14 2 1 S
-R P 2075 ma - O Sa<=30 2 0 -
+R P 2075 o - S 21 2 1 S
R P 2076 o - Jul 25 2 0 -
-R P 2076 o - S 5 2 1 S
+R P 2076 o - S 12 2 1 S
R P 2077 o - Jul 17 2 0 -
-R P 2077 o - Au 28 2 1 S
+R P 2077 o - S 4 2 1 S
R P 2078 o - Jul 9 2 0 -
-R P 2078 o - Au 13 2 1 S
+R P 2078 o - Au 20 2 1 S
R P 2079 o - Jun 24 2 0 -
-R P 2079 o - Au 5 2 1 S
+R P 2079 o - Au 12 2 1 S
R P 2080 o - Jun 15 2 0 -
-R P 2080 o - Jul 20 2 1 S
+R P 2080 o - Jul 27 2 1 S
R P 2081 o - Jun 7 2 0 -
-R P 2081 o - Jul 12 2 1 S
+R P 2081 o - Jul 19 2 1 S
R P 2082 o - May 23 2 0 -
-R P 2082 o - Jul 4 2 1 S
+R P 2082 o - Jul 11 2 1 S
R P 2083 o - May 15 2 0 -
-R P 2083 o - Jun 19 2 1 S
+R P 2083 o - Jun 26 2 1 S
R P 2084 o - Ap 29 2 0 -
-R P 2084 o - Jun 10 2 1 S
+R P 2084 o - Jun 17 2 1 S
R P 2085 o - Ap 21 2 0 -
-R P 2085 o - Jun 2 2 1 S
+R P 2085 o - Jun 9 2 1 S
R P 2086 o - Ap 13 2 0 -
-R P 2086 o - May 18 2 1 S
-Z Asia/Gaza 2:17:52 - LMT 1900 O
-2 Z EET/EEST 1948 May 15
-2 K EE%sT 1967 Jun 5
-2 Z I%sT 1996
-2 J EE%sT 1999
-2 P EE%sT 2008 Au 29
-2 - EET 2008 S
-2 P EE%sT 2010
-2 - EET 2010 Mar 27 0:1
-2 P EE%sT 2011 Au
-2 - EET 2012
-2 P EE%sT
-Z Asia/Hebron 2:20:23 - LMT 1900 O
-2 Z EET/EEST 1948 May 15
-2 K EE%sT 1967 Jun 5
-2 Z I%sT 1996
-2 J EE%sT 1999
-2 P EE%sT
+R P 2086 o - May 25 2 1 S
R PH 1936 o - N 1 0 1 D
R PH 1937 o - F 1 0 0 S
R PH 1954 o - Ap 12 0 1 D
R PH 1954 o - Jul 1 0 0 S
R PH 1978 o - Mar 22 0 1 D
R PH 1978 o - S 21 0 0 S
-Z Asia/Manila -15:56 - LMT 1844 D 31
-8:4 - LMT 1899 May 11
-8 PH P%sT 1942 May
-9 - JST 1944 N
-8 PH P%sT
-Z Asia/Qatar 3:26:8 - LMT 1920
-4 - +04 1972 Jun
-3 - +03
-Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14
-3 - +03
-Z Asia/Singapore 6:55:25 - LMT 1901
-6:55:25 - SMT 1905 Jun
-7 - +07 1933
-7 0:20 +0720 1936
-7:20 - +0720 1941 S
-7:30 - +0730 1942 F 16
-9 - +09 1945 S 12
-7:30 - +0730 1981 D 31 16u
-8 - +08
-Z Asia/Colombo 5:19:24 - LMT 1880
-5:19:32 - MMT 1906
-5:30 - +0530 1942 Ja 5
-5:30 0:30 +06 1942 S
-5:30 1 +0630 1945 O 16 2
-5:30 - +0530 1996 May 25
-6:30 - +0630 1996 O 26 0:30
-6 - +06 2006 Ap 15 0:30
-5:30 - +0530
R S 1920 1923 - Ap Su>=15 2 1 S
R S 1920 1923 - O Su>=1 2 0 -
R S 1962 o - Ap 29 2 1 S
@@ -1172,46 +768,6 @@ R S 2009 o - Mar lastF 0 1 S
R S 2010 2011 - Ap F>=1 0 1 S
R S 2012 2022 - Mar lastF 0 1 S
R S 2009 2022 - O lastF 0 0 -
-Z Asia/Damascus 2:25:12 - LMT 1920
-2 S EE%sT 2022 O 28
-3 - +03
-Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 1 +06 1991 S 9 2s
-5 - +05
-Z Asia/Bangkok 6:42:4 - LMT 1880
-6:42:4 - BMT 1920 Ap
-7 - +07
-Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 R +05/+06 1991 Mar 31 2
-4 R +04/+05 1992 Ja 19 2
-5 - +05
-Z Asia/Dubai 3:41:12 - LMT 1920
-4 - +04
-Z Asia/Samarkand 4:27:53 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1992
-5 - +05
-Z Asia/Tashkent 4:37:11 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2
-5 R +05/+06 1992
-5 - +05
-Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul
-7:6:30 - PLMT 1911 May
-7 - +07 1942 D 31 23
-8 - +08 1945 Mar 14 23
-9 - +09 1945 S 2
-7 - +07 1947 Ap
-8 - +08 1955 Jul
-7 - +07 1959 D 31 23
-8 - +08 1975 Jun 13
-7 - +07
R AU 1917 o - Ja 1 2s 1 D
R AU 1917 o - Mar lastSu 2s 0 S
R AU 1942 o - Ja 1 2s 1 D
@@ -1219,9 +775,6 @@ R AU 1942 o - Mar lastSu 2s 0 S
R AU 1942 o - S 27 2s 1 D
R AU 1943 1944 - Mar lastSu 2s 0 S
R AU 1943 o - O 3 2s 1 D
-Z Australia/Darwin 8:43:20 - LMT 1895 F
-9 - ACST 1899 May
-9:30 AU AC%sT
R AW 1974 o - O lastSu 2s 1 D
R AW 1975 o - Mar Su>=1 2s 0 S
R AW 1983 o - O lastSu 2s 1 D
@@ -1231,25 +784,12 @@ R AW 1992 o - Mar Su>=1 2s 0 S
R AW 2006 o - D 3 2s 1 D
R AW 2007 2009 - Mar lastSu 2s 0 S
R AW 2007 2008 - O lastSu 2s 1 D
-Z Australia/Perth 7:43:24 - LMT 1895 D
-8 AU AW%sT 1943 Jul
-8 AW AW%sT
-Z Australia/Eucla 8:35:28 - LMT 1895 D
-8:45 AU +0845/+0945 1943 Jul
-8:45 AW +0845/+0945
R AQ 1971 o - O lastSu 2s 1 D
R AQ 1972 o - F lastSu 2s 0 S
R AQ 1989 1991 - O lastSu 2s 1 D
R AQ 1990 1992 - Mar Su>=1 2s 0 S
R Ho 1992 1993 - O lastSu 2s 1 D
R Ho 1993 1994 - Mar Su>=1 2s 0 S
-Z Australia/Brisbane 10:12:8 - LMT 1895
-10 AU AE%sT 1971
-10 AQ AE%sT
-Z Australia/Lindeman 9:55:56 - LMT 1895
-10 AU AE%sT 1971
-10 AQ AE%sT 1992 Jul
-10 Ho AE%sT
R AS 1971 1985 - O lastSu 2s 1 D
R AS 1986 o - O 19 2s 1 D
R AS 1987 2007 - O lastSu 2s 1 D
@@ -1265,10 +805,6 @@ R AS 2006 o - Ap 2 2s 0 S
R AS 2007 o - Mar lastSu 2s 0 S
R AS 2008 ma - Ap Su>=1 2s 0 S
R AS 2008 ma - O Su>=1 2s 1 D
-Z Australia/Adelaide 9:14:20 - LMT 1895 F
-9 - ACST 1899 May
-9:30 AU AC%sT 1971
-9:30 AS AC%sT
R AT 1916 o - O Su>=1 2s 1 D
R AT 1917 o - Mar lastSu 2s 0 S
R AT 1917 1918 - O Su>=22 2s 1 D
@@ -1292,10 +828,6 @@ R AT 2001 ma - O Su>=1 2s 1 D
R AT 2006 o - Ap Su>=1 2s 0 S
R AT 2007 o - Mar lastSu 2s 0 S
R AT 2008 ma - Ap Su>=1 2s 0 S
-Z Australia/Hobart 9:49:16 - LMT 1895 S
-10 AT AE%sT 1919 O 24
-10 AU AE%sT 1967
-10 AT AE%sT
R AV 1971 1985 - O lastSu 2s 1 D
R AV 1972 o - F lastSu 2s 0 S
R AV 1973 1985 - Mar Su>=1 2s 0 S
@@ -1310,9 +842,6 @@ R AV 2006 o - Ap Su>=1 2s 0 S
R AV 2007 o - Mar lastSu 2s 0 S
R AV 2008 ma - Ap Su>=1 2s 0 S
R AV 2008 ma - O Su>=1 2s 1 D
-Z Australia/Melbourne 9:39:52 - LMT 1895 F
-10 AU AE%sT 1971
-10 AV AE%sT
R AN 1971 1985 - O lastSu 2s 1 D
R AN 1972 o - F 27 2s 0 S
R AN 1973 1981 - Mar Su>=1 2s 0 S
@@ -1329,15 +858,6 @@ R AN 2006 o - Ap Su>=1 2s 0 S
R AN 2007 o - Mar lastSu 2s 0 S
R AN 2008 ma - Ap Su>=1 2s 0 S
R AN 2008 ma - O Su>=1 2s 1 D
-Z Australia/Sydney 10:4:52 - LMT 1895 F
-10 AU AE%sT 1971
-10 AN AE%sT
-Z Australia/Broken_Hill 9:25:48 - LMT 1895 F
-10 - AEST 1896 Au 23
-9 - ACST 1899 May
-9:30 AU AC%sT 1971
-9:30 AN AC%sT 2000
-9:30 AS AC%sT
R LH 1981 1984 - O lastSu 2 1 -
R LH 1982 1985 - Mar Su>=1 2 0 -
R LH 1985 o - O lastSu 2 0:30 -
@@ -1352,19 +872,6 @@ R LH 2006 o - Ap Su>=1 2 0 -
R LH 2007 o - Mar lastSu 2 0 -
R LH 2008 ma - Ap Su>=1 2 0 -
R LH 2008 ma - O Su>=1 2 0:30 -
-Z Australia/Lord_Howe 10:36:20 - LMT 1895 F
-10 - AEST 1981 Mar
-10:30 LH +1030/+1130 1985 Jul
-10:30 LH +1030/+11
-Z Antarctica/Macquarie 0 - -00 1899 N
-10 - AEST 1916 O 1 2
-10 1 AEDT 1917 F
-10 AU AE%sT 1919 Ap 1 0s
-0 - -00 1948 Mar 25
-10 AU AE%sT 1967
-10 AT AE%sT 2010
-10 1 AEDT 2011
-10 AT AE%sT
R FJ 1998 1999 - N Su>=1 2 1 -
R FJ 1999 2000 - F lastSu 3 0 -
R FJ 2009 o - N 29 2 1 -
@@ -1377,14 +884,6 @@ R FJ 2014 2018 - N Su>=1 2 1 -
R FJ 2015 2021 - Ja Su>=12 3 0 -
R FJ 2019 o - N Su>=8 2 1 -
R FJ 2020 o - D 20 2 1 -
-Z Pacific/Fiji 11:55:44 - LMT 1915 O 26
-12 FJ +12/+13
-Z Pacific/Gambier -8:59:48 - LMT 1912 O
--9 - -09
-Z Pacific/Marquesas -9:18 - LMT 1912 O
--9:30 - -0930
-Z Pacific/Tahiti -9:58:16 - LMT 1912 O
--10 - -10
R Gu 1959 o - Jun 27 2 1 D
R Gu 1961 o - Ja 29 2 0 S
R Gu 1967 o - S 1 2 1 D
@@ -1399,50 +898,10 @@ R Gu 1976 o - May 26 2 1 D
R Gu 1976 o - Au 22 2:1 0 S
R Gu 1977 o - Ap 24 2 1 D
R Gu 1977 o - Au 28 2 0 S
-Z Pacific/Guam -14:21 - LMT 1844 D 31
-9:39 - LMT 1901
-10 - GST 1941 D 10
-9 - +09 1944 Jul 31
-10 Gu G%sT 2000 D 23
-10 - ChST
-Z Pacific/Tarawa 11:32:4 - LMT 1901
-12 - +12
-Z Pacific/Kanton 0 - -00 1937 Au 31
--12 - -12 1979 O
--11 - -11 1994 D 31
-13 - +13
-Z Pacific/Kiritimati -10:29:20 - LMT 1901
--10:40 - -1040 1979 O
--10 - -10 1994 D 31
-14 - +14
-Z Pacific/Kwajalein 11:9:20 - LMT 1901
-11 - +11 1937
-10 - +10 1941 Ap
-9 - +09 1944 F 6
-11 - +11 1969 O
--12 - -12 1993 Au 20 24
-12 - +12
-Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31
-10:51:56 - LMT 1901
-11 - +11 1914 O
-9 - +09 1919 F
-11 - +11 1937
-10 - +10 1941 Ap
-9 - +09 1945 Au
-11 - +11 1969 O
-12 - +12 1999
-11 - +11
-Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15
-11:30 - +1130 1942 Au 29
-9 - +09 1945 S 8
-11:30 - +1130 1979 F 10 2
-12 - +12
R NC 1977 1978 - D Su>=1 0 1 -
R NC 1978 1979 - F 27 0 0 -
R NC 1996 o - D 1 2s 1 -
R NC 1997 o - Mar 2 2s 0 -
-Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13
-11 NC +11/+12
R NZ 1927 o - N 6 2 1 S
R NZ 1928 o - Mar 4 2 0 M
R NZ 1928 1933 - O Su>=8 2 0:30 S
@@ -1468,80 +927,26 @@ R NZ 2007 ma - S lastSu 2s 1 D
R k 2007 ma - S lastSu 2:45s 1 -
R NZ 2008 ma - Ap Su>=1 2s 0 S
R k 2008 ma - Ap Su>=1 2:45s 0 -
-Z Pacific/Auckland 11:39:4 - LMT 1868 N 2
-11:30 NZ NZ%sT 1946
-12 NZ NZ%sT
-Z Pacific/Chatham 12:13:48 - LMT 1868 N 2
-12:15 - +1215 1946
-12:45 k +1245/+1345
R CK 1978 o - N 12 0 0:30 -
R CK 1979 1991 - Mar Su>=1 0 0 -
R CK 1979 1990 - O lastSu 0 0:30 -
-Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26
--10:39:4 - LMT 1952 O 16
--10:30 - -1030 1978 N 12
--10 CK -10/-0930
-Z Pacific/Niue -11:19:40 - LMT 1952 O 16
--11:20 - -1120 1964 Jul
--11 - -11
-Z Pacific/Norfolk 11:11:52 - LMT 1901
-11:12 - +1112 1951
-11:30 - +1130 1974 O 27 2s
-11:30 1 +1230 1975 Mar 2 2s
-11:30 - +1130 2015 O 4 2s
-11 - +11 2019 Jul
-11 AN +11/+12
-Z Pacific/Palau -15:2:4 - LMT 1844 D 31
-8:57:56 - LMT 1901
-9 - +09
-Z Pacific/Port_Moresby 9:48:40 - LMT 1880
-9:48:32 - PMMT 1895
-10 - +10
-Z Pacific/Bougainville 10:22:16 - LMT 1880
-9:48:32 - PMMT 1895
-10 - +10 1942 Jul
-9 - +09 1945 Au 21
-10 - +10 2014 D 28 2
-11 - +11
-Z Pacific/Pitcairn -8:40:20 - LMT 1901
--8:30 - -0830 1998 Ap 27
--8 - -08
-Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5
--11:22:48 - LMT 1911
--11 - SST
R WS 2010 o - S lastSu 0 1 -
R WS 2011 o - Ap Sa>=1 4 0 -
R WS 2011 o - S lastSa 3 1 -
R WS 2012 2021 - Ap Su>=1 4 0 -
R WS 2012 2020 - S lastSu 3 1 -
-Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5
--11:26:56 - LMT 1911
--11:30 - -1130 1950
--11 WS -11/-10 2011 D 29 24
-13 WS +13/+14
-Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O
-11 - +11
-Z Pacific/Fakaofo -11:24:56 - LMT 1901
--11 - -11 2011 D 30
-13 - +13
R TO 1999 o - O 7 2s 1 -
R TO 2000 o - Mar 19 2s 0 -
R TO 2000 2001 - N Su>=1 2 1 -
R TO 2001 2002 - Ja lastSu 2 0 -
R TO 2016 o - N Su>=1 2 1 -
R TO 2017 o - Ja Su>=15 3 0 -
-Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10
-12:20 - +1220 1961
-13 - +13 1999
-13 TO +13/+14
R VU 1973 o - D 22 12u 1 -
R VU 1974 o - Mar 30 12u 0 -
R VU 1983 1991 - S Sa>=22 24 1 -
R VU 1984 1991 - Mar Sa>=22 24 0 -
R VU 1992 1993 - Ja Sa>=22 24 0 -
R VU 1992 o - O Sa>=22 24 1 -
-Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13
-11 VU +11/+12
R G 1916 o - May 21 2s 1 BST
R G 1916 o - O 1 2s 0 GMT
R G 1917 o - Ap 8 2s 1 BST
@@ -1607,11 +1012,6 @@ R G 1972 1980 - O Su>=23 2s 0 GMT
R G 1981 1995 - Mar lastSu 1u 1 BST
R G 1981 1989 - O Su>=23 1u 0 GMT
R G 1990 1995 - O Su>=22 1u 0 GMT
-Z Europe/London -0:1:15 - LMT 1847 D
-0 G %s 1968 O 27
-1 - BST 1971 O 31 2u
-0 G %s 1996
-0 E GMT/BST
R IE 1971 o - O 31 2u -1 -
R IE 1972 1980 - Mar Su>=16 2u 0 -
R IE 1972 1980 - O Su>=23 2u -1 -
@@ -1619,17 +1019,6 @@ R IE 1981 ma - Mar lastSu 1u 0 -
R IE 1981 1989 - O Su>=23 1u -1 -
R IE 1990 1995 - O Su>=22 1u -1 -
R IE 1996 ma - O lastSu 1u -1 -
-Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
--0:25:21 - DMT 1916 May 21 2s
--0:25:21 1 IST 1916 O 1 2s
-0 G %s 1921 D 6
-0 G GMT/IST 1940 F 25 2s
-0 1 IST 1946 O 6 2s
-0 - GMT 1947 Mar 16 2s
-0 1 IST 1947 N 2 2s
-0 - GMT 1948 Ap 18 2s
-0 G GMT/IST 1968 O 27
-1 IE IST/GMT
R E 1977 1980 - Ap Su>=1 1u 1 S
R E 1977 o - S lastSu 1u 0 -
R E 1978 o - O 1 1u 0 -
@@ -1681,10 +1070,6 @@ R R 1981 1983 - O 1 0 0 -
R R 1984 1995 - S lastSu 2s 0 -
R R 1985 2010 - Mar lastSu 2s 1 S
R R 1996 2010 - O lastSu 2s 0 -
-Z WET 0 E WE%sT
-Z CET 1 c CE%sT
-Z MET 1 c ME%sT
-Z EET 2 E EE%sT
R q 1940 o - Jun 16 0 1 S
R q 1942 o - N 2 3 0 -
R q 1943 o - Mar 29 2 1 S
@@ -1710,14 +1095,6 @@ R q 1982 o - O 3 0 0 -
R q 1983 o - Ap 18 0 1 S
R q 1983 o - O 1 0 0 -
R q 1984 o - Ap 1 0 1 S
-Z Europe/Tirane 1:19:20 - LMT 1914
-1 - CET 1940 Jun 16
-1 q CE%sT 1984 Jul
-1 E CE%sT
-Z Europe/Andorra 0:6:4 - LMT 1901
-0 - WET 1946 S 30
-1 - CET 1985 Mar 31 2
-1 E CE%sT
R a 1920 o - Ap 5 2s 1 S
R a 1920 o - S 13 2s 0 -
R a 1946 o - Ap 14 2s 1 S
@@ -1727,23 +1104,6 @@ R a 1947 o - Ap 6 2s 1 S
R a 1948 o - Ap 18 2s 1 S
R a 1980 o - Ap 6 0 1 S
R a 1980 o - S 28 0 0 -
-Z Europe/Vienna 1:5:21 - LMT 1893 Ap
-1 c CE%sT 1920
-1 a CE%sT 1940 Ap 1 2s
-1 c CE%sT 1945 Ap 2 2s
-1 1 CEST 1945 Ap 12 2s
-1 - CET 1946
-1 a CE%sT 1981
-1 E CE%sT
-Z Europe/Minsk 1:50:16 - LMT 1880
-1:50 - MMT 1924 May 2
-2 - EET 1930 Jun 21
-3 - MSK 1941 Jun 28
-1 c CE%sT 1944 Jul 3
-3 R MSK/MSD 1990
-3 - MSK 1991 Mar 31 2s
-2 R EE%sT 2011 Mar 27 2s
-3 - +03
R b 1918 o - Mar 9 0s 1 S
R b 1918 1919 - O Sa>=1 23s 0 -
R b 1919 o - Mar 1 23s 1 S
@@ -1778,87 +1138,27 @@ R b 1945 o - Ap 2 2s 1 S
R b 1945 o - S 16 2s 0 -
R b 1946 o - May 19 2s 1 S
R b 1946 o - O 7 2s 0 -
-Z Europe/Brussels 0:17:30 - LMT 1880
-0:17:30 - BMT 1892 May 1 0:17:30
-0 - WET 1914 N 8
-1 - CET 1916 May
-1 c CE%sT 1918 N 11 11u
-0 b WE%sT 1940 May 20 2s
-1 c CE%sT 1944 S 3
-1 b CE%sT 1977
-1 E CE%sT
R BG 1979 o - Mar 31 23 1 S
R BG 1979 o - O 1 1 0 -
R BG 1980 1982 - Ap Sa>=1 23 1 S
R BG 1980 o - S 29 1 0 -
R BG 1981 o - S 27 2 0 -
-Z Europe/Sofia 1:33:16 - LMT 1880
-1:56:56 - IMT 1894 N 30
-2 - EET 1942 N 2 3
-1 c CE%sT 1945
-1 - CET 1945 Ap 2 3
-2 - EET 1979 Mar 31 23
-2 BG EE%sT 1982 S 26 3
-2 c EE%sT 1991
-2 e EE%sT 1997
-2 E EE%sT
R CZ 1945 o - Ap M>=1 2s 1 S
R CZ 1945 o - O 1 2s 0 -
R CZ 1946 o - May 6 2s 1 S
R CZ 1946 1949 - O Su>=1 2s 0 -
R CZ 1947 1948 - Ap Su>=15 2s 1 S
R CZ 1949 o - Ap 9 2s 1 S
-Z Europe/Prague 0:57:44 - LMT 1850
-0:57:44 - PMT 1891 O
-1 c CE%sT 1945 May 9
-1 CZ CE%sT 1946 D 1 3
-1 -1 GMT 1947 F 23 2
-1 CZ CE%sT 1979
-1 E CE%sT
-Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11
-0 - WET 1981
-0 E WE%sT
R Th 1991 1992 - Mar lastSu 2 1 D
R Th 1991 1992 - S lastSu 2 0 S
R Th 1993 2006 - Ap Su>=1 2 1 D
R Th 1993 2006 - O lastSu 2 0 S
R Th 2007 ma - Mar Su>=8 2 1 D
R Th 2007 ma - N Su>=1 2 0 S
-Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
--3 - -03 1980 Ap 6 2
--3 E -03/-02 1996
-0 - GMT
-Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28
--2 - -02 1980 Ap 6 2
--2 c -02/-01 1981 Mar 29
--1 E -01/+00
-Z America/Nuuk -3:26:56 - LMT 1916 Jul 28
--3 - -03 1980 Ap 6 2
--3 E -03/-02 2023 O 29 1u
--2 E -02/-01
-Z America/Thule -4:35:8 - LMT 1916 Jul 28
--4 Th A%sT
-Z Europe/Tallinn 1:39 - LMT 1880
-1:39 - TMT 1918 F
-1 c CE%sT 1919 Jul
-1:39 - TMT 1921 May
-2 - EET 1940 Au 6
-3 - MSK 1941 S 15
-1 c CE%sT 1944 S 22
-3 R MSK/MSD 1989 Mar 26 2s
-2 1 EEST 1989 S 24 2s
-2 c EE%sT 1998 S 22
-2 E EE%sT 1999 O 31 4
-2 - EET 2002 F 21
-2 E EE%sT
R FI 1942 o - Ap 2 24 1 S
R FI 1942 o - O 4 1 0 -
R FI 1981 1982 - Mar lastSu 2 1 S
R FI 1981 1982 - S lastSu 3 0 -
-Z Europe/Helsinki 1:39:49 - LMT 1878 May 31
-1:39:49 - HMT 1921 May
-2 FI EE%sT 1983
-2 E EE%sT
R F 1916 o - Jun 14 23s 1 S
R F 1916 1919 - O Su>=1 23s 0 -
R F 1917 o - Mar 24 23s 1 S
@@ -1901,13 +1201,6 @@ R F 1945 o - Ap 2 2 2 M
R F 1945 o - S 16 3 0 -
R F 1976 o - Mar 28 1 1 S
R F 1976 o - S 26 1 0 -
-Z Europe/Paris 0:9:21 - LMT 1891 Mar 16
-0:9:21 - PMT 1911 Mar 11
-0 F WE%sT 1940 Jun 14 23
-1 c CE%sT 1944 Au 25
-0 F WE%sT 1945 S 16 3
-1 F CE%sT 1977
-1 E CE%sT
R DE 1946 o - Ap 14 2s 1 S
R DE 1946 o - O 7 2s 0 -
R DE 1947 1949 - O Su>=1 2s 0 -
@@ -1919,15 +1212,6 @@ R DE 1949 o - Ap 10 2s 1 S
R So 1945 o - May 24 2 2 M
R So 1945 o - S 24 3 1 S
R So 1945 o - N 18 2s 0 -
-Z Europe/Berlin 0:53:28 - LMT 1893 Ap
-1 c CE%sT 1945 May 24 2
-1 So CE%sT 1946
-1 DE CE%sT 1980
-1 E CE%sT
-Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2
-0 G %s 1957 Ap 14 2
-1 - CET 1982
-1 E CE%sT
R g 1932 o - Jul 7 0 1 S
R g 1932 o - S 1 0 0 -
R g 1941 o - Ap 7 0 1 S
@@ -1947,12 +1231,6 @@ R g 1979 o - Ap 1 9 1 S
R g 1979 o - S 29 2 0 -
R g 1980 o - Ap 1 0 1 S
R g 1980 o - S 28 0 0 -
-Z Europe/Athens 1:34:52 - LMT 1895 S 14
-1:34:52 - AMT 1916 Jul 28 0:1
-2 g EE%sT 1941 Ap 30
-1 g CE%sT 1944 Ap 4
-2 g EE%sT 1981
-2 E EE%sT
R h 1918 1919 - Ap 15 2 1 S
R h 1918 1920 - S M>=15 3 0 -
R h 1920 o - Ap 5 2 1 S
@@ -1972,12 +1250,6 @@ R h 1980 o - Ap 6 0 1 S
R h 1980 o - S 28 1 0 -
R h 1981 1983 - Mar lastSu 0 1 S
R h 1981 1983 - S lastSu 1 0 -
-Z Europe/Budapest 1:16:20 - LMT 1890 N
-1 c CE%sT 1918
-1 h CE%sT 1941 Ap 7 23
-1 c CE%sT 1945
-1 h CE%sT 1984
-1 E CE%sT
R I 1916 o - Jun 3 24 1 S
R I 1916 1917 - S 30 24 0 -
R I 1917 o - Mar 31 24 1 S
@@ -2019,44 +1291,8 @@ R I 1976 o - May 30 0s 1 S
R I 1977 1979 - May Su>=22 0s 1 S
R I 1978 o - O 1 0s 0 -
R I 1979 o - S 30 0s 0 -
-Z Europe/Rome 0:49:56 - LMT 1866 D 12
-0:49:56 - RMT 1893 O 31 23u
-1 I CE%sT 1943 S 10
-1 c CE%sT 1944 Jun 4
-1 I CE%sT 1980
-1 E CE%sT
R LV 1989 1996 - Mar lastSu 2s 1 S
R LV 1989 1996 - S lastSu 2s 0 -
-Z Europe/Riga 1:36:34 - LMT 1880
-1:36:34 - RMT 1918 Ap 15 2
-1:36:34 1 LST 1918 S 16 3
-1:36:34 - RMT 1919 Ap 1 2
-1:36:34 1 LST 1919 May 22 3
-1:36:34 - RMT 1926 May 11
-2 - EET 1940 Au 5
-3 - MSK 1941 Jul
-1 c CE%sT 1944 O 13
-3 R MSK/MSD 1989 Mar lastSu 2s
-2 1 EEST 1989 S lastSu 2s
-2 LV EE%sT 1997 Ja 21
-2 E EE%sT 2000 F 29
-2 - EET 2001 Ja 2
-2 E EE%sT
-Z Europe/Vilnius 1:41:16 - LMT 1880
-1:24 - WMT 1917
-1:35:36 - KMT 1919 O 10
-1 - CET 1920 Jul 12
-2 - EET 1920 O 9
-1 - CET 1940 Au 3
-3 - MSK 1941 Jun 24
-1 c CE%sT 1944 Au
-3 R MSK/MSD 1989 Mar 26 2s
-2 R EE%sT 1991 S 29 2s
-2 c EE%sT 1998
-2 - EET 1998 Mar 29 1u
-1 E CE%sT 1999 O 31 1u
-2 - EET 2003
-2 E EE%sT
R MT 1973 o - Mar 31 0s 1 S
R MT 1973 o - S 29 0s 0 -
R MT 1974 o - Ap 21 0s 1 S
@@ -2064,22 +1300,8 @@ R MT 1974 o - S 16 0s 0 -
R MT 1975 1979 - Ap Su>=15 2 1 S
R MT 1975 1980 - S Su>=15 2 0 -
R MT 1980 o - Mar 31 2 1 S
-Z Europe/Malta 0:58:4 - LMT 1893 N 2
-1 I CE%sT 1973 Mar 31
-1 MT CE%sT 1981
-1 E CE%sT
R MD 1997 ma - Mar lastSu 2 1 S
R MD 1997 ma - O lastSu 3 0 -
-Z Europe/Chisinau 1:55:20 - LMT 1880
-1:55 - CMT 1918 F 15
-1:44:24 - BMT 1931 Jul 24
-2 z EE%sT 1940 Au 15
-2 1 EEST 1941 Jul 17
-1 c CE%sT 1944 Au 24
-3 R MSK/MSD 1990 May 6 2
-2 R EE%sT 1992
-2 e EE%sT 1997
-2 MD EE%sT
R O 1918 1919 - S 16 2s 0 -
R O 1919 o - Ap 15 2s 1 S
R O 1944 o - Ap 3 2s 1 S
@@ -2100,15 +1322,6 @@ R O 1959 1961 - O Su>=1 1s 0 -
R O 1960 o - Ap 3 1s 1 S
R O 1961 1964 - May lastSu 1s 1 S
R O 1962 1964 - S lastSu 1s 0 -
-Z Europe/Warsaw 1:24 - LMT 1880
-1:24 - WMT 1915 Au 5
-1 c CE%sT 1918 S 16 3
-2 O EE%sT 1922 Jun
-1 O CE%sT 1940 Jun 23 2
-1 c CE%sT 1944 O
-1 O CE%sT 1977
-1 W- CE%sT 1988
-1 E CE%sT
R p 1916 o - Jun 17 23 1 S
R p 1916 o - N 1 1 0 -
R p 1917 o - F 28 23s 1 S
@@ -2157,42 +1370,6 @@ R p 1979 1982 - S lastSu 1s 0 -
R p 1980 o - Mar lastSu 0s 1 S
R p 1981 1982 - Mar lastSu 1s 1 S
R p 1983 o - Mar lastSu 2s 1 S
-Z Europe/Lisbon -0:36:45 - LMT 1884
--0:36:45 - LMT 1912 Ja 1 0u
-0 p WE%sT 1966 Ap 3 2
-1 - CET 1976 S 26 1
-0 p WE%sT 1983 S 25 1s
-0 W- WE%sT 1992 S 27 1s
-1 E CE%sT 1996 Mar 31 1u
-0 E WE%sT
-Z Atlantic/Azores -1:42:40 - LMT 1884
--1:54:32 - HMT 1912 Ja 1 2u
--2 p -02/-01 1942 Ap 25 22s
--2 p +00 1942 Au 15 22s
--2 p -02/-01 1943 Ap 17 22s
--2 p +00 1943 Au 28 22s
--2 p -02/-01 1944 Ap 22 22s
--2 p +00 1944 Au 26 22s
--2 p -02/-01 1945 Ap 21 22s
--2 p +00 1945 Au 25 22s
--2 p -02/-01 1966 Ap 3 2
--1 p -01/+00 1983 S 25 1s
--1 W- -01/+00 1992 S 27 1s
-0 E WE%sT 1993 Mar 28 1u
--1 E -01/+00
-Z Atlantic/Madeira -1:7:36 - LMT 1884
--1:7:36 - FMT 1912 Ja 1 1u
--1 p -01/+00 1942 Ap 25 22s
--1 p +01 1942 Au 15 22s
--1 p -01/+00 1943 Ap 17 22s
--1 p +01 1943 Au 28 22s
--1 p -01/+00 1944 Ap 22 22s
--1 p +01 1944 Au 26 22s
--1 p -01/+00 1945 Ap 21 22s
--1 p +01 1945 Au 25 22s
--1 p -01/+00 1966 Ap 3 2
-0 p WE%sT 1983 S 25 1s
-0 E WE%sT
R z 1932 o - May 21 0s 1 S
R z 1932 1939 - O Su>=1 0s 0 -
R z 1933 1939 - Ap Su>=2 0s 1 S
@@ -2202,252 +1379,6 @@ R z 1980 o - Ap 5 23 1 S
R z 1980 o - S lastSu 1 0 -
R z 1991 1993 - Mar lastSu 0s 1 S
R z 1991 1993 - S lastSu 0s 0 -
-Z Europe/Bucharest 1:44:24 - LMT 1891 O
-1:44:24 - BMT 1931 Jul 24
-2 z EE%sT 1981 Mar 29 2s
-2 c EE%sT 1991
-2 z EE%sT 1994
-2 e EE%sT 1997
-2 E EE%sT
-Z Europe/Kaliningrad 1:22 - LMT 1893 Ap
-1 c CE%sT 1945 Ap 10
-2 O EE%sT 1946 Ap 7
-3 R MSK/MSD 1989 Mar 26 2s
-2 R EE%sT 2011 Mar 27 2s
-3 - +03 2014 O 26 2s
-2 - EET
-Z Europe/Moscow 2:30:17 - LMT 1880
-2:30:17 - MMT 1916 Jul 3
-2:31:19 R %s 1919 Jul 1 0u
-3 R %s 1921 O
-3 R MSK/MSD 1922 O
-2 - EET 1930 Jun 21
-3 R MSK/MSD 1991 Mar 31 2s
-2 R EE%sT 1992 Ja 19 2s
-3 R MSK/MSD 2011 Mar 27 2s
-4 - MSK 2014 O 26 2s
-3 - MSK
-Z Europe/Simferopol 2:16:24 - LMT 1880
-2:16 - SMT 1924 May 2
-2 - EET 1930 Jun 21
-3 - MSK 1941 N
-1 c CE%sT 1944 Ap 13
-3 R MSK/MSD 1990
-3 - MSK 1990 Jul 1 2
-2 - EET 1992 Mar 20
-2 c EE%sT 1994 May
-3 c MSK/MSD 1996 Mar 31 0s
-3 1 MSD 1996 O 27 3s
-3 - MSK 1997 Mar lastSu 1u
-2 E EE%sT 2014 Mar 30 2
-4 - MSK 2014 O 26 2s
-3 - MSK
-Z Europe/Astrakhan 3:12:12 - LMT 1924 May
-3 - +03 1930 Jun 21
-4 R +04/+05 1989 Mar 26 2s
-3 R +03/+04 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04 2014 O 26 2s
-3 - +03 2016 Mar 27 2s
-4 - +04
-Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3
-3 - +03 1930 Jun 21
-4 - +04 1961 N 11
-4 R +04/+05 1988 Mar 27 2s
-3 R MSK/MSD 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R MSK/MSD 2011 Mar 27 2s
-4 - MSK 2014 O 26 2s
-3 - MSK 2018 O 28 2s
-4 - +04 2020 D 27 2s
-3 - MSK
-Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 R +04/+05 1988 Mar 27 2s
-3 R +03/+04 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04 2014 O 26 2s
-3 - +03 2016 D 4 2s
-4 - +04
-Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 R +04/+05 1989 Mar 26 2s
-3 R MSK/MSD 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R MSK/MSD 2011 Mar 27 2s
-4 - MSK 2014 O 26 2s
-3 - MSK
-Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 - +04 1935 Ja 27
-4 R +04/+05 1989 Mar 26 2s
-3 R +03/+04 1991 Mar 31 2s
-2 R +02/+03 1991 S 29 2s
-3 - +03 1991 O 20 3
-4 R +04/+05 2010 Mar 28 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04
-Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 R +04/+05 1989 Mar 26 2s
-3 R +03/+04 1991 Mar 31 2s
-2 R +02/+03 1992 Ja 19 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04 2014 O 26 2s
-3 - +03 2016 Mar 27 2s
-4 - +04
-Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3
-3:45:5 - PMT 1919 Jul 15 4
-4 - +04 1930 Jun 21
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 2011 Mar 27 2s
-6 - +06 2014 O 26 2s
-5 - +05
-Z Asia/Omsk 4:53:30 - LMT 1919 N 14
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 R +05/+06 1992 Ja 19 2s
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06
-Z Asia/Barnaul 5:35 - LMT 1919 D 10
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 1995 May 28
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06 2016 Mar 27 2s
-7 - +07
-Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 1993 May 23
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06 2016 Jul 24 2s
-7 - +07
-Z Asia/Tomsk 5:39:51 - LMT 1919 D 22
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 2002 May 1 3
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06 2016 May 29 2s
-7 - +07
-Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 2010 Mar 28 2s
-6 R +06/+07 2011 Mar 27 2s
-7 - +07
-Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 2011 Mar 27 2s
-8 - +08 2014 O 26 2s
-7 - +07
-Z Asia/Irkutsk 6:57:5 - LMT 1880
-6:57:5 - IMT 1920 Ja 25
-7 - +07 1930 Jun 21
-8 R +08/+09 1991 Mar 31 2s
-7 R +07/+08 1992 Ja 19 2s
-8 R +08/+09 2011 Mar 27 2s
-9 - +09 2014 O 26 2s
-8 - +08
-Z Asia/Chita 7:33:52 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1991 Mar 31 2s
-8 R +08/+09 1992 Ja 19 2s
-9 R +09/+10 2011 Mar 27 2s
-10 - +10 2014 O 26 2s
-8 - +08 2016 Mar 27 2
-9 - +09
-Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1991 Mar 31 2s
-8 R +08/+09 1992 Ja 19 2s
-9 R +09/+10 2011 Mar 27 2s
-10 - +10 2014 O 26 2s
-9 - +09
-Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15
-9 - +09 1930 Jun 21
-10 R +10/+11 1991 Mar 31 2s
-9 R +09/+10 1992 Ja 19 2s
-10 R +10/+11 2011 Mar 27 2s
-11 - +11 2014 O 26 2s
-10 - +10
-Z Asia/Khandyga 9:2:13 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1991 Mar 31 2s
-8 R +08/+09 1992 Ja 19 2s
-9 R +09/+10 2004
-10 R +10/+11 2011 Mar 27 2s
-11 - +11 2011 S 13 0s
-10 - +10 2014 O 26 2s
-9 - +09
-Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23
-9 - +09 1945 Au 25
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 1997 Mar lastSu 2s
-10 R +10/+11 2011 Mar 27 2s
-11 - +11 2014 O 26 2s
-10 - +10 2016 Mar 27 2s
-11 - +11
-Z Asia/Magadan 10:3:12 - LMT 1924 May 2
-10 - +10 1930 Jun 21
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12 2014 O 26 2s
-10 - +10 2016 Ap 24 2s
-11 - +11
-Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
-10 - +10 1930 Jun 21
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12 2014 O 26 2s
-11 - +11
-Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1981 Ap
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12 2011 S 13 0s
-11 - +11 2014 O 26 2s
-10 - +10
-Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10
-11 - +11 1930 Jun 21
-12 R +12/+13 1991 Mar 31 2s
-11 R +11/+12 1992 Ja 19 2s
-12 R +12/+13 2010 Mar 28 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12
-Z Asia/Anadyr 11:49:56 - LMT 1924 May 2
-12 - +12 1930 Jun 21
-13 R +13/+14 1982 Ap 1 0s
-12 R +12/+13 1991 Mar 31 2s
-11 R +11/+12 1992 Ja 19 2s
-12 R +12/+13 2010 Mar 28 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12
-Z Europe/Belgrade 1:22 - LMT 1884
-1 - CET 1941 Ap 18 23
-1 c CE%sT 1945
-1 - CET 1945 May 8 2s
-1 1 CEST 1945 S 16 2s
-1 - CET 1982 N 27
-1 E CE%sT
R s 1918 o - Ap 15 23 1 S
R s 1918 1919 - O 6 24s 0 -
R s 1919 o - Ap 6 23 1 S
@@ -2487,30 +1418,8 @@ R Sp 1976 o - Au 1 0 0 -
R Sp 1977 o - S 28 0 0 -
R Sp 1978 o - Jun 1 0 1 S
R Sp 1978 o - Au 4 0 0 -
-Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u
-0 s WE%sT 1940 Mar 16 23
-1 s CE%sT 1979
-1 E CE%sT
-Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u
-0 - WET 1918 May 6 23
-0 1 WEST 1918 O 7 23
-0 - WET 1924
-0 s WE%sT 1929
-0 - WET 1967
-0 Sp WE%sT 1984 Mar 16
-1 - CET 1986
-1 E CE%sT
-Z Atlantic/Canary -1:1:36 - LMT 1922 Mar
--1 - -01 1946 S 30 1
-0 - WET 1980 Ap 6 0s
-0 1 WEST 1980 S 28 1u
-0 E WE%sT
R CH 1941 1942 - May M>=1 1 1 S
R CH 1941 1942 - O M>=1 2 0 -
-Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16
-0:29:46 - BMT 1894 Jun
-1 CH CE%sT 1981
-1 E CE%sT
R T 1916 o - May 1 0 1 S
R T 1916 o - O 1 0 0 -
R T 1920 o - Mar 28 0 1 S
@@ -2556,28 +1465,6 @@ R T 1986 1995 - S lastSu 1s 0 -
R T 1994 o - Mar 20 1s 1 S
R T 1995 2006 - Mar lastSu 1s 1 S
R T 1996 2006 - O lastSu 1s 0 -
-Z Europe/Istanbul 1:55:52 - LMT 1880
-1:56:56 - IMT 1910 O
-2 T EE%sT 1978 Jun 29
-3 T +03/+04 1984 N 1 2
-2 T EE%sT 2007
-2 E EE%sT 2011 Mar 27 1u
-2 - EET 2011 Mar 28 1u
-2 E EE%sT 2014 Mar 30 1u
-2 - EET 2014 Mar 31 1u
-2 E EE%sT 2015 O 25 1u
-2 1 EEST 2015 N 8 1u
-2 E EE%sT 2016 S 7
-3 - +03
-Z Europe/Kyiv 2:2:4 - LMT 1880
-2:2:4 - KMT 1924 May 2
-2 - EET 1930 Jun 21
-3 - MSK 1941 S 20
-1 c CE%sT 1943 N 6
-3 R MSK/MSD 1990 Jul 1 2
-2 1 EEST 1991 S 29 3
-2 c EE%sT 1996 May 13
-2 E EE%sT
R u 1918 1919 - Mar lastSu 2 1 D
R u 1918 1919 - O lastSu 2 0 S
R u 1942 o - F 9 2 1 W
@@ -2591,172 +1478,34 @@ R u 1976 1986 - Ap lastSu 2 1 D
R u 1987 2006 - Ap Su>=1 2 1 D
R u 2007 ma - Mar Su>=8 2 1 D
R u 2007 ma - N Su>=1 2 0 S
-Z EST -5 - EST
-Z MST -7 - MST
-Z HST -10 - HST
-Z EST5EDT -5 u E%sT
-Z CST6CDT -6 u C%sT
-Z MST7MDT -7 u M%sT
-Z PST8PDT -8 u P%sT
R NY 1920 o - Mar lastSu 2 1 D
R NY 1920 o - O lastSu 2 0 S
R NY 1921 1966 - Ap lastSu 2 1 D
R NY 1921 1954 - S lastSu 2 0 S
R NY 1955 1966 - O lastSu 2 0 S
-Z America/New_York -4:56:2 - LMT 1883 N 18 17u
--5 u E%sT 1920
--5 NY E%sT 1942
--5 u E%sT 1946
--5 NY E%sT 1967
--5 u E%sT
R Ch 1920 o - Jun 13 2 1 D
R Ch 1920 1921 - O lastSu 2 0 S
R Ch 1921 o - Mar lastSu 2 1 D
R Ch 1922 1966 - Ap lastSu 2 1 D
R Ch 1922 1954 - S lastSu 2 0 S
R Ch 1955 1966 - O lastSu 2 0 S
-Z America/Chicago -5:50:36 - LMT 1883 N 18 18u
--6 u C%sT 1920
--6 Ch C%sT 1936 Mar 1 2
--5 - EST 1936 N 15 2
--6 Ch C%sT 1942
--6 u C%sT 1946
--6 Ch C%sT 1967
--6 u C%sT
-Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u
--7 u M%sT 1992 O 25 2
--6 u C%sT
-Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u
--7 u M%sT 2003 O 26 2
--6 u C%sT
-Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u
--7 u M%sT 2010 N 7 2
--6 u C%sT
R De 1920 1921 - Mar lastSu 2 1 D
R De 1920 o - O lastSu 2 0 S
R De 1921 o - May 22 2 0 S
R De 1965 1966 - Ap lastSu 2 1 D
R De 1965 1966 - O lastSu 2 0 S
-Z America/Denver -6:59:56 - LMT 1883 N 18 19u
--7 u M%sT 1920
--7 De M%sT 1942
--7 u M%sT 1946
--7 De M%sT 1967
--7 u M%sT
R CA 1948 o - Mar 14 2:1 1 D
R CA 1949 o - Ja 1 2 0 S
R CA 1950 1966 - Ap lastSu 1 1 D
R CA 1950 1961 - S lastSu 2 0 S
R CA 1962 1966 - O lastSu 2 0 S
-Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u
--8 u P%sT 1946
--8 CA P%sT 1967
--8 u P%sT
-Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32
--8:57:41 - LMT 1900 Au 20 12
--8 - PST 1942
--8 u P%sT 1946
--8 - PST 1969
--8 u P%sT 1980 Ap 27 2
--9 u Y%sT 1980 O 26 2
--8 u P%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30
--9:1:13 - LMT 1900 Au 20 12
--8 - PST 1942
--8 u P%sT 1946
--8 - PST 1969
--8 u P%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55
--8:46:18 - LMT 1900 Au 20 12
--8 - PST 1942
--8 u P%sT 1946
--8 - PST 1969
--8 u P%sT 1983 O 30 2
--8 - PST 2015 N 1 2
--9 u AK%sT 2018 N 4 2
--8 - PST 2019 Ja 20 2
--9 u AK%sT
-Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18
--9:18:55 - LMT 1900 Au 20 12
--9 - YST 1942
--9 u Y%sT 1946
--9 - YST 1969
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37
--9:59:36 - LMT 1900 Au 20 12
--10 - AST 1942
--10 u A%sT 1967 Ap
--10 - AHST 1969
--10 u AH%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35
--11:1:38 - LMT 1900 Au 20 12
--11 - NST 1942
--11 u N%sT 1946
--11 - NST 1967 Ap
--11 - BST 1969
--11 u B%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35
--11:46:38 - LMT 1900 Au 20 12
--11 - NST 1942
--11 u N%sT 1946
--11 - NST 1967 Ap
--11 - BST 1969
--11 u B%sT 1983 O 30 2
--10 u AH%sT 1983 N 30
--10 u H%sT
-Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12
--10:30 - HST 1933 Ap 30 2
--10:30 1 HDT 1933 May 21 12
--10:30 u H%sT 1947 Jun 8 2
--10 - HST
-Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u
--7 u M%sT 1944 Ja 1 0:1
--7 - MST 1944 Ap 1 0:1
--7 u M%sT 1944 O 1 0:1
--7 - MST 1967
--7 u M%sT 1968 Mar 21
--7 - MST
-Z America/Boise -7:44:49 - LMT 1883 N 18 20u
--8 u P%sT 1923 May 13 2
--7 u M%sT 1974
--7 - MST 1974 F 3 2
--7 u M%sT
R In 1941 o - Jun 22 2 1 D
R In 1941 1954 - S lastSu 2 0 S
R In 1946 1954 - Ap lastSu 2 1 D
-Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u
--6 u C%sT 1920
--6 In C%sT 1942
--6 u C%sT 1946
--6 In C%sT 1955 Ap 24 2
--5 - EST 1957 S 29 2
--6 - CST 1958 Ap 27 2
--5 - EST 1969
--5 u E%sT 1971
--5 - EST 2006
--5 u E%sT
R Ma 1951 o - Ap lastSu 2 1 D
R Ma 1951 o - S lastSu 2 0 S
R Ma 1954 1960 - Ap lastSu 2 1 D
R Ma 1954 1960 - S lastSu 2 0 S
-Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u
--6 u C%sT 1951
--6 Ma C%sT 1961 Ap 30 2
--5 - EST 1969
--5 u E%sT 1974 Ja 6 2
--6 1 CDT 1974 O 27 2
--5 u E%sT 1976
--5 - EST 2006
--5 u E%sT
R V 1946 o - Ap lastSu 2 1 D
R V 1946 o - S lastSu 2 0 S
R V 1953 1954 - Ap lastSu 2 1 D
@@ -2766,68 +1515,23 @@ R V 1956 1963 - Ap lastSu 2 1 D
R V 1960 o - O lastSu 2 0 S
R V 1961 o - S lastSu 2 0 S
R V 1962 1963 - O lastSu 2 0 S
-Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 V C%sT 1964 Ap 26 2
--5 - EST 1969
--5 u E%sT 1971
--5 - EST 2006 Ap 2 2
--6 u C%sT 2007 N 4 2
--5 u E%sT
R Pe 1955 o - May 1 0 1 D
R Pe 1955 1960 - S lastSu 2 0 S
R Pe 1956 1963 - Ap lastSu 2 1 D
R Pe 1961 1963 - O lastSu 2 0 S
-Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 Pe C%sT 1964 Ap 26 2
--5 - EST 1967 O 29 2
--6 u C%sT 1969 Ap 27 2
--5 u E%sT 1971
--5 - EST 2006 Ap 2 2
--6 u C%sT
R Pi 1955 o - May 1 0 1 D
R Pi 1955 1960 - S lastSu 2 0 S
R Pi 1956 1964 - Ap lastSu 2 1 D
R Pi 1961 1964 - O lastSu 2 0 S
-Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u
--6 u C%sT 1955
--6 Pi C%sT 1965 Ap 25 2
--5 - EST 1966 O 30 2
--6 u C%sT 1977 O 30 2
--5 - EST 2006 Ap 2 2
--6 u C%sT 2007 N 4 2
--5 u E%sT
R St 1947 1961 - Ap lastSu 2 1 D
R St 1947 1954 - S lastSu 2 0 S
R St 1955 1956 - O lastSu 2 0 S
R St 1957 1958 - S lastSu 2 0 S
R St 1959 1961 - O lastSu 2 0 S
-Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u
--6 u C%sT 1947
--6 St C%sT 1962 Ap 29 2
--5 - EST 1963 O 27 2
--6 u C%sT 1991 O 27 2
--5 - EST 2006 Ap 2 2
--6 u C%sT
R Pu 1946 1960 - Ap lastSu 2 1 D
R Pu 1946 1954 - S lastSu 2 0 S
R Pu 1955 1956 - O lastSu 2 0 S
R Pu 1957 1960 - S lastSu 2 0 S
-Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 Pu C%sT 1961 Ap 30 2
--5 - EST 1969
--5 u E%sT 1971
--5 - EST 2006 Ap 2 2
--6 u C%sT 2007 Mar 11 2
--5 u E%sT
-Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u
--6 u C%sT 1954 Ap 25 2
--5 - EST 1969
--5 u E%sT 1973
--5 - EST 2006
--5 u E%sT
R v 1921 o - May 1 2 1 D
R v 1921 o - S 1 2 0 S
R v 1941 o - Ap lastSu 2 1 D
@@ -2837,41 +1541,12 @@ R v 1946 o - Jun 2 2 0 S
R v 1950 1961 - Ap lastSu 2 1 D
R v 1950 1955 - S lastSu 2 0 S
R v 1956 1961 - O lastSu 2 0 S
-Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u
--6 u C%sT 1921
--6 v C%sT 1942
--6 u C%sT 1946
--6 v C%sT 1961 Jul 23 2
--5 - EST 1968
--5 u E%sT 1974 Ja 6 2
--6 1 CDT 1974 O 27 2
--5 u E%sT
-Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 - CST 1968
--6 u C%sT 2000 O 29 2
--5 u E%sT
R Dt 1948 o - Ap lastSu 2 1 D
R Dt 1948 o - S lastSu 2 0 S
-Z America/Detroit -5:32:11 - LMT 1905
--6 - CST 1915 May 15 2
--5 - EST 1942
--5 u E%sT 1946
--5 Dt E%sT 1967 Jun 14 0:1
--5 u E%sT 1969
--5 - EST 1973
--5 u E%sT 1975
--5 - EST 1975 Ap 27 2
--5 u E%sT
R Me 1946 o - Ap lastSu 2 1 D
R Me 1946 o - S lastSu 2 0 S
R Me 1966 o - Ap lastSu 2 1 D
R Me 1966 o - O lastSu 2 0 S
-Z America/Menominee -5:50:27 - LMT 1885 S 18 12
--6 u C%sT 1946
--6 Me C%sT 1969 Ap 27 2
--5 - EST 1973 Ap 29 2
--6 u C%sT
R C 1918 o - Ap 14 2 1 D
R C 1918 o - O 27 2 0 S
R C 1942 o - F 9 2 1 W
@@ -2901,24 +1576,6 @@ R j 1988 o - Ap Su>=1 0:1 2 DD
R j 1989 2006 - Ap Su>=1 0:1 1 D
R j 2007 2011 - Mar Su>=8 0:1 1 D
R j 2007 2010 - N Su>=1 0:1 0 S
-Z America/St_Johns -3:30:52 - LMT 1884
--3:30:52 j N%sT 1918
--3:30:52 C N%sT 1919
--3:30:52 j N%sT 1935 Mar 30
--3:30 j N%sT 1942 May 11
--3:30 C N%sT 1946
--3:30 j N%sT 2011 N
--3:30 C N%sT
-Z America/Goose_Bay -4:1:40 - LMT 1884
--3:30:52 - NST 1918
--3:30:52 C N%sT 1919
--3:30:52 - NST 1935 Mar 30
--3:30 - NST 1936
--3:30 j N%sT 1942 May 11
--3:30 C N%sT 1946
--3:30 j N%sT 1966 Mar 15 2
--4 j A%sT 2011 N
--4 C A%sT
R H 1916 o - Ap 1 0 1 D
R H 1916 o - O 1 0 0 S
R H 1920 o - May 9 0 1 D
@@ -2960,19 +1617,6 @@ R H 1956 1959 - Ap lastSu 2 1 D
R H 1956 1959 - S lastSu 2 0 S
R H 1962 1973 - Ap lastSu 2 1 D
R H 1962 1973 - O lastSu 2 0 S
-Z America/Halifax -4:14:24 - LMT 1902 Jun 15
--4 H A%sT 1918
--4 C A%sT 1919
--4 H A%sT 1942 F 9 2s
--4 C A%sT 1946
--4 H A%sT 1974
--4 C A%sT
-Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
--4 C A%sT 1953
--4 H A%sT 1954
--4 - AST 1972
--4 H A%sT 1974
--4 C A%sT
R o 1933 1935 - Jun Su>=8 1 1 D
R o 1933 1935 - S Su>=8 1 0 S
R o 1936 1938 - Jun Su>=1 1 1 D
@@ -2986,15 +1630,6 @@ R o 1946 1956 - S lastSu 2 0 S
R o 1957 1972 - O lastSu 2 0 S
R o 1993 2006 - Ap Su>=1 0:1 1 D
R o 1993 2006 - O lastSu 0:1 0 S
-Z America/Moncton -4:19:8 - LMT 1883 D 9
--5 - EST 1902 Jun 15
--4 C A%sT 1933
--4 o A%sT 1942
--4 C A%sT 1946
--4 o A%sT 1973
--4 C A%sT 1993
--4 o A%sT 2007
--4 C A%sT
R t 1919 o - Mar 30 23:30 1 D
R t 1919 o - O 26 0 0 S
R t 1920 o - May 2 2 1 D
@@ -3008,21 +1643,11 @@ R t 1927 1937 - S Su>=25 2 0 S
R t 1928 1937 - Ap Su>=25 2 1 D
R t 1938 1940 - Ap lastSu 2 1 D
R t 1938 1939 - S lastSu 2 0 S
-R t 1945 1946 - S lastSu 2 0 S
-R t 1946 o - Ap lastSu 2 1 D
-R t 1947 1949 - Ap lastSu 0 1 D
-R t 1947 1948 - S lastSu 0 0 S
-R t 1949 o - N lastSu 0 0 S
-R t 1950 1973 - Ap lastSu 2 1 D
-R t 1950 o - N lastSu 2 0 S
+R t 1945 1948 - S lastSu 2 0 S
+R t 1946 1973 - Ap lastSu 2 1 D
+R t 1949 1950 - N lastSu 2 0 S
R t 1951 1956 - S lastSu 2 0 S
R t 1957 1973 - O lastSu 2 0 S
-Z America/Toronto -5:17:32 - LMT 1895
--5 C E%sT 1919
--5 t E%sT 1942 F 9 2s
--5 C E%sT 1946
--5 t E%sT 1974
--5 C E%sT
R W 1916 o - Ap 23 0 1 D
R W 1916 o - S 17 0 0 S
R W 1918 o - Ap 14 2 1 D
@@ -3047,9 +1672,6 @@ R W 1963 o - S 22 2 0 S
R W 1966 1986 - Ap lastSu 2s 1 D
R W 1966 2005 - O lastSu 2s 0 S
R W 1987 2005 - Ap Su>=1 2s 1 D
-Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16
--6 W C%sT 2006
--6 C C%sT
R r 1918 o - Ap 14 2 1 D
R r 1918 o - O 27 2 0 S
R r 1930 1934 - May Su>=1 0 1 D
@@ -3072,14 +1694,6 @@ R Sw 1957 o - O lastSu 2 0 S
R Sw 1959 1961 - Ap lastSu 2 1 D
R Sw 1959 o - O lastSu 2 0 S
R Sw 1960 1961 - S lastSu 2 0 S
-Z America/Regina -6:58:36 - LMT 1905 S
--7 r M%sT 1960 Ap lastSu 2
--6 - CST
-Z America/Swift_Current -7:11:20 - LMT 1905 S
--7 C M%sT 1946 Ap lastSu 2
--7 r M%sT 1950
--7 Sw M%sT 1972 Ap lastSu 2
--6 - CST
R Ed 1918 1919 - Ap Su>=8 2 1 D
R Ed 1918 o - O 27 2 0 S
R Ed 1919 o - May 27 2 0 S
@@ -3093,9 +1707,6 @@ R Ed 1947 o - Ap lastSu 2 1 D
R Ed 1947 o - S lastSu 2 0 S
R Ed 1972 1986 - Ap lastSu 2 1 D
R Ed 1972 2006 - O lastSu 2 0 S
-Z America/Edmonton -7:33:52 - LMT 1906 S
--7 Ed M%sT 1987
--7 C M%sT
R Va 1918 o - Ap 14 2 1 D
R Va 1918 o - O 27 2 0 S
R Va 1942 o - F 9 2 1 W
@@ -3105,19 +1716,6 @@ R Va 1946 1986 - Ap lastSu 2 1 D
R Va 1946 o - S 29 2 0 S
R Va 1947 1961 - S lastSu 2 0 S
R Va 1962 2006 - O lastSu 2 0 S
-Z America/Vancouver -8:12:28 - LMT 1884
--8 Va P%sT 1987
--8 C P%sT
-Z America/Dawson_Creek -8:0:56 - LMT 1884
--8 C P%sT 1947
--8 Va P%sT 1972 Au 30 2
--7 - MST
-Z America/Fort_Nelson -8:10:47 - LMT 1884
--8 Va P%sT 1946
--8 - PST 1947
--8 Va P%sT 1987
--8 C P%sT 2015 Mar 8 2
--7 - MST
R Y 1918 o - Ap 14 2 1 D
R Y 1918 o - O 27 2 0 S
R Y 1919 o - May 25 2 1 D
@@ -3130,42 +1728,6 @@ R Y 1972 2006 - O lastSu 2 0 S
R Y 1987 2006 - Ap Su>=1 2 1 D
R Yu 1965 o - Ap lastSu 0 2 DD
R Yu 1965 o - O lastSu 2 0 S
-Z America/Iqaluit 0 - -00 1942 Au
--5 Y E%sT 1999 O 31 2
--6 C C%sT 2000 O 29 2
--5 C E%sT
-Z America/Resolute 0 - -00 1947 Au 31
--6 Y C%sT 2000 O 29 2
--5 - EST 2001 Ap 1 3
--6 C C%sT 2006 O 29 2
--5 - EST 2007 Mar 11 3
--6 C C%sT
-Z America/Rankin_Inlet 0 - -00 1957
--6 Y C%sT 2000 O 29 2
--5 - EST 2001 Ap 1 3
--6 C C%sT
-Z America/Cambridge_Bay 0 - -00 1920
--7 Y M%sT 1999 O 31 2
--6 C C%sT 2000 O 29 2
--5 - EST 2000 N 5
--6 - CST 2001 Ap 1 3
--7 C M%sT
-Z America/Inuvik 0 - -00 1953
--8 Y P%sT 1979 Ap lastSu 2
--7 Y M%sT 1980
--7 C M%sT
-Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
--9 Y Y%sT 1965
--9 Yu Y%sT 1966 F 27
--8 - PST 1980
--8 C P%sT 2020 N
--7 - MST
-Z America/Dawson -9:17:40 - LMT 1900 Au 20
--9 Y Y%sT 1965
--9 Yu Y%sT 1973 O 28
--8 - PST 1980
--8 C P%sT 2020 N
--7 - MST
R m 1931 o - May 1 23 1 D
R m 1931 o - O 1 0 0 S
R m 1939 o - F 5 0 1 D
@@ -3182,107 +1744,6 @@ R m 2001 o - May Su>=1 2 1 D
R m 2001 o - S lastSu 2 0 S
R m 2002 2022 - Ap Su>=1 2 1 D
R m 2002 2022 - O lastSu 2 0 S
-Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u
--6 - CST 1981 D 23
--5 m E%sT 1998 Au 2 2
--6 m C%sT 2015 F 1 2
--5 - EST
-Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u
--6 - CST 1981 D 23
--5 - EST 1982 D 2
--6 m C%sT
-Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u
--6 - CST 1988
--6 u C%sT 1989
--6 m C%sT 2010
--6 u C%sT
-Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u
--6 - CST 1988
--6 u C%sT 1989
--6 m C%sT
-Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 m C%sT 2001 S 30 2
--6 - CST 2002 F 20
--6 m C%sT
-Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1996
--6 m C%sT 1998
--6 - CST 1998 Ap Su>=1 3
--7 m M%sT 2010
--7 u M%sT 2022 O 30 2
--6 - CST 2022 N 30
--7 u M%sT
-Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1996
--6 m C%sT 1998
--6 - CST 1998 Ap Su>=1 3
--7 m M%sT 2010
--7 u M%sT 2022 O 30 2
--6 - CST 2022 N 30
--6 u C%sT
-Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1996
--6 m C%sT 1998
--6 - CST 1998 Ap Su>=1 3
--7 m M%sT 2022 O 30 2
--6 - CST
-Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1942 Ap 24
--7 - MST 1949 Ja 14
--8 - PST 1970
--7 m M%sT 1999
--7 - MST
-Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1942 Ap 24
--7 - MST 1949 Ja 14
--8 - PST 1970
--7 m M%sT
-Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1942 Ap 24
--7 - MST 1949 Ja 14
--8 - PST 1970
--7 m M%sT 2010 Ap 4 2
--6 m C%sT
-Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u
--7 - MST 1924
--8 - PST 1927 Jun 10 23
--7 - MST 1930 N 15
--8 - PST 1931 Ap
--8 1 PDT 1931 S 30
--8 - PST 1942 Ap 24
--8 1 PWT 1945 Au 14 23u
--8 1 PPT 1945 N 12
--8 - PST 1948 Ap 5
--8 1 PDT 1949 Ja 14
--8 - PST 1954
--8 CA P%sT 1961
--8 - PST 1976
--8 u P%sT 1996
--8 m P%sT 2001
--8 u P%sT 2002 F 20
--8 m P%sT 2010
--8 u P%sT
R BB 1942 o - Ap 19 5u 1 D
R BB 1942 o - Au 31 6u 0 S
R BB 1943 o - May 2 5u 1 D
@@ -3294,10 +1755,6 @@ R BB 1977 1978 - O Su>=1 2 0 S
R BB 1978 1980 - Ap Su>=15 2 1 D
R BB 1979 o - S 30 2 0 S
R BB 1980 o - S 25 2 0 S
-Z America/Barbados -3:58:29 - LMT 1911 Au 28
--4 BB A%sT 1944
--4 BB AST/-0330 1945
--4 BB A%sT
R BZ 1918 1941 - O Sa>=1 24 0:30 -0530
R BZ 1919 1942 - F Sa>=8 24 0 CST
R BZ 1942 o - Jun 27 24 1 CWT
@@ -3309,8 +1766,6 @@ R BZ 1973 o - D 5 0 1 CDT
R BZ 1974 o - F 9 0 0 CST
R BZ 1982 o - D 18 0 1 CDT
R BZ 1983 o - F 12 0 0 CST
-Z America/Belize -5:52:48 - LMT 1912 Ap
--6 BZ %s
R Be 1917 o - Ap 5 24 1 -
R Be 1917 o - S 30 24 0 -
R Be 1918 o - Ap 13 24 1 -
@@ -3327,19 +1782,11 @@ R Be 1948 1952 - May Su>=22 2 1 D
R Be 1948 1952 - S Su>=1 2 0 S
R Be 1956 o - May Su>=22 2 1 D
R Be 1956 o - O lastSu 2 0 S
-Z Atlantic/Bermuda -4:19:18 - LMT 1890
--4:19:18 Be BMT/BST 1930 Ja 1 2
--4 Be A%sT 1974 Ap 28 2
--4 C A%sT 1976
--4 u A%sT
R CR 1979 1980 - F lastSu 0 1 D
R CR 1979 1980 - Jun Su>=1 0 0 S
R CR 1991 1992 - Ja Sa>=15 0 1 D
R CR 1991 o - Jul 1 0 0 S
R CR 1992 o - Mar 15 0 0 S
-Z America/Costa_Rica -5:36:13 - LMT 1890
--5:36:13 - SJMT 1921 Ja 15
--6 CR C%sT
R Q 1928 o - Jun 10 0 1 D
R Q 1928 o - O 10 0 0 S
R Q 1940 1942 - Jun Su>=1 0 1 D
@@ -3379,25 +1826,14 @@ R Q 2011 o - N 13 0s 0 S
R Q 2012 o - Ap 1 0s 1 D
R Q 2012 ma - N Su>=1 0s 0 S
R Q 2013 ma - Mar Su>=8 0s 1 D
-Z America/Havana -5:29:28 - LMT 1890
--5:29:36 - HMT 1925 Jul 19 12
--5 Q C%sT
R DO 1966 o - O 30 0 1 EDT
R DO 1967 o - F 28 0 0 EST
R DO 1969 1973 - O lastSu 0 0:30 -0430
R DO 1970 o - F 21 0 0 EST
R DO 1971 o - Ja 20 0 0 EST
R DO 1972 1974 - Ja 21 0 0 EST
-Z America/Santo_Domingo -4:39:36 - LMT 1890
--4:40 - SDMT 1933 Ap 1 12
--5 DO %s 1974 O 27
--4 - AST 2000 O 29 2
--5 u E%sT 2000 D 3 1
--4 - AST
R SV 1987 1988 - May Su>=1 0 1 D
R SV 1987 1988 - S lastSu 0 0 S
-Z America/El_Salvador -5:56:48 - LMT 1921
--6 SV C%sT
R GT 1973 o - N 25 0 1 D
R GT 1974 o - F 24 0 0 S
R GT 1983 o - May 21 0 1 D
@@ -3406,8 +1842,6 @@ R GT 1991 o - Mar 23 0 1 D
R GT 1991 o - S 7 0 0 S
R GT 2006 o - Ap 30 0 1 D
R GT 2006 o - O 1 0 0 S
-Z America/Guatemala -6:2:4 - LMT 1918 O 5
--6 GT C%sT
R HT 1983 o - May 8 0 1 D
R HT 1984 1987 - Ap lastSu 0 1 D
R HT 1983 1987 - O lastSu 0 0 S
@@ -3419,57 +1853,16 @@ R HT 2012 2015 - Mar Su>=8 2 1 D
R HT 2012 2015 - N Su>=1 2 0 S
R HT 2017 ma - Mar Su>=8 2 1 D
R HT 2017 ma - N Su>=1 2 0 S
-Z America/Port-au-Prince -4:49:20 - LMT 1890
--4:49 - PPMT 1917 Ja 24 12
--5 HT E%sT
R HN 1987 1988 - May Su>=1 0 1 D
R HN 1987 1988 - S lastSu 0 0 S
R HN 2006 o - May Su>=1 0 1 D
R HN 2006 o - Au M>=1 0 0 S
-Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap
--6 HN C%sT
-Z America/Jamaica -5:7:10 - LMT 1890
--5:7:10 - KMT 1912 F
--5 - EST 1974
--5 u E%sT 1984
--5 - EST
-Z America/Martinique -4:4:20 - LMT 1890
--4:4:20 - FFMT 1911 May
--4 - AST 1980 Ap 6
--4 1 ADT 1980 S 28
--4 - AST
R NI 1979 1980 - Mar Su>=16 0 1 D
R NI 1979 1980 - Jun M>=23 0 0 S
R NI 2005 o - Ap 10 0 1 D
R NI 2005 o - O Su>=1 0 0 S
R NI 2006 o - Ap 30 2 1 D
R NI 2006 o - O Su>=1 1 0 S
-Z America/Managua -5:45:8 - LMT 1890
--5:45:12 - MMT 1934 Jun 23
--6 - CST 1973 May
--5 - EST 1975 F 16
--6 NI C%sT 1992 Ja 1 4
--5 - EST 1992 S 24
--6 - CST 1993
--5 - EST 1997
--6 NI C%sT
-Z America/Panama -5:18:8 - LMT 1890
--5:19:36 - CMT 1908 Ap 22
--5 - EST
-Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12
--4 - AST 1942 May 3
--4 u A%sT 1946
--4 - AST
-Z America/Miquelon -3:44:40 - LMT 1911 May 15
--4 - AST 1980 May
--3 - -03 1987
--3 C -03/-02
-Z America/Grand_Turk -4:44:32 - LMT 1890
--5:7:10 - KMT 1912 F
--5 - EST 1979
--5 u E%sT 2015 Mar 8 2
--4 - AST 2018 Mar 11 3
--5 u E%sT
R A 1930 o - D 1 0 1 -
R A 1931 o - Ap 1 0 0 -
R A 1931 o - O 15 0 1 -
@@ -3499,150 +1892,8 @@ R A 2000 o - Mar 3 0 0 -
R A 2007 o - D 30 0 1 -
R A 2008 2009 - Mar Su>=15 0 0 -
R A 2008 o - O Su>=15 0 1 -
-Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02
-Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02
-Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 13
--3 A -03/-02
-Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar
--4 - -04 1991 May 7
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar
--4 - -04 1991 May 7
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 May 31
--4 - -04 2004 Jul 25
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1990 Mar 4
--4 - -04 1990 O 28
--4 1 -03 1991 Mar 17
--4 - -04 1991 O 6
--3 1 -02 1992
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1990 Mar 4
--4 - -04 1990 O 15
--4 1 -03 1991 Mar
--4 - -04 1991 O 15
--4 1 -03 1992 Mar
--4 - -04 1992 O 18
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 May 23
--4 - -04 2004 S 26
--3 A -03/-02 2008 O 18
--3 - -03
R Sa 2008 2009 - Mar Su>=8 0 0 -
R Sa 2007 2008 - O Su>=8 0 1 -
-Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1990
--3 1 -02 1990 Mar 14
--4 - -04 1990 O 15
--4 1 -03 1991 Mar
--4 - -04 1991 Jun
--3 - -03 1999 O 3
--4 1 -03 2000 Mar 3
--3 - -03 2004 May 31
--4 - -04 2004 Jul 25
--3 A -03/-02 2008 Ja 21
--4 Sa -04/-03 2009 O 11
--3 - -03
-Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 May 30
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/La_Paz -4:32:36 - LMT 1890
--4:32:36 - CMT 1931 O 15
--4:32:36 1 BST 1932 Mar 21
--4 - -04
R B 1931 o - O 3 11 1 -
R B 1932 1933 - Ap 1 0 0 -
R B 1932 o - O 3 0 1 -
@@ -3700,90 +1951,6 @@ R B 2013 2014 - F Su>=15 0 0 -
R B 2015 o - F Su>=22 0 0 -
R B 2016 2019 - F Su>=15 0 0 -
R B 2018 o - N Su>=1 0 1 -
-Z America/Noronha -2:9:40 - LMT 1914
--2 B -02/-01 1990 S 17
--2 - -02 1999 S 30
--2 B -02/-01 2000 O 15
--2 - -02 2001 S 13
--2 B -02/-01 2002 O
--2 - -02
-Z America/Belem -3:13:56 - LMT 1914
--3 B -03/-02 1988 S 12
--3 - -03
-Z America/Santarem -3:38:48 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04 2008 Jun 24
--3 - -03
-Z America/Fortaleza -2:34 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1999 S 30
--3 B -03/-02 2000 O 22
--3 - -03 2001 S 13
--3 B -03/-02 2002 O
--3 - -03
-Z America/Recife -2:19:36 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1999 S 30
--3 B -03/-02 2000 O 15
--3 - -03 2001 S 13
--3 B -03/-02 2002 O
--3 - -03
-Z America/Araguaina -3:12:48 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1995 S 14
--3 B -03/-02 2003 S 24
--3 - -03 2012 O 21
--3 B -03/-02 2013 S
--3 - -03
-Z America/Maceio -2:22:52 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1995 O 13
--3 B -03/-02 1996 S 4
--3 - -03 1999 S 30
--3 B -03/-02 2000 O 22
--3 - -03 2001 S 13
--3 B -03/-02 2002 O
--3 - -03
-Z America/Bahia -2:34:4 - LMT 1914
--3 B -03/-02 2003 S 24
--3 - -03 2011 O 16
--3 B -03/-02 2012 O 21
--3 - -03
-Z America/Sao_Paulo -3:6:28 - LMT 1914
--3 B -03/-02 1963 O 23
--3 1 -02 1964
--3 B -03/-02
-Z America/Campo_Grande -3:38:28 - LMT 1914
--4 B -04/-03
-Z America/Cuiaba -3:44:20 - LMT 1914
--4 B -04/-03 2003 S 24
--4 - -04 2004 O
--4 B -04/-03
-Z America/Porto_Velho -4:15:36 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04
-Z America/Boa_Vista -4:2:40 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04 1999 S 30
--4 B -04/-03 2000 O 15
--4 - -04
-Z America/Manaus -4:0:4 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04 1993 S 28
--4 B -04/-03 1994 S 22
--4 - -04
-Z America/Eirunepe -4:39:28 - LMT 1914
--5 B -05/-04 1988 S 12
--5 - -05 1993 S 28
--5 B -05/-04 1994 S 22
--5 - -05 2008 Jun 24
--4 - -04 2013 N 10
--5 - -05
-Z America/Rio_Branco -4:31:12 - LMT 1914
--5 B -05/-04 1988 S 12
--5 - -05 2008 Jun 24
--4 - -04 2013 N 10
--5 - -05
R x 1927 1931 - S 1 0 1 -
R x 1928 1932 - Ap 1 0 0 -
R x 1968 o - N 3 4u 1 -
@@ -3820,56 +1987,10 @@ R x 2019 ma - Ap Su>=2 3u 0 -
R x 2019 2021 - S Su>=2 4u 1 -
R x 2022 o - S Su>=9 4u 1 -
R x 2023 ma - S Su>=2 4u 1 -
-Z America/Santiago -4:42:45 - LMT 1890
--4:42:45 - SMT 1910 Ja 10
--5 - -05 1916 Jul
--4:42:45 - SMT 1918 S 10
--4 - -04 1919 Jul
--4:42:45 - SMT 1927 S
--5 x -05/-04 1932 S
--4 - -04 1942 Jun
--5 - -05 1942 Au
--4 - -04 1946 Jul 14 24
--4 1 -03 1946 Au 28 24
--5 1 -04 1947 Mar 31 24
--5 - -05 1947 May 21 23
--4 x -04/-03
-Z America/Punta_Arenas -4:43:40 - LMT 1890
--4:42:45 - SMT 1910 Ja 10
--5 - -05 1916 Jul
--4:42:45 - SMT 1918 S 10
--4 - -04 1919 Jul
--4:42:45 - SMT 1927 S
--5 x -05/-04 1932 S
--4 - -04 1942 Jun
--5 - -05 1942 Au
--4 - -04 1946 Au 28 24
--5 1 -04 1947 Mar 31 24
--5 - -05 1947 May 21 23
--4 x -04/-03 2016 D 4
--3 - -03
-Z Pacific/Easter -7:17:28 - LMT 1890
--7:17:28 - EMT 1932 S
--7 x -07/-06 1982 Mar 14 3u
--6 x -06/-05
-Z Antarctica/Palmer 0 - -00 1965
--4 A -04/-03 1969 O 5
--3 A -03/-02 1982 May
--4 x -04/-03 2016 D 4
--3 - -03
R CO 1992 o - May 3 0 1 -
R CO 1993 o - F 6 24 0 -
-Z America/Bogota -4:56:16 - LMT 1884 Mar 13
--4:56:16 - BMT 1914 N 23
--5 CO -05/-04
R EC 1992 o - N 28 0 1 -
R EC 1993 o - F 5 0 0 -
-Z America/Guayaquil -5:19:20 - LMT 1890
--5:14 - QMT 1931
--5 EC -05/-04
-Z Pacific/Galapagos -5:58:24 - LMT 1931
--5 - -05 1986
--6 EC -06/-05
R FK 1937 1938 - S lastSu 0 1 -
R FK 1938 1942 - Mar Su>=19 0 0 -
R FK 1939 o - O 1 0 1 -
@@ -3882,20 +2003,6 @@ R FK 1985 2000 - S Su>=9 0 1 -
R FK 1986 2000 - Ap Su>=16 0 0 -
R FK 2001 2010 - Ap Su>=15 2 0 -
R FK 2001 2010 - S Su>=1 2 1 -
-Z Atlantic/Stanley -3:51:24 - LMT 1890
--3:51:24 - SMT 1912 Mar 12
--4 FK -04/-03 1983 May
--3 FK -03/-02 1985 S 15
--4 FK -04/-03 2010 S 5 2
--3 - -03
-Z America/Cayenne -3:29:20 - LMT 1911 Jul
--4 - -04 1967 O
--3 - -03
-Z America/Guyana -3:52:39 - LMT 1911 Au
--4 - -04 1915 Mar
--3:45 - -0345 1975 Au
--3 - -03 1992 Mar 29 1
--4 - -04
R y 1975 1988 - O 1 0 1 -
R y 1975 1978 - Mar 1 0 0 -
R y 1979 1991 - Ap 1 0 0 -
@@ -3918,11 +2025,6 @@ R y 2005 2009 - Mar Su>=8 0 0 -
R y 2010 ma - O Su>=1 0 1 -
R y 2010 2012 - Ap Su>=8 0 0 -
R y 2013 ma - Mar Su>=22 0 0 -
-Z America/Asuncion -3:50:40 - LMT 1890
--3:50:40 - AMT 1931 O 10
--4 - -04 1972 O
--3 - -03 1974 Ap
--4 y -04/-03
R PE 1938 o - Ja 1 0 1 -
R PE 1938 o - Ap 1 0 0 -
R PE 1938 1939 - S lastSu 0 1 -
@@ -3933,16 +2035,6 @@ R PE 1990 o - Ja 1 0 1 -
R PE 1990 o - Ap 1 0 0 -
R PE 1994 o - Ja 1 0 1 -
R PE 1994 o - Ap 1 0 0 -
-Z America/Lima -5:8:12 - LMT 1890
--5:8:36 - LMT 1908 Jul 28
--5 PE -05/-04
-Z Atlantic/South_Georgia -2:26:8 - LMT 1890
--2 - -02
-Z America/Paramaribo -3:40:40 - LMT 1911
--3:40:52 - PMT 1935
--3:40:36 - PMT 1945 O
--3:30 - -0330 1984 O
--3 - -03
R U 1923 1925 - O 1 0 0:30 -
R U 1924 1926 - Ap 1 0 0 -
R U 1933 1938 - O lastSu 0 0:30 -
@@ -3991,6 +2083,659 @@ R U 2005 o - Mar 27 2 0 -
R U 2005 o - O 9 2 1 -
R U 2006 2015 - Mar Su>=8 2 0 -
R U 2006 2014 - O Su>=1 2 1 -
+Z Africa/Abidjan -0:16:8 - LMT 1912
+0 - GMT
+Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16
+0:9:21 - PMT 1911 Mar 11
+0 d WE%sT 1940 F 25 2
+1 d CE%sT 1946 O 7
+0 - WET 1956 Ja 29
+1 - CET 1963 Ap 14
+0 d WE%sT 1977 O 21
+1 d CE%sT 1979 O 26
+0 d WE%sT 1981 May
+1 - CET
+Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u
+-1 - -01 1975
+0 - GMT
+Z Africa/Cairo 2:5:9 - LMT 1900 O
+2 K EE%sT
+Z Africa/Casablanca -0:30:20 - LMT 1913 O 26
+0 M +00/+01 1984 Mar 16
+1 - +01 1986
+0 M +00/+01 2018 O 28 3
+1 M +01/+00
+Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u
+0 - WET 1918 May 6 23
+0 1 WEST 1918 O 7 23
+0 - WET 1924
+0 s WE%sT 1929
+0 - WET 1967
+0 Sp WE%sT 1984 Mar 16
+1 - CET 1986
+1 E CE%sT
+Z Africa/El_Aaiun -0:52:48 - LMT 1934
+-1 - -01 1976 Ap 14
+0 M +00/+01 2018 O 28 3
+1 M +01/+00
+Z Africa/Johannesburg 1:52 - LMT 1892 F 8
+1:30 - SAST 1903 Mar
+2 SA SAST
+Z Africa/Juba 2:6:28 - LMT 1931
+2 SD CA%sT 2000 Ja 15 12
+3 - EAT 2021 F
+2 - CAT
+Z Africa/Khartoum 2:10:8 - LMT 1931
+2 SD CA%sT 2000 Ja 15 12
+3 - EAT 2017 N
+2 - CAT
+Z Africa/Lagos 0:13:35 - LMT 1905 Jul
+0 - GMT 1908 Jul
+0:13:35 - LMT 1914
+0:30 - +0030 1919 S
+1 - WAT
+Z Africa/Maputo 2:10:20 - LMT 1903 Mar
+2 - CAT
+Z Africa/Monrovia -0:43:8 - LMT 1882
+-0:43:8 - MMT 1919 Mar
+-0:44:30 - MMT 1972 Ja 7
+0 - GMT
+Z Africa/Nairobi 2:27:16 - LMT 1908 May
+2:30 - +0230 1928 Jun 30 24
+3 - EAT 1930 Ja 4 24
+2:30 - +0230 1936 D 31 24
+2:45 - +0245 1942 Jul 31 24
+3 - EAT
+Z Africa/Ndjamena 1:0:12 - LMT 1912
+1 - WAT 1979 O 14
+1 1 WAST 1980 Mar 8
+1 - WAT
+Z Africa/Sao_Tome 0:26:56 - LMT 1884
+-0:36:45 - LMT 1912 Ja 1 0u
+0 - GMT 2018 Ja 1 1
+1 - WAT 2019 Ja 1 2
+0 - GMT
+Z Africa/Tripoli 0:52:44 - LMT 1920
+1 L CE%sT 1959
+2 - EET 1982
+1 L CE%sT 1990 May 4
+2 - EET 1996 S 30
+1 L CE%sT 1997 O 4
+2 - EET 2012 N 10 2
+1 L CE%sT 2013 O 25 2
+2 - EET
+Z Africa/Tunis 0:40:44 - LMT 1881 May 12
+0:9:21 - PMT 1911 Mar 11
+1 n CE%sT
+Z Africa/Windhoek 1:8:24 - LMT 1892 F 8
+1:30 - +0130 1903 Mar
+2 - SAST 1942 S 20 2
+2 1 SAST 1943 Mar 21 2
+2 - SAST 1990 Mar 21
+2 NA %s
+Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35
+-11:46:38 - LMT 1900 Au 20 12
+-11 - NST 1942
+-11 u N%sT 1946
+-11 - NST 1967 Ap
+-11 - BST 1969
+-11 u B%sT 1983 O 30 2
+-10 u AH%sT 1983 N 30
+-10 u H%sT
+Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37
+-9:59:36 - LMT 1900 Au 20 12
+-10 - AST 1942
+-10 u A%sT 1967 Ap
+-10 - AHST 1969
+-10 u AH%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/Araguaina -3:12:48 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1995 S 14
+-3 B -03/-02 2003 S 24
+-3 - -03 2012 O 21
+-3 B -03/-02 2013 S
+-3 - -03
+Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02
+Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02
+Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1990 Mar 4
+-4 - -04 1990 O 28
+-4 1 -03 1991 Mar 17
+-4 - -04 1991 O 6
+-3 1 -02 1992
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar
+-4 - -04 1991 May 7
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1990 Mar 4
+-4 - -04 1990 O 15
+-4 1 -03 1991 Mar
+-4 - -04 1991 O 15
+-4 1 -03 1992 Mar
+-4 - -04 1992 O 18
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 May 23
+-4 - -04 2004 S 26
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar
+-4 - -04 1991 May 7
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 May 31
+-4 - -04 2004 Jul 25
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1990
+-3 1 -02 1990 Mar 14
+-4 - -04 1990 O 15
+-4 1 -03 1991 Mar
+-4 - -04 1991 Jun
+-3 - -03 1999 O 3
+-4 1 -03 2000 Mar 3
+-3 - -03 2004 May 31
+-4 - -04 2004 Jul 25
+-3 A -03/-02 2008 Ja 21
+-4 Sa -04/-03 2009 O 11
+-3 - -03
+Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 13
+-3 A -03/-02
+Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 May 30
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Asuncion -3:50:40 - LMT 1890
+-3:50:40 - AMT 1931 O 10
+-4 - -04 1972 O
+-3 - -03 1974 Ap
+-4 y -04/-03
+Z America/Bahia -2:34:4 - LMT 1914
+-3 B -03/-02 2003 S 24
+-3 - -03 2011 O 16
+-3 B -03/-02 2012 O 21
+-3 - -03
+Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1942 Ap 24
+-7 - MST 1949 Ja 14
+-8 - PST 1970
+-7 m M%sT 2010 Ap 4 2
+-6 m C%sT
+Z America/Barbados -3:58:29 - LMT 1911 Au 28
+-4 BB A%sT 1944
+-4 BB AST/-0330 1945
+-4 BB A%sT
+Z America/Belem -3:13:56 - LMT 1914
+-3 B -03/-02 1988 S 12
+-3 - -03
+Z America/Belize -5:52:48 - LMT 1912 Ap
+-6 BZ %s
+Z America/Boa_Vista -4:2:40 - LMT 1914
+-4 B -04/-03 1988 S 12
+-4 - -04 1999 S 30
+-4 B -04/-03 2000 O 15
+-4 - -04
+Z America/Bogota -4:56:16 - LMT 1884 Mar 13
+-4:56:16 - BMT 1914 N 23
+-5 CO -05/-04
+Z America/Boise -7:44:49 - LMT 1883 N 18 20u
+-8 u P%sT 1923 May 13 2
+-7 u M%sT 1974
+-7 - MST 1974 F 3 2
+-7 u M%sT
+Z America/Cambridge_Bay 0 - -00 1920
+-7 Y M%sT 1999 O 31 2
+-6 C C%sT 2000 O 29 2
+-5 - EST 2000 N 5
+-6 - CST 2001 Ap 1 3
+-7 C M%sT
+Z America/Campo_Grande -3:38:28 - LMT 1914
+-4 B -04/-03
+Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u
+-6 - CST 1981 D 23
+-5 m E%sT 1998 Au 2 2
+-6 m C%sT 2015 F 1 2
+-5 - EST
+Z America/Caracas -4:27:44 - LMT 1890
+-4:27:40 - CMT 1912 F 12
+-4:30 - -0430 1965
+-4 - -04 2007 D 9 3
+-4:30 - -0430 2016 May 1 2:30
+-4 - -04
+Z America/Cayenne -3:29:20 - LMT 1911 Jul
+-4 - -04 1967 O
+-3 - -03
+Z America/Chicago -5:50:36 - LMT 1883 N 18 18u
+-6 u C%sT 1920
+-6 Ch C%sT 1936 Mar 1 2
+-5 - EST 1936 N 15 2
+-6 Ch C%sT 1942
+-6 u C%sT 1946
+-6 Ch C%sT 1967
+-6 u C%sT
+Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1996
+-6 m C%sT 1998
+-6 - CST 1998 Ap Su>=1 3
+-7 m M%sT 2022 O 30 2
+-6 - CST
+Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1996
+-6 m C%sT 1998
+-6 - CST 1998 Ap Su>=1 3
+-7 m M%sT 2010
+-7 u M%sT 2022 O 30 2
+-6 - CST 2022 N 30
+-7 u M%sT
+Z America/Costa_Rica -5:36:13 - LMT 1890
+-5:36:13 - SJMT 1921 Ja 15
+-6 CR C%sT
+Z America/Cuiaba -3:44:20 - LMT 1914
+-4 B -04/-03 2003 S 24
+-4 - -04 2004 O
+-4 B -04/-03
+Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
+-3 - -03 1980 Ap 6 2
+-3 E -03/-02 1996
+0 - GMT
+Z America/Dawson -9:17:40 - LMT 1900 Au 20
+-9 Y Y%sT 1965
+-9 Yu Y%sT 1973 O 28
+-8 - PST 1980
+-8 C P%sT 2020 N
+-7 - MST
+Z America/Dawson_Creek -8:0:56 - LMT 1884
+-8 C P%sT 1947
+-8 Va P%sT 1972 Au 30 2
+-7 - MST
+Z America/Denver -6:59:56 - LMT 1883 N 18 19u
+-7 u M%sT 1920
+-7 De M%sT 1942
+-7 u M%sT 1946
+-7 De M%sT 1967
+-7 u M%sT
+Z America/Detroit -5:32:11 - LMT 1905
+-6 - CST 1915 May 15 2
+-5 - EST 1942
+-5 u E%sT 1946
+-5 Dt E%sT 1967 Jun 14 0:1
+-5 u E%sT 1969
+-5 - EST 1973
+-5 u E%sT 1975
+-5 - EST 1975 Ap 27 2
+-5 u E%sT
+Z America/Edmonton -7:33:52 - LMT 1906 S
+-7 Ed M%sT 1987
+-7 C M%sT
+Z America/Eirunepe -4:39:28 - LMT 1914
+-5 B -05/-04 1988 S 12
+-5 - -05 1993 S 28
+-5 B -05/-04 1994 S 22
+-5 - -05 2008 Jun 24
+-4 - -04 2013 N 10
+-5 - -05
+Z America/El_Salvador -5:56:48 - LMT 1921
+-6 SV C%sT
+Z America/Fort_Nelson -8:10:47 - LMT 1884
+-8 Va P%sT 1946
+-8 - PST 1947
+-8 Va P%sT 1987
+-8 C P%sT 2015 Mar 8 2
+-7 - MST
+Z America/Fortaleza -2:34 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1999 S 30
+-3 B -03/-02 2000 O 22
+-3 - -03 2001 S 13
+-3 B -03/-02 2002 O
+-3 - -03
+Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
+-4 C A%sT 1953
+-4 H A%sT 1954
+-4 - AST 1972
+-4 H A%sT 1974
+-4 C A%sT
+Z America/Goose_Bay -4:1:40 - LMT 1884
+-3:30:52 - NST 1918
+-3:30:52 C N%sT 1919
+-3:30:52 - NST 1935 Mar 30
+-3:30 - NST 1936
+-3:30 j N%sT 1942 May 11
+-3:30 C N%sT 1946
+-3:30 j N%sT 1966 Mar 15 2
+-4 j A%sT 2011 N
+-4 C A%sT
+Z America/Grand_Turk -4:44:32 - LMT 1890
+-5:7:10 - KMT 1912 F
+-5 - EST 1979
+-5 u E%sT 2015 Mar 8 2
+-4 - AST 2018 Mar 11 3
+-5 u E%sT
+Z America/Guatemala -6:2:4 - LMT 1918 O 5
+-6 GT C%sT
+Z America/Guayaquil -5:19:20 - LMT 1890
+-5:14 - QMT 1931
+-5 EC -05/-04
+Z America/Guyana -3:52:39 - LMT 1911 Au
+-4 - -04 1915 Mar
+-3:45 - -0345 1975 Au
+-3 - -03 1992 Mar 29 1
+-4 - -04
+Z America/Halifax -4:14:24 - LMT 1902 Jun 15
+-4 H A%sT 1918
+-4 C A%sT 1919
+-4 H A%sT 1942 F 9 2s
+-4 C A%sT 1946
+-4 H A%sT 1974
+-4 C A%sT
+Z America/Havana -5:29:28 - LMT 1890
+-5:29:36 - HMT 1925 Jul 19 12
+-5 Q C%sT
+Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1942 Ap 24
+-7 - MST 1949 Ja 14
+-8 - PST 1970
+-7 m M%sT 1999
+-7 - MST
+Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u
+-6 u C%sT 1920
+-6 In C%sT 1942
+-6 u C%sT 1946
+-6 In C%sT 1955 Ap 24 2
+-5 - EST 1957 S 29 2
+-6 - CST 1958 Ap 27 2
+-5 - EST 1969
+-5 u E%sT 1971
+-5 - EST 2006
+-5 u E%sT
+Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u
+-6 u C%sT 1947
+-6 St C%sT 1962 Ap 29 2
+-5 - EST 1963 O 27 2
+-6 u C%sT 1991 O 27 2
+-5 - EST 2006 Ap 2 2
+-6 u C%sT
+Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u
+-6 u C%sT 1951
+-6 Ma C%sT 1961 Ap 30 2
+-5 - EST 1969
+-5 u E%sT 1974 Ja 6 2
+-6 1 CDT 1974 O 27 2
+-5 u E%sT 1976
+-5 - EST 2006
+-5 u E%sT
+Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u
+-6 u C%sT 1955
+-6 Pi C%sT 1965 Ap 25 2
+-5 - EST 1966 O 30 2
+-6 u C%sT 1977 O 30 2
+-5 - EST 2006 Ap 2 2
+-6 u C%sT 2007 N 4 2
+-5 u E%sT
+Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 Pe C%sT 1964 Ap 26 2
+-5 - EST 1967 O 29 2
+-6 u C%sT 1969 Ap 27 2
+-5 u E%sT 1971
+-5 - EST 2006 Ap 2 2
+-6 u C%sT
+Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u
+-6 u C%sT 1954 Ap 25 2
+-5 - EST 1969
+-5 u E%sT 1973
+-5 - EST 2006
+-5 u E%sT
+Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 V C%sT 1964 Ap 26 2
+-5 - EST 1969
+-5 u E%sT 1971
+-5 - EST 2006 Ap 2 2
+-6 u C%sT 2007 N 4 2
+-5 u E%sT
+Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 Pu C%sT 1961 Ap 30 2
+-5 - EST 1969
+-5 u E%sT 1971
+-5 - EST 2006 Ap 2 2
+-6 u C%sT 2007 Mar 11 2
+-5 u E%sT
+Z America/Inuvik 0 - -00 1953
+-8 Y P%sT 1979 Ap lastSu 2
+-7 Y M%sT 1980
+-7 C M%sT
+Z America/Iqaluit 0 - -00 1942 Au
+-5 Y E%sT 1999 O 31 2
+-6 C C%sT 2000 O 29 2
+-5 C E%sT
+Z America/Jamaica -5:7:10 - LMT 1890
+-5:7:10 - KMT 1912 F
+-5 - EST 1974
+-5 u E%sT 1984
+-5 - EST
+Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32
+-8:57:41 - LMT 1900 Au 20 12
+-8 - PST 1942
+-8 u P%sT 1946
+-8 - PST 1969
+-8 u P%sT 1980 Ap 27 2
+-9 u Y%sT 1980 O 26 2
+-8 u P%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u
+-6 u C%sT 1921
+-6 v C%sT 1942
+-6 u C%sT 1946
+-6 v C%sT 1961 Jul 23 2
+-5 - EST 1968
+-5 u E%sT 1974 Ja 6 2
+-6 1 CDT 1974 O 27 2
+-5 u E%sT
+Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 - CST 1968
+-6 u C%sT 2000 O 29 2
+-5 u E%sT
+Z America/La_Paz -4:32:36 - LMT 1890
+-4:32:36 - CMT 1931 O 15
+-4:32:36 1 BST 1932 Mar 21
+-4 - -04
+Z America/Lima -5:8:12 - LMT 1890
+-5:8:36 - LMT 1908 Jul 28
+-5 PE -05/-04
+Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u
+-8 u P%sT 1946
+-8 CA P%sT 1967
+-8 u P%sT
+Z America/Maceio -2:22:52 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1995 O 13
+-3 B -03/-02 1996 S 4
+-3 - -03 1999 S 30
+-3 B -03/-02 2000 O 22
+-3 - -03 2001 S 13
+-3 B -03/-02 2002 O
+-3 - -03
+Z America/Managua -5:45:8 - LMT 1890
+-5:45:12 - MMT 1934 Jun 23
+-6 - CST 1973 May
+-5 - EST 1975 F 16
+-6 NI C%sT 1992 Ja 1 4
+-5 - EST 1992 S 24
+-6 - CST 1993
+-5 - EST 1997
+-6 NI C%sT
+Z America/Manaus -4:0:4 - LMT 1914
+-4 B -04/-03 1988 S 12
+-4 - -04 1993 S 28
+-4 B -04/-03 1994 S 22
+-4 - -04
+Z America/Martinique -4:4:20 - LMT 1890
+-4:4:20 - FFMT 1911 May
+-4 - AST 1980 Ap 6
+-4 1 ADT 1980 S 28
+-4 - AST
+Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u
+-6 - CST 1988
+-6 u C%sT 1989
+-6 m C%sT 2010
+-6 u C%sT
+Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1942 Ap 24
+-7 - MST 1949 Ja 14
+-8 - PST 1970
+-7 m M%sT
+Z America/Menominee -5:50:27 - LMT 1885 S 18 12
+-6 u C%sT 1946
+-6 Me C%sT 1969 Ap 27 2
+-5 - EST 1973 Ap 29 2
+-6 u C%sT
+Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u
+-6 - CST 1981 D 23
+-5 - EST 1982 D 2
+-6 m C%sT
+Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55
+-8:46:18 - LMT 1900 Au 20 12
+-8 - PST 1942
+-8 u P%sT 1946
+-8 - PST 1969
+-8 u P%sT 1983 O 30 2
+-8 - PST 2015 N 1 2
+-9 u AK%sT 2018 N 4 2
+-8 - PST 2019 Ja 20 2
+-9 u AK%sT
+Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 m C%sT 2001 S 30 2
+-6 - CST 2002 F 20
+-6 m C%sT
+Z America/Miquelon -3:44:40 - LMT 1911 Jun 15
+-4 - AST 1980 May
+-3 - -03 1987
+-3 C -03/-02
+Z America/Moncton -4:19:8 - LMT 1883 D 9
+-5 - EST 1902 Jun 15
+-4 C A%sT 1933
+-4 o A%sT 1942
+-4 C A%sT 1946
+-4 o A%sT 1973
+-4 C A%sT 1993
+-4 o A%sT 2007
+-4 C A%sT
+Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u
+-6 - CST 1988
+-6 u C%sT 1989
+-6 m C%sT
Z America/Montevideo -3:44:51 - LMT 1908 Jun 10
-3:44:51 - MMT 1920 May
-4 - -04 1923 O
@@ -4002,30 +2747,842 @@ Z America/Montevideo -3:44:51 - LMT 1908 Jun 10
-3 U -03/-0130 1974 Mar 10
-3 U -03/-0230 1974 D 22
-3 U -03/-02
-Z America/Caracas -4:27:44 - LMT 1890
--4:27:40 - CMT 1912 F 12
--4:30 - -0430 1965
--4 - -04 2007 D 9 3
--4:30 - -0430 2016 May 1 2:30
+Z America/New_York -4:56:2 - LMT 1883 N 18 17u
+-5 u E%sT 1920
+-5 NY E%sT 1942
+-5 u E%sT 1946
+-5 NY E%sT 1967
+-5 u E%sT
+Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35
+-11:1:38 - LMT 1900 Au 20 12
+-11 - NST 1942
+-11 u N%sT 1946
+-11 - NST 1967 Ap
+-11 - BST 1969
+-11 u B%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/Noronha -2:9:40 - LMT 1914
+-2 B -02/-01 1990 S 17
+-2 - -02 1999 S 30
+-2 B -02/-01 2000 O 15
+-2 - -02 2001 S 13
+-2 B -02/-01 2002 O
+-2 - -02
+Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u
+-7 u M%sT 2010 N 7 2
+-6 u C%sT
+Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u
+-7 u M%sT 1992 O 25 2
+-6 u C%sT
+Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u
+-7 u M%sT 2003 O 26 2
+-6 u C%sT
+Z America/Nuuk -3:26:56 - LMT 1916 Jul 28
+-3 - -03 1980 Ap 6 2
+-3 E -03/-02 2023 Mar 26 1u
+-2 - -02 2023 O 29 1u
+-2 E -02/-01
+Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1996
+-6 m C%sT 1998
+-6 - CST 1998 Ap Su>=1 3
+-7 m M%sT 2010
+-7 u M%sT 2022 O 30 2
+-6 - CST 2022 N 30
+-6 u C%sT
+Z America/Panama -5:18:8 - LMT 1890
+-5:19:36 - CMT 1908 Ap 22
+-5 - EST
+Z America/Paramaribo -3:40:40 - LMT 1911
+-3:40:52 - PMT 1935
+-3:40:36 - PMT 1945 O
+-3:30 - -0330 1984 O
+-3 - -03
+Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u
+-7 u M%sT 1944 Ja 1 0:1
+-7 - MST 1944 Ap 1 0:1
+-7 u M%sT 1944 O 1 0:1
+-7 - MST 1967
+-7 u M%sT 1968 Mar 21
+-7 - MST
+Z America/Port-au-Prince -4:49:20 - LMT 1890
+-4:49 - PPMT 1917 Ja 24 12
+-5 HT E%sT
+Z America/Porto_Velho -4:15:36 - LMT 1914
+-4 B -04/-03 1988 S 12
-4 - -04
-Z Etc/UTC 0 - UTC
+Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12
+-4 - AST 1942 May 3
+-4 u A%sT 1946
+-4 - AST
+Z America/Punta_Arenas -4:43:40 - LMT 1890
+-4:42:45 - SMT 1910 Ja 10
+-5 - -05 1916 Jul
+-4:42:45 - SMT 1918 S 10
+-4 - -04 1919 Jul
+-4:42:45 - SMT 1927 S
+-5 x -05/-04 1932 S
+-4 - -04 1942 Jun
+-5 - -05 1942 Au
+-4 - -04 1946 Au 28 24
+-5 1 -04 1947 Mar 31 24
+-5 - -05 1947 May 21 23
+-4 x -04/-03 2016 D 4
+-3 - -03
+Z America/Rankin_Inlet 0 - -00 1957
+-6 Y C%sT 2000 O 29 2
+-5 - EST 2001 Ap 1 3
+-6 C C%sT
+Z America/Recife -2:19:36 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1999 S 30
+-3 B -03/-02 2000 O 15
+-3 - -03 2001 S 13
+-3 B -03/-02 2002 O
+-3 - -03
+Z America/Regina -6:58:36 - LMT 1905 S
+-7 r M%sT 1960 Ap lastSu 2
+-6 - CST
+Z America/Resolute 0 - -00 1947 Au 31
+-6 Y C%sT 2000 O 29 2
+-5 - EST 2001 Ap 1 3
+-6 C C%sT 2006 O 29 2
+-5 - EST 2007 Mar 11 3
+-6 C C%sT
+Z America/Rio_Branco -4:31:12 - LMT 1914
+-5 B -05/-04 1988 S 12
+-5 - -05 2008 Jun 24
+-4 - -04 2013 N 10
+-5 - -05
+Z America/Santarem -3:38:48 - LMT 1914
+-4 B -04/-03 1988 S 12
+-4 - -04 2008 Jun 24
+-3 - -03
+Z America/Santiago -4:42:45 - LMT 1890
+-4:42:45 - SMT 1910 Ja 10
+-5 - -05 1916 Jul
+-4:42:45 - SMT 1918 S 10
+-4 - -04 1919 Jul
+-4:42:45 - SMT 1927 S
+-5 x -05/-04 1932 S
+-4 - -04 1942 Jun
+-5 - -05 1942 Au
+-4 - -04 1946 Jul 14 24
+-4 1 -03 1946 Au 28 24
+-5 1 -04 1947 Mar 31 24
+-5 - -05 1947 May 21 23
+-4 x -04/-03
+Z America/Santo_Domingo -4:39:36 - LMT 1890
+-4:40 - SDMT 1933 Ap 1 12
+-5 DO %s 1974 O 27
+-4 - AST 2000 O 29 2
+-5 u E%sT 2000 D 3 1
+-4 - AST
+Z America/Sao_Paulo -3:6:28 - LMT 1914
+-3 B -03/-02 1963 O 23
+-3 1 -02 1964
+-3 B -03/-02
+Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28
+-2 - -02 1980 Ap 6 2
+-2 c -02/-01 1981 Mar 29
+-1 E -01/+00 2024 Mar 31
+-2 E -02/-01
+Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30
+-9:1:13 - LMT 1900 Au 20 12
+-8 - PST 1942
+-8 u P%sT 1946
+-8 - PST 1969
+-8 u P%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/St_Johns -3:30:52 - LMT 1884
+-3:30:52 j N%sT 1918
+-3:30:52 C N%sT 1919
+-3:30:52 j N%sT 1935 Mar 30
+-3:30 j N%sT 1942 May 11
+-3:30 C N%sT 1946
+-3:30 j N%sT 2011 N
+-3:30 C N%sT
+Z America/Swift_Current -7:11:20 - LMT 1905 S
+-7 C M%sT 1946 Ap lastSu 2
+-7 r M%sT 1950
+-7 Sw M%sT 1972 Ap lastSu 2
+-6 - CST
+Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap
+-6 HN C%sT
+Z America/Thule -4:35:8 - LMT 1916 Jul 28
+-4 Th A%sT
+Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u
+-7 - MST 1924
+-8 - PST 1927 Jun 10 23
+-7 - MST 1930 N 15
+-8 - PST 1931 Ap
+-8 1 PDT 1931 S 30
+-8 - PST 1942 Ap 24
+-8 1 PWT 1945 Au 14 23u
+-8 1 PPT 1945 N 12
+-8 - PST 1948 Ap 5
+-8 1 PDT 1949 Ja 14
+-8 - PST 1954
+-8 CA P%sT 1961
+-8 - PST 1976
+-8 u P%sT 1996
+-8 m P%sT 2001
+-8 u P%sT 2002 F 20
+-8 m P%sT 2010
+-8 u P%sT
+Z America/Toronto -5:17:32 - LMT 1895
+-5 C E%sT 1919
+-5 t E%sT 1942 F 9 2s
+-5 C E%sT 1946
+-5 t E%sT 1974
+-5 C E%sT
+Z America/Vancouver -8:12:28 - LMT 1884
+-8 Va P%sT 1987
+-8 C P%sT
+Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
+-9 Y Y%sT 1965
+-9 Yu Y%sT 1966 F 27
+-8 - PST 1980
+-8 C P%sT 2020 N
+-7 - MST
+Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16
+-6 W C%sT 2006
+-6 C C%sT
+Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18
+-9:18:55 - LMT 1900 Au 20 12
+-9 - YST 1942
+-9 u Y%sT 1946
+-9 - YST 1969
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z Antarctica/Casey 0 - -00 1969
+8 - +08 2009 O 18 2
+11 - +11 2010 Mar 5 2
+8 - +08 2011 O 28 2
+11 - +11 2012 F 21 17u
+8 - +08 2016 O 22
+11 - +11 2018 Mar 11 4
+8 - +08 2018 O 7 4
+11 - +11 2019 Mar 17 3
+8 - +08 2019 O 4 3
+11 - +11 2020 Mar 8 3
+8 - +08 2020 O 4 0:1
+11 - +11 2021 Mar 14
+8 - +08 2021 O 3 0:1
+11 - +11 2022 Mar 13
+8 - +08 2022 O 2 0:1
+11 - +11 2023 Mar 9 3
+8 - +08
+Z Antarctica/Davis 0 - -00 1957 Ja 13
+7 - +07 1964 N
+0 - -00 1969 F
+7 - +07 2009 O 18 2
+5 - +05 2010 Mar 10 20u
+7 - +07 2011 O 28 2
+5 - +05 2012 F 21 20u
+7 - +07
+Z Antarctica/Macquarie 0 - -00 1899 N
+10 - AEST 1916 O 1 2
+10 1 AEDT 1917 F
+10 AU AE%sT 1919 Ap 1 0s
+0 - -00 1948 Mar 25
+10 AU AE%sT 1967
+10 AT AE%sT 2010
+10 1 AEDT 2011
+10 AT AE%sT
+Z Antarctica/Mawson 0 - -00 1954 F 13
+6 - +06 2009 O 18 2
+5 - +05
+Z Antarctica/Palmer 0 - -00 1965
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1982 May
+-4 x -04/-03 2016 D 4
+-3 - -03
+Z Antarctica/Rothera 0 - -00 1976 D
+-3 - -03
+Z Antarctica/Troll 0 - -00 2005 F 12
+0 Tr %s
+Z Antarctica/Vostok 0 - -00 1957 D 16
+7 - +07 1994 F
+0 - -00 1994 N
+7 - +07 2023 D 18 2
+5 - +05
+Z Asia/Almaty 5:7:48 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 R +05/+06 1992 Ja 19 2s
+6 R +06/+07 2004 O 31 2s
+6 - +06 2024 Mar
+5 - +05
+Z Asia/Amman 2:23:44 - LMT 1931
+2 J EE%sT 2022 O 28 0s
+3 - +03
+Z Asia/Anadyr 11:49:56 - LMT 1924 May 2
+12 - +12 1930 Jun 21
+13 R +13/+14 1982 Ap 1 0s
+12 R +12/+13 1991 Mar 31 2s
+11 R +11/+12 1992 Ja 19 2s
+12 R +12/+13 2010 Mar 28 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12
+Z Asia/Aqtau 3:21:4 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 1994 S 25 2s
+4 R +04/+05 2004 O 31 2s
+5 - +05
+Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 2004 O 31 2s
+5 - +05
+Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 R +05/+06 1991 Mar 31 2
+4 R +04/+05 1992 Ja 19 2
+5 - +05
+Z Asia/Atyrau 3:27:44 - LMT 1924 May 2
+3 - +03 1930 Jun 21
+5 - +05 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 1999 Mar 28 2s
+4 R +04/+05 2004 O 31 2s
+5 - +05
+Z Asia/Baghdad 2:57:40 - LMT 1890
+2:57:36 - BMT 1918
+3 - +03 1982 May
+3 IQ +03/+04
+Z Asia/Baku 3:19:24 - LMT 1924 May 2
+3 - +03 1957 Mar
+4 R +04/+05 1991 Mar 31 2s
+3 R +03/+04 1992 S lastSu 2s
+4 - +04 1996
+4 E +04/+05 1997
+4 AZ +04/+05
+Z Asia/Bangkok 6:42:4 - LMT 1880
+6:42:4 - BMT 1920 Ap
+7 - +07
+Z Asia/Barnaul 5:35 - LMT 1919 D 10
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 1995 May 28
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06 2016 Mar 27 2s
+7 - +07
+Z Asia/Beirut 2:22 - LMT 1880
+2 l EE%sT
+Z Asia/Bishkek 4:58:24 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 R +05/+06 1991 Au 31 2
+5 KG +05/+06 2005 Au 12
+6 - +06
+Z Asia/Chita 7:33:52 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1991 Mar 31 2s
+8 R +08/+09 1992 Ja 19 2s
+9 R +09/+10 2011 Mar 27 2s
+10 - +10 2014 O 26 2s
+8 - +08 2016 Mar 27 2
+9 - +09
+Z Asia/Choibalsan 7:38 - LMT 1905 Au
+7 - +07 1978
+8 - +08 1983 Ap
+9 X +09/+10 2008 Mar 31
+8 X +08/+09
+Z Asia/Colombo 5:19:24 - LMT 1880
+5:19:32 - MMT 1906
+5:30 - +0530 1942 Ja 5
+5:30 0:30 +06 1942 S
+5:30 1 +0630 1945 O 16 2
+5:30 - +0530 1996 May 25
+6:30 - +0630 1996 O 26 0:30
+6 - +06 2006 Ap 15 0:30
+5:30 - +0530
+Z Asia/Damascus 2:25:12 - LMT 1920
+2 S EE%sT 2022 O 28
+3 - +03
+Z Asia/Dhaka 6:1:40 - LMT 1890
+5:53:20 - HMT 1941 O
+6:30 - +0630 1942 May 15
+5:30 - +0530 1942 S
+6:30 - +0630 1951 S 30
+6 - +06 2009
+6 BD +06/+07
+Z Asia/Dili 8:22:20 - LMT 1912
+8 - +08 1942 F 21 23
+9 - +09 1976 May 3
+8 - +08 2000 S 17
+9 - +09
+Z Asia/Dubai 3:41:12 - LMT 1920
+4 - +04
+Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 1 +06 1991 S 9 2s
+5 - +05
+Z Asia/Famagusta 2:15:48 - LMT 1921 N 14
+2 CY EE%sT 1998 S
+2 E EE%sT 2016 S 8
+3 - +03 2017 O 29 1u
+2 E EE%sT
+Z Asia/Gaza 2:17:52 - LMT 1900 O
+2 Z EET/EEST 1948 May 15
+2 K EE%sT 1967 Jun 5
+2 Z I%sT 1996
+2 J EE%sT 1999
+2 P EE%sT 2008 Au 29
+2 - EET 2008 S
+2 P EE%sT 2010
+2 - EET 2010 Mar 27 0:1
+2 P EE%sT 2011 Au
+2 - EET 2012
+2 P EE%sT
+Z Asia/Hebron 2:20:23 - LMT 1900 O
+2 Z EET/EEST 1948 May 15
+2 K EE%sT 1967 Jun 5
+2 Z I%sT 1996
+2 J EE%sT 1999
+2 P EE%sT
+Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul
+7:6:30 - PLMT 1911 May
+7 - +07 1942 D 31 23
+8 - +08 1945 Mar 14 23
+9 - +09 1945 S 1 24
+7 - +07 1947 Ap
+8 - +08 1955 Jul 1 1
+7 - +07 1959 D 31 23
+8 - +08 1975 Jun 13
+7 - +07
+Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u
+8 - HKT 1941 Jun 15 3
+8 1 HKST 1941 O 1 4
+8 0:30 HKWT 1941 D 25
+9 - JST 1945 N 18 2
+8 HK HK%sT
+Z Asia/Hovd 6:6:36 - LMT 1905 Au
+6 - +06 1978
+7 X +07/+08
+Z Asia/Irkutsk 6:57:5 - LMT 1880
+6:57:5 - IMT 1920 Ja 25
+7 - +07 1930 Jun 21
+8 R +08/+09 1991 Mar 31 2s
+7 R +07/+08 1992 Ja 19 2s
+8 R +08/+09 2011 Mar 27 2s
+9 - +09 2014 O 26 2s
+8 - +08
+Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10
+7:7:12 - BMT 1923 D 31 16:40u
+7:20 - +0720 1932 N
+7:30 - +0730 1942 Mar 23
+9 - +09 1945 S 23
+7:30 - +0730 1948 May
+8 - +08 1950 May
+7:30 - +0730 1964
+7 - WIB
+Z Asia/Jayapura 9:22:48 - LMT 1932 N
+9 - +09 1944 S
+9:30 - +0930 1964
+9 - WIT
+Z Asia/Jerusalem 2:20:54 - LMT 1880
+2:20:40 - JMT 1918
+2 Z I%sT
+Z Asia/Kabul 4:36:48 - LMT 1890
+4 - +04 1945
+4:30 - +0430
+Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10
+11 - +11 1930 Jun 21
+12 R +12/+13 1991 Mar 31 2s
+11 R +11/+12 1992 Ja 19 2s
+12 R +12/+13 2010 Mar 28 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12
+Z Asia/Karachi 4:28:12 - LMT 1907
+5:30 - +0530 1942 S
+5:30 1 +0630 1945 O 15
+5:30 - +0530 1951 S 30
+5 - +05 1971 Mar 26
+5 PK PK%sT
+Z Asia/Kathmandu 5:41:16 - LMT 1920
+5:30 - +0530 1986
+5:45 - +0545
+Z Asia/Khandyga 9:2:13 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1991 Mar 31 2s
+8 R +08/+09 1992 Ja 19 2s
+9 R +09/+10 2004
+10 R +10/+11 2011 Mar 27 2s
+11 - +11 2011 S 13 0s
+10 - +10 2014 O 26 2s
+9 - +09
+Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28
+5:53:20 - HMT 1870
+5:21:10 - MMT 1906
+5:30 - IST 1941 O
+5:30 1 +0630 1942 May 15
+5:30 - IST 1942 S
+5:30 1 +0630 1945 O 15
+5:30 - IST
+Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 2011 Mar 27 2s
+8 - +08 2014 O 26 2s
+7 - +07
+Z Asia/Kuching 7:21:20 - LMT 1926 Mar
+7:30 - +0730 1933
+8 NB +08/+0820 1942 F 16
+9 - +09 1945 S 12
+8 - +08
+Z Asia/Macau 7:34:10 - LMT 1904 O 30
+8 - CST 1941 D 21 23
+9 _ +09/+10 1945 S 30 24
+8 _ C%sT
+Z Asia/Magadan 10:3:12 - LMT 1924 May 2
+10 - +10 1930 Jun 21
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12 2014 O 26 2s
+10 - +10 2016 Ap 24 2s
+11 - +11
+Z Asia/Makassar 7:57:36 - LMT 1920
+7:57:36 - MMT 1932 N
+8 - +08 1942 F 9
+9 - +09 1945 S 23
+8 - WITA
+Z Asia/Manila -15:56 - LMT 1844 D 31
+8:4 - LMT 1899 May 11
+8 PH P%sT 1942 May
+9 - JST 1944 N
+8 PH P%sT
+Z Asia/Nicosia 2:13:28 - LMT 1921 N 14
+2 CY EE%sT 1998 S
+2 E EE%sT
+Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 2010 Mar 28 2s
+6 R +06/+07 2011 Mar 27 2s
+7 - +07
+Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 1993 May 23
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06 2016 Jul 24 2s
+7 - +07
+Z Asia/Omsk 4:53:30 - LMT 1919 N 14
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 R +05/+06 1992 Ja 19 2s
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06
+Z Asia/Oral 3:25:24 - LMT 1924 May 2
+3 - +03 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1989 Mar 26 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 1992 Mar 29 2s
+4 R +04/+05 2004 O 31 2s
+5 - +05
+Z Asia/Pontianak 7:17:20 - LMT 1908 May
+7:17:20 - PMT 1932 N
+7:30 - +0730 1942 Ja 29
+9 - +09 1945 S 23
+7:30 - +0730 1948 May
+8 - +08 1950 May
+7:30 - +0730 1964
+8 - WITA 1988
+7 - WIB
+Z Asia/Pyongyang 8:23 - LMT 1908 Ap
+8:30 - KST 1912
+9 - JST 1945 Au 24
+9 - KST 2015 Au 15
+8:30 - KST 2018 May 4 23:30
+9 - KST
+Z Asia/Qatar 3:26:8 - LMT 1920
+4 - +04 1972 Jun
+3 - +03
+Z Asia/Qostanay 4:14:28 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 2004 O 31 2s
+6 - +06 2024 Mar
+5 - +05
+Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1991 S 29 2s
+5 R +05/+06 1992 Ja 19 2s
+6 R +06/+07 1992 Mar 29 2s
+5 R +05/+06 2004 O 31 2s
+6 - +06 2018 D 21
+5 - +05
+Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14
+3 - +03
+Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23
+9 - +09 1945 Au 25
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 1997 Mar lastSu 2s
+10 R +10/+11 2011 Mar 27 2s
+11 - +11 2014 O 26 2s
+10 - +10 2016 Mar 27 2s
+11 - +11
+Z Asia/Samarkand 4:27:53 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1992
+5 - +05
+Z Asia/Seoul 8:27:52 - LMT 1908 Ap
+8:30 - KST 1912
+9 - JST 1945 S 8
+9 KR K%sT 1954 Mar 21
+8:30 KR K%sT 1961 Au 10
+9 KR K%sT
+Z Asia/Shanghai 8:5:43 - LMT 1901
+8 Sh C%sT 1949 May 28
+8 CN C%sT
+Z Asia/Singapore 6:55:25 - LMT 1901
+6:55:25 - SMT 1905 Jun
+7 - +07 1933
+7 0:20 +0720 1936
+7:20 - +0720 1941 S
+7:30 - +0730 1942 F 16
+9 - +09 1945 S 12
+7:30 - +0730 1981 D 31 16u
+8 - +08
+Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
+10 - +10 1930 Jun 21
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12 2014 O 26 2s
+11 - +11
+Z Asia/Taipei 8:6 - LMT 1896
+8 - CST 1937 O
+9 - JST 1945 S 21 1
+8 f C%sT
+Z Asia/Tashkent 4:37:11 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2
+5 R +05/+06 1992
+5 - +05
+Z Asia/Tbilisi 2:59:11 - LMT 1880
+2:59:11 - TBMT 1924 May 2
+3 - +03 1957 Mar
+4 R +04/+05 1991 Mar 31 2s
+3 R +03/+04 1992
+3 e +03/+04 1994 S lastSu
+4 e +04/+05 1996 O lastSu
+4 1 +05 1997 Mar lastSu
+4 e +04/+05 2004 Jun 27
+3 R +03/+04 2005 Mar lastSu 2
+4 - +04
+Z Asia/Tehran 3:25:44 - LMT 1916
+3:25:44 - TMT 1935 Jun 13
+3:30 i +0330/+0430 1977 O 20 24
+4 i +04/+05 1979
+3:30 i +0330/+0430
+Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15
+5:30 - +0530 1987 O
+6 - +06
+Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u
+9 JP J%sT
+Z Asia/Tomsk 5:39:51 - LMT 1919 D 22
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 2002 May 1 3
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06 2016 May 29 2s
+7 - +07
+Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au
+7 - +07 1978
+8 X +08/+09
+Z Asia/Urumqi 5:50:20 - LMT 1928
+6 - +06
+Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1981 Ap
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12 2011 S 13 0s
+11 - +11 2014 O 26 2s
+10 - +10
+Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15
+9 - +09 1930 Jun 21
+10 R +10/+11 1991 Mar 31 2s
+9 R +09/+10 1992 Ja 19 2s
+10 R +10/+11 2011 Mar 27 2s
+11 - +11 2014 O 26 2s
+10 - +10
+Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1991 Mar 31 2s
+8 R +08/+09 1992 Ja 19 2s
+9 R +09/+10 2011 Mar 27 2s
+10 - +10 2014 O 26 2s
+9 - +09
+Z Asia/Yangon 6:24:47 - LMT 1880
+6:24:47 - RMT 1920
+6:30 - +0630 1942 May
+9 - +09 1945 May 3
+6:30 - +0630
+Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3
+3:45:5 - PMT 1919 Jul 15 4
+4 - +04 1930 Jun 21
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 2011 Mar 27 2s
+6 - +06 2014 O 26 2s
+5 - +05
+Z Asia/Yerevan 2:58 - LMT 1924 May 2
+3 - +03 1957 Mar
+4 R +04/+05 1991 Mar 31 2s
+3 R +03/+04 1995 S 24 2s
+4 - +04 1997
+4 R +04/+05 2011
+4 AM +04/+05
+Z Atlantic/Azores -1:42:40 - LMT 1884
+-1:54:32 - HMT 1912 Ja 1 2u
+-2 p -02/-01 1942 Ap 25 22s
+-2 p +00 1942 Au 15 22s
+-2 p -02/-01 1943 Ap 17 22s
+-2 p +00 1943 Au 28 22s
+-2 p -02/-01 1944 Ap 22 22s
+-2 p +00 1944 Au 26 22s
+-2 p -02/-01 1945 Ap 21 22s
+-2 p +00 1945 Au 25 22s
+-2 p -02/-01 1966 Ap 3 2
+-1 p -01/+00 1983 S 25 1s
+-1 W- -01/+00 1992 S 27 1s
+0 E WE%sT 1993 Mar 28 1u
+-1 E -01/+00
+Z Atlantic/Bermuda -4:19:18 - LMT 1890
+-4:19:18 Be BMT/BST 1930 Ja 1 2
+-4 Be A%sT 1974 Ap 28 2
+-4 C A%sT 1976
+-4 u A%sT
+Z Atlantic/Canary -1:1:36 - LMT 1922 Mar
+-1 - -01 1946 S 30 1
+0 - WET 1980 Ap 6 0s
+0 1 WEST 1980 S 28 1u
+0 E WE%sT
+Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u
+-2 - -02 1942 S
+-2 1 -01 1945 O 15
+-2 - -02 1975 N 25 2
+-1 - -01
+Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11
+0 - WET 1981
+0 E WE%sT
+Z Atlantic/Madeira -1:7:36 - LMT 1884
+-1:7:36 - FMT 1912 Ja 1 1u
+-1 p -01/+00 1942 Ap 25 22s
+-1 p +01 1942 Au 15 22s
+-1 p -01/+00 1943 Ap 17 22s
+-1 p +01 1943 Au 28 22s
+-1 p -01/+00 1944 Ap 22 22s
+-1 p +01 1944 Au 26 22s
+-1 p -01/+00 1945 Ap 21 22s
+-1 p +01 1945 Au 25 22s
+-1 p -01/+00 1966 Ap 3 2
+0 p WE%sT 1983 S 25 1s
+0 E WE%sT
+Z Atlantic/South_Georgia -2:26:8 - LMT 1890
+-2 - -02
+Z Atlantic/Stanley -3:51:24 - LMT 1890
+-3:51:24 - SMT 1912 Mar 12
+-4 FK -04/-03 1983 May
+-3 FK -03/-02 1985 S 15
+-4 FK -04/-03 2010 S 5 2
+-3 - -03
+Z Australia/Adelaide 9:14:20 - LMT 1895 F
+9 - ACST 1899 May
+9:30 AU AC%sT 1971
+9:30 AS AC%sT
+Z Australia/Brisbane 10:12:8 - LMT 1895
+10 AU AE%sT 1971
+10 AQ AE%sT
+Z Australia/Broken_Hill 9:25:48 - LMT 1895 F
+10 - AEST 1896 Au 23
+9 - ACST 1899 May
+9:30 AU AC%sT 1971
+9:30 AN AC%sT 2000
+9:30 AS AC%sT
+Z Australia/Darwin 8:43:20 - LMT 1895 F
+9 - ACST 1899 May
+9:30 AU AC%sT
+Z Australia/Eucla 8:35:28 - LMT 1895 D
+8:45 AU +0845/+0945 1943 Jul
+8:45 AW +0845/+0945
+Z Australia/Hobart 9:49:16 - LMT 1895 S
+10 AT AE%sT 1919 O 24
+10 AU AE%sT 1967
+10 AT AE%sT
+Z Australia/Lindeman 9:55:56 - LMT 1895
+10 AU AE%sT 1971
+10 AQ AE%sT 1992 Jul
+10 Ho AE%sT
+Z Australia/Lord_Howe 10:36:20 - LMT 1895 F
+10 - AEST 1981 Mar
+10:30 LH +1030/+1130 1985 Jul
+10:30 LH +1030/+11
+Z Australia/Melbourne 9:39:52 - LMT 1895 F
+10 AU AE%sT 1971
+10 AV AE%sT
+Z Australia/Perth 7:43:24 - LMT 1895 D
+8 AU AW%sT 1943 Jul
+8 AW AW%sT
+Z Australia/Sydney 10:4:52 - LMT 1895 F
+10 AU AE%sT 1971
+10 AN AE%sT
+Z CET 1 c CE%sT
+Z CST6CDT -6 u C%sT
+Z EET 2 E EE%sT
+Z EST -5 - EST
+Z EST5EDT -5 u E%sT
Z Etc/GMT 0 - GMT
-L Etc/GMT GMT
-Z Etc/GMT-14 14 - +14
-Z Etc/GMT-13 13 - +13
-Z Etc/GMT-12 12 - +12
-Z Etc/GMT-11 11 - +11
-Z Etc/GMT-10 10 - +10
-Z Etc/GMT-9 9 - +09
-Z Etc/GMT-8 8 - +08
-Z Etc/GMT-7 7 - +07
-Z Etc/GMT-6 6 - +06
-Z Etc/GMT-5 5 - +05
-Z Etc/GMT-4 4 - +04
-Z Etc/GMT-3 3 - +03
-Z Etc/GMT-2 2 - +02
-Z Etc/GMT-1 1 - +01
Z Etc/GMT+1 -1 - -01
+Z Etc/GMT+10 -10 - -10
+Z Etc/GMT+11 -11 - -11
+Z Etc/GMT+12 -12 - -12
Z Etc/GMT+2 -2 - -02
Z Etc/GMT+3 -3 - -03
Z Etc/GMT+4 -4 - -04
@@ -4034,10 +3591,463 @@ Z Etc/GMT+6 -6 - -06
Z Etc/GMT+7 -7 - -07
Z Etc/GMT+8 -8 - -08
Z Etc/GMT+9 -9 - -09
-Z Etc/GMT+10 -10 - -10
-Z Etc/GMT+11 -11 - -11
-Z Etc/GMT+12 -12 - -12
+Z Etc/GMT-1 1 - +01
+Z Etc/GMT-10 10 - +10
+Z Etc/GMT-11 11 - +11
+Z Etc/GMT-12 12 - +12
+Z Etc/GMT-13 13 - +13
+Z Etc/GMT-14 14 - +14
+Z Etc/GMT-2 2 - +02
+Z Etc/GMT-3 3 - +03
+Z Etc/GMT-4 4 - +04
+Z Etc/GMT-5 5 - +05
+Z Etc/GMT-6 6 - +06
+Z Etc/GMT-7 7 - +07
+Z Etc/GMT-8 8 - +08
+Z Etc/GMT-9 9 - +09
+Z Etc/UTC 0 - UTC
+Z Europe/Andorra 0:6:4 - LMT 1901
+0 - WET 1946 S 30
+1 - CET 1985 Mar 31 2
+1 E CE%sT
+Z Europe/Astrakhan 3:12:12 - LMT 1924 May
+3 - +03 1930 Jun 21
+4 R +04/+05 1989 Mar 26 2s
+3 R +03/+04 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04 2014 O 26 2s
+3 - +03 2016 Mar 27 2s
+4 - +04
+Z Europe/Athens 1:34:52 - LMT 1895 S 14
+1:34:52 - AMT 1916 Jul 28 0:1
+2 g EE%sT 1941 Ap 30
+1 g CE%sT 1944 Ap 4
+2 g EE%sT 1981
+2 E EE%sT
+Z Europe/Belgrade 1:22 - LMT 1884
+1 - CET 1941 Ap 18 23
+1 c CE%sT 1945
+1 - CET 1945 May 8 2s
+1 1 CEST 1945 S 16 2s
+1 - CET 1982 N 27
+1 E CE%sT
+Z Europe/Berlin 0:53:28 - LMT 1893 Ap
+1 c CE%sT 1945 May 24 2
+1 So CE%sT 1946
+1 DE CE%sT 1980
+1 E CE%sT
+Z Europe/Brussels 0:17:30 - LMT 1880
+0:17:30 - BMT 1892 May 1 0:17:30
+0 - WET 1914 N 8
+1 - CET 1916 May
+1 c CE%sT 1918 N 11 11u
+0 b WE%sT 1940 May 20 2s
+1 c CE%sT 1944 S 3
+1 b CE%sT 1977
+1 E CE%sT
+Z Europe/Bucharest 1:44:24 - LMT 1891 O
+1:44:24 - BMT 1931 Jul 24
+2 z EE%sT 1981 Mar 29 2s
+2 c EE%sT 1991
+2 z EE%sT 1994
+2 e EE%sT 1997
+2 E EE%sT
+Z Europe/Budapest 1:16:20 - LMT 1890 N
+1 c CE%sT 1918
+1 h CE%sT 1941 Ap 7 23
+1 c CE%sT 1945
+1 h CE%sT 1984
+1 E CE%sT
+Z Europe/Chisinau 1:55:20 - LMT 1880
+1:55 - CMT 1918 F 15
+1:44:24 - BMT 1931 Jul 24
+2 z EE%sT 1940 Au 15
+2 1 EEST 1941 Jul 17
+1 c CE%sT 1944 Au 24
+3 R MSK/MSD 1990 May 6 2
+2 R EE%sT 1992
+2 e EE%sT 1997
+2 MD EE%sT
+Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
+-0:25:21 - DMT 1916 May 21 2s
+-0:25:21 1 IST 1916 O 1 2s
+0 G %s 1921 D 6
+0 G GMT/IST 1940 F 25 2s
+0 1 IST 1946 O 6 2s
+0 - GMT 1947 Mar 16 2s
+0 1 IST 1947 N 2 2s
+0 - GMT 1948 Ap 18 2s
+0 G GMT/IST 1968 O 27
+1 IE IST/GMT
+Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2
+0 G %s 1957 Ap 14 2
+1 - CET 1982
+1 E CE%sT
+Z Europe/Helsinki 1:39:49 - LMT 1878 May 31
+1:39:49 - HMT 1921 May
+2 FI EE%sT 1983
+2 E EE%sT
+Z Europe/Istanbul 1:55:52 - LMT 1880
+1:56:56 - IMT 1910 O
+2 T EE%sT 1978 Jun 29
+3 T +03/+04 1984 N 1 2
+2 T EE%sT 2007
+2 E EE%sT 2011 Mar 27 1u
+2 - EET 2011 Mar 28 1u
+2 E EE%sT 2014 Mar 30 1u
+2 - EET 2014 Mar 31 1u
+2 E EE%sT 2015 O 25 1u
+2 1 EEST 2015 N 8 1u
+2 E EE%sT 2016 S 7
+3 - +03
+Z Europe/Kaliningrad 1:22 - LMT 1893 Ap
+1 c CE%sT 1945 Ap 10
+2 O EE%sT 1946 Ap 7
+3 R MSK/MSD 1989 Mar 26 2s
+2 R EE%sT 2011 Mar 27 2s
+3 - +03 2014 O 26 2s
+2 - EET
+Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 R +04/+05 1989 Mar 26 2s
+3 R MSK/MSD 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R MSK/MSD 2011 Mar 27 2s
+4 - MSK 2014 O 26 2s
+3 - MSK
+Z Europe/Kyiv 2:2:4 - LMT 1880
+2:2:4 - KMT 1924 May 2
+2 - EET 1930 Jun 21
+3 - MSK 1941 S 20
+1 c CE%sT 1943 N 6
+3 R MSK/MSD 1990 Jul 1 2
+2 1 EEST 1991 S 29 3
+2 c EE%sT 1996 May 13
+2 E EE%sT
+Z Europe/Lisbon -0:36:45 - LMT 1884
+-0:36:45 - LMT 1912 Ja 1 0u
+0 p WE%sT 1966 Ap 3 2
+1 - CET 1976 S 26 1
+0 p WE%sT 1983 S 25 1s
+0 W- WE%sT 1992 S 27 1s
+1 E CE%sT 1996 Mar 31 1u
+0 E WE%sT
+Z Europe/London -0:1:15 - LMT 1847 D
+0 G %s 1968 O 27
+1 - BST 1971 O 31 2u
+0 G %s 1996
+0 E GMT/BST
+Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u
+0 s WE%sT 1940 Mar 16 23
+1 s CE%sT 1979
+1 E CE%sT
+Z Europe/Malta 0:58:4 - LMT 1893 N 2
+1 I CE%sT 1973 Mar 31
+1 MT CE%sT 1981
+1 E CE%sT
+Z Europe/Minsk 1:50:16 - LMT 1880
+1:50 - MMT 1924 May 2
+2 - EET 1930 Jun 21
+3 - MSK 1941 Jun 28
+1 c CE%sT 1944 Jul 3
+3 R MSK/MSD 1990
+3 - MSK 1991 Mar 31 2s
+2 R EE%sT 2011 Mar 27 2s
+3 - +03
+Z Europe/Moscow 2:30:17 - LMT 1880
+2:30:17 - MMT 1916 Jul 3
+2:31:19 R %s 1919 Jul 1 0u
+3 R %s 1921 O
+3 R MSK/MSD 1922 O
+2 - EET 1930 Jun 21
+3 R MSK/MSD 1991 Mar 31 2s
+2 R EE%sT 1992 Ja 19 2s
+3 R MSK/MSD 2011 Mar 27 2s
+4 - MSK 2014 O 26 2s
+3 - MSK
+Z Europe/Paris 0:9:21 - LMT 1891 Mar 16
+0:9:21 - PMT 1911 Mar 11
+0 F WE%sT 1940 Jun 14 23
+1 c CE%sT 1944 Au 25
+0 F WE%sT 1945 S 16 3
+1 F CE%sT 1977
+1 E CE%sT
+Z Europe/Prague 0:57:44 - LMT 1850
+0:57:44 - PMT 1891 O
+1 c CE%sT 1945 May 9
+1 CZ CE%sT 1946 D 1 3
+1 -1 GMT 1947 F 23 2
+1 CZ CE%sT 1979
+1 E CE%sT
+Z Europe/Riga 1:36:34 - LMT 1880
+1:36:34 - RMT 1918 Ap 15 2
+1:36:34 1 LST 1918 S 16 3
+1:36:34 - RMT 1919 Ap 1 2
+1:36:34 1 LST 1919 May 22 3
+1:36:34 - RMT 1926 May 11
+2 - EET 1940 Au 5
+3 - MSK 1941 Jul
+1 c CE%sT 1944 O 13
+3 R MSK/MSD 1989 Mar lastSu 2s
+2 1 EEST 1989 S lastSu 2s
+2 LV EE%sT 1997 Ja 21
+2 E EE%sT 2000 F 29
+2 - EET 2001 Ja 2
+2 E EE%sT
+Z Europe/Rome 0:49:56 - LMT 1866 D 12
+0:49:56 - RMT 1893 O 31 23u
+1 I CE%sT 1943 S 10
+1 c CE%sT 1944 Jun 4
+1 I CE%sT 1980
+1 E CE%sT
+Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 - +04 1935 Ja 27
+4 R +04/+05 1989 Mar 26 2s
+3 R +03/+04 1991 Mar 31 2s
+2 R +02/+03 1991 S 29 2s
+3 - +03 1991 O 20 3
+4 R +04/+05 2010 Mar 28 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04
+Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 R +04/+05 1988 Mar 27 2s
+3 R +03/+04 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04 2014 O 26 2s
+3 - +03 2016 D 4 2s
+4 - +04
+Z Europe/Simferopol 2:16:24 - LMT 1880
+2:16 - SMT 1924 May 2
+2 - EET 1930 Jun 21
+3 - MSK 1941 N
+1 c CE%sT 1944 Ap 13
+3 R MSK/MSD 1990
+3 - MSK 1990 Jul 1 2
+2 - EET 1992 Mar 20
+2 c EE%sT 1994 May
+3 c MSK/MSD 1996 Mar 31 0s
+3 1 MSD 1996 O 27 3s
+3 - MSK 1997 Mar lastSu 1u
+2 E EE%sT 2014 Mar 30 2
+4 - MSK 2014 O 26 2s
+3 - MSK
+Z Europe/Sofia 1:33:16 - LMT 1880
+1:56:56 - IMT 1894 N 30
+2 - EET 1942 N 2 3
+1 c CE%sT 1945
+1 - CET 1945 Ap 2 3
+2 - EET 1979 Mar 31 23
+2 BG EE%sT 1982 S 26 3
+2 c EE%sT 1991
+2 e EE%sT 1997
+2 E EE%sT
+Z Europe/Tallinn 1:39 - LMT 1880
+1:39 - TMT 1918 F
+1 c CE%sT 1919 Jul
+1:39 - TMT 1921 May
+2 - EET 1940 Au 6
+3 - MSK 1941 S 15
+1 c CE%sT 1944 S 22
+3 R MSK/MSD 1989 Mar 26 2s
+2 1 EEST 1989 S 24 2s
+2 c EE%sT 1998 S 22
+2 E EE%sT 1999 O 31 4
+2 - EET 2002 F 21
+2 E EE%sT
+Z Europe/Tirane 1:19:20 - LMT 1914
+1 - CET 1940 Jun 16
+1 q CE%sT 1984 Jul
+1 E CE%sT
+Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 R +04/+05 1989 Mar 26 2s
+3 R +03/+04 1991 Mar 31 2s
+2 R +02/+03 1992 Ja 19 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04 2014 O 26 2s
+3 - +03 2016 Mar 27 2s
+4 - +04
+Z Europe/Vienna 1:5:21 - LMT 1893 Ap
+1 c CE%sT 1920
+1 a CE%sT 1940 Ap 1 2s
+1 c CE%sT 1945 Ap 2 2s
+1 1 CEST 1945 Ap 12 2s
+1 - CET 1946
+1 a CE%sT 1981
+1 E CE%sT
+Z Europe/Vilnius 1:41:16 - LMT 1880
+1:24 - WMT 1917
+1:35:36 - KMT 1919 O 10
+1 - CET 1920 Jul 12
+2 - EET 1920 O 9
+1 - CET 1940 Au 3
+3 - MSK 1941 Jun 24
+1 c CE%sT 1944 Au
+3 R MSK/MSD 1989 Mar 26 2s
+2 R EE%sT 1991 S 29 2s
+2 c EE%sT 1998
+2 - EET 1998 Mar 29 1u
+1 E CE%sT 1999 O 31 1u
+2 - EET 2003
+2 E EE%sT
+Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3
+3 - +03 1930 Jun 21
+4 - +04 1961 N 11
+4 R +04/+05 1988 Mar 27 2s
+3 R MSK/MSD 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R MSK/MSD 2011 Mar 27 2s
+4 - MSK 2014 O 26 2s
+3 - MSK 2018 O 28 2s
+4 - +04 2020 D 27 2s
+3 - MSK
+Z Europe/Warsaw 1:24 - LMT 1880
+1:24 - WMT 1915 Au 5
+1 c CE%sT 1918 S 16 3
+2 O EE%sT 1922 Jun
+1 O CE%sT 1940 Jun 23 2
+1 c CE%sT 1944 O
+1 O CE%sT 1977
+1 W- CE%sT 1988
+1 E CE%sT
+Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16
+0:29:46 - BMT 1894 Jun
+1 CH CE%sT 1981
+1 E CE%sT
Z Factory 0 - -00
+Z HST -10 - HST
+Z Indian/Chagos 4:49:40 - LMT 1907
+5 - +05 1996
+6 - +06
+Z Indian/Maldives 4:54 - LMT 1880
+4:54 - MMT 1960
+5 - +05
+Z Indian/Mauritius 3:50 - LMT 1907
+4 MU +04/+05
+Z MET 1 c ME%sT
+Z MST -7 - MST
+Z MST7MDT -7 u M%sT
+Z PST8PDT -8 u P%sT
+Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5
+-11:26:56 - LMT 1911
+-11:30 - -1130 1950
+-11 WS -11/-10 2011 D 29 24
+13 WS +13/+14
+Z Pacific/Auckland 11:39:4 - LMT 1868 N 2
+11:30 NZ NZ%sT 1946
+12 NZ NZ%sT
+Z Pacific/Bougainville 10:22:16 - LMT 1880
+9:48:32 - PMMT 1895
+10 - +10 1942 Jul
+9 - +09 1945 Au 21
+10 - +10 2014 D 28 2
+11 - +11
+Z Pacific/Chatham 12:13:48 - LMT 1868 N 2
+12:15 - +1215 1946
+12:45 k +1245/+1345
+Z Pacific/Easter -7:17:28 - LMT 1890
+-7:17:28 - EMT 1932 S
+-7 x -07/-06 1982 Mar 14 3u
+-6 x -06/-05
+Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13
+11 VU +11/+12
+Z Pacific/Fakaofo -11:24:56 - LMT 1901
+-11 - -11 2011 D 30
+13 - +13
+Z Pacific/Fiji 11:55:44 - LMT 1915 O 26
+12 FJ +12/+13
+Z Pacific/Galapagos -5:58:24 - LMT 1931
+-5 - -05 1986
+-6 EC -06/-05
+Z Pacific/Gambier -8:59:48 - LMT 1912 O
+-9 - -09
+Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O
+11 - +11
+Z Pacific/Guam -14:21 - LMT 1844 D 31
+9:39 - LMT 1901
+10 - GST 1941 D 10
+9 - +09 1944 Jul 31
+10 Gu G%sT 2000 D 23
+10 - ChST
+Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12
+-10:30 - HST 1933 Ap 30 2
+-10:30 1 HDT 1933 May 21 12
+-10:30 u H%sT 1947 Jun 8 2
+-10 - HST
+Z Pacific/Kanton 0 - -00 1937 Au 31
+-12 - -12 1979 O
+-11 - -11 1994 D 31
+13 - +13
+Z Pacific/Kiritimati -10:29:20 - LMT 1901
+-10:40 - -1040 1979 O
+-10 - -10 1994 D 31
+14 - +14
+Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31
+10:51:56 - LMT 1901
+11 - +11 1914 O
+9 - +09 1919 F
+11 - +11 1937
+10 - +10 1941 Ap
+9 - +09 1945 Au
+11 - +11 1969 O
+12 - +12 1999
+11 - +11
+Z Pacific/Kwajalein 11:9:20 - LMT 1901
+11 - +11 1937
+10 - +10 1941 Ap
+9 - +09 1944 F 6
+11 - +11 1969 O
+-12 - -12 1993 Au 20 24
+12 - +12
+Z Pacific/Marquesas -9:18 - LMT 1912 O
+-9:30 - -0930
+Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15
+11:30 - +1130 1942 Au 29
+9 - +09 1945 S 8
+11:30 - +1130 1979 F 10 2
+12 - +12
+Z Pacific/Niue -11:19:40 - LMT 1952 O 16
+-11:20 - -1120 1964 Jul
+-11 - -11
+Z Pacific/Norfolk 11:11:52 - LMT 1901
+11:12 - +1112 1951
+11:30 - +1130 1974 O 27 2s
+11:30 1 +1230 1975 Mar 2 2s
+11:30 - +1130 2015 O 4 2s
+11 - +11 2019 Jul
+11 AN +11/+12
+Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13
+11 NC +11/+12
+Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5
+-11:22:48 - LMT 1911
+-11 - SST
+Z Pacific/Palau -15:2:4 - LMT 1844 D 31
+8:57:56 - LMT 1901
+9 - +09
+Z Pacific/Pitcairn -8:40:20 - LMT 1901
+-8:30 - -0830 1998 Ap 27
+-8 - -08
+Z Pacific/Port_Moresby 9:48:40 - LMT 1880
+9:48:32 - PMMT 1895
+10 - +10
+Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26
+-10:39:4 - LMT 1952 O 16
+-10:30 - -1030 1978 N 12
+-10 CK -10/-0930
+Z Pacific/Tahiti -9:58:16 - LMT 1912 O
+-10 - -10
+Z Pacific/Tarawa 11:32:4 - LMT 1901
+12 - +12
+Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10
+12:20 - +1220 1961
+13 - +13 1999
+13 TO +13/+14
+Z WET 0 E WE%sT
+L Etc/GMT GMT
L Australia/Sydney Australia/ACT
L Australia/Lord_Howe Australia/LHI
L Australia/Sydney Australia/NSW
@@ -4185,7 +4195,6 @@ L America/Puerto_Rico America/Tortola
L Pacific/Port_Moresby Antarctica/DumontDUrville
L Pacific/Auckland Antarctica/McMurdo
L Asia/Riyadh Antarctica/Syowa
-L Asia/Urumqi Antarctica/Vostok
L Europe/Berlin Arctic/Longyearbyen
L Asia/Riyadh Asia/Aden
L Asia/Qatar Asia/Bahrain
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab b/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab
index dbcb61793ee..3fa9306afba 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab
@@ -48,7 +48,7 @@ AR -3124-06411 America/Argentina/Cordoba Argentina (most areas: CB, CC, CN, ER,
AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN)
AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
AR -2649-06513 America/Argentina/Tucuman Tucuman (TM)
-AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH)
+AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
@@ -87,7 +87,7 @@ BN +0456+11455 Asia/Brunei
BO -1630-06809 America/La_Paz
BQ +120903-0681636 America/Kralendijk
BR -0351-03225 America/Noronha Atlantic islands
-BR -0127-04829 America/Belem Para (east); Amapa
+BR -0127-04829 America/Belem Para (east), Amapa
BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB)
BR -0803-03454 America/Recife Pernambuco
BR -0712-04812 America/Araguaina Tocantins
@@ -107,21 +107,21 @@ BT +2728+08939 Asia/Thimphu
BW -2439+02555 Africa/Gaborone
BY +5354+02734 Europe/Minsk
BZ +1730-08812 America/Belize
-CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast)
-CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE
+CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE)
+CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE
CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton)
CA +4606-06447 America/Moncton Atlantic - New Brunswick
CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas)
CA +5125-05707 America/Blanc-Sablon AST - QC (Lower North Shore)
-CA +4339-07923 America/Toronto Eastern - ON, QC (most areas)
+CA +4339-07923 America/Toronto Eastern - ON & QC (most areas)
CA +6344-06828 America/Iqaluit Eastern - NU (most areas)
-CA +484531-0913718 America/Atikokan EST - ON (Atikokan); NU (Coral H)
-CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba
+CA +484531-0913718 America/Atikokan EST - ON (Atikokan), NU (Coral H)
+CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba
CA +744144-0944945 America/Resolute Central - NU (Resolute)
CA +624900-0920459 America/Rankin_Inlet Central - NU (central)
CA +5024-10439 America/Regina CST - SK (most areas)
CA +5017-10750 America/Swift_Current CST - SK (midwest)
-CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W)
+CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W)
CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west)
CA +682059-1334300 America/Inuvik Mountain - NT (west)
CA +4906-11631 America/Creston MST - BC (Creston)
@@ -207,8 +207,8 @@ HT +1832-07220 America/Port-au-Prince
HU +4730+01905 Europe/Budapest
ID -0610+10648 Asia/Jakarta Java, Sumatra
ID -0002+10920 Asia/Pontianak Borneo (west, central)
-ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west)
-ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas
+ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west)
+ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas
IE +5320-00615 Europe/Dublin
IL +314650+0351326 Asia/Jerusalem
IM +5409-00428 Europe/Isle_of_Man
@@ -355,7 +355,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River
RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky
RU +5934+15048 Asia/Magadan MSK+08 - Magadan
RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island
-RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is
+RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is
RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka
RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea
RW -0157+03004 Africa/Kigali
@@ -418,7 +418,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver)
US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural)
US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer)
US +394421-1045903 America/Denver Mountain (most areas)
-US +433649-1161209 America/Boise Mountain - ID (south); OR (east)
+US +433649-1161209 America/Boise Mountain - ID (south), OR (east)
US +332654-1120424 America/Phoenix MST - AZ (except Navajo)
US +340308-1181434 America/Los_Angeles Pacific
US +611305-1495401 America/Anchorage Alaska (most areas)
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab b/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab
index 1f1cecb8485..abd9489753f 100644
--- a/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab
@@ -37,7 +37,7 @@
#country-
#codes coordinates TZ comments
AD +4230+00131 Europe/Andorra
-AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet, Scattered Is
+AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet
AF +3431+06912 Asia/Kabul
AL +4120+01950 Europe/Tirane
AM +4011+04430 Asia/Yerevan
@@ -47,12 +47,13 @@ AQ -6736+06253 Antarctica/Mawson Mawson
AQ -6448-06406 Antarctica/Palmer Palmer
AQ -6734-06808 Antarctica/Rothera Rothera
AQ -720041+0023206 Antarctica/Troll Troll
+AQ -7824+10654 Antarctica/Vostok Vostok
AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
AR -3124-06411 America/Argentina/Cordoba most areas: CB, CC, CN, ER, FM, MN, SE, SF
AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN)
AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
AR -2649-06513 America/Argentina/Tucuman Tucumán (TM)
-AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH)
+AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
@@ -81,7 +82,7 @@ BG +4241+02319 Europe/Sofia
BM +3217-06446 Atlantic/Bermuda
BO -1630-06809 America/La_Paz
BR -0351-03225 America/Noronha Atlantic islands
-BR -0127-04829 America/Belem Pará (east); Amapá
+BR -0127-04829 America/Belem Pará (east), Amapá
BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB)
BR -0803-03454 America/Recife Pernambuco
BR -0712-04812 America/Araguaina Tocantins
@@ -99,19 +100,19 @@ BR -0958-06748 America/Rio_Branco Acre
BT +2728+08939 Asia/Thimphu
BY +5354+02734 Europe/Minsk
BZ +1730-08812 America/Belize
-CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast)
-CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE
+CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE)
+CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE
CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton)
CA +4606-06447 America/Moncton Atlantic - New Brunswick
CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas)
-CA,BS +4339-07923 America/Toronto Eastern - ON, QC (most areas)
+CA,BS +4339-07923 America/Toronto Eastern - ON & QC (most areas)
CA +6344-06828 America/Iqaluit Eastern - NU (most areas)
-CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba
+CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba
CA +744144-0944945 America/Resolute Central - NU (Resolute)
CA +624900-0920459 America/Rankin_Inlet Central - NU (central)
CA +5024-10439 America/Regina CST - SK (most areas)
CA +5017-10750 America/Swift_Current CST - SK (midwest)
-CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W)
+CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W)
CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west)
CA +682059-1334300 America/Inuvik Mountain - NT (west)
CA +5546-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
@@ -126,7 +127,7 @@ CL -3327-07040 America/Santiago most of Chile
CL -5309-07055 America/Punta_Arenas Region of Magallanes
CL -2709-10926 Pacific/Easter Easter Island
CN +3114+12128 Asia/Shanghai Beijing Time
-CN,AQ +4348+08735 Asia/Urumqi Xinjiang Time, Vostok
+CN +4348+08735 Asia/Urumqi Xinjiang Time
CO +0436-07405 America/Bogota
CR +0956-08405 America/Costa_Rica
CU +2308-08222 America/Havana
@@ -171,8 +172,8 @@ HT +1832-07220 America/Port-au-Prince
HU +4730+01905 Europe/Budapest
ID -0610+10648 Asia/Jakarta Java, Sumatra
ID -0002+10920 Asia/Pontianak Borneo (west, central)
-ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west)
-ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas
+ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west)
+ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas
IE +5320-00615 Europe/Dublin
IL +314650+0351326 Asia/Jerusalem
IN +2232+08822 Asia/Kolkata
@@ -251,7 +252,7 @@ PK +2452+06703 Asia/Karachi
PL +5215+02100 Europe/Warsaw
PM +4703-05620 America/Miquelon
PN -2504-13005 Pacific/Pitcairn
-PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST
+PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST - QC (Lower North Shore)
PS +3130+03428 Asia/Gaza Gaza Strip
PS +313200+0350542 Asia/Hebron West Bank
PT +3843-00908 Europe/Lisbon Portugal (mainland)
@@ -287,7 +288,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River
RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky
RU +5934+15048 Asia/Magadan MSK+08 - Magadan
RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island
-RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is
+RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is
RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka
RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea
SA,AQ,KW,YE +2438+04643 Asia/Riyadh Syowa
@@ -329,7 +330,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver)
US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural)
US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer)
US +394421-1045903 America/Denver Mountain (most areas)
-US +433649-1161209 America/Boise Mountain - ID (south); OR (east)
+US +433649-1161209 America/Boise Mountain - ID (south), OR (east)
US,CA +332654-1120424 America/Phoenix MST - AZ (most areas), Creston BC
US +340308-1181434 America/Los_Angeles Pacific
US +611305-1495401 America/Anchorage Alaska (most areas)
diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/zonenow.tab b/contrib/python/pytz/py2/pytz/zoneinfo/zonenow.tab
new file mode 100644
index 00000000000..b6f2910956f
--- /dev/null
+++ b/contrib/python/pytz/py2/pytz/zoneinfo/zonenow.tab
@@ -0,0 +1,303 @@
+# tzdb timezone descriptions, for users who do not care about old timestamps
+#
+# This file is in the public domain.
+#
+# From Paul Eggert (2023-12-18):
+# This file contains a table where each row stands for a timezone
+# where civil timestamps are predicted to agree from now on.
+# This file is like zone1970.tab (see zone1970.tab's coments),
+# but with the following changes:
+#
+# 1. Each timezone corresponds to a set of clocks that are planned
+# to agree from now on. This is a larger set of clocks than in
+# zone1970.tab, where each timezone's clocks must agree from 1970 on.
+# 2. The first column is irrelevant and ignored.
+# 3. The table is sorted in a different way:
+# first by standard time UTC offset;
+# then, if DST is used, by daylight saving UTC offset;
+# then by time zone abbreviation.
+# 4. Every timezone has a nonempty comments column, with wording
+# distinguishing the timezone only from other timezones with the
+# same UTC offset at some point during the year.
+#
+# The format of this table is experimental, and may change in future versions.
+#
+# This table is intended as an aid for users, to help them select timezones
+# appropriate for their practical needs. It is not intended to take or
+# endorse any position on legal or territorial claims.
+#
+#XX coordinates TZ comments
+#
+# -11 - SST
+XX -1416-17042 Pacific/Pago_Pago Midway; Samoa ("SST")
+#
+# -11
+XX -1901-16955 Pacific/Niue Niue
+#
+# -10 - HST
+XX +211825-1575130 Pacific/Honolulu Hawaii ("HST")
+#
+# -10
+XX -1732-14934 Pacific/Tahiti Tahiti; Cook Islands
+#
+# -10/-09 - HST / HDT (North America DST)
+XX +515248-1763929 America/Adak western Aleutians in Alaska ("HST/HDT")
+#
+# -09:30
+XX -0900-13930 Pacific/Marquesas Marquesas
+#
+# -09
+XX -2308-13457 Pacific/Gambier Gambier
+#
+# -09/-08 - AKST/AKDT (North America DST)
+XX +611305-1495401 America/Anchorage most of Alaska ("AKST/AKDT")
+#
+# -08
+XX -2504-13005 Pacific/Pitcairn Pitcairn
+#
+# -08/-07 - PST/PDT (North America DST)
+XX +340308-1181434 America/Los_Angeles Pacific ("PST/PDT") - US & Canada; Mexico near US border
+#
+# -07 - MST
+XX +332654-1120424 America/Phoenix Mountain Standard ("MST") - Arizona; western Mexico; Yukon
+#
+# -07/-06 - MST/MDT (North America DST)
+XX +394421-1045903 America/Denver Mountain ("MST/MDT") - US & Canada; Mexico near US border
+#
+# -06
+XX -0054-08936 Pacific/Galapagos Galápagos
+#
+# -06 - CST
+XX +1924-09909 America/Mexico_City Central Standard ("CST") - Saskatchewan; central Mexico; Central America
+#
+# -06/-05 (Chile DST)
+XX -2709-10926 Pacific/Easter Easter Island
+#
+# -06/-05 - CST/CDT (North America DST)
+XX +415100-0873900 America/Chicago Central ("CST/CDT") - US & Canada; Mexico near US border
+#
+# -05
+XX -1203-07703 America/Lima eastern South America
+#
+# -05 - EST
+XX +175805-0764736 America/Jamaica Eastern Standard ("EST") - Caymans; Jamaica; eastern Mexico; Panama
+#
+# -05/-04 - CST/CDT (Cuba DST)
+XX +2308-08222 America/Havana Cuba
+#
+# -05/-04 - EST/EDT (North America DST)
+XX +404251-0740023 America/New_York Eastern ("EST/EDT") - US & Canada
+#
+# -04
+XX +1030-06656 America/Caracas western South America
+#
+# -04 - AST
+XX +1828-06954 America/Santo_Domingo Atlantic Standard ("AST") - eastern Caribbean
+#
+# -04/-03 (Chile DST)
+XX -3327-07040 America/Santiago most of Chile
+#
+# -04/-03 (Paraguay DST)
+XX -2516-05740 America/Asuncion Paraguay
+#
+# -04/-03 - AST/ADT (North America DST)
+XX +4439-06336 America/Halifax Atlantic ("AST/ADT") - Canada; Bermuda
+#
+# -03:30/-02:30 - NST/NDT (North America DST)
+XX +4734-05243 America/St_Johns Newfoundland ("NST/NDT")
+#
+# -03
+XX -2332-04637 America/Sao_Paulo eastern South America
+#
+# -03/-02 (North America DST)
+XX +4703-05620 America/Miquelon St Pierre & Miquelon
+#
+# -02
+XX -0351-03225 America/Noronha Fernando de Noronha; South Georgia
+#
+# -02/-01 (EU DST)
+XX +6411-05144 America/Nuuk most of Greenland
+#
+# -01
+XX +1455-02331 Atlantic/Cape_Verde Cape Verde
+#
+# -01/+00 (EU DST)
+XX +3744-02540 Atlantic/Azores Azores
+# -01/+00 (EU DST) until 2024-03-31; then -02/-01 (EU DST)
+XX +7029-02158 America/Scoresbysund Ittoqqortoormiit
+#
+# +00 - GMT
+XX +0519-00402 Africa/Abidjan far western Africa; Iceland ("GMT")
+#
+# +00/+01 - GMT/BST (EU DST)
+XX +513030-0000731 Europe/London United Kingdom ("GMT/BST")
+#
+# +00/+01 - WET/WEST (EU DST)
+XX +3843-00908 Europe/Lisbon western Europe ("WET/WEST")
+#
+# +00/+02 - Troll DST
+XX -720041+0023206 Antarctica/Troll Troll Station in Antarctica
+#
+# +01 - CET
+XX +3647+00303 Africa/Algiers Algeria, Tunisia ("CET")
+#
+# +01 - WAT
+XX +0627+00324 Africa/Lagos western Africa ("WAT")
+#
+# +01/+00 - IST/GMT (EU DST in reverse)
+XX +5320-00615 Europe/Dublin Ireland ("IST/GMT")
+#
+# +01/+00 - (Morocco DST)
+XX +3339-00735 Africa/Casablanca Morocco
+#
+# +01/+02 - CET/CEST (EU DST)
+XX +4852+00220 Europe/Paris central Europe ("CET/CEST")
+#
+# +02 - CAT
+XX -2558+03235 Africa/Maputo central Africa ("CAT")
+#
+# +02 - EET
+XX +3254+01311 Africa/Tripoli Libya; Kaliningrad ("EET")
+#
+# +02 - SAST
+XX -2615+02800 Africa/Johannesburg southern Africa ("SAST")
+#
+# +02/+03 - EET/EEST (EU DST)
+XX +3758+02343 Europe/Athens eastern Europe ("EET/EEST")
+#
+# +02/+03 - EET/EEST (Egypt DST)
+XX +3003+03115 Africa/Cairo Egypt
+#
+# +02/+03 - EET/EEST (Lebanon DST)
+XX +3353+03530 Asia/Beirut Lebanon
+#
+# +02/+03 - EET/EEST (Moldova DST)
+XX +4700+02850 Europe/Chisinau Moldova
+#
+# +02/+03 - EET/EEST (Palestine DST)
+XX +3130+03428 Asia/Gaza Palestine
+#
+# +02/+03 - IST/IDT (Israel DST)
+XX +314650+0351326 Asia/Jerusalem Israel
+#
+# +03
+XX +4101+02858 Europe/Istanbul Near East; Belarus
+#
+# +03 - EAT
+XX -0117+03649 Africa/Nairobi eastern Africa ("EAT")
+#
+# +03 - MSK
+XX +554521+0373704 Europe/Moscow Moscow ("MSK")
+#
+# +03:30
+XX +3540+05126 Asia/Tehran Iran
+#
+# +04
+XX +2518+05518 Asia/Dubai Russia; Caucasus; Persian Gulf; Seychelles; Réunion
+#
+# +04:30
+XX +3431+06912 Asia/Kabul Afghanistan
+#
+# +05
+XX +4120+06918 Asia/Tashkent Russia; west Kazakhstan; Tajikistan; Turkmenistan; Uzbekistan; Maldives
+#
+# +05 - PKT
+XX +2452+06703 Asia/Karachi Pakistan ("PKT")
+#
+# +05:30
+XX +0656+07951 Asia/Colombo Sri Lanka
+#
+# +05:30 - IST
+XX +2232+08822 Asia/Kolkata India ("IST")
+#
+# +05:45
+XX +2743+08519 Asia/Kathmandu Nepal
+#
+# +06
+XX +2343+09025 Asia/Dhaka Russia; Kyrgyzstan; Bhutan; Bangladesh; Chagos
+# +06 until 2024-03-01; then +05
+XX +4315+07657 Asia/Almaty Kazakhstan (except western areas)
+#
+# +06:30
+XX +1647+09610 Asia/Yangon Myanmar; Cocos
+#
+# +07
+XX +1345+10031 Asia/Bangkok Russia; Indochina; Christmas Island
+#
+# +07 - WIB
+XX -0610+10648 Asia/Jakarta Indonesia ("WIB")
+#
+# +08
+XX +0117+10351 Asia/Singapore Russia; Brunei; Malaysia; Singapore
+#
+# +08 - AWST
+XX -3157+11551 Australia/Perth Western Australia ("AWST")
+#
+# +08 - CST
+XX +3114+12128 Asia/Shanghai China ("CST")
+#
+# +08 - HKT
+XX +2217+11409 Asia/Hong_Kong Hong Kong ("HKT")
+#
+# +08 - PHT
+XX +1435+12100 Asia/Manila Philippines ("PHT")
+#
+# +08 - WITA
+XX -0507+11924 Asia/Makassar Indonesia ("WITA")
+#
+# +08:45
+XX -3143+12852 Australia/Eucla Eucla
+#
+# +09
+XX +5203+11328 Asia/Chita Russia; Palau; East Timor
+#
+# +09 - JST
+XX +353916+1394441 Asia/Tokyo Japan ("JST")
+#
+# +09 - KST
+XX +3733+12658 Asia/Seoul Korea ("KST")
+#
+# +09 - WIT
+XX -0232+14042 Asia/Jayapura Indonesia ("WIT")
+#
+# +09:30 - ACST
+XX -1228+13050 Australia/Darwin Northern Territory ("ACST")
+#
+# +09:30/+10:30 - ACST/ACDT (Australia DST)
+XX -3455+13835 Australia/Adelaide South Australia ("ACST/ACDT")
+#
+# +10
+XX +4310+13156 Asia/Vladivostok Russia; Yap; Chuuk; Papua New Guinea; Dumont d'Urville
+#
+# +10 - AEST
+XX -2728+15302 Australia/Brisbane Queensland ("AEST")
+#
+# +10 - ChST
+XX +1328+14445 Pacific/Guam Mariana Islands ("ChST")
+#
+# +10/+11 - AEST/AEDT (Australia DST)
+XX -3352+15113 Australia/Sydney southeast Australia ("AEST/AEDT")
+#
+# +10:30/+11
+XX -3133+15905 Australia/Lord_Howe Lord Howe Island
+#
+# +11
+XX -0613+15534 Pacific/Bougainville Russia; Kosrae; Bougainville; Solomons
+#
+# +11/+12 (Australia DST)
+XX -2903+16758 Pacific/Norfolk Norfolk Island
+#
+# +12
+XX +5301+15839 Asia/Kamchatka Russia; Tuvalu; Fiji; etc.
+#
+# +12/+13 (New Zealand DST)
+XX -3652+17446 Pacific/Auckland New Zealand ("NZST/NZDT")
+#
+# +12:45/+13:45 (Chatham DST)
+XX -4357-17633 Pacific/Chatham Chatham Islands
+#
+# +13
+XX -210800-1751200 Pacific/Tongatapu Kanton; Tokelau; Samoa (western); Tonga
+#
+# +14
+XX +0152-15720 Pacific/Kiritimati Kiritimati
diff --git a/contrib/python/pytz/py2/ya.make b/contrib/python/pytz/py2/ya.make
index b34013640c8..d69a643b225 100644
--- a/contrib/python/pytz/py2/ya.make
+++ b/contrib/python/pytz/py2/ya.make
@@ -2,7 +2,7 @@
PY2_LIBRARY()
-VERSION(2023.3.post1)
+VERSION(2024.1)
LICENSE(MIT)
@@ -628,6 +628,7 @@ RESOURCE_FILES(
pytz/zoneinfo/tzdata.zi
pytz/zoneinfo/zone.tab
pytz/zoneinfo/zone1970.tab
+ pytz/zoneinfo/zonenow.tab
)
END()
diff --git a/contrib/python/pytz/py3/.dist-info/METADATA b/contrib/python/pytz/py3/.dist-info/METADATA
index 9aec2fcc9b4..2cb10460745 100644
--- a/contrib/python/pytz/py3/.dist-info/METADATA
+++ b/contrib/python/pytz/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pytz
-Version: 2023.3.post1
+Version: 2024.1
Summary: World timezone definitions, modern and historical
Home-page: http://pythonhosted.org/pytz
Author: Stuart Bishop
@@ -36,6 +36,7 @@ Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
+License-File: LICENSE.txt
pytz - World Timezone Definitions for Python
============================================
diff --git a/contrib/python/pytz/py3/pytz/__init__.py b/contrib/python/pytz/py3/pytz/__init__.py
index f975943bc7a..55c1f965673 100644
--- a/contrib/python/pytz/py3/pytz/__init__.py
+++ b/contrib/python/pytz/py3/pytz/__init__.py
@@ -22,8 +22,8 @@ from pytz.tzfile import build_tzinfo
# The IANA (nee Olson) database is updated several times a year.
-OLSON_VERSION = '2023c'
-VERSION = '2023.3.post1' # pip compatible version number.
+OLSON_VERSION = '2024a'
+VERSION = '2024.1' # pip compatible version number.
__version__ = VERSION
OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling
diff --git a/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py b/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py
index 7d74920e135..000daabe86c 100644
--- a/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py
+++ b/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py
@@ -27,8 +27,8 @@ from pytz.tzinfo import DstTzInfo, StaticTzInfo # noqa
# I test for expected version to ensure the correct version of pytz is
# actually being tested.
-EXPECTED_VERSION = '2023.3.post1'
-EXPECTED_OLSON_VERSION = '2023c'
+EXPECTED_VERSION = '2024.1'
+EXPECTED_OLSON_VERSION = '2024a'
fmt = '%Y-%m-%d %H:%M:%S %Z%z'
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab b/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab
index adb7934aadf..29958cf12a9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon b/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon
index 5eccd861071..f780ea990ff 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal b/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk
index adb7934aadf..29958cf12a9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund b/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund
index 286d13216eb..9bf411ef5ad 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay b/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto b/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey
index 4b98133d7af..586a7653ef2 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok
index 62bdcac14db..016e06b1bbc 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty
index 91c916a3a5d..855abbd6e3e 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza
index c9b2ff90823..dd5781e8ae2 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron
index 64194fd85c6..a64fc9e7b25 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh
index a213d290e1a..9c45ed991a2 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay
index f8baf676496..2ee9ef7e985 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon
index a213d290e1a..9c45ed991a2 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern b/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern
index 6752c5b0528..170137333f9 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern
Binary files differ
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab b/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab
index be3348d11a7..402c015ec6b 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab
@@ -3,17 +3,22 @@
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
#
-# From Paul Eggert (2022-11-18):
+# From Paul Eggert (2023-09-06):
# This file contains a table of two-letter country codes. Columns are
# separated by a single tab. Lines beginning with '#' are comments.
# All text uses UTF-8 encoding. The columns of the table are as follows:
#
# 1. ISO 3166-1 alpha-2 country code, current as of
-# ISO 3166-1 N1087 (2022-09-02). See: Updates on ISO 3166-1
-# https://isotc.iso.org/livelink/livelink/Open/16944257
-# 2. The usual English name for the coded region,
-# chosen so that alphabetic sorting of subsets produces helpful lists.
-# This is not the same as the English name in the ISO 3166 tables.
+# ISO/TC 46 N1108 (2023-04-05). See: ISO/TC 46 Documents
+# https://www.iso.org/committee/48750.html?view=documents
+# 2. The usual English name for the coded region. This sometimes
+# departs from ISO-listed names, sometimes so that sorted subsets
+# of names are useful (e.g., "Samoa (American)" and "Samoa
+# (western)" rather than "American Samoa" and "Samoa"),
+# sometimes to avoid confusion among non-experts (e.g.,
+# "Czech Republic" and "Turkey" rather than "Czechia" and "Türkiye"),
+# and sometimes to omit needless detail or churn (e.g., "Netherlands"
+# rather than "Netherlands (the)" or "Netherlands (Kingdom of the)").
#
# The table is sorted by country code.
#
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds b/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds
index a6a170aa702..ce150bfe0dc 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds
@@ -3,13 +3,10 @@
# This file is in the public domain.
# This file is generated automatically from the data in the public-domain
-# NIST format leap-seconds.list file, which can be copied from
-# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>
-# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>.
-# The NIST file is used instead of its IERS upstream counterpart
+# NIST/IERS format leap-seconds.list file, which can be copied from
# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>
-# because under US law the NIST file is public domain
-# whereas the IERS file's copyright and license status is unclear.
+# or, in a variant with different comments, from
+# <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>.
# For more about leap-seconds.list, please see
# The NTP Timescale and Leap Seconds
# <https://www.eecis.udel.edu/~mills/leap.html>.
@@ -72,11 +69,11 @@ Leap 2016 Dec 31 23:59:60 + S
# Any additional leap seconds will come after this.
# This Expires line is commented out for now,
# so that pre-2020a zic implementations do not reject this file.
-#Expires 2023 Dec 28 00:00:00
+#Expires 2024 Dec 28 00:00:00
# POSIX timestamps for the data in this file:
-#updated 1467936000 (2016-07-08 00:00:00 UTC)
-#expires 1703721600 (2023-12-28 00:00:00 UTC)
+#updated 1704708379 (2024-01-08 10:06:19 UTC)
+#expires 1735344000 (2024-12-28 00:00:00 UTC)
-# Updated through IERS Bulletin C65
-# File expires on: 28 December 2023
+# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
+# File expires on 28 December 2024
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi b/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi
index 23d99be4535..b5a03be786d 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi
@@ -1,4 +1,4 @@
-# version unknown-dirty
+# version unknown
# This zic input file is in the public domain.
R d 1916 o - Jun 14 23s 1 S
R d 1916 1919 - O Su>=1 23s 0 -
@@ -22,27 +22,6 @@ R d 1978 o - Mar 24 1 1 S
R d 1978 o - S 22 3 0 -
R d 1980 o - Ap 25 0 1 S
R d 1980 o - O 31 2 0 -
-Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16
-0:9:21 - PMT 1911 Mar 11
-0 d WE%sT 1940 F 25 2
-1 d CE%sT 1946 O 7
-0 - WET 1956 Ja 29
-1 - CET 1963 Ap 14
-0 d WE%sT 1977 O 21
-1 d CE%sT 1979 O 26
-0 d WE%sT 1981 May
-1 - CET
-Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u
--2 - -02 1942 S
--2 1 -01 1945 O 15
--2 - -02 1975 N 25 2
--1 - -01
-Z Africa/Ndjamena 1:0:12 - LMT 1912
-1 - WAT 1979 O 14
-1 1 WAST 1980 Mar 8
-1 - WAT
-Z Africa/Abidjan -0:16:8 - LMT 1912
-0 - GMT
R K 1940 o - Jul 15 0 1 S
R K 1940 o - O 1 0 0 -
R K 1941 o - Ap 15 0 1 S
@@ -77,21 +56,6 @@ R K 2014 o - Jul 31 24 1 S
R K 2014 o - S lastTh 24 0 -
R K 2023 ma - Ap lastF 0 1 S
R K 2023 ma - O lastTh 24 0 -
-Z Africa/Cairo 2:5:9 - LMT 1900 O
-2 K EE%sT
-Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u
--1 - -01 1975
-0 - GMT
-Z Africa/Nairobi 2:27:16 - LMT 1908 May
-2:30 - +0230 1928 Jun 30 24
-3 - EAT 1930 Ja 4 24
-2:30 - +0230 1936 D 31 24
-2:45 - +0245 1942 Jul 31 24
-3 - EAT
-Z Africa/Monrovia -0:43:8 - LMT 1882
--0:43:8 - MMT 1919 Mar
--0:44:30 - MMT 1972 Ja 7
-0 - GMT
R L 1951 o - O 14 2 1 S
R L 1952 o - Ja 1 0 0 -
R L 1953 o - O 9 2 1 S
@@ -109,21 +73,10 @@ R L 1997 o - Ap 4 0 1 S
R L 1997 o - O 4 0 0 -
R L 2013 o - Mar lastF 1 1 S
R L 2013 o - O lastF 2 0 -
-Z Africa/Tripoli 0:52:44 - LMT 1920
-1 L CE%sT 1959
-2 - EET 1982
-1 L CE%sT 1990 May 4
-2 - EET 1996 S 30
-1 L CE%sT 1997 O 4
-2 - EET 2012 N 10 2
-1 L CE%sT 2013 O 25 2
-2 - EET
R MU 1982 o - O 10 0 1 -
R MU 1983 o - Mar 21 0 0 -
R MU 2008 o - O lastSu 2 1 -
R MU 2009 o - Mar lastSu 2 0 -
-Z Indian/Mauritius 3:50 - LMT 1907
-4 MU +04/+05
R M 1939 o - S 12 0 1 -
R M 1939 o - N 19 0 0 -
R M 1940 o - F 25 0 1 -
@@ -307,53 +260,15 @@ R M 2086 o - Ap 14 3 -1 -
R M 2086 o - May 19 2 0 -
R M 2087 o - Mar 30 3 -1 -
R M 2087 o - May 11 2 0 -
-Z Africa/Casablanca -0:30:20 - LMT 1913 O 26
-0 M +00/+01 1984 Mar 16
-1 - +01 1986
-0 M +00/+01 2018 O 28 3
-1 M +01/+00
-Z Africa/El_Aaiun -0:52:48 - LMT 1934
--1 - -01 1976 Ap 14
-0 M +00/+01 2018 O 28 3
-1 M +01/+00
-Z Africa/Maputo 2:10:20 - LMT 1903 Mar
-2 - CAT
R NA 1994 o - Mar 21 0 -1 WAT
R NA 1994 2017 - S Su>=1 2 0 CAT
R NA 1995 2017 - Ap Su>=1 2 -1 WAT
-Z Africa/Windhoek 1:8:24 - LMT 1892 F 8
-1:30 - +0130 1903 Mar
-2 - SAST 1942 S 20 2
-2 1 SAST 1943 Mar 21 2
-2 - SAST 1990 Mar 21
-2 NA %s
-Z Africa/Lagos 0:13:35 - LMT 1905 Jul
-0 - GMT 1908 Jul
-0:13:35 - LMT 1914
-0:30 - +0030 1919 S
-1 - WAT
-Z Africa/Sao_Tome 0:26:56 - LMT 1884
--0:36:45 - LMT 1912 Ja 1 0u
-0 - GMT 2018 Ja 1 1
-1 - WAT 2019 Ja 1 2
-0 - GMT
R SA 1942 1943 - S Su>=15 2 1 -
R SA 1943 1944 - Mar Su>=15 2 0 -
-Z Africa/Johannesburg 1:52 - LMT 1892 F 8
-1:30 - SAST 1903 Mar
-2 SA SAST
R SD 1970 o - May 1 0 1 S
R SD 1970 1985 - O 15 0 0 -
R SD 1971 o - Ap 30 0 1 S
R SD 1972 1985 - Ap lastSu 0 1 S
-Z Africa/Khartoum 2:10:8 - LMT 1931
-2 SD CA%sT 2000 Ja 15 12
-3 - EAT 2017 N
-2 - CAT
-Z Africa/Juba 2:6:28 - LMT 1931
-2 SD CA%sT 2000 Ja 15 12
-3 - EAT 2021 F
-2 - CAT
R n 1939 o - Ap 15 23s 1 S
R n 1939 o - N 18 23s 0 -
R n 1940 o - F 25 23s 1 S
@@ -379,80 +294,14 @@ R n 2005 o - May 1 0s 1 S
R n 2005 o - S 30 1s 0 -
R n 2006 2008 - Mar lastSu 2s 1 S
R n 2006 2008 - O lastSu 2s 0 -
-Z Africa/Tunis 0:40:44 - LMT 1881 May 12
-0:9:21 - PMT 1911 Mar 11
-1 n CE%sT
-Z Antarctica/Casey 0 - -00 1969
-8 - +08 2009 O 18 2
-11 - +11 2010 Mar 5 2
-8 - +08 2011 O 28 2
-11 - +11 2012 F 21 17u
-8 - +08 2016 O 22
-11 - +11 2018 Mar 11 4
-8 - +08 2018 O 7 4
-11 - +11 2019 Mar 17 3
-8 - +08 2019 O 4 3
-11 - +11 2020 Mar 8 3
-8 - +08 2020 O 4 0:1
-11 - +11
-Z Antarctica/Davis 0 - -00 1957 Ja 13
-7 - +07 1964 N
-0 - -00 1969 F
-7 - +07 2009 O 18 2
-5 - +05 2010 Mar 10 20u
-7 - +07 2011 O 28 2
-5 - +05 2012 F 21 20u
-7 - +07
-Z Antarctica/Mawson 0 - -00 1954 F 13
-6 - +06 2009 O 18 2
-5 - +05
R Tr 2005 ma - Mar lastSu 1u 2 +02
R Tr 2004 ma - O lastSu 1u 0 +00
-Z Antarctica/Troll 0 - -00 2005 F 12
-0 Tr %s
-Z Antarctica/Rothera 0 - -00 1976 D
--3 - -03
-Z Asia/Kabul 4:36:48 - LMT 1890
-4 - +04 1945
-4:30 - +0430
R AM 2011 o - Mar lastSu 2s 1 -
R AM 2011 o - O lastSu 2s 0 -
-Z Asia/Yerevan 2:58 - LMT 1924 May 2
-3 - +03 1957 Mar
-4 R +04/+05 1991 Mar 31 2s
-3 R +03/+04 1995 S 24 2s
-4 - +04 1997
-4 R +04/+05 2011
-4 AM +04/+05
R AZ 1997 2015 - Mar lastSu 4 1 -
R AZ 1997 2015 - O lastSu 5 0 -
-Z Asia/Baku 3:19:24 - LMT 1924 May 2
-3 - +03 1957 Mar
-4 R +04/+05 1991 Mar 31 2s
-3 R +03/+04 1992 S lastSu 2s
-4 - +04 1996
-4 E +04/+05 1997
-4 AZ +04/+05
R BD 2009 o - Jun 19 23 1 -
R BD 2009 o - D 31 24 0 -
-Z Asia/Dhaka 6:1:40 - LMT 1890
-5:53:20 - HMT 1941 O
-6:30 - +0630 1942 May 15
-5:30 - +0530 1942 S
-6:30 - +0630 1951 S 30
-6 - +06 2009
-6 BD +06/+07
-Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15
-5:30 - +0530 1987 O
-6 - +06
-Z Indian/Chagos 4:49:40 - LMT 1907
-5 - +05 1996
-6 - +06
-Z Asia/Yangon 6:24:47 - LMT 1880
-6:24:47 - RMT 1920
-6:30 - +0630 1942 May
-9 - +09 1945 May 3
-6:30 - +0630
R Sh 1919 o - Ap 12 24 1 D
R Sh 1919 o - S 30 24 0 S
R Sh 1940 o - Jun 1 0 1 D
@@ -470,11 +319,6 @@ R Sh 1948 1949 - S 30 24 0 S
R CN 1986 o - May 4 2 1 D
R CN 1986 1991 - S Su>=11 2 0 S
R CN 1987 1991 - Ap Su>=11 2 1 D
-Z Asia/Shanghai 8:5:43 - LMT 1901
-8 Sh C%sT 1949 May 28
-8 CN C%sT
-Z Asia/Urumqi 5:50:20 - LMT 1928
-6 - +06
R HK 1946 o - Ap 21 0 1 S
R HK 1946 o - D 1 3:30s 0 -
R HK 1947 o - Ap 13 3:30s 1 S
@@ -489,12 +333,6 @@ R HK 1965 1976 - O Su>=16 3:30 0 -
R HK 1973 o - D 30 3:30 1 S
R HK 1979 o - May 13 3:30 1 S
R HK 1979 o - O 21 3:30 0 -
-Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u
-8 - HKT 1941 Jun 15 3
-8 1 HKST 1941 O 1 4
-8 0:30 HKWT 1941 D 25
-9 - JST 1945 N 18 2
-8 HK HK%sT
R f 1946 o - May 15 0 1 D
R f 1946 o - O 1 0 0 S
R f 1947 o - Ap 15 0 1 D
@@ -510,10 +348,6 @@ R f 1974 1975 - Ap 1 0 1 D
R f 1974 1975 - O 1 0 0 S
R f 1979 o - Jul 1 0 1 D
R f 1979 o - O 1 0 0 S
-Z Asia/Taipei 8:6 - LMT 1896
-8 - CST 1937 O
-9 - JST 1945 S 21 1
-8 f C%sT
R _ 1942 1943 - Ap 30 23 1 -
R _ 1942 o - N 17 23 0 -
R _ 1943 o - S 30 23 0 S
@@ -541,10 +375,6 @@ R _ 1973 o - D 30 3:30 1 D
R _ 1975 1976 - Ap Su>=16 3:30 1 D
R _ 1979 o - May 13 3:30 1 D
R _ 1979 o - O Su>=16 3:30 0 S
-Z Asia/Macau 7:34:10 - LMT 1904 O 30
-8 - CST 1941 D 21 23
-9 _ +09/+10 1945 S 30 24
-8 _ C%sT
R CY 1975 o - Ap 13 0 1 S
R CY 1975 o - O 12 0 0 -
R CY 1976 o - May 15 0 1 S
@@ -554,65 +384,6 @@ R CY 1977 o - S 25 0 0 -
R CY 1978 o - O 2 0 0 -
R CY 1979 1997 - S lastSu 0 0 -
R CY 1981 1998 - Mar lastSu 0 1 S
-Z Asia/Nicosia 2:13:28 - LMT 1921 N 14
-2 CY EE%sT 1998 S
-2 E EE%sT
-Z Asia/Famagusta 2:15:48 - LMT 1921 N 14
-2 CY EE%sT 1998 S
-2 E EE%sT 2016 S 8
-3 - +03 2017 O 29 1u
-2 E EE%sT
-Z Asia/Tbilisi 2:59:11 - LMT 1880
-2:59:11 - TBMT 1924 May 2
-3 - +03 1957 Mar
-4 R +04/+05 1991 Mar 31 2s
-3 R +03/+04 1992
-3 e +03/+04 1994 S lastSu
-4 e +04/+05 1996 O lastSu
-4 1 +05 1997 Mar lastSu
-4 e +04/+05 2004 Jun 27
-3 R +03/+04 2005 Mar lastSu 2
-4 - +04
-Z Asia/Dili 8:22:20 - LMT 1912
-8 - +08 1942 F 21 23
-9 - +09 1976 May 3
-8 - +08 2000 S 17
-9 - +09
-Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28
-5:53:20 - HMT 1870
-5:21:10 - MMT 1906
-5:30 - IST 1941 O
-5:30 1 +0630 1942 May 15
-5:30 - IST 1942 S
-5:30 1 +0630 1945 O 15
-5:30 - IST
-Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10
-7:7:12 - BMT 1923 D 31 16:40u
-7:20 - +0720 1932 N
-7:30 - +0730 1942 Mar 23
-9 - +09 1945 S 23
-7:30 - +0730 1948 May
-8 - +08 1950 May
-7:30 - +0730 1964
-7 - WIB
-Z Asia/Pontianak 7:17:20 - LMT 1908 May
-7:17:20 - PMT 1932 N
-7:30 - +0730 1942 Ja 29
-9 - +09 1945 S 23
-7:30 - +0730 1948 May
-8 - +08 1950 May
-7:30 - +0730 1964
-8 - WITA 1988
-7 - WIB
-Z Asia/Makassar 7:57:36 - LMT 1920
-7:57:36 - MMT 1932 N
-8 - +08 1942 F 9
-9 - +09 1945 S 23
-8 - WITA
-Z Asia/Jayapura 9:22:48 - LMT 1932 N
-9 - +09 1944 S
-9:30 - +0930 1964
-9 - WIT
R i 1910 o - Ja 1 0 0 -
R i 1977 o - Mar 21 23 1 -
R i 1977 o - O 20 24 0 -
@@ -653,11 +424,6 @@ R i 2020 o - Mar 20 24 1 -
R i 2020 o - S 20 24 0 -
R i 2021 2022 - Mar 21 24 1 -
R i 2021 2022 - S 21 24 0 -
-Z Asia/Tehran 3:25:44 - LMT 1916
-3:25:44 - TMT 1935 Jun 13
-3:30 i +0330/+0430 1977 O 20 24
-4 i +04/+05 1979
-3:30 i +0330/+0430
R IQ 1982 o - May 1 0 1 -
R IQ 1982 1984 - O 1 0 0 -
R IQ 1983 o - Mar 31 0 1 -
@@ -666,10 +432,6 @@ R IQ 1985 1990 - S lastSu 1s 0 -
R IQ 1986 1990 - Mar lastSu 1s 1 -
R IQ 1991 2007 - Ap 1 3s 1 -
R IQ 1991 2007 - O 1 3s 0 -
-Z Asia/Baghdad 2:57:40 - LMT 1890
-2:57:36 - BMT 1918
-3 - +03 1982 May
-3 IQ +03/+04
R Z 1940 o - May 31 24u 1 D
R Z 1940 o - S 30 24u 0 S
R Z 1940 o - N 16 24u 1 D
@@ -755,15 +517,10 @@ R Z 2011 o - O 2 2 0 S
R Z 2012 o - S 23 2 0 S
R Z 2013 ma - Mar F>=23 2 1 D
R Z 2013 ma - O lastSu 2 0 S
-Z Asia/Jerusalem 2:20:54 - LMT 1880
-2:20:40 - JMT 1918
-2 Z I%sT
R JP 1948 o - May Sa>=1 24 1 D
R JP 1948 1951 - S Sa>=8 25 0 S
R JP 1949 o - Ap Sa>=1 24 1 D
R JP 1950 1951 - May Sa>=1 24 1 D
-Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u
-9 JP J%sT
R J 1973 o - Jun 6 0 1 S
R J 1973 1975 - O 1 0 0 -
R J 1974 1977 - May 1 0 1 S
@@ -796,83 +553,10 @@ R J 2013 o - D 20 0 0 -
R J 2014 2021 - Mar lastTh 24 1 S
R J 2014 2022 - O lastF 0s 0 -
R J 2022 o - F lastTh 24 1 S
-Z Asia/Amman 2:23:44 - LMT 1931
-2 J EE%sT 2022 O 28 0s
-3 - +03
-Z Asia/Almaty 5:7:48 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 R +05/+06 1992 Ja 19 2s
-6 R +06/+07 2004 O 31 2s
-6 - +06
-Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1991 S 29 2s
-5 R +05/+06 1992 Ja 19 2s
-6 R +06/+07 1992 Mar 29 2s
-5 R +05/+06 2004 O 31 2s
-6 - +06 2018 D 21
-5 - +05
-Z Asia/Qostanay 4:14:28 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 2004 O 31 2s
-6 - +06
-Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 2004 O 31 2s
-5 - +05
-Z Asia/Aqtau 3:21:4 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 1994 S 25 2s
-4 R +04/+05 2004 O 31 2s
-5 - +05
-Z Asia/Atyrau 3:27:44 - LMT 1924 May 2
-3 - +03 1930 Jun 21
-5 - +05 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 1999 Mar 28 2s
-4 R +04/+05 2004 O 31 2s
-5 - +05
-Z Asia/Oral 3:25:24 - LMT 1924 May 2
-3 - +03 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1989 Mar 26 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 1992 Mar 29 2s
-4 R +04/+05 2004 O 31 2s
-5 - +05
R KG 1992 1996 - Ap Su>=7 0s 1 -
R KG 1992 1996 - S lastSu 0 0 -
R KG 1997 2005 - Mar lastSu 2:30 1 -
R KG 1997 2004 - O lastSu 2:30 0 -
-Z Asia/Bishkek 4:58:24 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 R +05/+06 1991 Au 31 2
-5 KG +05/+06 2005 Au 12
-6 - +06
R KR 1948 o - Jun 1 0 1 D
R KR 1948 o - S 12 24 0 S
R KR 1949 o - Ap 3 0 1 D
@@ -887,18 +571,6 @@ R KR 1957 1960 - May Su>=1 0 1 D
R KR 1957 1960 - S Sa>=17 24 0 S
R KR 1987 1988 - May Su>=8 2 1 D
R KR 1987 1988 - O Su>=8 3 0 S
-Z Asia/Seoul 8:27:52 - LMT 1908 Ap
-8:30 - KST 1912
-9 - JST 1945 S 8
-9 KR K%sT 1954 Mar 21
-8:30 KR K%sT 1961 Au 10
-9 KR K%sT
-Z Asia/Pyongyang 8:23 - LMT 1908 Ap
-8:30 - KST 1912
-9 - JST 1945 Au 24
-9 - KST 2015 Au 15
-8:30 - KST 2018 May 4 23:30
-9 - KST
R l 1920 o - Mar 28 0 1 S
R l 1920 o - O 25 0 0 -
R l 1921 o - Ap 3 0 1 S
@@ -923,18 +595,8 @@ R l 1992 o - O 4 0 0 -
R l 1993 ma - Mar lastSu 0 1 S
R l 1993 1998 - S lastSu 0 0 -
R l 1999 ma - O lastSu 0 0 -
-Z Asia/Beirut 2:22 - LMT 1880
-2 l EE%sT
R NB 1935 1941 - S 14 0 0:20 -
R NB 1935 1941 - D 14 0 0 -
-Z Asia/Kuching 7:21:20 - LMT 1926 Mar
-7:30 - +0730 1933
-8 NB +08/+0820 1942 F 16
-9 - +09 1945 S 12
-8 - +08
-Z Indian/Maldives 4:54 - LMT 1880
-4:54 - MMT 1960
-5 - +05
R X 1983 1984 - Ap 1 0 1 -
R X 1983 o - O 1 0 0 -
R X 1985 1998 - Mar lastSu 0 1 -
@@ -944,31 +606,11 @@ R X 2001 2006 - S lastSa 2 0 -
R X 2002 2006 - Mar lastSa 2 1 -
R X 2015 2016 - Mar lastSa 2 1 -
R X 2015 2016 - S lastSa 0 0 -
-Z Asia/Hovd 6:6:36 - LMT 1905 Au
-6 - +06 1978
-7 X +07/+08
-Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au
-7 - +07 1978
-8 X +08/+09
-Z Asia/Choibalsan 7:38 - LMT 1905 Au
-7 - +07 1978
-8 - +08 1983 Ap
-9 X +09/+10 2008 Mar 31
-8 X +08/+09
-Z Asia/Kathmandu 5:41:16 - LMT 1920
-5:30 - +0530 1986
-5:45 - +0545
R PK 2002 o - Ap Su>=2 0 1 S
R PK 2002 o - O Su>=2 0 0 -
R PK 2008 o - Jun 1 0 1 S
R PK 2008 2009 - N 1 0 0 -
R PK 2009 o - Ap 15 0 1 S
-Z Asia/Karachi 4:28:12 - LMT 1907
-5:30 - +0530 1942 S
-5:30 1 +0630 1945 O 15
-5:30 - +0530 1951 S 30
-5 - +05 1971 Mar 26
-5 PK PK%sT
R P 1999 2005 - Ap F>=15 0 1 S
R P 1999 2003 - O F>=15 0 0 -
R P 2004 o - O 1 1 0 -
@@ -1001,136 +643,90 @@ R P 2021 o - O 29 1 0 -
R P 2022 o - Mar 27 0 1 S
R P 2022 2035 - O Sa<=30 2 0 -
R P 2023 o - Ap 29 2 1 S
-R P 2024 o - Ap 13 2 1 S
-R P 2025 o - Ap 5 2 1 S
+R P 2024 o - Ap 20 2 1 S
+R P 2025 o - Ap 12 2 1 S
R P 2026 2054 - Mar Sa<=30 2 1 S
R P 2036 o - O 18 2 0 -
R P 2037 o - O 10 2 0 -
R P 2038 o - S 25 2 0 -
R P 2039 o - S 17 2 0 -
-R P 2039 o - O 22 2 1 S
-R P 2039 2067 - O Sa<=30 2 0 -
R P 2040 o - S 1 2 0 -
-R P 2040 o - O 13 2 1 S
+R P 2040 o - O 20 2 1 S
+R P 2040 2067 - O Sa<=30 2 0 -
R P 2041 o - Au 24 2 0 -
-R P 2041 o - S 28 2 1 S
+R P 2041 o - O 5 2 1 S
R P 2042 o - Au 16 2 0 -
-R P 2042 o - S 20 2 1 S
+R P 2042 o - S 27 2 1 S
R P 2043 o - Au 1 2 0 -
-R P 2043 o - S 12 2 1 S
+R P 2043 o - S 19 2 1 S
R P 2044 o - Jul 23 2 0 -
-R P 2044 o - Au 27 2 1 S
+R P 2044 o - S 3 2 1 S
R P 2045 o - Jul 15 2 0 -
-R P 2045 o - Au 19 2 1 S
+R P 2045 o - Au 26 2 1 S
R P 2046 o - Jun 30 2 0 -
-R P 2046 o - Au 11 2 1 S
+R P 2046 o - Au 18 2 1 S
R P 2047 o - Jun 22 2 0 -
-R P 2047 o - Jul 27 2 1 S
+R P 2047 o - Au 3 2 1 S
R P 2048 o - Jun 6 2 0 -
-R P 2048 o - Jul 18 2 1 S
+R P 2048 o - Jul 25 2 1 S
R P 2049 o - May 29 2 0 -
-R P 2049 o - Jul 3 2 1 S
+R P 2049 o - Jul 10 2 1 S
R P 2050 o - May 21 2 0 -
-R P 2050 o - Jun 25 2 1 S
+R P 2050 o - Jul 2 2 1 S
R P 2051 o - May 6 2 0 -
-R P 2051 o - Jun 17 2 1 S
+R P 2051 o - Jun 24 2 1 S
R P 2052 o - Ap 27 2 0 -
-R P 2052 o - Jun 1 2 1 S
+R P 2052 o - Jun 8 2 1 S
R P 2053 o - Ap 12 2 0 -
-R P 2053 o - May 24 2 1 S
+R P 2053 o - May 31 2 1 S
R P 2054 o - Ap 4 2 0 -
-R P 2054 o - May 16 2 1 S
-R P 2055 o - May 1 2 1 S
-R P 2056 o - Ap 22 2 1 S
-R P 2057 o - Ap 7 2 1 S
-R P 2058 ma - Mar Sa<=30 2 1 S
+R P 2054 o - May 23 2 1 S
+R P 2055 o - May 8 2 1 S
+R P 2056 o - Ap 29 2 1 S
+R P 2057 o - Ap 14 2 1 S
+R P 2058 o - Ap 6 2 1 S
+R P 2059 ma - Mar Sa<=30 2 1 S
R P 2068 o - O 20 2 0 -
R P 2069 o - O 12 2 0 -
R P 2070 o - O 4 2 0 -
R P 2071 o - S 19 2 0 -
R P 2072 o - S 10 2 0 -
-R P 2072 o - O 15 2 1 S
+R P 2072 o - O 22 2 1 S
+R P 2072 ma - O Sa<=30 2 0 -
R P 2073 o - S 2 2 0 -
-R P 2073 o - O 7 2 1 S
+R P 2073 o - O 14 2 1 S
R P 2074 o - Au 18 2 0 -
-R P 2074 o - S 29 2 1 S
+R P 2074 o - O 6 2 1 S
R P 2075 o - Au 10 2 0 -
-R P 2075 o - S 14 2 1 S
-R P 2075 ma - O Sa<=30 2 0 -
+R P 2075 o - S 21 2 1 S
R P 2076 o - Jul 25 2 0 -
-R P 2076 o - S 5 2 1 S
+R P 2076 o - S 12 2 1 S
R P 2077 o - Jul 17 2 0 -
-R P 2077 o - Au 28 2 1 S
+R P 2077 o - S 4 2 1 S
R P 2078 o - Jul 9 2 0 -
-R P 2078 o - Au 13 2 1 S
+R P 2078 o - Au 20 2 1 S
R P 2079 o - Jun 24 2 0 -
-R P 2079 o - Au 5 2 1 S
+R P 2079 o - Au 12 2 1 S
R P 2080 o - Jun 15 2 0 -
-R P 2080 o - Jul 20 2 1 S
+R P 2080 o - Jul 27 2 1 S
R P 2081 o - Jun 7 2 0 -
-R P 2081 o - Jul 12 2 1 S
+R P 2081 o - Jul 19 2 1 S
R P 2082 o - May 23 2 0 -
-R P 2082 o - Jul 4 2 1 S
+R P 2082 o - Jul 11 2 1 S
R P 2083 o - May 15 2 0 -
-R P 2083 o - Jun 19 2 1 S
+R P 2083 o - Jun 26 2 1 S
R P 2084 o - Ap 29 2 0 -
-R P 2084 o - Jun 10 2 1 S
+R P 2084 o - Jun 17 2 1 S
R P 2085 o - Ap 21 2 0 -
-R P 2085 o - Jun 2 2 1 S
+R P 2085 o - Jun 9 2 1 S
R P 2086 o - Ap 13 2 0 -
-R P 2086 o - May 18 2 1 S
-Z Asia/Gaza 2:17:52 - LMT 1900 O
-2 Z EET/EEST 1948 May 15
-2 K EE%sT 1967 Jun 5
-2 Z I%sT 1996
-2 J EE%sT 1999
-2 P EE%sT 2008 Au 29
-2 - EET 2008 S
-2 P EE%sT 2010
-2 - EET 2010 Mar 27 0:1
-2 P EE%sT 2011 Au
-2 - EET 2012
-2 P EE%sT
-Z Asia/Hebron 2:20:23 - LMT 1900 O
-2 Z EET/EEST 1948 May 15
-2 K EE%sT 1967 Jun 5
-2 Z I%sT 1996
-2 J EE%sT 1999
-2 P EE%sT
+R P 2086 o - May 25 2 1 S
R PH 1936 o - N 1 0 1 D
R PH 1937 o - F 1 0 0 S
R PH 1954 o - Ap 12 0 1 D
R PH 1954 o - Jul 1 0 0 S
R PH 1978 o - Mar 22 0 1 D
R PH 1978 o - S 21 0 0 S
-Z Asia/Manila -15:56 - LMT 1844 D 31
-8:4 - LMT 1899 May 11
-8 PH P%sT 1942 May
-9 - JST 1944 N
-8 PH P%sT
-Z Asia/Qatar 3:26:8 - LMT 1920
-4 - +04 1972 Jun
-3 - +03
-Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14
-3 - +03
-Z Asia/Singapore 6:55:25 - LMT 1901
-6:55:25 - SMT 1905 Jun
-7 - +07 1933
-7 0:20 +0720 1936
-7:20 - +0720 1941 S
-7:30 - +0730 1942 F 16
-9 - +09 1945 S 12
-7:30 - +0730 1981 D 31 16u
-8 - +08
-Z Asia/Colombo 5:19:24 - LMT 1880
-5:19:32 - MMT 1906
-5:30 - +0530 1942 Ja 5
-5:30 0:30 +06 1942 S
-5:30 1 +0630 1945 O 16 2
-5:30 - +0530 1996 May 25
-6:30 - +0630 1996 O 26 0:30
-6 - +06 2006 Ap 15 0:30
-5:30 - +0530
R S 1920 1923 - Ap Su>=15 2 1 S
R S 1920 1923 - O Su>=1 2 0 -
R S 1962 o - Ap 29 2 1 S
@@ -1172,46 +768,6 @@ R S 2009 o - Mar lastF 0 1 S
R S 2010 2011 - Ap F>=1 0 1 S
R S 2012 2022 - Mar lastF 0 1 S
R S 2009 2022 - O lastF 0 0 -
-Z Asia/Damascus 2:25:12 - LMT 1920
-2 S EE%sT 2022 O 28
-3 - +03
-Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 1 +06 1991 S 9 2s
-5 - +05
-Z Asia/Bangkok 6:42:4 - LMT 1880
-6:42:4 - BMT 1920 Ap
-7 - +07
-Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 R +05/+06 1991 Mar 31 2
-4 R +04/+05 1992 Ja 19 2
-5 - +05
-Z Asia/Dubai 3:41:12 - LMT 1920
-4 - +04
-Z Asia/Samarkand 4:27:53 - LMT 1924 May 2
-4 - +04 1930 Jun 21
-5 - +05 1981 Ap
-5 1 +06 1981 O
-6 - +06 1982 Ap
-5 R +05/+06 1992
-5 - +05
-Z Asia/Tashkent 4:37:11 - LMT 1924 May 2
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2
-5 R +05/+06 1992
-5 - +05
-Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul
-7:6:30 - PLMT 1911 May
-7 - +07 1942 D 31 23
-8 - +08 1945 Mar 14 23
-9 - +09 1945 S 2
-7 - +07 1947 Ap
-8 - +08 1955 Jul
-7 - +07 1959 D 31 23
-8 - +08 1975 Jun 13
-7 - +07
R AU 1917 o - Ja 1 2s 1 D
R AU 1917 o - Mar lastSu 2s 0 S
R AU 1942 o - Ja 1 2s 1 D
@@ -1219,9 +775,6 @@ R AU 1942 o - Mar lastSu 2s 0 S
R AU 1942 o - S 27 2s 1 D
R AU 1943 1944 - Mar lastSu 2s 0 S
R AU 1943 o - O 3 2s 1 D
-Z Australia/Darwin 8:43:20 - LMT 1895 F
-9 - ACST 1899 May
-9:30 AU AC%sT
R AW 1974 o - O lastSu 2s 1 D
R AW 1975 o - Mar Su>=1 2s 0 S
R AW 1983 o - O lastSu 2s 1 D
@@ -1231,25 +784,12 @@ R AW 1992 o - Mar Su>=1 2s 0 S
R AW 2006 o - D 3 2s 1 D
R AW 2007 2009 - Mar lastSu 2s 0 S
R AW 2007 2008 - O lastSu 2s 1 D
-Z Australia/Perth 7:43:24 - LMT 1895 D
-8 AU AW%sT 1943 Jul
-8 AW AW%sT
-Z Australia/Eucla 8:35:28 - LMT 1895 D
-8:45 AU +0845/+0945 1943 Jul
-8:45 AW +0845/+0945
R AQ 1971 o - O lastSu 2s 1 D
R AQ 1972 o - F lastSu 2s 0 S
R AQ 1989 1991 - O lastSu 2s 1 D
R AQ 1990 1992 - Mar Su>=1 2s 0 S
R Ho 1992 1993 - O lastSu 2s 1 D
R Ho 1993 1994 - Mar Su>=1 2s 0 S
-Z Australia/Brisbane 10:12:8 - LMT 1895
-10 AU AE%sT 1971
-10 AQ AE%sT
-Z Australia/Lindeman 9:55:56 - LMT 1895
-10 AU AE%sT 1971
-10 AQ AE%sT 1992 Jul
-10 Ho AE%sT
R AS 1971 1985 - O lastSu 2s 1 D
R AS 1986 o - O 19 2s 1 D
R AS 1987 2007 - O lastSu 2s 1 D
@@ -1265,10 +805,6 @@ R AS 2006 o - Ap 2 2s 0 S
R AS 2007 o - Mar lastSu 2s 0 S
R AS 2008 ma - Ap Su>=1 2s 0 S
R AS 2008 ma - O Su>=1 2s 1 D
-Z Australia/Adelaide 9:14:20 - LMT 1895 F
-9 - ACST 1899 May
-9:30 AU AC%sT 1971
-9:30 AS AC%sT
R AT 1916 o - O Su>=1 2s 1 D
R AT 1917 o - Mar lastSu 2s 0 S
R AT 1917 1918 - O Su>=22 2s 1 D
@@ -1292,10 +828,6 @@ R AT 2001 ma - O Su>=1 2s 1 D
R AT 2006 o - Ap Su>=1 2s 0 S
R AT 2007 o - Mar lastSu 2s 0 S
R AT 2008 ma - Ap Su>=1 2s 0 S
-Z Australia/Hobart 9:49:16 - LMT 1895 S
-10 AT AE%sT 1919 O 24
-10 AU AE%sT 1967
-10 AT AE%sT
R AV 1971 1985 - O lastSu 2s 1 D
R AV 1972 o - F lastSu 2s 0 S
R AV 1973 1985 - Mar Su>=1 2s 0 S
@@ -1310,9 +842,6 @@ R AV 2006 o - Ap Su>=1 2s 0 S
R AV 2007 o - Mar lastSu 2s 0 S
R AV 2008 ma - Ap Su>=1 2s 0 S
R AV 2008 ma - O Su>=1 2s 1 D
-Z Australia/Melbourne 9:39:52 - LMT 1895 F
-10 AU AE%sT 1971
-10 AV AE%sT
R AN 1971 1985 - O lastSu 2s 1 D
R AN 1972 o - F 27 2s 0 S
R AN 1973 1981 - Mar Su>=1 2s 0 S
@@ -1329,15 +858,6 @@ R AN 2006 o - Ap Su>=1 2s 0 S
R AN 2007 o - Mar lastSu 2s 0 S
R AN 2008 ma - Ap Su>=1 2s 0 S
R AN 2008 ma - O Su>=1 2s 1 D
-Z Australia/Sydney 10:4:52 - LMT 1895 F
-10 AU AE%sT 1971
-10 AN AE%sT
-Z Australia/Broken_Hill 9:25:48 - LMT 1895 F
-10 - AEST 1896 Au 23
-9 - ACST 1899 May
-9:30 AU AC%sT 1971
-9:30 AN AC%sT 2000
-9:30 AS AC%sT
R LH 1981 1984 - O lastSu 2 1 -
R LH 1982 1985 - Mar Su>=1 2 0 -
R LH 1985 o - O lastSu 2 0:30 -
@@ -1352,19 +872,6 @@ R LH 2006 o - Ap Su>=1 2 0 -
R LH 2007 o - Mar lastSu 2 0 -
R LH 2008 ma - Ap Su>=1 2 0 -
R LH 2008 ma - O Su>=1 2 0:30 -
-Z Australia/Lord_Howe 10:36:20 - LMT 1895 F
-10 - AEST 1981 Mar
-10:30 LH +1030/+1130 1985 Jul
-10:30 LH +1030/+11
-Z Antarctica/Macquarie 0 - -00 1899 N
-10 - AEST 1916 O 1 2
-10 1 AEDT 1917 F
-10 AU AE%sT 1919 Ap 1 0s
-0 - -00 1948 Mar 25
-10 AU AE%sT 1967
-10 AT AE%sT 2010
-10 1 AEDT 2011
-10 AT AE%sT
R FJ 1998 1999 - N Su>=1 2 1 -
R FJ 1999 2000 - F lastSu 3 0 -
R FJ 2009 o - N 29 2 1 -
@@ -1377,14 +884,6 @@ R FJ 2014 2018 - N Su>=1 2 1 -
R FJ 2015 2021 - Ja Su>=12 3 0 -
R FJ 2019 o - N Su>=8 2 1 -
R FJ 2020 o - D 20 2 1 -
-Z Pacific/Fiji 11:55:44 - LMT 1915 O 26
-12 FJ +12/+13
-Z Pacific/Gambier -8:59:48 - LMT 1912 O
--9 - -09
-Z Pacific/Marquesas -9:18 - LMT 1912 O
--9:30 - -0930
-Z Pacific/Tahiti -9:58:16 - LMT 1912 O
--10 - -10
R Gu 1959 o - Jun 27 2 1 D
R Gu 1961 o - Ja 29 2 0 S
R Gu 1967 o - S 1 2 1 D
@@ -1399,50 +898,10 @@ R Gu 1976 o - May 26 2 1 D
R Gu 1976 o - Au 22 2:1 0 S
R Gu 1977 o - Ap 24 2 1 D
R Gu 1977 o - Au 28 2 0 S
-Z Pacific/Guam -14:21 - LMT 1844 D 31
-9:39 - LMT 1901
-10 - GST 1941 D 10
-9 - +09 1944 Jul 31
-10 Gu G%sT 2000 D 23
-10 - ChST
-Z Pacific/Tarawa 11:32:4 - LMT 1901
-12 - +12
-Z Pacific/Kanton 0 - -00 1937 Au 31
--12 - -12 1979 O
--11 - -11 1994 D 31
-13 - +13
-Z Pacific/Kiritimati -10:29:20 - LMT 1901
--10:40 - -1040 1979 O
--10 - -10 1994 D 31
-14 - +14
-Z Pacific/Kwajalein 11:9:20 - LMT 1901
-11 - +11 1937
-10 - +10 1941 Ap
-9 - +09 1944 F 6
-11 - +11 1969 O
--12 - -12 1993 Au 20 24
-12 - +12
-Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31
-10:51:56 - LMT 1901
-11 - +11 1914 O
-9 - +09 1919 F
-11 - +11 1937
-10 - +10 1941 Ap
-9 - +09 1945 Au
-11 - +11 1969 O
-12 - +12 1999
-11 - +11
-Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15
-11:30 - +1130 1942 Au 29
-9 - +09 1945 S 8
-11:30 - +1130 1979 F 10 2
-12 - +12
R NC 1977 1978 - D Su>=1 0 1 -
R NC 1978 1979 - F 27 0 0 -
R NC 1996 o - D 1 2s 1 -
R NC 1997 o - Mar 2 2s 0 -
-Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13
-11 NC +11/+12
R NZ 1927 o - N 6 2 1 S
R NZ 1928 o - Mar 4 2 0 M
R NZ 1928 1933 - O Su>=8 2 0:30 S
@@ -1468,80 +927,26 @@ R NZ 2007 ma - S lastSu 2s 1 D
R k 2007 ma - S lastSu 2:45s 1 -
R NZ 2008 ma - Ap Su>=1 2s 0 S
R k 2008 ma - Ap Su>=1 2:45s 0 -
-Z Pacific/Auckland 11:39:4 - LMT 1868 N 2
-11:30 NZ NZ%sT 1946
-12 NZ NZ%sT
-Z Pacific/Chatham 12:13:48 - LMT 1868 N 2
-12:15 - +1215 1946
-12:45 k +1245/+1345
R CK 1978 o - N 12 0 0:30 -
R CK 1979 1991 - Mar Su>=1 0 0 -
R CK 1979 1990 - O lastSu 0 0:30 -
-Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26
--10:39:4 - LMT 1952 O 16
--10:30 - -1030 1978 N 12
--10 CK -10/-0930
-Z Pacific/Niue -11:19:40 - LMT 1952 O 16
--11:20 - -1120 1964 Jul
--11 - -11
-Z Pacific/Norfolk 11:11:52 - LMT 1901
-11:12 - +1112 1951
-11:30 - +1130 1974 O 27 2s
-11:30 1 +1230 1975 Mar 2 2s
-11:30 - +1130 2015 O 4 2s
-11 - +11 2019 Jul
-11 AN +11/+12
-Z Pacific/Palau -15:2:4 - LMT 1844 D 31
-8:57:56 - LMT 1901
-9 - +09
-Z Pacific/Port_Moresby 9:48:40 - LMT 1880
-9:48:32 - PMMT 1895
-10 - +10
-Z Pacific/Bougainville 10:22:16 - LMT 1880
-9:48:32 - PMMT 1895
-10 - +10 1942 Jul
-9 - +09 1945 Au 21
-10 - +10 2014 D 28 2
-11 - +11
-Z Pacific/Pitcairn -8:40:20 - LMT 1901
--8:30 - -0830 1998 Ap 27
--8 - -08
-Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5
--11:22:48 - LMT 1911
--11 - SST
R WS 2010 o - S lastSu 0 1 -
R WS 2011 o - Ap Sa>=1 4 0 -
R WS 2011 o - S lastSa 3 1 -
R WS 2012 2021 - Ap Su>=1 4 0 -
R WS 2012 2020 - S lastSu 3 1 -
-Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5
--11:26:56 - LMT 1911
--11:30 - -1130 1950
--11 WS -11/-10 2011 D 29 24
-13 WS +13/+14
-Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O
-11 - +11
-Z Pacific/Fakaofo -11:24:56 - LMT 1901
--11 - -11 2011 D 30
-13 - +13
R TO 1999 o - O 7 2s 1 -
R TO 2000 o - Mar 19 2s 0 -
R TO 2000 2001 - N Su>=1 2 1 -
R TO 2001 2002 - Ja lastSu 2 0 -
R TO 2016 o - N Su>=1 2 1 -
R TO 2017 o - Ja Su>=15 3 0 -
-Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10
-12:20 - +1220 1961
-13 - +13 1999
-13 TO +13/+14
R VU 1973 o - D 22 12u 1 -
R VU 1974 o - Mar 30 12u 0 -
R VU 1983 1991 - S Sa>=22 24 1 -
R VU 1984 1991 - Mar Sa>=22 24 0 -
R VU 1992 1993 - Ja Sa>=22 24 0 -
R VU 1992 o - O Sa>=22 24 1 -
-Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13
-11 VU +11/+12
R G 1916 o - May 21 2s 1 BST
R G 1916 o - O 1 2s 0 GMT
R G 1917 o - Ap 8 2s 1 BST
@@ -1607,11 +1012,6 @@ R G 1972 1980 - O Su>=23 2s 0 GMT
R G 1981 1995 - Mar lastSu 1u 1 BST
R G 1981 1989 - O Su>=23 1u 0 GMT
R G 1990 1995 - O Su>=22 1u 0 GMT
-Z Europe/London -0:1:15 - LMT 1847 D
-0 G %s 1968 O 27
-1 - BST 1971 O 31 2u
-0 G %s 1996
-0 E GMT/BST
R IE 1971 o - O 31 2u -1 -
R IE 1972 1980 - Mar Su>=16 2u 0 -
R IE 1972 1980 - O Su>=23 2u -1 -
@@ -1619,17 +1019,6 @@ R IE 1981 ma - Mar lastSu 1u 0 -
R IE 1981 1989 - O Su>=23 1u -1 -
R IE 1990 1995 - O Su>=22 1u -1 -
R IE 1996 ma - O lastSu 1u -1 -
-Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
--0:25:21 - DMT 1916 May 21 2s
--0:25:21 1 IST 1916 O 1 2s
-0 G %s 1921 D 6
-0 G GMT/IST 1940 F 25 2s
-0 1 IST 1946 O 6 2s
-0 - GMT 1947 Mar 16 2s
-0 1 IST 1947 N 2 2s
-0 - GMT 1948 Ap 18 2s
-0 G GMT/IST 1968 O 27
-1 IE IST/GMT
R E 1977 1980 - Ap Su>=1 1u 1 S
R E 1977 o - S lastSu 1u 0 -
R E 1978 o - O 1 1u 0 -
@@ -1681,10 +1070,6 @@ R R 1981 1983 - O 1 0 0 -
R R 1984 1995 - S lastSu 2s 0 -
R R 1985 2010 - Mar lastSu 2s 1 S
R R 1996 2010 - O lastSu 2s 0 -
-Z WET 0 E WE%sT
-Z CET 1 c CE%sT
-Z MET 1 c ME%sT
-Z EET 2 E EE%sT
R q 1940 o - Jun 16 0 1 S
R q 1942 o - N 2 3 0 -
R q 1943 o - Mar 29 2 1 S
@@ -1710,14 +1095,6 @@ R q 1982 o - O 3 0 0 -
R q 1983 o - Ap 18 0 1 S
R q 1983 o - O 1 0 0 -
R q 1984 o - Ap 1 0 1 S
-Z Europe/Tirane 1:19:20 - LMT 1914
-1 - CET 1940 Jun 16
-1 q CE%sT 1984 Jul
-1 E CE%sT
-Z Europe/Andorra 0:6:4 - LMT 1901
-0 - WET 1946 S 30
-1 - CET 1985 Mar 31 2
-1 E CE%sT
R a 1920 o - Ap 5 2s 1 S
R a 1920 o - S 13 2s 0 -
R a 1946 o - Ap 14 2s 1 S
@@ -1727,23 +1104,6 @@ R a 1947 o - Ap 6 2s 1 S
R a 1948 o - Ap 18 2s 1 S
R a 1980 o - Ap 6 0 1 S
R a 1980 o - S 28 0 0 -
-Z Europe/Vienna 1:5:21 - LMT 1893 Ap
-1 c CE%sT 1920
-1 a CE%sT 1940 Ap 1 2s
-1 c CE%sT 1945 Ap 2 2s
-1 1 CEST 1945 Ap 12 2s
-1 - CET 1946
-1 a CE%sT 1981
-1 E CE%sT
-Z Europe/Minsk 1:50:16 - LMT 1880
-1:50 - MMT 1924 May 2
-2 - EET 1930 Jun 21
-3 - MSK 1941 Jun 28
-1 c CE%sT 1944 Jul 3
-3 R MSK/MSD 1990
-3 - MSK 1991 Mar 31 2s
-2 R EE%sT 2011 Mar 27 2s
-3 - +03
R b 1918 o - Mar 9 0s 1 S
R b 1918 1919 - O Sa>=1 23s 0 -
R b 1919 o - Mar 1 23s 1 S
@@ -1778,87 +1138,27 @@ R b 1945 o - Ap 2 2s 1 S
R b 1945 o - S 16 2s 0 -
R b 1946 o - May 19 2s 1 S
R b 1946 o - O 7 2s 0 -
-Z Europe/Brussels 0:17:30 - LMT 1880
-0:17:30 - BMT 1892 May 1 0:17:30
-0 - WET 1914 N 8
-1 - CET 1916 May
-1 c CE%sT 1918 N 11 11u
-0 b WE%sT 1940 May 20 2s
-1 c CE%sT 1944 S 3
-1 b CE%sT 1977
-1 E CE%sT
R BG 1979 o - Mar 31 23 1 S
R BG 1979 o - O 1 1 0 -
R BG 1980 1982 - Ap Sa>=1 23 1 S
R BG 1980 o - S 29 1 0 -
R BG 1981 o - S 27 2 0 -
-Z Europe/Sofia 1:33:16 - LMT 1880
-1:56:56 - IMT 1894 N 30
-2 - EET 1942 N 2 3
-1 c CE%sT 1945
-1 - CET 1945 Ap 2 3
-2 - EET 1979 Mar 31 23
-2 BG EE%sT 1982 S 26 3
-2 c EE%sT 1991
-2 e EE%sT 1997
-2 E EE%sT
R CZ 1945 o - Ap M>=1 2s 1 S
R CZ 1945 o - O 1 2s 0 -
R CZ 1946 o - May 6 2s 1 S
R CZ 1946 1949 - O Su>=1 2s 0 -
R CZ 1947 1948 - Ap Su>=15 2s 1 S
R CZ 1949 o - Ap 9 2s 1 S
-Z Europe/Prague 0:57:44 - LMT 1850
-0:57:44 - PMT 1891 O
-1 c CE%sT 1945 May 9
-1 CZ CE%sT 1946 D 1 3
-1 -1 GMT 1947 F 23 2
-1 CZ CE%sT 1979
-1 E CE%sT
-Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11
-0 - WET 1981
-0 E WE%sT
R Th 1991 1992 - Mar lastSu 2 1 D
R Th 1991 1992 - S lastSu 2 0 S
R Th 1993 2006 - Ap Su>=1 2 1 D
R Th 1993 2006 - O lastSu 2 0 S
R Th 2007 ma - Mar Su>=8 2 1 D
R Th 2007 ma - N Su>=1 2 0 S
-Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
--3 - -03 1980 Ap 6 2
--3 E -03/-02 1996
-0 - GMT
-Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28
--2 - -02 1980 Ap 6 2
--2 c -02/-01 1981 Mar 29
--1 E -01/+00
-Z America/Nuuk -3:26:56 - LMT 1916 Jul 28
--3 - -03 1980 Ap 6 2
--3 E -03/-02 2023 O 29 1u
--2 E -02/-01
-Z America/Thule -4:35:8 - LMT 1916 Jul 28
--4 Th A%sT
-Z Europe/Tallinn 1:39 - LMT 1880
-1:39 - TMT 1918 F
-1 c CE%sT 1919 Jul
-1:39 - TMT 1921 May
-2 - EET 1940 Au 6
-3 - MSK 1941 S 15
-1 c CE%sT 1944 S 22
-3 R MSK/MSD 1989 Mar 26 2s
-2 1 EEST 1989 S 24 2s
-2 c EE%sT 1998 S 22
-2 E EE%sT 1999 O 31 4
-2 - EET 2002 F 21
-2 E EE%sT
R FI 1942 o - Ap 2 24 1 S
R FI 1942 o - O 4 1 0 -
R FI 1981 1982 - Mar lastSu 2 1 S
R FI 1981 1982 - S lastSu 3 0 -
-Z Europe/Helsinki 1:39:49 - LMT 1878 May 31
-1:39:49 - HMT 1921 May
-2 FI EE%sT 1983
-2 E EE%sT
R F 1916 o - Jun 14 23s 1 S
R F 1916 1919 - O Su>=1 23s 0 -
R F 1917 o - Mar 24 23s 1 S
@@ -1901,13 +1201,6 @@ R F 1945 o - Ap 2 2 2 M
R F 1945 o - S 16 3 0 -
R F 1976 o - Mar 28 1 1 S
R F 1976 o - S 26 1 0 -
-Z Europe/Paris 0:9:21 - LMT 1891 Mar 16
-0:9:21 - PMT 1911 Mar 11
-0 F WE%sT 1940 Jun 14 23
-1 c CE%sT 1944 Au 25
-0 F WE%sT 1945 S 16 3
-1 F CE%sT 1977
-1 E CE%sT
R DE 1946 o - Ap 14 2s 1 S
R DE 1946 o - O 7 2s 0 -
R DE 1947 1949 - O Su>=1 2s 0 -
@@ -1919,15 +1212,6 @@ R DE 1949 o - Ap 10 2s 1 S
R So 1945 o - May 24 2 2 M
R So 1945 o - S 24 3 1 S
R So 1945 o - N 18 2s 0 -
-Z Europe/Berlin 0:53:28 - LMT 1893 Ap
-1 c CE%sT 1945 May 24 2
-1 So CE%sT 1946
-1 DE CE%sT 1980
-1 E CE%sT
-Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2
-0 G %s 1957 Ap 14 2
-1 - CET 1982
-1 E CE%sT
R g 1932 o - Jul 7 0 1 S
R g 1932 o - S 1 0 0 -
R g 1941 o - Ap 7 0 1 S
@@ -1947,12 +1231,6 @@ R g 1979 o - Ap 1 9 1 S
R g 1979 o - S 29 2 0 -
R g 1980 o - Ap 1 0 1 S
R g 1980 o - S 28 0 0 -
-Z Europe/Athens 1:34:52 - LMT 1895 S 14
-1:34:52 - AMT 1916 Jul 28 0:1
-2 g EE%sT 1941 Ap 30
-1 g CE%sT 1944 Ap 4
-2 g EE%sT 1981
-2 E EE%sT
R h 1918 1919 - Ap 15 2 1 S
R h 1918 1920 - S M>=15 3 0 -
R h 1920 o - Ap 5 2 1 S
@@ -1972,12 +1250,6 @@ R h 1980 o - Ap 6 0 1 S
R h 1980 o - S 28 1 0 -
R h 1981 1983 - Mar lastSu 0 1 S
R h 1981 1983 - S lastSu 1 0 -
-Z Europe/Budapest 1:16:20 - LMT 1890 N
-1 c CE%sT 1918
-1 h CE%sT 1941 Ap 7 23
-1 c CE%sT 1945
-1 h CE%sT 1984
-1 E CE%sT
R I 1916 o - Jun 3 24 1 S
R I 1916 1917 - S 30 24 0 -
R I 1917 o - Mar 31 24 1 S
@@ -2019,44 +1291,8 @@ R I 1976 o - May 30 0s 1 S
R I 1977 1979 - May Su>=22 0s 1 S
R I 1978 o - O 1 0s 0 -
R I 1979 o - S 30 0s 0 -
-Z Europe/Rome 0:49:56 - LMT 1866 D 12
-0:49:56 - RMT 1893 O 31 23u
-1 I CE%sT 1943 S 10
-1 c CE%sT 1944 Jun 4
-1 I CE%sT 1980
-1 E CE%sT
R LV 1989 1996 - Mar lastSu 2s 1 S
R LV 1989 1996 - S lastSu 2s 0 -
-Z Europe/Riga 1:36:34 - LMT 1880
-1:36:34 - RMT 1918 Ap 15 2
-1:36:34 1 LST 1918 S 16 3
-1:36:34 - RMT 1919 Ap 1 2
-1:36:34 1 LST 1919 May 22 3
-1:36:34 - RMT 1926 May 11
-2 - EET 1940 Au 5
-3 - MSK 1941 Jul
-1 c CE%sT 1944 O 13
-3 R MSK/MSD 1989 Mar lastSu 2s
-2 1 EEST 1989 S lastSu 2s
-2 LV EE%sT 1997 Ja 21
-2 E EE%sT 2000 F 29
-2 - EET 2001 Ja 2
-2 E EE%sT
-Z Europe/Vilnius 1:41:16 - LMT 1880
-1:24 - WMT 1917
-1:35:36 - KMT 1919 O 10
-1 - CET 1920 Jul 12
-2 - EET 1920 O 9
-1 - CET 1940 Au 3
-3 - MSK 1941 Jun 24
-1 c CE%sT 1944 Au
-3 R MSK/MSD 1989 Mar 26 2s
-2 R EE%sT 1991 S 29 2s
-2 c EE%sT 1998
-2 - EET 1998 Mar 29 1u
-1 E CE%sT 1999 O 31 1u
-2 - EET 2003
-2 E EE%sT
R MT 1973 o - Mar 31 0s 1 S
R MT 1973 o - S 29 0s 0 -
R MT 1974 o - Ap 21 0s 1 S
@@ -2064,22 +1300,8 @@ R MT 1974 o - S 16 0s 0 -
R MT 1975 1979 - Ap Su>=15 2 1 S
R MT 1975 1980 - S Su>=15 2 0 -
R MT 1980 o - Mar 31 2 1 S
-Z Europe/Malta 0:58:4 - LMT 1893 N 2
-1 I CE%sT 1973 Mar 31
-1 MT CE%sT 1981
-1 E CE%sT
R MD 1997 ma - Mar lastSu 2 1 S
R MD 1997 ma - O lastSu 3 0 -
-Z Europe/Chisinau 1:55:20 - LMT 1880
-1:55 - CMT 1918 F 15
-1:44:24 - BMT 1931 Jul 24
-2 z EE%sT 1940 Au 15
-2 1 EEST 1941 Jul 17
-1 c CE%sT 1944 Au 24
-3 R MSK/MSD 1990 May 6 2
-2 R EE%sT 1992
-2 e EE%sT 1997
-2 MD EE%sT
R O 1918 1919 - S 16 2s 0 -
R O 1919 o - Ap 15 2s 1 S
R O 1944 o - Ap 3 2s 1 S
@@ -2100,15 +1322,6 @@ R O 1959 1961 - O Su>=1 1s 0 -
R O 1960 o - Ap 3 1s 1 S
R O 1961 1964 - May lastSu 1s 1 S
R O 1962 1964 - S lastSu 1s 0 -
-Z Europe/Warsaw 1:24 - LMT 1880
-1:24 - WMT 1915 Au 5
-1 c CE%sT 1918 S 16 3
-2 O EE%sT 1922 Jun
-1 O CE%sT 1940 Jun 23 2
-1 c CE%sT 1944 O
-1 O CE%sT 1977
-1 W- CE%sT 1988
-1 E CE%sT
R p 1916 o - Jun 17 23 1 S
R p 1916 o - N 1 1 0 -
R p 1917 o - F 28 23s 1 S
@@ -2157,42 +1370,6 @@ R p 1979 1982 - S lastSu 1s 0 -
R p 1980 o - Mar lastSu 0s 1 S
R p 1981 1982 - Mar lastSu 1s 1 S
R p 1983 o - Mar lastSu 2s 1 S
-Z Europe/Lisbon -0:36:45 - LMT 1884
--0:36:45 - LMT 1912 Ja 1 0u
-0 p WE%sT 1966 Ap 3 2
-1 - CET 1976 S 26 1
-0 p WE%sT 1983 S 25 1s
-0 W- WE%sT 1992 S 27 1s
-1 E CE%sT 1996 Mar 31 1u
-0 E WE%sT
-Z Atlantic/Azores -1:42:40 - LMT 1884
--1:54:32 - HMT 1912 Ja 1 2u
--2 p -02/-01 1942 Ap 25 22s
--2 p +00 1942 Au 15 22s
--2 p -02/-01 1943 Ap 17 22s
--2 p +00 1943 Au 28 22s
--2 p -02/-01 1944 Ap 22 22s
--2 p +00 1944 Au 26 22s
--2 p -02/-01 1945 Ap 21 22s
--2 p +00 1945 Au 25 22s
--2 p -02/-01 1966 Ap 3 2
--1 p -01/+00 1983 S 25 1s
--1 W- -01/+00 1992 S 27 1s
-0 E WE%sT 1993 Mar 28 1u
--1 E -01/+00
-Z Atlantic/Madeira -1:7:36 - LMT 1884
--1:7:36 - FMT 1912 Ja 1 1u
--1 p -01/+00 1942 Ap 25 22s
--1 p +01 1942 Au 15 22s
--1 p -01/+00 1943 Ap 17 22s
--1 p +01 1943 Au 28 22s
--1 p -01/+00 1944 Ap 22 22s
--1 p +01 1944 Au 26 22s
--1 p -01/+00 1945 Ap 21 22s
--1 p +01 1945 Au 25 22s
--1 p -01/+00 1966 Ap 3 2
-0 p WE%sT 1983 S 25 1s
-0 E WE%sT
R z 1932 o - May 21 0s 1 S
R z 1932 1939 - O Su>=1 0s 0 -
R z 1933 1939 - Ap Su>=2 0s 1 S
@@ -2202,252 +1379,6 @@ R z 1980 o - Ap 5 23 1 S
R z 1980 o - S lastSu 1 0 -
R z 1991 1993 - Mar lastSu 0s 1 S
R z 1991 1993 - S lastSu 0s 0 -
-Z Europe/Bucharest 1:44:24 - LMT 1891 O
-1:44:24 - BMT 1931 Jul 24
-2 z EE%sT 1981 Mar 29 2s
-2 c EE%sT 1991
-2 z EE%sT 1994
-2 e EE%sT 1997
-2 E EE%sT
-Z Europe/Kaliningrad 1:22 - LMT 1893 Ap
-1 c CE%sT 1945 Ap 10
-2 O EE%sT 1946 Ap 7
-3 R MSK/MSD 1989 Mar 26 2s
-2 R EE%sT 2011 Mar 27 2s
-3 - +03 2014 O 26 2s
-2 - EET
-Z Europe/Moscow 2:30:17 - LMT 1880
-2:30:17 - MMT 1916 Jul 3
-2:31:19 R %s 1919 Jul 1 0u
-3 R %s 1921 O
-3 R MSK/MSD 1922 O
-2 - EET 1930 Jun 21
-3 R MSK/MSD 1991 Mar 31 2s
-2 R EE%sT 1992 Ja 19 2s
-3 R MSK/MSD 2011 Mar 27 2s
-4 - MSK 2014 O 26 2s
-3 - MSK
-Z Europe/Simferopol 2:16:24 - LMT 1880
-2:16 - SMT 1924 May 2
-2 - EET 1930 Jun 21
-3 - MSK 1941 N
-1 c CE%sT 1944 Ap 13
-3 R MSK/MSD 1990
-3 - MSK 1990 Jul 1 2
-2 - EET 1992 Mar 20
-2 c EE%sT 1994 May
-3 c MSK/MSD 1996 Mar 31 0s
-3 1 MSD 1996 O 27 3s
-3 - MSK 1997 Mar lastSu 1u
-2 E EE%sT 2014 Mar 30 2
-4 - MSK 2014 O 26 2s
-3 - MSK
-Z Europe/Astrakhan 3:12:12 - LMT 1924 May
-3 - +03 1930 Jun 21
-4 R +04/+05 1989 Mar 26 2s
-3 R +03/+04 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04 2014 O 26 2s
-3 - +03 2016 Mar 27 2s
-4 - +04
-Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3
-3 - +03 1930 Jun 21
-4 - +04 1961 N 11
-4 R +04/+05 1988 Mar 27 2s
-3 R MSK/MSD 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R MSK/MSD 2011 Mar 27 2s
-4 - MSK 2014 O 26 2s
-3 - MSK 2018 O 28 2s
-4 - +04 2020 D 27 2s
-3 - MSK
-Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 R +04/+05 1988 Mar 27 2s
-3 R +03/+04 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04 2014 O 26 2s
-3 - +03 2016 D 4 2s
-4 - +04
-Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 R +04/+05 1989 Mar 26 2s
-3 R MSK/MSD 1991 Mar 31 2s
-4 - +04 1992 Mar 29 2s
-3 R MSK/MSD 2011 Mar 27 2s
-4 - MSK 2014 O 26 2s
-3 - MSK
-Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 - +04 1935 Ja 27
-4 R +04/+05 1989 Mar 26 2s
-3 R +03/+04 1991 Mar 31 2s
-2 R +02/+03 1991 S 29 2s
-3 - +03 1991 O 20 3
-4 R +04/+05 2010 Mar 28 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04
-Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u
-3 - +03 1930 Jun 21
-4 R +04/+05 1989 Mar 26 2s
-3 R +03/+04 1991 Mar 31 2s
-2 R +02/+03 1992 Ja 19 2s
-3 R +03/+04 2011 Mar 27 2s
-4 - +04 2014 O 26 2s
-3 - +03 2016 Mar 27 2s
-4 - +04
-Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3
-3:45:5 - PMT 1919 Jul 15 4
-4 - +04 1930 Jun 21
-5 R +05/+06 1991 Mar 31 2s
-4 R +04/+05 1992 Ja 19 2s
-5 R +05/+06 2011 Mar 27 2s
-6 - +06 2014 O 26 2s
-5 - +05
-Z Asia/Omsk 4:53:30 - LMT 1919 N 14
-5 - +05 1930 Jun 21
-6 R +06/+07 1991 Mar 31 2s
-5 R +05/+06 1992 Ja 19 2s
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06
-Z Asia/Barnaul 5:35 - LMT 1919 D 10
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 1995 May 28
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06 2016 Mar 27 2s
-7 - +07
-Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 1993 May 23
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06 2016 Jul 24 2s
-7 - +07
-Z Asia/Tomsk 5:39:51 - LMT 1919 D 22
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 2002 May 1 3
-6 R +06/+07 2011 Mar 27 2s
-7 - +07 2014 O 26 2s
-6 - +06 2016 May 29 2s
-7 - +07
-Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 2010 Mar 28 2s
-6 R +06/+07 2011 Mar 27 2s
-7 - +07
-Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6
-6 - +06 1930 Jun 21
-7 R +07/+08 1991 Mar 31 2s
-6 R +06/+07 1992 Ja 19 2s
-7 R +07/+08 2011 Mar 27 2s
-8 - +08 2014 O 26 2s
-7 - +07
-Z Asia/Irkutsk 6:57:5 - LMT 1880
-6:57:5 - IMT 1920 Ja 25
-7 - +07 1930 Jun 21
-8 R +08/+09 1991 Mar 31 2s
-7 R +07/+08 1992 Ja 19 2s
-8 R +08/+09 2011 Mar 27 2s
-9 - +09 2014 O 26 2s
-8 - +08
-Z Asia/Chita 7:33:52 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1991 Mar 31 2s
-8 R +08/+09 1992 Ja 19 2s
-9 R +09/+10 2011 Mar 27 2s
-10 - +10 2014 O 26 2s
-8 - +08 2016 Mar 27 2
-9 - +09
-Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1991 Mar 31 2s
-8 R +08/+09 1992 Ja 19 2s
-9 R +09/+10 2011 Mar 27 2s
-10 - +10 2014 O 26 2s
-9 - +09
-Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15
-9 - +09 1930 Jun 21
-10 R +10/+11 1991 Mar 31 2s
-9 R +09/+10 1992 Ja 19 2s
-10 R +10/+11 2011 Mar 27 2s
-11 - +11 2014 O 26 2s
-10 - +10
-Z Asia/Khandyga 9:2:13 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1991 Mar 31 2s
-8 R +08/+09 1992 Ja 19 2s
-9 R +09/+10 2004
-10 R +10/+11 2011 Mar 27 2s
-11 - +11 2011 S 13 0s
-10 - +10 2014 O 26 2s
-9 - +09
-Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23
-9 - +09 1945 Au 25
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 1997 Mar lastSu 2s
-10 R +10/+11 2011 Mar 27 2s
-11 - +11 2014 O 26 2s
-10 - +10 2016 Mar 27 2s
-11 - +11
-Z Asia/Magadan 10:3:12 - LMT 1924 May 2
-10 - +10 1930 Jun 21
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12 2014 O 26 2s
-10 - +10 2016 Ap 24 2s
-11 - +11
-Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
-10 - +10 1930 Jun 21
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12 2014 O 26 2s
-11 - +11
-Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15
-8 - +08 1930 Jun 21
-9 R +09/+10 1981 Ap
-11 R +11/+12 1991 Mar 31 2s
-10 R +10/+11 1992 Ja 19 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12 2011 S 13 0s
-11 - +11 2014 O 26 2s
-10 - +10
-Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10
-11 - +11 1930 Jun 21
-12 R +12/+13 1991 Mar 31 2s
-11 R +11/+12 1992 Ja 19 2s
-12 R +12/+13 2010 Mar 28 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12
-Z Asia/Anadyr 11:49:56 - LMT 1924 May 2
-12 - +12 1930 Jun 21
-13 R +13/+14 1982 Ap 1 0s
-12 R +12/+13 1991 Mar 31 2s
-11 R +11/+12 1992 Ja 19 2s
-12 R +12/+13 2010 Mar 28 2s
-11 R +11/+12 2011 Mar 27 2s
-12 - +12
-Z Europe/Belgrade 1:22 - LMT 1884
-1 - CET 1941 Ap 18 23
-1 c CE%sT 1945
-1 - CET 1945 May 8 2s
-1 1 CEST 1945 S 16 2s
-1 - CET 1982 N 27
-1 E CE%sT
R s 1918 o - Ap 15 23 1 S
R s 1918 1919 - O 6 24s 0 -
R s 1919 o - Ap 6 23 1 S
@@ -2487,30 +1418,8 @@ R Sp 1976 o - Au 1 0 0 -
R Sp 1977 o - S 28 0 0 -
R Sp 1978 o - Jun 1 0 1 S
R Sp 1978 o - Au 4 0 0 -
-Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u
-0 s WE%sT 1940 Mar 16 23
-1 s CE%sT 1979
-1 E CE%sT
-Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u
-0 - WET 1918 May 6 23
-0 1 WEST 1918 O 7 23
-0 - WET 1924
-0 s WE%sT 1929
-0 - WET 1967
-0 Sp WE%sT 1984 Mar 16
-1 - CET 1986
-1 E CE%sT
-Z Atlantic/Canary -1:1:36 - LMT 1922 Mar
--1 - -01 1946 S 30 1
-0 - WET 1980 Ap 6 0s
-0 1 WEST 1980 S 28 1u
-0 E WE%sT
R CH 1941 1942 - May M>=1 1 1 S
R CH 1941 1942 - O M>=1 2 0 -
-Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16
-0:29:46 - BMT 1894 Jun
-1 CH CE%sT 1981
-1 E CE%sT
R T 1916 o - May 1 0 1 S
R T 1916 o - O 1 0 0 -
R T 1920 o - Mar 28 0 1 S
@@ -2556,28 +1465,6 @@ R T 1986 1995 - S lastSu 1s 0 -
R T 1994 o - Mar 20 1s 1 S
R T 1995 2006 - Mar lastSu 1s 1 S
R T 1996 2006 - O lastSu 1s 0 -
-Z Europe/Istanbul 1:55:52 - LMT 1880
-1:56:56 - IMT 1910 O
-2 T EE%sT 1978 Jun 29
-3 T +03/+04 1984 N 1 2
-2 T EE%sT 2007
-2 E EE%sT 2011 Mar 27 1u
-2 - EET 2011 Mar 28 1u
-2 E EE%sT 2014 Mar 30 1u
-2 - EET 2014 Mar 31 1u
-2 E EE%sT 2015 O 25 1u
-2 1 EEST 2015 N 8 1u
-2 E EE%sT 2016 S 7
-3 - +03
-Z Europe/Kyiv 2:2:4 - LMT 1880
-2:2:4 - KMT 1924 May 2
-2 - EET 1930 Jun 21
-3 - MSK 1941 S 20
-1 c CE%sT 1943 N 6
-3 R MSK/MSD 1990 Jul 1 2
-2 1 EEST 1991 S 29 3
-2 c EE%sT 1996 May 13
-2 E EE%sT
R u 1918 1919 - Mar lastSu 2 1 D
R u 1918 1919 - O lastSu 2 0 S
R u 1942 o - F 9 2 1 W
@@ -2591,172 +1478,34 @@ R u 1976 1986 - Ap lastSu 2 1 D
R u 1987 2006 - Ap Su>=1 2 1 D
R u 2007 ma - Mar Su>=8 2 1 D
R u 2007 ma - N Su>=1 2 0 S
-Z EST -5 - EST
-Z MST -7 - MST
-Z HST -10 - HST
-Z EST5EDT -5 u E%sT
-Z CST6CDT -6 u C%sT
-Z MST7MDT -7 u M%sT
-Z PST8PDT -8 u P%sT
R NY 1920 o - Mar lastSu 2 1 D
R NY 1920 o - O lastSu 2 0 S
R NY 1921 1966 - Ap lastSu 2 1 D
R NY 1921 1954 - S lastSu 2 0 S
R NY 1955 1966 - O lastSu 2 0 S
-Z America/New_York -4:56:2 - LMT 1883 N 18 17u
--5 u E%sT 1920
--5 NY E%sT 1942
--5 u E%sT 1946
--5 NY E%sT 1967
--5 u E%sT
R Ch 1920 o - Jun 13 2 1 D
R Ch 1920 1921 - O lastSu 2 0 S
R Ch 1921 o - Mar lastSu 2 1 D
R Ch 1922 1966 - Ap lastSu 2 1 D
R Ch 1922 1954 - S lastSu 2 0 S
R Ch 1955 1966 - O lastSu 2 0 S
-Z America/Chicago -5:50:36 - LMT 1883 N 18 18u
--6 u C%sT 1920
--6 Ch C%sT 1936 Mar 1 2
--5 - EST 1936 N 15 2
--6 Ch C%sT 1942
--6 u C%sT 1946
--6 Ch C%sT 1967
--6 u C%sT
-Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u
--7 u M%sT 1992 O 25 2
--6 u C%sT
-Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u
--7 u M%sT 2003 O 26 2
--6 u C%sT
-Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u
--7 u M%sT 2010 N 7 2
--6 u C%sT
R De 1920 1921 - Mar lastSu 2 1 D
R De 1920 o - O lastSu 2 0 S
R De 1921 o - May 22 2 0 S
R De 1965 1966 - Ap lastSu 2 1 D
R De 1965 1966 - O lastSu 2 0 S
-Z America/Denver -6:59:56 - LMT 1883 N 18 19u
--7 u M%sT 1920
--7 De M%sT 1942
--7 u M%sT 1946
--7 De M%sT 1967
--7 u M%sT
R CA 1948 o - Mar 14 2:1 1 D
R CA 1949 o - Ja 1 2 0 S
R CA 1950 1966 - Ap lastSu 1 1 D
R CA 1950 1961 - S lastSu 2 0 S
R CA 1962 1966 - O lastSu 2 0 S
-Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u
--8 u P%sT 1946
--8 CA P%sT 1967
--8 u P%sT
-Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32
--8:57:41 - LMT 1900 Au 20 12
--8 - PST 1942
--8 u P%sT 1946
--8 - PST 1969
--8 u P%sT 1980 Ap 27 2
--9 u Y%sT 1980 O 26 2
--8 u P%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30
--9:1:13 - LMT 1900 Au 20 12
--8 - PST 1942
--8 u P%sT 1946
--8 - PST 1969
--8 u P%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55
--8:46:18 - LMT 1900 Au 20 12
--8 - PST 1942
--8 u P%sT 1946
--8 - PST 1969
--8 u P%sT 1983 O 30 2
--8 - PST 2015 N 1 2
--9 u AK%sT 2018 N 4 2
--8 - PST 2019 Ja 20 2
--9 u AK%sT
-Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18
--9:18:55 - LMT 1900 Au 20 12
--9 - YST 1942
--9 u Y%sT 1946
--9 - YST 1969
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37
--9:59:36 - LMT 1900 Au 20 12
--10 - AST 1942
--10 u A%sT 1967 Ap
--10 - AHST 1969
--10 u AH%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35
--11:1:38 - LMT 1900 Au 20 12
--11 - NST 1942
--11 u N%sT 1946
--11 - NST 1967 Ap
--11 - BST 1969
--11 u B%sT 1983 O 30 2
--9 u Y%sT 1983 N 30
--9 u AK%sT
-Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35
--11:46:38 - LMT 1900 Au 20 12
--11 - NST 1942
--11 u N%sT 1946
--11 - NST 1967 Ap
--11 - BST 1969
--11 u B%sT 1983 O 30 2
--10 u AH%sT 1983 N 30
--10 u H%sT
-Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12
--10:30 - HST 1933 Ap 30 2
--10:30 1 HDT 1933 May 21 12
--10:30 u H%sT 1947 Jun 8 2
--10 - HST
-Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u
--7 u M%sT 1944 Ja 1 0:1
--7 - MST 1944 Ap 1 0:1
--7 u M%sT 1944 O 1 0:1
--7 - MST 1967
--7 u M%sT 1968 Mar 21
--7 - MST
-Z America/Boise -7:44:49 - LMT 1883 N 18 20u
--8 u P%sT 1923 May 13 2
--7 u M%sT 1974
--7 - MST 1974 F 3 2
--7 u M%sT
R In 1941 o - Jun 22 2 1 D
R In 1941 1954 - S lastSu 2 0 S
R In 1946 1954 - Ap lastSu 2 1 D
-Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u
--6 u C%sT 1920
--6 In C%sT 1942
--6 u C%sT 1946
--6 In C%sT 1955 Ap 24 2
--5 - EST 1957 S 29 2
--6 - CST 1958 Ap 27 2
--5 - EST 1969
--5 u E%sT 1971
--5 - EST 2006
--5 u E%sT
R Ma 1951 o - Ap lastSu 2 1 D
R Ma 1951 o - S lastSu 2 0 S
R Ma 1954 1960 - Ap lastSu 2 1 D
R Ma 1954 1960 - S lastSu 2 0 S
-Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u
--6 u C%sT 1951
--6 Ma C%sT 1961 Ap 30 2
--5 - EST 1969
--5 u E%sT 1974 Ja 6 2
--6 1 CDT 1974 O 27 2
--5 u E%sT 1976
--5 - EST 2006
--5 u E%sT
R V 1946 o - Ap lastSu 2 1 D
R V 1946 o - S lastSu 2 0 S
R V 1953 1954 - Ap lastSu 2 1 D
@@ -2766,68 +1515,23 @@ R V 1956 1963 - Ap lastSu 2 1 D
R V 1960 o - O lastSu 2 0 S
R V 1961 o - S lastSu 2 0 S
R V 1962 1963 - O lastSu 2 0 S
-Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 V C%sT 1964 Ap 26 2
--5 - EST 1969
--5 u E%sT 1971
--5 - EST 2006 Ap 2 2
--6 u C%sT 2007 N 4 2
--5 u E%sT
R Pe 1955 o - May 1 0 1 D
R Pe 1955 1960 - S lastSu 2 0 S
R Pe 1956 1963 - Ap lastSu 2 1 D
R Pe 1961 1963 - O lastSu 2 0 S
-Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 Pe C%sT 1964 Ap 26 2
--5 - EST 1967 O 29 2
--6 u C%sT 1969 Ap 27 2
--5 u E%sT 1971
--5 - EST 2006 Ap 2 2
--6 u C%sT
R Pi 1955 o - May 1 0 1 D
R Pi 1955 1960 - S lastSu 2 0 S
R Pi 1956 1964 - Ap lastSu 2 1 D
R Pi 1961 1964 - O lastSu 2 0 S
-Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u
--6 u C%sT 1955
--6 Pi C%sT 1965 Ap 25 2
--5 - EST 1966 O 30 2
--6 u C%sT 1977 O 30 2
--5 - EST 2006 Ap 2 2
--6 u C%sT 2007 N 4 2
--5 u E%sT
R St 1947 1961 - Ap lastSu 2 1 D
R St 1947 1954 - S lastSu 2 0 S
R St 1955 1956 - O lastSu 2 0 S
R St 1957 1958 - S lastSu 2 0 S
R St 1959 1961 - O lastSu 2 0 S
-Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u
--6 u C%sT 1947
--6 St C%sT 1962 Ap 29 2
--5 - EST 1963 O 27 2
--6 u C%sT 1991 O 27 2
--5 - EST 2006 Ap 2 2
--6 u C%sT
R Pu 1946 1960 - Ap lastSu 2 1 D
R Pu 1946 1954 - S lastSu 2 0 S
R Pu 1955 1956 - O lastSu 2 0 S
R Pu 1957 1960 - S lastSu 2 0 S
-Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 Pu C%sT 1961 Ap 30 2
--5 - EST 1969
--5 u E%sT 1971
--5 - EST 2006 Ap 2 2
--6 u C%sT 2007 Mar 11 2
--5 u E%sT
-Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u
--6 u C%sT 1954 Ap 25 2
--5 - EST 1969
--5 u E%sT 1973
--5 - EST 2006
--5 u E%sT
R v 1921 o - May 1 2 1 D
R v 1921 o - S 1 2 0 S
R v 1941 o - Ap lastSu 2 1 D
@@ -2837,41 +1541,12 @@ R v 1946 o - Jun 2 2 0 S
R v 1950 1961 - Ap lastSu 2 1 D
R v 1950 1955 - S lastSu 2 0 S
R v 1956 1961 - O lastSu 2 0 S
-Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u
--6 u C%sT 1921
--6 v C%sT 1942
--6 u C%sT 1946
--6 v C%sT 1961 Jul 23 2
--5 - EST 1968
--5 u E%sT 1974 Ja 6 2
--6 1 CDT 1974 O 27 2
--5 u E%sT
-Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u
--6 u C%sT 1946
--6 - CST 1968
--6 u C%sT 2000 O 29 2
--5 u E%sT
R Dt 1948 o - Ap lastSu 2 1 D
R Dt 1948 o - S lastSu 2 0 S
-Z America/Detroit -5:32:11 - LMT 1905
--6 - CST 1915 May 15 2
--5 - EST 1942
--5 u E%sT 1946
--5 Dt E%sT 1967 Jun 14 0:1
--5 u E%sT 1969
--5 - EST 1973
--5 u E%sT 1975
--5 - EST 1975 Ap 27 2
--5 u E%sT
R Me 1946 o - Ap lastSu 2 1 D
R Me 1946 o - S lastSu 2 0 S
R Me 1966 o - Ap lastSu 2 1 D
R Me 1966 o - O lastSu 2 0 S
-Z America/Menominee -5:50:27 - LMT 1885 S 18 12
--6 u C%sT 1946
--6 Me C%sT 1969 Ap 27 2
--5 - EST 1973 Ap 29 2
--6 u C%sT
R C 1918 o - Ap 14 2 1 D
R C 1918 o - O 27 2 0 S
R C 1942 o - F 9 2 1 W
@@ -2901,24 +1576,6 @@ R j 1988 o - Ap Su>=1 0:1 2 DD
R j 1989 2006 - Ap Su>=1 0:1 1 D
R j 2007 2011 - Mar Su>=8 0:1 1 D
R j 2007 2010 - N Su>=1 0:1 0 S
-Z America/St_Johns -3:30:52 - LMT 1884
--3:30:52 j N%sT 1918
--3:30:52 C N%sT 1919
--3:30:52 j N%sT 1935 Mar 30
--3:30 j N%sT 1942 May 11
--3:30 C N%sT 1946
--3:30 j N%sT 2011 N
--3:30 C N%sT
-Z America/Goose_Bay -4:1:40 - LMT 1884
--3:30:52 - NST 1918
--3:30:52 C N%sT 1919
--3:30:52 - NST 1935 Mar 30
--3:30 - NST 1936
--3:30 j N%sT 1942 May 11
--3:30 C N%sT 1946
--3:30 j N%sT 1966 Mar 15 2
--4 j A%sT 2011 N
--4 C A%sT
R H 1916 o - Ap 1 0 1 D
R H 1916 o - O 1 0 0 S
R H 1920 o - May 9 0 1 D
@@ -2960,19 +1617,6 @@ R H 1956 1959 - Ap lastSu 2 1 D
R H 1956 1959 - S lastSu 2 0 S
R H 1962 1973 - Ap lastSu 2 1 D
R H 1962 1973 - O lastSu 2 0 S
-Z America/Halifax -4:14:24 - LMT 1902 Jun 15
--4 H A%sT 1918
--4 C A%sT 1919
--4 H A%sT 1942 F 9 2s
--4 C A%sT 1946
--4 H A%sT 1974
--4 C A%sT
-Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
--4 C A%sT 1953
--4 H A%sT 1954
--4 - AST 1972
--4 H A%sT 1974
--4 C A%sT
R o 1933 1935 - Jun Su>=8 1 1 D
R o 1933 1935 - S Su>=8 1 0 S
R o 1936 1938 - Jun Su>=1 1 1 D
@@ -2986,15 +1630,6 @@ R o 1946 1956 - S lastSu 2 0 S
R o 1957 1972 - O lastSu 2 0 S
R o 1993 2006 - Ap Su>=1 0:1 1 D
R o 1993 2006 - O lastSu 0:1 0 S
-Z America/Moncton -4:19:8 - LMT 1883 D 9
--5 - EST 1902 Jun 15
--4 C A%sT 1933
--4 o A%sT 1942
--4 C A%sT 1946
--4 o A%sT 1973
--4 C A%sT 1993
--4 o A%sT 2007
--4 C A%sT
R t 1919 o - Mar 30 23:30 1 D
R t 1919 o - O 26 0 0 S
R t 1920 o - May 2 2 1 D
@@ -3008,21 +1643,11 @@ R t 1927 1937 - S Su>=25 2 0 S
R t 1928 1937 - Ap Su>=25 2 1 D
R t 1938 1940 - Ap lastSu 2 1 D
R t 1938 1939 - S lastSu 2 0 S
-R t 1945 1946 - S lastSu 2 0 S
-R t 1946 o - Ap lastSu 2 1 D
-R t 1947 1949 - Ap lastSu 0 1 D
-R t 1947 1948 - S lastSu 0 0 S
-R t 1949 o - N lastSu 0 0 S
-R t 1950 1973 - Ap lastSu 2 1 D
-R t 1950 o - N lastSu 2 0 S
+R t 1945 1948 - S lastSu 2 0 S
+R t 1946 1973 - Ap lastSu 2 1 D
+R t 1949 1950 - N lastSu 2 0 S
R t 1951 1956 - S lastSu 2 0 S
R t 1957 1973 - O lastSu 2 0 S
-Z America/Toronto -5:17:32 - LMT 1895
--5 C E%sT 1919
--5 t E%sT 1942 F 9 2s
--5 C E%sT 1946
--5 t E%sT 1974
--5 C E%sT
R W 1916 o - Ap 23 0 1 D
R W 1916 o - S 17 0 0 S
R W 1918 o - Ap 14 2 1 D
@@ -3047,9 +1672,6 @@ R W 1963 o - S 22 2 0 S
R W 1966 1986 - Ap lastSu 2s 1 D
R W 1966 2005 - O lastSu 2s 0 S
R W 1987 2005 - Ap Su>=1 2s 1 D
-Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16
--6 W C%sT 2006
--6 C C%sT
R r 1918 o - Ap 14 2 1 D
R r 1918 o - O 27 2 0 S
R r 1930 1934 - May Su>=1 0 1 D
@@ -3072,14 +1694,6 @@ R Sw 1957 o - O lastSu 2 0 S
R Sw 1959 1961 - Ap lastSu 2 1 D
R Sw 1959 o - O lastSu 2 0 S
R Sw 1960 1961 - S lastSu 2 0 S
-Z America/Regina -6:58:36 - LMT 1905 S
--7 r M%sT 1960 Ap lastSu 2
--6 - CST
-Z America/Swift_Current -7:11:20 - LMT 1905 S
--7 C M%sT 1946 Ap lastSu 2
--7 r M%sT 1950
--7 Sw M%sT 1972 Ap lastSu 2
--6 - CST
R Ed 1918 1919 - Ap Su>=8 2 1 D
R Ed 1918 o - O 27 2 0 S
R Ed 1919 o - May 27 2 0 S
@@ -3093,9 +1707,6 @@ R Ed 1947 o - Ap lastSu 2 1 D
R Ed 1947 o - S lastSu 2 0 S
R Ed 1972 1986 - Ap lastSu 2 1 D
R Ed 1972 2006 - O lastSu 2 0 S
-Z America/Edmonton -7:33:52 - LMT 1906 S
--7 Ed M%sT 1987
--7 C M%sT
R Va 1918 o - Ap 14 2 1 D
R Va 1918 o - O 27 2 0 S
R Va 1942 o - F 9 2 1 W
@@ -3105,19 +1716,6 @@ R Va 1946 1986 - Ap lastSu 2 1 D
R Va 1946 o - S 29 2 0 S
R Va 1947 1961 - S lastSu 2 0 S
R Va 1962 2006 - O lastSu 2 0 S
-Z America/Vancouver -8:12:28 - LMT 1884
--8 Va P%sT 1987
--8 C P%sT
-Z America/Dawson_Creek -8:0:56 - LMT 1884
--8 C P%sT 1947
--8 Va P%sT 1972 Au 30 2
--7 - MST
-Z America/Fort_Nelson -8:10:47 - LMT 1884
--8 Va P%sT 1946
--8 - PST 1947
--8 Va P%sT 1987
--8 C P%sT 2015 Mar 8 2
--7 - MST
R Y 1918 o - Ap 14 2 1 D
R Y 1918 o - O 27 2 0 S
R Y 1919 o - May 25 2 1 D
@@ -3130,42 +1728,6 @@ R Y 1972 2006 - O lastSu 2 0 S
R Y 1987 2006 - Ap Su>=1 2 1 D
R Yu 1965 o - Ap lastSu 0 2 DD
R Yu 1965 o - O lastSu 2 0 S
-Z America/Iqaluit 0 - -00 1942 Au
--5 Y E%sT 1999 O 31 2
--6 C C%sT 2000 O 29 2
--5 C E%sT
-Z America/Resolute 0 - -00 1947 Au 31
--6 Y C%sT 2000 O 29 2
--5 - EST 2001 Ap 1 3
--6 C C%sT 2006 O 29 2
--5 - EST 2007 Mar 11 3
--6 C C%sT
-Z America/Rankin_Inlet 0 - -00 1957
--6 Y C%sT 2000 O 29 2
--5 - EST 2001 Ap 1 3
--6 C C%sT
-Z America/Cambridge_Bay 0 - -00 1920
--7 Y M%sT 1999 O 31 2
--6 C C%sT 2000 O 29 2
--5 - EST 2000 N 5
--6 - CST 2001 Ap 1 3
--7 C M%sT
-Z America/Inuvik 0 - -00 1953
--8 Y P%sT 1979 Ap lastSu 2
--7 Y M%sT 1980
--7 C M%sT
-Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
--9 Y Y%sT 1965
--9 Yu Y%sT 1966 F 27
--8 - PST 1980
--8 C P%sT 2020 N
--7 - MST
-Z America/Dawson -9:17:40 - LMT 1900 Au 20
--9 Y Y%sT 1965
--9 Yu Y%sT 1973 O 28
--8 - PST 1980
--8 C P%sT 2020 N
--7 - MST
R m 1931 o - May 1 23 1 D
R m 1931 o - O 1 0 0 S
R m 1939 o - F 5 0 1 D
@@ -3182,107 +1744,6 @@ R m 2001 o - May Su>=1 2 1 D
R m 2001 o - S lastSu 2 0 S
R m 2002 2022 - Ap Su>=1 2 1 D
R m 2002 2022 - O lastSu 2 0 S
-Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u
--6 - CST 1981 D 23
--5 m E%sT 1998 Au 2 2
--6 m C%sT 2015 F 1 2
--5 - EST
-Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u
--6 - CST 1981 D 23
--5 - EST 1982 D 2
--6 m C%sT
-Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u
--6 - CST 1988
--6 u C%sT 1989
--6 m C%sT 2010
--6 u C%sT
-Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u
--6 - CST 1988
--6 u C%sT 1989
--6 m C%sT
-Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 m C%sT 2001 S 30 2
--6 - CST 2002 F 20
--6 m C%sT
-Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1996
--6 m C%sT 1998
--6 - CST 1998 Ap Su>=1 3
--7 m M%sT 2010
--7 u M%sT 2022 O 30 2
--6 - CST 2022 N 30
--7 u M%sT
-Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1996
--6 m C%sT 1998
--6 - CST 1998 Ap Su>=1 3
--7 m M%sT 2010
--7 u M%sT 2022 O 30 2
--6 - CST 2022 N 30
--6 u C%sT
-Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1996
--6 m C%sT 1998
--6 - CST 1998 Ap Su>=1 3
--7 m M%sT 2022 O 30 2
--6 - CST
-Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1942 Ap 24
--7 - MST 1949 Ja 14
--8 - PST 1970
--7 m M%sT 1999
--7 - MST
-Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1942 Ap 24
--7 - MST 1949 Ja 14
--8 - PST 1970
--7 m M%sT
-Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u
--7 - MST 1927 Jun 10 23
--6 - CST 1930 N 15
--7 m M%sT 1932 Ap
--6 - CST 1942 Ap 24
--7 - MST 1949 Ja 14
--8 - PST 1970
--7 m M%sT 2010 Ap 4 2
--6 m C%sT
-Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u
--7 - MST 1924
--8 - PST 1927 Jun 10 23
--7 - MST 1930 N 15
--8 - PST 1931 Ap
--8 1 PDT 1931 S 30
--8 - PST 1942 Ap 24
--8 1 PWT 1945 Au 14 23u
--8 1 PPT 1945 N 12
--8 - PST 1948 Ap 5
--8 1 PDT 1949 Ja 14
--8 - PST 1954
--8 CA P%sT 1961
--8 - PST 1976
--8 u P%sT 1996
--8 m P%sT 2001
--8 u P%sT 2002 F 20
--8 m P%sT 2010
--8 u P%sT
R BB 1942 o - Ap 19 5u 1 D
R BB 1942 o - Au 31 6u 0 S
R BB 1943 o - May 2 5u 1 D
@@ -3294,10 +1755,6 @@ R BB 1977 1978 - O Su>=1 2 0 S
R BB 1978 1980 - Ap Su>=15 2 1 D
R BB 1979 o - S 30 2 0 S
R BB 1980 o - S 25 2 0 S
-Z America/Barbados -3:58:29 - LMT 1911 Au 28
--4 BB A%sT 1944
--4 BB AST/-0330 1945
--4 BB A%sT
R BZ 1918 1941 - O Sa>=1 24 0:30 -0530
R BZ 1919 1942 - F Sa>=8 24 0 CST
R BZ 1942 o - Jun 27 24 1 CWT
@@ -3309,8 +1766,6 @@ R BZ 1973 o - D 5 0 1 CDT
R BZ 1974 o - F 9 0 0 CST
R BZ 1982 o - D 18 0 1 CDT
R BZ 1983 o - F 12 0 0 CST
-Z America/Belize -5:52:48 - LMT 1912 Ap
--6 BZ %s
R Be 1917 o - Ap 5 24 1 -
R Be 1917 o - S 30 24 0 -
R Be 1918 o - Ap 13 24 1 -
@@ -3327,19 +1782,11 @@ R Be 1948 1952 - May Su>=22 2 1 D
R Be 1948 1952 - S Su>=1 2 0 S
R Be 1956 o - May Su>=22 2 1 D
R Be 1956 o - O lastSu 2 0 S
-Z Atlantic/Bermuda -4:19:18 - LMT 1890
--4:19:18 Be BMT/BST 1930 Ja 1 2
--4 Be A%sT 1974 Ap 28 2
--4 C A%sT 1976
--4 u A%sT
R CR 1979 1980 - F lastSu 0 1 D
R CR 1979 1980 - Jun Su>=1 0 0 S
R CR 1991 1992 - Ja Sa>=15 0 1 D
R CR 1991 o - Jul 1 0 0 S
R CR 1992 o - Mar 15 0 0 S
-Z America/Costa_Rica -5:36:13 - LMT 1890
--5:36:13 - SJMT 1921 Ja 15
--6 CR C%sT
R Q 1928 o - Jun 10 0 1 D
R Q 1928 o - O 10 0 0 S
R Q 1940 1942 - Jun Su>=1 0 1 D
@@ -3379,25 +1826,14 @@ R Q 2011 o - N 13 0s 0 S
R Q 2012 o - Ap 1 0s 1 D
R Q 2012 ma - N Su>=1 0s 0 S
R Q 2013 ma - Mar Su>=8 0s 1 D
-Z America/Havana -5:29:28 - LMT 1890
--5:29:36 - HMT 1925 Jul 19 12
--5 Q C%sT
R DO 1966 o - O 30 0 1 EDT
R DO 1967 o - F 28 0 0 EST
R DO 1969 1973 - O lastSu 0 0:30 -0430
R DO 1970 o - F 21 0 0 EST
R DO 1971 o - Ja 20 0 0 EST
R DO 1972 1974 - Ja 21 0 0 EST
-Z America/Santo_Domingo -4:39:36 - LMT 1890
--4:40 - SDMT 1933 Ap 1 12
--5 DO %s 1974 O 27
--4 - AST 2000 O 29 2
--5 u E%sT 2000 D 3 1
--4 - AST
R SV 1987 1988 - May Su>=1 0 1 D
R SV 1987 1988 - S lastSu 0 0 S
-Z America/El_Salvador -5:56:48 - LMT 1921
--6 SV C%sT
R GT 1973 o - N 25 0 1 D
R GT 1974 o - F 24 0 0 S
R GT 1983 o - May 21 0 1 D
@@ -3406,8 +1842,6 @@ R GT 1991 o - Mar 23 0 1 D
R GT 1991 o - S 7 0 0 S
R GT 2006 o - Ap 30 0 1 D
R GT 2006 o - O 1 0 0 S
-Z America/Guatemala -6:2:4 - LMT 1918 O 5
--6 GT C%sT
R HT 1983 o - May 8 0 1 D
R HT 1984 1987 - Ap lastSu 0 1 D
R HT 1983 1987 - O lastSu 0 0 S
@@ -3419,57 +1853,16 @@ R HT 2012 2015 - Mar Su>=8 2 1 D
R HT 2012 2015 - N Su>=1 2 0 S
R HT 2017 ma - Mar Su>=8 2 1 D
R HT 2017 ma - N Su>=1 2 0 S
-Z America/Port-au-Prince -4:49:20 - LMT 1890
--4:49 - PPMT 1917 Ja 24 12
--5 HT E%sT
R HN 1987 1988 - May Su>=1 0 1 D
R HN 1987 1988 - S lastSu 0 0 S
R HN 2006 o - May Su>=1 0 1 D
R HN 2006 o - Au M>=1 0 0 S
-Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap
--6 HN C%sT
-Z America/Jamaica -5:7:10 - LMT 1890
--5:7:10 - KMT 1912 F
--5 - EST 1974
--5 u E%sT 1984
--5 - EST
-Z America/Martinique -4:4:20 - LMT 1890
--4:4:20 - FFMT 1911 May
--4 - AST 1980 Ap 6
--4 1 ADT 1980 S 28
--4 - AST
R NI 1979 1980 - Mar Su>=16 0 1 D
R NI 1979 1980 - Jun M>=23 0 0 S
R NI 2005 o - Ap 10 0 1 D
R NI 2005 o - O Su>=1 0 0 S
R NI 2006 o - Ap 30 2 1 D
R NI 2006 o - O Su>=1 1 0 S
-Z America/Managua -5:45:8 - LMT 1890
--5:45:12 - MMT 1934 Jun 23
--6 - CST 1973 May
--5 - EST 1975 F 16
--6 NI C%sT 1992 Ja 1 4
--5 - EST 1992 S 24
--6 - CST 1993
--5 - EST 1997
--6 NI C%sT
-Z America/Panama -5:18:8 - LMT 1890
--5:19:36 - CMT 1908 Ap 22
--5 - EST
-Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12
--4 - AST 1942 May 3
--4 u A%sT 1946
--4 - AST
-Z America/Miquelon -3:44:40 - LMT 1911 May 15
--4 - AST 1980 May
--3 - -03 1987
--3 C -03/-02
-Z America/Grand_Turk -4:44:32 - LMT 1890
--5:7:10 - KMT 1912 F
--5 - EST 1979
--5 u E%sT 2015 Mar 8 2
--4 - AST 2018 Mar 11 3
--5 u E%sT
R A 1930 o - D 1 0 1 -
R A 1931 o - Ap 1 0 0 -
R A 1931 o - O 15 0 1 -
@@ -3499,150 +1892,8 @@ R A 2000 o - Mar 3 0 0 -
R A 2007 o - D 30 0 1 -
R A 2008 2009 - Mar Su>=15 0 0 -
R A 2008 o - O Su>=15 0 1 -
-Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02
-Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02
-Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 13
--3 A -03/-02
-Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar
--4 - -04 1991 May 7
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar
--4 - -04 1991 May 7
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 May 31
--4 - -04 2004 Jul 25
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1990 Mar 4
--4 - -04 1990 O 28
--4 1 -03 1991 Mar 17
--4 - -04 1991 O 6
--3 1 -02 1992
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1991 Mar 3
--4 - -04 1991 O 20
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1990 Mar 4
--4 - -04 1990 O 15
--4 1 -03 1991 Mar
--4 - -04 1991 O 15
--4 1 -03 1992 Mar
--4 - -04 1992 O 18
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 May 23
--4 - -04 2004 S 26
--3 A -03/-02 2008 O 18
--3 - -03
R Sa 2008 2009 - Mar Su>=8 0 0 -
R Sa 2007 2008 - O Su>=8 0 1 -
-Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1990
--3 1 -02 1990 Mar 14
--4 - -04 1990 O 15
--4 1 -03 1991 Mar
--4 - -04 1991 Jun
--3 - -03 1999 O 3
--4 1 -03 2000 Mar 3
--3 - -03 2004 May 31
--4 - -04 2004 Jul 25
--3 A -03/-02 2008 Ja 21
--4 Sa -04/-03 2009 O 11
--3 - -03
-Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 Jun
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31
--4:16:48 - CMT 1920 May
--4 - -04 1930 D
--4 A -04/-03 1969 O 5
--3 A -03/-02 1999 O 3
--4 A -04/-03 2000 Mar 3
--3 - -03 2004 May 30
--4 - -04 2004 Jun 20
--3 A -03/-02 2008 O 18
--3 - -03
-Z America/La_Paz -4:32:36 - LMT 1890
--4:32:36 - CMT 1931 O 15
--4:32:36 1 BST 1932 Mar 21
--4 - -04
R B 1931 o - O 3 11 1 -
R B 1932 1933 - Ap 1 0 0 -
R B 1932 o - O 3 0 1 -
@@ -3700,90 +1951,6 @@ R B 2013 2014 - F Su>=15 0 0 -
R B 2015 o - F Su>=22 0 0 -
R B 2016 2019 - F Su>=15 0 0 -
R B 2018 o - N Su>=1 0 1 -
-Z America/Noronha -2:9:40 - LMT 1914
--2 B -02/-01 1990 S 17
--2 - -02 1999 S 30
--2 B -02/-01 2000 O 15
--2 - -02 2001 S 13
--2 B -02/-01 2002 O
--2 - -02
-Z America/Belem -3:13:56 - LMT 1914
--3 B -03/-02 1988 S 12
--3 - -03
-Z America/Santarem -3:38:48 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04 2008 Jun 24
--3 - -03
-Z America/Fortaleza -2:34 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1999 S 30
--3 B -03/-02 2000 O 22
--3 - -03 2001 S 13
--3 B -03/-02 2002 O
--3 - -03
-Z America/Recife -2:19:36 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1999 S 30
--3 B -03/-02 2000 O 15
--3 - -03 2001 S 13
--3 B -03/-02 2002 O
--3 - -03
-Z America/Araguaina -3:12:48 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1995 S 14
--3 B -03/-02 2003 S 24
--3 - -03 2012 O 21
--3 B -03/-02 2013 S
--3 - -03
-Z America/Maceio -2:22:52 - LMT 1914
--3 B -03/-02 1990 S 17
--3 - -03 1995 O 13
--3 B -03/-02 1996 S 4
--3 - -03 1999 S 30
--3 B -03/-02 2000 O 22
--3 - -03 2001 S 13
--3 B -03/-02 2002 O
--3 - -03
-Z America/Bahia -2:34:4 - LMT 1914
--3 B -03/-02 2003 S 24
--3 - -03 2011 O 16
--3 B -03/-02 2012 O 21
--3 - -03
-Z America/Sao_Paulo -3:6:28 - LMT 1914
--3 B -03/-02 1963 O 23
--3 1 -02 1964
--3 B -03/-02
-Z America/Campo_Grande -3:38:28 - LMT 1914
--4 B -04/-03
-Z America/Cuiaba -3:44:20 - LMT 1914
--4 B -04/-03 2003 S 24
--4 - -04 2004 O
--4 B -04/-03
-Z America/Porto_Velho -4:15:36 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04
-Z America/Boa_Vista -4:2:40 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04 1999 S 30
--4 B -04/-03 2000 O 15
--4 - -04
-Z America/Manaus -4:0:4 - LMT 1914
--4 B -04/-03 1988 S 12
--4 - -04 1993 S 28
--4 B -04/-03 1994 S 22
--4 - -04
-Z America/Eirunepe -4:39:28 - LMT 1914
--5 B -05/-04 1988 S 12
--5 - -05 1993 S 28
--5 B -05/-04 1994 S 22
--5 - -05 2008 Jun 24
--4 - -04 2013 N 10
--5 - -05
-Z America/Rio_Branco -4:31:12 - LMT 1914
--5 B -05/-04 1988 S 12
--5 - -05 2008 Jun 24
--4 - -04 2013 N 10
--5 - -05
R x 1927 1931 - S 1 0 1 -
R x 1928 1932 - Ap 1 0 0 -
R x 1968 o - N 3 4u 1 -
@@ -3820,56 +1987,10 @@ R x 2019 ma - Ap Su>=2 3u 0 -
R x 2019 2021 - S Su>=2 4u 1 -
R x 2022 o - S Su>=9 4u 1 -
R x 2023 ma - S Su>=2 4u 1 -
-Z America/Santiago -4:42:45 - LMT 1890
--4:42:45 - SMT 1910 Ja 10
--5 - -05 1916 Jul
--4:42:45 - SMT 1918 S 10
--4 - -04 1919 Jul
--4:42:45 - SMT 1927 S
--5 x -05/-04 1932 S
--4 - -04 1942 Jun
--5 - -05 1942 Au
--4 - -04 1946 Jul 14 24
--4 1 -03 1946 Au 28 24
--5 1 -04 1947 Mar 31 24
--5 - -05 1947 May 21 23
--4 x -04/-03
-Z America/Punta_Arenas -4:43:40 - LMT 1890
--4:42:45 - SMT 1910 Ja 10
--5 - -05 1916 Jul
--4:42:45 - SMT 1918 S 10
--4 - -04 1919 Jul
--4:42:45 - SMT 1927 S
--5 x -05/-04 1932 S
--4 - -04 1942 Jun
--5 - -05 1942 Au
--4 - -04 1946 Au 28 24
--5 1 -04 1947 Mar 31 24
--5 - -05 1947 May 21 23
--4 x -04/-03 2016 D 4
--3 - -03
-Z Pacific/Easter -7:17:28 - LMT 1890
--7:17:28 - EMT 1932 S
--7 x -07/-06 1982 Mar 14 3u
--6 x -06/-05
-Z Antarctica/Palmer 0 - -00 1965
--4 A -04/-03 1969 O 5
--3 A -03/-02 1982 May
--4 x -04/-03 2016 D 4
--3 - -03
R CO 1992 o - May 3 0 1 -
R CO 1993 o - F 6 24 0 -
-Z America/Bogota -4:56:16 - LMT 1884 Mar 13
--4:56:16 - BMT 1914 N 23
--5 CO -05/-04
R EC 1992 o - N 28 0 1 -
R EC 1993 o - F 5 0 0 -
-Z America/Guayaquil -5:19:20 - LMT 1890
--5:14 - QMT 1931
--5 EC -05/-04
-Z Pacific/Galapagos -5:58:24 - LMT 1931
--5 - -05 1986
--6 EC -06/-05
R FK 1937 1938 - S lastSu 0 1 -
R FK 1938 1942 - Mar Su>=19 0 0 -
R FK 1939 o - O 1 0 1 -
@@ -3882,20 +2003,6 @@ R FK 1985 2000 - S Su>=9 0 1 -
R FK 1986 2000 - Ap Su>=16 0 0 -
R FK 2001 2010 - Ap Su>=15 2 0 -
R FK 2001 2010 - S Su>=1 2 1 -
-Z Atlantic/Stanley -3:51:24 - LMT 1890
--3:51:24 - SMT 1912 Mar 12
--4 FK -04/-03 1983 May
--3 FK -03/-02 1985 S 15
--4 FK -04/-03 2010 S 5 2
--3 - -03
-Z America/Cayenne -3:29:20 - LMT 1911 Jul
--4 - -04 1967 O
--3 - -03
-Z America/Guyana -3:52:39 - LMT 1911 Au
--4 - -04 1915 Mar
--3:45 - -0345 1975 Au
--3 - -03 1992 Mar 29 1
--4 - -04
R y 1975 1988 - O 1 0 1 -
R y 1975 1978 - Mar 1 0 0 -
R y 1979 1991 - Ap 1 0 0 -
@@ -3918,11 +2025,6 @@ R y 2005 2009 - Mar Su>=8 0 0 -
R y 2010 ma - O Su>=1 0 1 -
R y 2010 2012 - Ap Su>=8 0 0 -
R y 2013 ma - Mar Su>=22 0 0 -
-Z America/Asuncion -3:50:40 - LMT 1890
--3:50:40 - AMT 1931 O 10
--4 - -04 1972 O
--3 - -03 1974 Ap
--4 y -04/-03
R PE 1938 o - Ja 1 0 1 -
R PE 1938 o - Ap 1 0 0 -
R PE 1938 1939 - S lastSu 0 1 -
@@ -3933,16 +2035,6 @@ R PE 1990 o - Ja 1 0 1 -
R PE 1990 o - Ap 1 0 0 -
R PE 1994 o - Ja 1 0 1 -
R PE 1994 o - Ap 1 0 0 -
-Z America/Lima -5:8:12 - LMT 1890
--5:8:36 - LMT 1908 Jul 28
--5 PE -05/-04
-Z Atlantic/South_Georgia -2:26:8 - LMT 1890
--2 - -02
-Z America/Paramaribo -3:40:40 - LMT 1911
--3:40:52 - PMT 1935
--3:40:36 - PMT 1945 O
--3:30 - -0330 1984 O
--3 - -03
R U 1923 1925 - O 1 0 0:30 -
R U 1924 1926 - Ap 1 0 0 -
R U 1933 1938 - O lastSu 0 0:30 -
@@ -3991,6 +2083,659 @@ R U 2005 o - Mar 27 2 0 -
R U 2005 o - O 9 2 1 -
R U 2006 2015 - Mar Su>=8 2 0 -
R U 2006 2014 - O Su>=1 2 1 -
+Z Africa/Abidjan -0:16:8 - LMT 1912
+0 - GMT
+Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16
+0:9:21 - PMT 1911 Mar 11
+0 d WE%sT 1940 F 25 2
+1 d CE%sT 1946 O 7
+0 - WET 1956 Ja 29
+1 - CET 1963 Ap 14
+0 d WE%sT 1977 O 21
+1 d CE%sT 1979 O 26
+0 d WE%sT 1981 May
+1 - CET
+Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u
+-1 - -01 1975
+0 - GMT
+Z Africa/Cairo 2:5:9 - LMT 1900 O
+2 K EE%sT
+Z Africa/Casablanca -0:30:20 - LMT 1913 O 26
+0 M +00/+01 1984 Mar 16
+1 - +01 1986
+0 M +00/+01 2018 O 28 3
+1 M +01/+00
+Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u
+0 - WET 1918 May 6 23
+0 1 WEST 1918 O 7 23
+0 - WET 1924
+0 s WE%sT 1929
+0 - WET 1967
+0 Sp WE%sT 1984 Mar 16
+1 - CET 1986
+1 E CE%sT
+Z Africa/El_Aaiun -0:52:48 - LMT 1934
+-1 - -01 1976 Ap 14
+0 M +00/+01 2018 O 28 3
+1 M +01/+00
+Z Africa/Johannesburg 1:52 - LMT 1892 F 8
+1:30 - SAST 1903 Mar
+2 SA SAST
+Z Africa/Juba 2:6:28 - LMT 1931
+2 SD CA%sT 2000 Ja 15 12
+3 - EAT 2021 F
+2 - CAT
+Z Africa/Khartoum 2:10:8 - LMT 1931
+2 SD CA%sT 2000 Ja 15 12
+3 - EAT 2017 N
+2 - CAT
+Z Africa/Lagos 0:13:35 - LMT 1905 Jul
+0 - GMT 1908 Jul
+0:13:35 - LMT 1914
+0:30 - +0030 1919 S
+1 - WAT
+Z Africa/Maputo 2:10:20 - LMT 1903 Mar
+2 - CAT
+Z Africa/Monrovia -0:43:8 - LMT 1882
+-0:43:8 - MMT 1919 Mar
+-0:44:30 - MMT 1972 Ja 7
+0 - GMT
+Z Africa/Nairobi 2:27:16 - LMT 1908 May
+2:30 - +0230 1928 Jun 30 24
+3 - EAT 1930 Ja 4 24
+2:30 - +0230 1936 D 31 24
+2:45 - +0245 1942 Jul 31 24
+3 - EAT
+Z Africa/Ndjamena 1:0:12 - LMT 1912
+1 - WAT 1979 O 14
+1 1 WAST 1980 Mar 8
+1 - WAT
+Z Africa/Sao_Tome 0:26:56 - LMT 1884
+-0:36:45 - LMT 1912 Ja 1 0u
+0 - GMT 2018 Ja 1 1
+1 - WAT 2019 Ja 1 2
+0 - GMT
+Z Africa/Tripoli 0:52:44 - LMT 1920
+1 L CE%sT 1959
+2 - EET 1982
+1 L CE%sT 1990 May 4
+2 - EET 1996 S 30
+1 L CE%sT 1997 O 4
+2 - EET 2012 N 10 2
+1 L CE%sT 2013 O 25 2
+2 - EET
+Z Africa/Tunis 0:40:44 - LMT 1881 May 12
+0:9:21 - PMT 1911 Mar 11
+1 n CE%sT
+Z Africa/Windhoek 1:8:24 - LMT 1892 F 8
+1:30 - +0130 1903 Mar
+2 - SAST 1942 S 20 2
+2 1 SAST 1943 Mar 21 2
+2 - SAST 1990 Mar 21
+2 NA %s
+Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35
+-11:46:38 - LMT 1900 Au 20 12
+-11 - NST 1942
+-11 u N%sT 1946
+-11 - NST 1967 Ap
+-11 - BST 1969
+-11 u B%sT 1983 O 30 2
+-10 u AH%sT 1983 N 30
+-10 u H%sT
+Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37
+-9:59:36 - LMT 1900 Au 20 12
+-10 - AST 1942
+-10 u A%sT 1967 Ap
+-10 - AHST 1969
+-10 u AH%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/Araguaina -3:12:48 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1995 S 14
+-3 B -03/-02 2003 S 24
+-3 - -03 2012 O 21
+-3 B -03/-02 2013 S
+-3 - -03
+Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02
+Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02
+Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1990 Mar 4
+-4 - -04 1990 O 28
+-4 1 -03 1991 Mar 17
+-4 - -04 1991 O 6
+-3 1 -02 1992
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar
+-4 - -04 1991 May 7
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1990 Mar 4
+-4 - -04 1990 O 15
+-4 1 -03 1991 Mar
+-4 - -04 1991 O 15
+-4 1 -03 1992 Mar
+-4 - -04 1992 O 18
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 May 23
+-4 - -04 2004 S 26
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar
+-4 - -04 1991 May 7
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 May 31
+-4 - -04 2004 Jul 25
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1990
+-3 1 -02 1990 Mar 14
+-4 - -04 1990 O 15
+-4 1 -03 1991 Mar
+-4 - -04 1991 Jun
+-3 - -03 1999 O 3
+-4 1 -03 2000 Mar 3
+-3 - -03 2004 May 31
+-4 - -04 2004 Jul 25
+-3 A -03/-02 2008 Ja 21
+-4 Sa -04/-03 2009 O 11
+-3 - -03
+Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1991 Mar 3
+-4 - -04 1991 O 20
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 Jun
+-4 - -04 2004 Jun 13
+-3 A -03/-02
+Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31
+-4:16:48 - CMT 1920 May
+-4 - -04 1930 D
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1999 O 3
+-4 A -04/-03 2000 Mar 3
+-3 - -03 2004 May 30
+-4 - -04 2004 Jun 20
+-3 A -03/-02 2008 O 18
+-3 - -03
+Z America/Asuncion -3:50:40 - LMT 1890
+-3:50:40 - AMT 1931 O 10
+-4 - -04 1972 O
+-3 - -03 1974 Ap
+-4 y -04/-03
+Z America/Bahia -2:34:4 - LMT 1914
+-3 B -03/-02 2003 S 24
+-3 - -03 2011 O 16
+-3 B -03/-02 2012 O 21
+-3 - -03
+Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1942 Ap 24
+-7 - MST 1949 Ja 14
+-8 - PST 1970
+-7 m M%sT 2010 Ap 4 2
+-6 m C%sT
+Z America/Barbados -3:58:29 - LMT 1911 Au 28
+-4 BB A%sT 1944
+-4 BB AST/-0330 1945
+-4 BB A%sT
+Z America/Belem -3:13:56 - LMT 1914
+-3 B -03/-02 1988 S 12
+-3 - -03
+Z America/Belize -5:52:48 - LMT 1912 Ap
+-6 BZ %s
+Z America/Boa_Vista -4:2:40 - LMT 1914
+-4 B -04/-03 1988 S 12
+-4 - -04 1999 S 30
+-4 B -04/-03 2000 O 15
+-4 - -04
+Z America/Bogota -4:56:16 - LMT 1884 Mar 13
+-4:56:16 - BMT 1914 N 23
+-5 CO -05/-04
+Z America/Boise -7:44:49 - LMT 1883 N 18 20u
+-8 u P%sT 1923 May 13 2
+-7 u M%sT 1974
+-7 - MST 1974 F 3 2
+-7 u M%sT
+Z America/Cambridge_Bay 0 - -00 1920
+-7 Y M%sT 1999 O 31 2
+-6 C C%sT 2000 O 29 2
+-5 - EST 2000 N 5
+-6 - CST 2001 Ap 1 3
+-7 C M%sT
+Z America/Campo_Grande -3:38:28 - LMT 1914
+-4 B -04/-03
+Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u
+-6 - CST 1981 D 23
+-5 m E%sT 1998 Au 2 2
+-6 m C%sT 2015 F 1 2
+-5 - EST
+Z America/Caracas -4:27:44 - LMT 1890
+-4:27:40 - CMT 1912 F 12
+-4:30 - -0430 1965
+-4 - -04 2007 D 9 3
+-4:30 - -0430 2016 May 1 2:30
+-4 - -04
+Z America/Cayenne -3:29:20 - LMT 1911 Jul
+-4 - -04 1967 O
+-3 - -03
+Z America/Chicago -5:50:36 - LMT 1883 N 18 18u
+-6 u C%sT 1920
+-6 Ch C%sT 1936 Mar 1 2
+-5 - EST 1936 N 15 2
+-6 Ch C%sT 1942
+-6 u C%sT 1946
+-6 Ch C%sT 1967
+-6 u C%sT
+Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1996
+-6 m C%sT 1998
+-6 - CST 1998 Ap Su>=1 3
+-7 m M%sT 2022 O 30 2
+-6 - CST
+Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1996
+-6 m C%sT 1998
+-6 - CST 1998 Ap Su>=1 3
+-7 m M%sT 2010
+-7 u M%sT 2022 O 30 2
+-6 - CST 2022 N 30
+-7 u M%sT
+Z America/Costa_Rica -5:36:13 - LMT 1890
+-5:36:13 - SJMT 1921 Ja 15
+-6 CR C%sT
+Z America/Cuiaba -3:44:20 - LMT 1914
+-4 B -04/-03 2003 S 24
+-4 - -04 2004 O
+-4 B -04/-03
+Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
+-3 - -03 1980 Ap 6 2
+-3 E -03/-02 1996
+0 - GMT
+Z America/Dawson -9:17:40 - LMT 1900 Au 20
+-9 Y Y%sT 1965
+-9 Yu Y%sT 1973 O 28
+-8 - PST 1980
+-8 C P%sT 2020 N
+-7 - MST
+Z America/Dawson_Creek -8:0:56 - LMT 1884
+-8 C P%sT 1947
+-8 Va P%sT 1972 Au 30 2
+-7 - MST
+Z America/Denver -6:59:56 - LMT 1883 N 18 19u
+-7 u M%sT 1920
+-7 De M%sT 1942
+-7 u M%sT 1946
+-7 De M%sT 1967
+-7 u M%sT
+Z America/Detroit -5:32:11 - LMT 1905
+-6 - CST 1915 May 15 2
+-5 - EST 1942
+-5 u E%sT 1946
+-5 Dt E%sT 1967 Jun 14 0:1
+-5 u E%sT 1969
+-5 - EST 1973
+-5 u E%sT 1975
+-5 - EST 1975 Ap 27 2
+-5 u E%sT
+Z America/Edmonton -7:33:52 - LMT 1906 S
+-7 Ed M%sT 1987
+-7 C M%sT
+Z America/Eirunepe -4:39:28 - LMT 1914
+-5 B -05/-04 1988 S 12
+-5 - -05 1993 S 28
+-5 B -05/-04 1994 S 22
+-5 - -05 2008 Jun 24
+-4 - -04 2013 N 10
+-5 - -05
+Z America/El_Salvador -5:56:48 - LMT 1921
+-6 SV C%sT
+Z America/Fort_Nelson -8:10:47 - LMT 1884
+-8 Va P%sT 1946
+-8 - PST 1947
+-8 Va P%sT 1987
+-8 C P%sT 2015 Mar 8 2
+-7 - MST
+Z America/Fortaleza -2:34 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1999 S 30
+-3 B -03/-02 2000 O 22
+-3 - -03 2001 S 13
+-3 B -03/-02 2002 O
+-3 - -03
+Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
+-4 C A%sT 1953
+-4 H A%sT 1954
+-4 - AST 1972
+-4 H A%sT 1974
+-4 C A%sT
+Z America/Goose_Bay -4:1:40 - LMT 1884
+-3:30:52 - NST 1918
+-3:30:52 C N%sT 1919
+-3:30:52 - NST 1935 Mar 30
+-3:30 - NST 1936
+-3:30 j N%sT 1942 May 11
+-3:30 C N%sT 1946
+-3:30 j N%sT 1966 Mar 15 2
+-4 j A%sT 2011 N
+-4 C A%sT
+Z America/Grand_Turk -4:44:32 - LMT 1890
+-5:7:10 - KMT 1912 F
+-5 - EST 1979
+-5 u E%sT 2015 Mar 8 2
+-4 - AST 2018 Mar 11 3
+-5 u E%sT
+Z America/Guatemala -6:2:4 - LMT 1918 O 5
+-6 GT C%sT
+Z America/Guayaquil -5:19:20 - LMT 1890
+-5:14 - QMT 1931
+-5 EC -05/-04
+Z America/Guyana -3:52:39 - LMT 1911 Au
+-4 - -04 1915 Mar
+-3:45 - -0345 1975 Au
+-3 - -03 1992 Mar 29 1
+-4 - -04
+Z America/Halifax -4:14:24 - LMT 1902 Jun 15
+-4 H A%sT 1918
+-4 C A%sT 1919
+-4 H A%sT 1942 F 9 2s
+-4 C A%sT 1946
+-4 H A%sT 1974
+-4 C A%sT
+Z America/Havana -5:29:28 - LMT 1890
+-5:29:36 - HMT 1925 Jul 19 12
+-5 Q C%sT
+Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1942 Ap 24
+-7 - MST 1949 Ja 14
+-8 - PST 1970
+-7 m M%sT 1999
+-7 - MST
+Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u
+-6 u C%sT 1920
+-6 In C%sT 1942
+-6 u C%sT 1946
+-6 In C%sT 1955 Ap 24 2
+-5 - EST 1957 S 29 2
+-6 - CST 1958 Ap 27 2
+-5 - EST 1969
+-5 u E%sT 1971
+-5 - EST 2006
+-5 u E%sT
+Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u
+-6 u C%sT 1947
+-6 St C%sT 1962 Ap 29 2
+-5 - EST 1963 O 27 2
+-6 u C%sT 1991 O 27 2
+-5 - EST 2006 Ap 2 2
+-6 u C%sT
+Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u
+-6 u C%sT 1951
+-6 Ma C%sT 1961 Ap 30 2
+-5 - EST 1969
+-5 u E%sT 1974 Ja 6 2
+-6 1 CDT 1974 O 27 2
+-5 u E%sT 1976
+-5 - EST 2006
+-5 u E%sT
+Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u
+-6 u C%sT 1955
+-6 Pi C%sT 1965 Ap 25 2
+-5 - EST 1966 O 30 2
+-6 u C%sT 1977 O 30 2
+-5 - EST 2006 Ap 2 2
+-6 u C%sT 2007 N 4 2
+-5 u E%sT
+Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 Pe C%sT 1964 Ap 26 2
+-5 - EST 1967 O 29 2
+-6 u C%sT 1969 Ap 27 2
+-5 u E%sT 1971
+-5 - EST 2006 Ap 2 2
+-6 u C%sT
+Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u
+-6 u C%sT 1954 Ap 25 2
+-5 - EST 1969
+-5 u E%sT 1973
+-5 - EST 2006
+-5 u E%sT
+Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 V C%sT 1964 Ap 26 2
+-5 - EST 1969
+-5 u E%sT 1971
+-5 - EST 2006 Ap 2 2
+-6 u C%sT 2007 N 4 2
+-5 u E%sT
+Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 Pu C%sT 1961 Ap 30 2
+-5 - EST 1969
+-5 u E%sT 1971
+-5 - EST 2006 Ap 2 2
+-6 u C%sT 2007 Mar 11 2
+-5 u E%sT
+Z America/Inuvik 0 - -00 1953
+-8 Y P%sT 1979 Ap lastSu 2
+-7 Y M%sT 1980
+-7 C M%sT
+Z America/Iqaluit 0 - -00 1942 Au
+-5 Y E%sT 1999 O 31 2
+-6 C C%sT 2000 O 29 2
+-5 C E%sT
+Z America/Jamaica -5:7:10 - LMT 1890
+-5:7:10 - KMT 1912 F
+-5 - EST 1974
+-5 u E%sT 1984
+-5 - EST
+Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32
+-8:57:41 - LMT 1900 Au 20 12
+-8 - PST 1942
+-8 u P%sT 1946
+-8 - PST 1969
+-8 u P%sT 1980 Ap 27 2
+-9 u Y%sT 1980 O 26 2
+-8 u P%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u
+-6 u C%sT 1921
+-6 v C%sT 1942
+-6 u C%sT 1946
+-6 v C%sT 1961 Jul 23 2
+-5 - EST 1968
+-5 u E%sT 1974 Ja 6 2
+-6 1 CDT 1974 O 27 2
+-5 u E%sT
+Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u
+-6 u C%sT 1946
+-6 - CST 1968
+-6 u C%sT 2000 O 29 2
+-5 u E%sT
+Z America/La_Paz -4:32:36 - LMT 1890
+-4:32:36 - CMT 1931 O 15
+-4:32:36 1 BST 1932 Mar 21
+-4 - -04
+Z America/Lima -5:8:12 - LMT 1890
+-5:8:36 - LMT 1908 Jul 28
+-5 PE -05/-04
+Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u
+-8 u P%sT 1946
+-8 CA P%sT 1967
+-8 u P%sT
+Z America/Maceio -2:22:52 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1995 O 13
+-3 B -03/-02 1996 S 4
+-3 - -03 1999 S 30
+-3 B -03/-02 2000 O 22
+-3 - -03 2001 S 13
+-3 B -03/-02 2002 O
+-3 - -03
+Z America/Managua -5:45:8 - LMT 1890
+-5:45:12 - MMT 1934 Jun 23
+-6 - CST 1973 May
+-5 - EST 1975 F 16
+-6 NI C%sT 1992 Ja 1 4
+-5 - EST 1992 S 24
+-6 - CST 1993
+-5 - EST 1997
+-6 NI C%sT
+Z America/Manaus -4:0:4 - LMT 1914
+-4 B -04/-03 1988 S 12
+-4 - -04 1993 S 28
+-4 B -04/-03 1994 S 22
+-4 - -04
+Z America/Martinique -4:4:20 - LMT 1890
+-4:4:20 - FFMT 1911 May
+-4 - AST 1980 Ap 6
+-4 1 ADT 1980 S 28
+-4 - AST
+Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u
+-6 - CST 1988
+-6 u C%sT 1989
+-6 m C%sT 2010
+-6 u C%sT
+Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1942 Ap 24
+-7 - MST 1949 Ja 14
+-8 - PST 1970
+-7 m M%sT
+Z America/Menominee -5:50:27 - LMT 1885 S 18 12
+-6 u C%sT 1946
+-6 Me C%sT 1969 Ap 27 2
+-5 - EST 1973 Ap 29 2
+-6 u C%sT
+Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u
+-6 - CST 1981 D 23
+-5 - EST 1982 D 2
+-6 m C%sT
+Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55
+-8:46:18 - LMT 1900 Au 20 12
+-8 - PST 1942
+-8 u P%sT 1946
+-8 - PST 1969
+-8 u P%sT 1983 O 30 2
+-8 - PST 2015 N 1 2
+-9 u AK%sT 2018 N 4 2
+-8 - PST 2019 Ja 20 2
+-9 u AK%sT
+Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 m C%sT 2001 S 30 2
+-6 - CST 2002 F 20
+-6 m C%sT
+Z America/Miquelon -3:44:40 - LMT 1911 Jun 15
+-4 - AST 1980 May
+-3 - -03 1987
+-3 C -03/-02
+Z America/Moncton -4:19:8 - LMT 1883 D 9
+-5 - EST 1902 Jun 15
+-4 C A%sT 1933
+-4 o A%sT 1942
+-4 C A%sT 1946
+-4 o A%sT 1973
+-4 C A%sT 1993
+-4 o A%sT 2007
+-4 C A%sT
+Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u
+-6 - CST 1988
+-6 u C%sT 1989
+-6 m C%sT
Z America/Montevideo -3:44:51 - LMT 1908 Jun 10
-3:44:51 - MMT 1920 May
-4 - -04 1923 O
@@ -4002,30 +2747,842 @@ Z America/Montevideo -3:44:51 - LMT 1908 Jun 10
-3 U -03/-0130 1974 Mar 10
-3 U -03/-0230 1974 D 22
-3 U -03/-02
-Z America/Caracas -4:27:44 - LMT 1890
--4:27:40 - CMT 1912 F 12
--4:30 - -0430 1965
--4 - -04 2007 D 9 3
--4:30 - -0430 2016 May 1 2:30
+Z America/New_York -4:56:2 - LMT 1883 N 18 17u
+-5 u E%sT 1920
+-5 NY E%sT 1942
+-5 u E%sT 1946
+-5 NY E%sT 1967
+-5 u E%sT
+Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35
+-11:1:38 - LMT 1900 Au 20 12
+-11 - NST 1942
+-11 u N%sT 1946
+-11 - NST 1967 Ap
+-11 - BST 1969
+-11 u B%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/Noronha -2:9:40 - LMT 1914
+-2 B -02/-01 1990 S 17
+-2 - -02 1999 S 30
+-2 B -02/-01 2000 O 15
+-2 - -02 2001 S 13
+-2 B -02/-01 2002 O
+-2 - -02
+Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u
+-7 u M%sT 2010 N 7 2
+-6 u C%sT
+Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u
+-7 u M%sT 1992 O 25 2
+-6 u C%sT
+Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u
+-7 u M%sT 2003 O 26 2
+-6 u C%sT
+Z America/Nuuk -3:26:56 - LMT 1916 Jul 28
+-3 - -03 1980 Ap 6 2
+-3 E -03/-02 2023 Mar 26 1u
+-2 - -02 2023 O 29 1u
+-2 E -02/-01
+Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u
+-7 - MST 1927 Jun 10 23
+-6 - CST 1930 N 15
+-7 m M%sT 1932 Ap
+-6 - CST 1996
+-6 m C%sT 1998
+-6 - CST 1998 Ap Su>=1 3
+-7 m M%sT 2010
+-7 u M%sT 2022 O 30 2
+-6 - CST 2022 N 30
+-6 u C%sT
+Z America/Panama -5:18:8 - LMT 1890
+-5:19:36 - CMT 1908 Ap 22
+-5 - EST
+Z America/Paramaribo -3:40:40 - LMT 1911
+-3:40:52 - PMT 1935
+-3:40:36 - PMT 1945 O
+-3:30 - -0330 1984 O
+-3 - -03
+Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u
+-7 u M%sT 1944 Ja 1 0:1
+-7 - MST 1944 Ap 1 0:1
+-7 u M%sT 1944 O 1 0:1
+-7 - MST 1967
+-7 u M%sT 1968 Mar 21
+-7 - MST
+Z America/Port-au-Prince -4:49:20 - LMT 1890
+-4:49 - PPMT 1917 Ja 24 12
+-5 HT E%sT
+Z America/Porto_Velho -4:15:36 - LMT 1914
+-4 B -04/-03 1988 S 12
-4 - -04
-Z Etc/UTC 0 - UTC
+Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12
+-4 - AST 1942 May 3
+-4 u A%sT 1946
+-4 - AST
+Z America/Punta_Arenas -4:43:40 - LMT 1890
+-4:42:45 - SMT 1910 Ja 10
+-5 - -05 1916 Jul
+-4:42:45 - SMT 1918 S 10
+-4 - -04 1919 Jul
+-4:42:45 - SMT 1927 S
+-5 x -05/-04 1932 S
+-4 - -04 1942 Jun
+-5 - -05 1942 Au
+-4 - -04 1946 Au 28 24
+-5 1 -04 1947 Mar 31 24
+-5 - -05 1947 May 21 23
+-4 x -04/-03 2016 D 4
+-3 - -03
+Z America/Rankin_Inlet 0 - -00 1957
+-6 Y C%sT 2000 O 29 2
+-5 - EST 2001 Ap 1 3
+-6 C C%sT
+Z America/Recife -2:19:36 - LMT 1914
+-3 B -03/-02 1990 S 17
+-3 - -03 1999 S 30
+-3 B -03/-02 2000 O 15
+-3 - -03 2001 S 13
+-3 B -03/-02 2002 O
+-3 - -03
+Z America/Regina -6:58:36 - LMT 1905 S
+-7 r M%sT 1960 Ap lastSu 2
+-6 - CST
+Z America/Resolute 0 - -00 1947 Au 31
+-6 Y C%sT 2000 O 29 2
+-5 - EST 2001 Ap 1 3
+-6 C C%sT 2006 O 29 2
+-5 - EST 2007 Mar 11 3
+-6 C C%sT
+Z America/Rio_Branco -4:31:12 - LMT 1914
+-5 B -05/-04 1988 S 12
+-5 - -05 2008 Jun 24
+-4 - -04 2013 N 10
+-5 - -05
+Z America/Santarem -3:38:48 - LMT 1914
+-4 B -04/-03 1988 S 12
+-4 - -04 2008 Jun 24
+-3 - -03
+Z America/Santiago -4:42:45 - LMT 1890
+-4:42:45 - SMT 1910 Ja 10
+-5 - -05 1916 Jul
+-4:42:45 - SMT 1918 S 10
+-4 - -04 1919 Jul
+-4:42:45 - SMT 1927 S
+-5 x -05/-04 1932 S
+-4 - -04 1942 Jun
+-5 - -05 1942 Au
+-4 - -04 1946 Jul 14 24
+-4 1 -03 1946 Au 28 24
+-5 1 -04 1947 Mar 31 24
+-5 - -05 1947 May 21 23
+-4 x -04/-03
+Z America/Santo_Domingo -4:39:36 - LMT 1890
+-4:40 - SDMT 1933 Ap 1 12
+-5 DO %s 1974 O 27
+-4 - AST 2000 O 29 2
+-5 u E%sT 2000 D 3 1
+-4 - AST
+Z America/Sao_Paulo -3:6:28 - LMT 1914
+-3 B -03/-02 1963 O 23
+-3 1 -02 1964
+-3 B -03/-02
+Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28
+-2 - -02 1980 Ap 6 2
+-2 c -02/-01 1981 Mar 29
+-1 E -01/+00 2024 Mar 31
+-2 E -02/-01
+Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30
+-9:1:13 - LMT 1900 Au 20 12
+-8 - PST 1942
+-8 u P%sT 1946
+-8 - PST 1969
+-8 u P%sT 1983 O 30 2
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z America/St_Johns -3:30:52 - LMT 1884
+-3:30:52 j N%sT 1918
+-3:30:52 C N%sT 1919
+-3:30:52 j N%sT 1935 Mar 30
+-3:30 j N%sT 1942 May 11
+-3:30 C N%sT 1946
+-3:30 j N%sT 2011 N
+-3:30 C N%sT
+Z America/Swift_Current -7:11:20 - LMT 1905 S
+-7 C M%sT 1946 Ap lastSu 2
+-7 r M%sT 1950
+-7 Sw M%sT 1972 Ap lastSu 2
+-6 - CST
+Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap
+-6 HN C%sT
+Z America/Thule -4:35:8 - LMT 1916 Jul 28
+-4 Th A%sT
+Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u
+-7 - MST 1924
+-8 - PST 1927 Jun 10 23
+-7 - MST 1930 N 15
+-8 - PST 1931 Ap
+-8 1 PDT 1931 S 30
+-8 - PST 1942 Ap 24
+-8 1 PWT 1945 Au 14 23u
+-8 1 PPT 1945 N 12
+-8 - PST 1948 Ap 5
+-8 1 PDT 1949 Ja 14
+-8 - PST 1954
+-8 CA P%sT 1961
+-8 - PST 1976
+-8 u P%sT 1996
+-8 m P%sT 2001
+-8 u P%sT 2002 F 20
+-8 m P%sT 2010
+-8 u P%sT
+Z America/Toronto -5:17:32 - LMT 1895
+-5 C E%sT 1919
+-5 t E%sT 1942 F 9 2s
+-5 C E%sT 1946
+-5 t E%sT 1974
+-5 C E%sT
+Z America/Vancouver -8:12:28 - LMT 1884
+-8 Va P%sT 1987
+-8 C P%sT
+Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
+-9 Y Y%sT 1965
+-9 Yu Y%sT 1966 F 27
+-8 - PST 1980
+-8 C P%sT 2020 N
+-7 - MST
+Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16
+-6 W C%sT 2006
+-6 C C%sT
+Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18
+-9:18:55 - LMT 1900 Au 20 12
+-9 - YST 1942
+-9 u Y%sT 1946
+-9 - YST 1969
+-9 u Y%sT 1983 N 30
+-9 u AK%sT
+Z Antarctica/Casey 0 - -00 1969
+8 - +08 2009 O 18 2
+11 - +11 2010 Mar 5 2
+8 - +08 2011 O 28 2
+11 - +11 2012 F 21 17u
+8 - +08 2016 O 22
+11 - +11 2018 Mar 11 4
+8 - +08 2018 O 7 4
+11 - +11 2019 Mar 17 3
+8 - +08 2019 O 4 3
+11 - +11 2020 Mar 8 3
+8 - +08 2020 O 4 0:1
+11 - +11 2021 Mar 14
+8 - +08 2021 O 3 0:1
+11 - +11 2022 Mar 13
+8 - +08 2022 O 2 0:1
+11 - +11 2023 Mar 9 3
+8 - +08
+Z Antarctica/Davis 0 - -00 1957 Ja 13
+7 - +07 1964 N
+0 - -00 1969 F
+7 - +07 2009 O 18 2
+5 - +05 2010 Mar 10 20u
+7 - +07 2011 O 28 2
+5 - +05 2012 F 21 20u
+7 - +07
+Z Antarctica/Macquarie 0 - -00 1899 N
+10 - AEST 1916 O 1 2
+10 1 AEDT 1917 F
+10 AU AE%sT 1919 Ap 1 0s
+0 - -00 1948 Mar 25
+10 AU AE%sT 1967
+10 AT AE%sT 2010
+10 1 AEDT 2011
+10 AT AE%sT
+Z Antarctica/Mawson 0 - -00 1954 F 13
+6 - +06 2009 O 18 2
+5 - +05
+Z Antarctica/Palmer 0 - -00 1965
+-4 A -04/-03 1969 O 5
+-3 A -03/-02 1982 May
+-4 x -04/-03 2016 D 4
+-3 - -03
+Z Antarctica/Rothera 0 - -00 1976 D
+-3 - -03
+Z Antarctica/Troll 0 - -00 2005 F 12
+0 Tr %s
+Z Antarctica/Vostok 0 - -00 1957 D 16
+7 - +07 1994 F
+0 - -00 1994 N
+7 - +07 2023 D 18 2
+5 - +05
+Z Asia/Almaty 5:7:48 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 R +05/+06 1992 Ja 19 2s
+6 R +06/+07 2004 O 31 2s
+6 - +06 2024 Mar
+5 - +05
+Z Asia/Amman 2:23:44 - LMT 1931
+2 J EE%sT 2022 O 28 0s
+3 - +03
+Z Asia/Anadyr 11:49:56 - LMT 1924 May 2
+12 - +12 1930 Jun 21
+13 R +13/+14 1982 Ap 1 0s
+12 R +12/+13 1991 Mar 31 2s
+11 R +11/+12 1992 Ja 19 2s
+12 R +12/+13 2010 Mar 28 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12
+Z Asia/Aqtau 3:21:4 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 1994 S 25 2s
+4 R +04/+05 2004 O 31 2s
+5 - +05
+Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 2004 O 31 2s
+5 - +05
+Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 R +05/+06 1991 Mar 31 2
+4 R +04/+05 1992 Ja 19 2
+5 - +05
+Z Asia/Atyrau 3:27:44 - LMT 1924 May 2
+3 - +03 1930 Jun 21
+5 - +05 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 1999 Mar 28 2s
+4 R +04/+05 2004 O 31 2s
+5 - +05
+Z Asia/Baghdad 2:57:40 - LMT 1890
+2:57:36 - BMT 1918
+3 - +03 1982 May
+3 IQ +03/+04
+Z Asia/Baku 3:19:24 - LMT 1924 May 2
+3 - +03 1957 Mar
+4 R +04/+05 1991 Mar 31 2s
+3 R +03/+04 1992 S lastSu 2s
+4 - +04 1996
+4 E +04/+05 1997
+4 AZ +04/+05
+Z Asia/Bangkok 6:42:4 - LMT 1880
+6:42:4 - BMT 1920 Ap
+7 - +07
+Z Asia/Barnaul 5:35 - LMT 1919 D 10
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 1995 May 28
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06 2016 Mar 27 2s
+7 - +07
+Z Asia/Beirut 2:22 - LMT 1880
+2 l EE%sT
+Z Asia/Bishkek 4:58:24 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 R +05/+06 1991 Au 31 2
+5 KG +05/+06 2005 Au 12
+6 - +06
+Z Asia/Chita 7:33:52 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1991 Mar 31 2s
+8 R +08/+09 1992 Ja 19 2s
+9 R +09/+10 2011 Mar 27 2s
+10 - +10 2014 O 26 2s
+8 - +08 2016 Mar 27 2
+9 - +09
+Z Asia/Choibalsan 7:38 - LMT 1905 Au
+7 - +07 1978
+8 - +08 1983 Ap
+9 X +09/+10 2008 Mar 31
+8 X +08/+09
+Z Asia/Colombo 5:19:24 - LMT 1880
+5:19:32 - MMT 1906
+5:30 - +0530 1942 Ja 5
+5:30 0:30 +06 1942 S
+5:30 1 +0630 1945 O 16 2
+5:30 - +0530 1996 May 25
+6:30 - +0630 1996 O 26 0:30
+6 - +06 2006 Ap 15 0:30
+5:30 - +0530
+Z Asia/Damascus 2:25:12 - LMT 1920
+2 S EE%sT 2022 O 28
+3 - +03
+Z Asia/Dhaka 6:1:40 - LMT 1890
+5:53:20 - HMT 1941 O
+6:30 - +0630 1942 May 15
+5:30 - +0530 1942 S
+6:30 - +0630 1951 S 30
+6 - +06 2009
+6 BD +06/+07
+Z Asia/Dili 8:22:20 - LMT 1912
+8 - +08 1942 F 21 23
+9 - +09 1976 May 3
+8 - +08 2000 S 17
+9 - +09
+Z Asia/Dubai 3:41:12 - LMT 1920
+4 - +04
+Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 1 +06 1991 S 9 2s
+5 - +05
+Z Asia/Famagusta 2:15:48 - LMT 1921 N 14
+2 CY EE%sT 1998 S
+2 E EE%sT 2016 S 8
+3 - +03 2017 O 29 1u
+2 E EE%sT
+Z Asia/Gaza 2:17:52 - LMT 1900 O
+2 Z EET/EEST 1948 May 15
+2 K EE%sT 1967 Jun 5
+2 Z I%sT 1996
+2 J EE%sT 1999
+2 P EE%sT 2008 Au 29
+2 - EET 2008 S
+2 P EE%sT 2010
+2 - EET 2010 Mar 27 0:1
+2 P EE%sT 2011 Au
+2 - EET 2012
+2 P EE%sT
+Z Asia/Hebron 2:20:23 - LMT 1900 O
+2 Z EET/EEST 1948 May 15
+2 K EE%sT 1967 Jun 5
+2 Z I%sT 1996
+2 J EE%sT 1999
+2 P EE%sT
+Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul
+7:6:30 - PLMT 1911 May
+7 - +07 1942 D 31 23
+8 - +08 1945 Mar 14 23
+9 - +09 1945 S 1 24
+7 - +07 1947 Ap
+8 - +08 1955 Jul 1 1
+7 - +07 1959 D 31 23
+8 - +08 1975 Jun 13
+7 - +07
+Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u
+8 - HKT 1941 Jun 15 3
+8 1 HKST 1941 O 1 4
+8 0:30 HKWT 1941 D 25
+9 - JST 1945 N 18 2
+8 HK HK%sT
+Z Asia/Hovd 6:6:36 - LMT 1905 Au
+6 - +06 1978
+7 X +07/+08
+Z Asia/Irkutsk 6:57:5 - LMT 1880
+6:57:5 - IMT 1920 Ja 25
+7 - +07 1930 Jun 21
+8 R +08/+09 1991 Mar 31 2s
+7 R +07/+08 1992 Ja 19 2s
+8 R +08/+09 2011 Mar 27 2s
+9 - +09 2014 O 26 2s
+8 - +08
+Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10
+7:7:12 - BMT 1923 D 31 16:40u
+7:20 - +0720 1932 N
+7:30 - +0730 1942 Mar 23
+9 - +09 1945 S 23
+7:30 - +0730 1948 May
+8 - +08 1950 May
+7:30 - +0730 1964
+7 - WIB
+Z Asia/Jayapura 9:22:48 - LMT 1932 N
+9 - +09 1944 S
+9:30 - +0930 1964
+9 - WIT
+Z Asia/Jerusalem 2:20:54 - LMT 1880
+2:20:40 - JMT 1918
+2 Z I%sT
+Z Asia/Kabul 4:36:48 - LMT 1890
+4 - +04 1945
+4:30 - +0430
+Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10
+11 - +11 1930 Jun 21
+12 R +12/+13 1991 Mar 31 2s
+11 R +11/+12 1992 Ja 19 2s
+12 R +12/+13 2010 Mar 28 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12
+Z Asia/Karachi 4:28:12 - LMT 1907
+5:30 - +0530 1942 S
+5:30 1 +0630 1945 O 15
+5:30 - +0530 1951 S 30
+5 - +05 1971 Mar 26
+5 PK PK%sT
+Z Asia/Kathmandu 5:41:16 - LMT 1920
+5:30 - +0530 1986
+5:45 - +0545
+Z Asia/Khandyga 9:2:13 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1991 Mar 31 2s
+8 R +08/+09 1992 Ja 19 2s
+9 R +09/+10 2004
+10 R +10/+11 2011 Mar 27 2s
+11 - +11 2011 S 13 0s
+10 - +10 2014 O 26 2s
+9 - +09
+Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28
+5:53:20 - HMT 1870
+5:21:10 - MMT 1906
+5:30 - IST 1941 O
+5:30 1 +0630 1942 May 15
+5:30 - IST 1942 S
+5:30 1 +0630 1945 O 15
+5:30 - IST
+Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 2011 Mar 27 2s
+8 - +08 2014 O 26 2s
+7 - +07
+Z Asia/Kuching 7:21:20 - LMT 1926 Mar
+7:30 - +0730 1933
+8 NB +08/+0820 1942 F 16
+9 - +09 1945 S 12
+8 - +08
+Z Asia/Macau 7:34:10 - LMT 1904 O 30
+8 - CST 1941 D 21 23
+9 _ +09/+10 1945 S 30 24
+8 _ C%sT
+Z Asia/Magadan 10:3:12 - LMT 1924 May 2
+10 - +10 1930 Jun 21
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12 2014 O 26 2s
+10 - +10 2016 Ap 24 2s
+11 - +11
+Z Asia/Makassar 7:57:36 - LMT 1920
+7:57:36 - MMT 1932 N
+8 - +08 1942 F 9
+9 - +09 1945 S 23
+8 - WITA
+Z Asia/Manila -15:56 - LMT 1844 D 31
+8:4 - LMT 1899 May 11
+8 PH P%sT 1942 May
+9 - JST 1944 N
+8 PH P%sT
+Z Asia/Nicosia 2:13:28 - LMT 1921 N 14
+2 CY EE%sT 1998 S
+2 E EE%sT
+Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 2010 Mar 28 2s
+6 R +06/+07 2011 Mar 27 2s
+7 - +07
+Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 1993 May 23
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06 2016 Jul 24 2s
+7 - +07
+Z Asia/Omsk 4:53:30 - LMT 1919 N 14
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2s
+5 R +05/+06 1992 Ja 19 2s
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06
+Z Asia/Oral 3:25:24 - LMT 1924 May 2
+3 - +03 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1989 Mar 26 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 1992 Mar 29 2s
+4 R +04/+05 2004 O 31 2s
+5 - +05
+Z Asia/Pontianak 7:17:20 - LMT 1908 May
+7:17:20 - PMT 1932 N
+7:30 - +0730 1942 Ja 29
+9 - +09 1945 S 23
+7:30 - +0730 1948 May
+8 - +08 1950 May
+7:30 - +0730 1964
+8 - WITA 1988
+7 - WIB
+Z Asia/Pyongyang 8:23 - LMT 1908 Ap
+8:30 - KST 1912
+9 - JST 1945 Au 24
+9 - KST 2015 Au 15
+8:30 - KST 2018 May 4 23:30
+9 - KST
+Z Asia/Qatar 3:26:8 - LMT 1920
+4 - +04 1972 Jun
+3 - +03
+Z Asia/Qostanay 4:14:28 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 2004 O 31 2s
+6 - +06 2024 Mar
+5 - +05
+Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1991 S 29 2s
+5 R +05/+06 1992 Ja 19 2s
+6 R +06/+07 1992 Mar 29 2s
+5 R +05/+06 2004 O 31 2s
+6 - +06 2018 D 21
+5 - +05
+Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14
+3 - +03
+Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23
+9 - +09 1945 Au 25
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 1997 Mar lastSu 2s
+10 R +10/+11 2011 Mar 27 2s
+11 - +11 2014 O 26 2s
+10 - +10 2016 Mar 27 2s
+11 - +11
+Z Asia/Samarkand 4:27:53 - LMT 1924 May 2
+4 - +04 1930 Jun 21
+5 - +05 1981 Ap
+5 1 +06 1981 O
+6 - +06 1982 Ap
+5 R +05/+06 1992
+5 - +05
+Z Asia/Seoul 8:27:52 - LMT 1908 Ap
+8:30 - KST 1912
+9 - JST 1945 S 8
+9 KR K%sT 1954 Mar 21
+8:30 KR K%sT 1961 Au 10
+9 KR K%sT
+Z Asia/Shanghai 8:5:43 - LMT 1901
+8 Sh C%sT 1949 May 28
+8 CN C%sT
+Z Asia/Singapore 6:55:25 - LMT 1901
+6:55:25 - SMT 1905 Jun
+7 - +07 1933
+7 0:20 +0720 1936
+7:20 - +0720 1941 S
+7:30 - +0730 1942 F 16
+9 - +09 1945 S 12
+7:30 - +0730 1981 D 31 16u
+8 - +08
+Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
+10 - +10 1930 Jun 21
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12 2014 O 26 2s
+11 - +11
+Z Asia/Taipei 8:6 - LMT 1896
+8 - CST 1937 O
+9 - JST 1945 S 21 1
+8 f C%sT
+Z Asia/Tashkent 4:37:11 - LMT 1924 May 2
+5 - +05 1930 Jun 21
+6 R +06/+07 1991 Mar 31 2
+5 R +05/+06 1992
+5 - +05
+Z Asia/Tbilisi 2:59:11 - LMT 1880
+2:59:11 - TBMT 1924 May 2
+3 - +03 1957 Mar
+4 R +04/+05 1991 Mar 31 2s
+3 R +03/+04 1992
+3 e +03/+04 1994 S lastSu
+4 e +04/+05 1996 O lastSu
+4 1 +05 1997 Mar lastSu
+4 e +04/+05 2004 Jun 27
+3 R +03/+04 2005 Mar lastSu 2
+4 - +04
+Z Asia/Tehran 3:25:44 - LMT 1916
+3:25:44 - TMT 1935 Jun 13
+3:30 i +0330/+0430 1977 O 20 24
+4 i +04/+05 1979
+3:30 i +0330/+0430
+Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15
+5:30 - +0530 1987 O
+6 - +06
+Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u
+9 JP J%sT
+Z Asia/Tomsk 5:39:51 - LMT 1919 D 22
+6 - +06 1930 Jun 21
+7 R +07/+08 1991 Mar 31 2s
+6 R +06/+07 1992 Ja 19 2s
+7 R +07/+08 2002 May 1 3
+6 R +06/+07 2011 Mar 27 2s
+7 - +07 2014 O 26 2s
+6 - +06 2016 May 29 2s
+7 - +07
+Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au
+7 - +07 1978
+8 X +08/+09
+Z Asia/Urumqi 5:50:20 - LMT 1928
+6 - +06
+Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1981 Ap
+11 R +11/+12 1991 Mar 31 2s
+10 R +10/+11 1992 Ja 19 2s
+11 R +11/+12 2011 Mar 27 2s
+12 - +12 2011 S 13 0s
+11 - +11 2014 O 26 2s
+10 - +10
+Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15
+9 - +09 1930 Jun 21
+10 R +10/+11 1991 Mar 31 2s
+9 R +09/+10 1992 Ja 19 2s
+10 R +10/+11 2011 Mar 27 2s
+11 - +11 2014 O 26 2s
+10 - +10
+Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15
+8 - +08 1930 Jun 21
+9 R +09/+10 1991 Mar 31 2s
+8 R +08/+09 1992 Ja 19 2s
+9 R +09/+10 2011 Mar 27 2s
+10 - +10 2014 O 26 2s
+9 - +09
+Z Asia/Yangon 6:24:47 - LMT 1880
+6:24:47 - RMT 1920
+6:30 - +0630 1942 May
+9 - +09 1945 May 3
+6:30 - +0630
+Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3
+3:45:5 - PMT 1919 Jul 15 4
+4 - +04 1930 Jun 21
+5 R +05/+06 1991 Mar 31 2s
+4 R +04/+05 1992 Ja 19 2s
+5 R +05/+06 2011 Mar 27 2s
+6 - +06 2014 O 26 2s
+5 - +05
+Z Asia/Yerevan 2:58 - LMT 1924 May 2
+3 - +03 1957 Mar
+4 R +04/+05 1991 Mar 31 2s
+3 R +03/+04 1995 S 24 2s
+4 - +04 1997
+4 R +04/+05 2011
+4 AM +04/+05
+Z Atlantic/Azores -1:42:40 - LMT 1884
+-1:54:32 - HMT 1912 Ja 1 2u
+-2 p -02/-01 1942 Ap 25 22s
+-2 p +00 1942 Au 15 22s
+-2 p -02/-01 1943 Ap 17 22s
+-2 p +00 1943 Au 28 22s
+-2 p -02/-01 1944 Ap 22 22s
+-2 p +00 1944 Au 26 22s
+-2 p -02/-01 1945 Ap 21 22s
+-2 p +00 1945 Au 25 22s
+-2 p -02/-01 1966 Ap 3 2
+-1 p -01/+00 1983 S 25 1s
+-1 W- -01/+00 1992 S 27 1s
+0 E WE%sT 1993 Mar 28 1u
+-1 E -01/+00
+Z Atlantic/Bermuda -4:19:18 - LMT 1890
+-4:19:18 Be BMT/BST 1930 Ja 1 2
+-4 Be A%sT 1974 Ap 28 2
+-4 C A%sT 1976
+-4 u A%sT
+Z Atlantic/Canary -1:1:36 - LMT 1922 Mar
+-1 - -01 1946 S 30 1
+0 - WET 1980 Ap 6 0s
+0 1 WEST 1980 S 28 1u
+0 E WE%sT
+Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u
+-2 - -02 1942 S
+-2 1 -01 1945 O 15
+-2 - -02 1975 N 25 2
+-1 - -01
+Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11
+0 - WET 1981
+0 E WE%sT
+Z Atlantic/Madeira -1:7:36 - LMT 1884
+-1:7:36 - FMT 1912 Ja 1 1u
+-1 p -01/+00 1942 Ap 25 22s
+-1 p +01 1942 Au 15 22s
+-1 p -01/+00 1943 Ap 17 22s
+-1 p +01 1943 Au 28 22s
+-1 p -01/+00 1944 Ap 22 22s
+-1 p +01 1944 Au 26 22s
+-1 p -01/+00 1945 Ap 21 22s
+-1 p +01 1945 Au 25 22s
+-1 p -01/+00 1966 Ap 3 2
+0 p WE%sT 1983 S 25 1s
+0 E WE%sT
+Z Atlantic/South_Georgia -2:26:8 - LMT 1890
+-2 - -02
+Z Atlantic/Stanley -3:51:24 - LMT 1890
+-3:51:24 - SMT 1912 Mar 12
+-4 FK -04/-03 1983 May
+-3 FK -03/-02 1985 S 15
+-4 FK -04/-03 2010 S 5 2
+-3 - -03
+Z Australia/Adelaide 9:14:20 - LMT 1895 F
+9 - ACST 1899 May
+9:30 AU AC%sT 1971
+9:30 AS AC%sT
+Z Australia/Brisbane 10:12:8 - LMT 1895
+10 AU AE%sT 1971
+10 AQ AE%sT
+Z Australia/Broken_Hill 9:25:48 - LMT 1895 F
+10 - AEST 1896 Au 23
+9 - ACST 1899 May
+9:30 AU AC%sT 1971
+9:30 AN AC%sT 2000
+9:30 AS AC%sT
+Z Australia/Darwin 8:43:20 - LMT 1895 F
+9 - ACST 1899 May
+9:30 AU AC%sT
+Z Australia/Eucla 8:35:28 - LMT 1895 D
+8:45 AU +0845/+0945 1943 Jul
+8:45 AW +0845/+0945
+Z Australia/Hobart 9:49:16 - LMT 1895 S
+10 AT AE%sT 1919 O 24
+10 AU AE%sT 1967
+10 AT AE%sT
+Z Australia/Lindeman 9:55:56 - LMT 1895
+10 AU AE%sT 1971
+10 AQ AE%sT 1992 Jul
+10 Ho AE%sT
+Z Australia/Lord_Howe 10:36:20 - LMT 1895 F
+10 - AEST 1981 Mar
+10:30 LH +1030/+1130 1985 Jul
+10:30 LH +1030/+11
+Z Australia/Melbourne 9:39:52 - LMT 1895 F
+10 AU AE%sT 1971
+10 AV AE%sT
+Z Australia/Perth 7:43:24 - LMT 1895 D
+8 AU AW%sT 1943 Jul
+8 AW AW%sT
+Z Australia/Sydney 10:4:52 - LMT 1895 F
+10 AU AE%sT 1971
+10 AN AE%sT
+Z CET 1 c CE%sT
+Z CST6CDT -6 u C%sT
+Z EET 2 E EE%sT
+Z EST -5 - EST
+Z EST5EDT -5 u E%sT
Z Etc/GMT 0 - GMT
-L Etc/GMT GMT
-Z Etc/GMT-14 14 - +14
-Z Etc/GMT-13 13 - +13
-Z Etc/GMT-12 12 - +12
-Z Etc/GMT-11 11 - +11
-Z Etc/GMT-10 10 - +10
-Z Etc/GMT-9 9 - +09
-Z Etc/GMT-8 8 - +08
-Z Etc/GMT-7 7 - +07
-Z Etc/GMT-6 6 - +06
-Z Etc/GMT-5 5 - +05
-Z Etc/GMT-4 4 - +04
-Z Etc/GMT-3 3 - +03
-Z Etc/GMT-2 2 - +02
-Z Etc/GMT-1 1 - +01
Z Etc/GMT+1 -1 - -01
+Z Etc/GMT+10 -10 - -10
+Z Etc/GMT+11 -11 - -11
+Z Etc/GMT+12 -12 - -12
Z Etc/GMT+2 -2 - -02
Z Etc/GMT+3 -3 - -03
Z Etc/GMT+4 -4 - -04
@@ -4034,10 +3591,463 @@ Z Etc/GMT+6 -6 - -06
Z Etc/GMT+7 -7 - -07
Z Etc/GMT+8 -8 - -08
Z Etc/GMT+9 -9 - -09
-Z Etc/GMT+10 -10 - -10
-Z Etc/GMT+11 -11 - -11
-Z Etc/GMT+12 -12 - -12
+Z Etc/GMT-1 1 - +01
+Z Etc/GMT-10 10 - +10
+Z Etc/GMT-11 11 - +11
+Z Etc/GMT-12 12 - +12
+Z Etc/GMT-13 13 - +13
+Z Etc/GMT-14 14 - +14
+Z Etc/GMT-2 2 - +02
+Z Etc/GMT-3 3 - +03
+Z Etc/GMT-4 4 - +04
+Z Etc/GMT-5 5 - +05
+Z Etc/GMT-6 6 - +06
+Z Etc/GMT-7 7 - +07
+Z Etc/GMT-8 8 - +08
+Z Etc/GMT-9 9 - +09
+Z Etc/UTC 0 - UTC
+Z Europe/Andorra 0:6:4 - LMT 1901
+0 - WET 1946 S 30
+1 - CET 1985 Mar 31 2
+1 E CE%sT
+Z Europe/Astrakhan 3:12:12 - LMT 1924 May
+3 - +03 1930 Jun 21
+4 R +04/+05 1989 Mar 26 2s
+3 R +03/+04 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04 2014 O 26 2s
+3 - +03 2016 Mar 27 2s
+4 - +04
+Z Europe/Athens 1:34:52 - LMT 1895 S 14
+1:34:52 - AMT 1916 Jul 28 0:1
+2 g EE%sT 1941 Ap 30
+1 g CE%sT 1944 Ap 4
+2 g EE%sT 1981
+2 E EE%sT
+Z Europe/Belgrade 1:22 - LMT 1884
+1 - CET 1941 Ap 18 23
+1 c CE%sT 1945
+1 - CET 1945 May 8 2s
+1 1 CEST 1945 S 16 2s
+1 - CET 1982 N 27
+1 E CE%sT
+Z Europe/Berlin 0:53:28 - LMT 1893 Ap
+1 c CE%sT 1945 May 24 2
+1 So CE%sT 1946
+1 DE CE%sT 1980
+1 E CE%sT
+Z Europe/Brussels 0:17:30 - LMT 1880
+0:17:30 - BMT 1892 May 1 0:17:30
+0 - WET 1914 N 8
+1 - CET 1916 May
+1 c CE%sT 1918 N 11 11u
+0 b WE%sT 1940 May 20 2s
+1 c CE%sT 1944 S 3
+1 b CE%sT 1977
+1 E CE%sT
+Z Europe/Bucharest 1:44:24 - LMT 1891 O
+1:44:24 - BMT 1931 Jul 24
+2 z EE%sT 1981 Mar 29 2s
+2 c EE%sT 1991
+2 z EE%sT 1994
+2 e EE%sT 1997
+2 E EE%sT
+Z Europe/Budapest 1:16:20 - LMT 1890 N
+1 c CE%sT 1918
+1 h CE%sT 1941 Ap 7 23
+1 c CE%sT 1945
+1 h CE%sT 1984
+1 E CE%sT
+Z Europe/Chisinau 1:55:20 - LMT 1880
+1:55 - CMT 1918 F 15
+1:44:24 - BMT 1931 Jul 24
+2 z EE%sT 1940 Au 15
+2 1 EEST 1941 Jul 17
+1 c CE%sT 1944 Au 24
+3 R MSK/MSD 1990 May 6 2
+2 R EE%sT 1992
+2 e EE%sT 1997
+2 MD EE%sT
+Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
+-0:25:21 - DMT 1916 May 21 2s
+-0:25:21 1 IST 1916 O 1 2s
+0 G %s 1921 D 6
+0 G GMT/IST 1940 F 25 2s
+0 1 IST 1946 O 6 2s
+0 - GMT 1947 Mar 16 2s
+0 1 IST 1947 N 2 2s
+0 - GMT 1948 Ap 18 2s
+0 G GMT/IST 1968 O 27
+1 IE IST/GMT
+Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2
+0 G %s 1957 Ap 14 2
+1 - CET 1982
+1 E CE%sT
+Z Europe/Helsinki 1:39:49 - LMT 1878 May 31
+1:39:49 - HMT 1921 May
+2 FI EE%sT 1983
+2 E EE%sT
+Z Europe/Istanbul 1:55:52 - LMT 1880
+1:56:56 - IMT 1910 O
+2 T EE%sT 1978 Jun 29
+3 T +03/+04 1984 N 1 2
+2 T EE%sT 2007
+2 E EE%sT 2011 Mar 27 1u
+2 - EET 2011 Mar 28 1u
+2 E EE%sT 2014 Mar 30 1u
+2 - EET 2014 Mar 31 1u
+2 E EE%sT 2015 O 25 1u
+2 1 EEST 2015 N 8 1u
+2 E EE%sT 2016 S 7
+3 - +03
+Z Europe/Kaliningrad 1:22 - LMT 1893 Ap
+1 c CE%sT 1945 Ap 10
+2 O EE%sT 1946 Ap 7
+3 R MSK/MSD 1989 Mar 26 2s
+2 R EE%sT 2011 Mar 27 2s
+3 - +03 2014 O 26 2s
+2 - EET
+Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 R +04/+05 1989 Mar 26 2s
+3 R MSK/MSD 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R MSK/MSD 2011 Mar 27 2s
+4 - MSK 2014 O 26 2s
+3 - MSK
+Z Europe/Kyiv 2:2:4 - LMT 1880
+2:2:4 - KMT 1924 May 2
+2 - EET 1930 Jun 21
+3 - MSK 1941 S 20
+1 c CE%sT 1943 N 6
+3 R MSK/MSD 1990 Jul 1 2
+2 1 EEST 1991 S 29 3
+2 c EE%sT 1996 May 13
+2 E EE%sT
+Z Europe/Lisbon -0:36:45 - LMT 1884
+-0:36:45 - LMT 1912 Ja 1 0u
+0 p WE%sT 1966 Ap 3 2
+1 - CET 1976 S 26 1
+0 p WE%sT 1983 S 25 1s
+0 W- WE%sT 1992 S 27 1s
+1 E CE%sT 1996 Mar 31 1u
+0 E WE%sT
+Z Europe/London -0:1:15 - LMT 1847 D
+0 G %s 1968 O 27
+1 - BST 1971 O 31 2u
+0 G %s 1996
+0 E GMT/BST
+Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u
+0 s WE%sT 1940 Mar 16 23
+1 s CE%sT 1979
+1 E CE%sT
+Z Europe/Malta 0:58:4 - LMT 1893 N 2
+1 I CE%sT 1973 Mar 31
+1 MT CE%sT 1981
+1 E CE%sT
+Z Europe/Minsk 1:50:16 - LMT 1880
+1:50 - MMT 1924 May 2
+2 - EET 1930 Jun 21
+3 - MSK 1941 Jun 28
+1 c CE%sT 1944 Jul 3
+3 R MSK/MSD 1990
+3 - MSK 1991 Mar 31 2s
+2 R EE%sT 2011 Mar 27 2s
+3 - +03
+Z Europe/Moscow 2:30:17 - LMT 1880
+2:30:17 - MMT 1916 Jul 3
+2:31:19 R %s 1919 Jul 1 0u
+3 R %s 1921 O
+3 R MSK/MSD 1922 O
+2 - EET 1930 Jun 21
+3 R MSK/MSD 1991 Mar 31 2s
+2 R EE%sT 1992 Ja 19 2s
+3 R MSK/MSD 2011 Mar 27 2s
+4 - MSK 2014 O 26 2s
+3 - MSK
+Z Europe/Paris 0:9:21 - LMT 1891 Mar 16
+0:9:21 - PMT 1911 Mar 11
+0 F WE%sT 1940 Jun 14 23
+1 c CE%sT 1944 Au 25
+0 F WE%sT 1945 S 16 3
+1 F CE%sT 1977
+1 E CE%sT
+Z Europe/Prague 0:57:44 - LMT 1850
+0:57:44 - PMT 1891 O
+1 c CE%sT 1945 May 9
+1 CZ CE%sT 1946 D 1 3
+1 -1 GMT 1947 F 23 2
+1 CZ CE%sT 1979
+1 E CE%sT
+Z Europe/Riga 1:36:34 - LMT 1880
+1:36:34 - RMT 1918 Ap 15 2
+1:36:34 1 LST 1918 S 16 3
+1:36:34 - RMT 1919 Ap 1 2
+1:36:34 1 LST 1919 May 22 3
+1:36:34 - RMT 1926 May 11
+2 - EET 1940 Au 5
+3 - MSK 1941 Jul
+1 c CE%sT 1944 O 13
+3 R MSK/MSD 1989 Mar lastSu 2s
+2 1 EEST 1989 S lastSu 2s
+2 LV EE%sT 1997 Ja 21
+2 E EE%sT 2000 F 29
+2 - EET 2001 Ja 2
+2 E EE%sT
+Z Europe/Rome 0:49:56 - LMT 1866 D 12
+0:49:56 - RMT 1893 O 31 23u
+1 I CE%sT 1943 S 10
+1 c CE%sT 1944 Jun 4
+1 I CE%sT 1980
+1 E CE%sT
+Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 - +04 1935 Ja 27
+4 R +04/+05 1989 Mar 26 2s
+3 R +03/+04 1991 Mar 31 2s
+2 R +02/+03 1991 S 29 2s
+3 - +03 1991 O 20 3
+4 R +04/+05 2010 Mar 28 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04
+Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 R +04/+05 1988 Mar 27 2s
+3 R +03/+04 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04 2014 O 26 2s
+3 - +03 2016 D 4 2s
+4 - +04
+Z Europe/Simferopol 2:16:24 - LMT 1880
+2:16 - SMT 1924 May 2
+2 - EET 1930 Jun 21
+3 - MSK 1941 N
+1 c CE%sT 1944 Ap 13
+3 R MSK/MSD 1990
+3 - MSK 1990 Jul 1 2
+2 - EET 1992 Mar 20
+2 c EE%sT 1994 May
+3 c MSK/MSD 1996 Mar 31 0s
+3 1 MSD 1996 O 27 3s
+3 - MSK 1997 Mar lastSu 1u
+2 E EE%sT 2014 Mar 30 2
+4 - MSK 2014 O 26 2s
+3 - MSK
+Z Europe/Sofia 1:33:16 - LMT 1880
+1:56:56 - IMT 1894 N 30
+2 - EET 1942 N 2 3
+1 c CE%sT 1945
+1 - CET 1945 Ap 2 3
+2 - EET 1979 Mar 31 23
+2 BG EE%sT 1982 S 26 3
+2 c EE%sT 1991
+2 e EE%sT 1997
+2 E EE%sT
+Z Europe/Tallinn 1:39 - LMT 1880
+1:39 - TMT 1918 F
+1 c CE%sT 1919 Jul
+1:39 - TMT 1921 May
+2 - EET 1940 Au 6
+3 - MSK 1941 S 15
+1 c CE%sT 1944 S 22
+3 R MSK/MSD 1989 Mar 26 2s
+2 1 EEST 1989 S 24 2s
+2 c EE%sT 1998 S 22
+2 E EE%sT 1999 O 31 4
+2 - EET 2002 F 21
+2 E EE%sT
+Z Europe/Tirane 1:19:20 - LMT 1914
+1 - CET 1940 Jun 16
+1 q CE%sT 1984 Jul
+1 E CE%sT
+Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u
+3 - +03 1930 Jun 21
+4 R +04/+05 1989 Mar 26 2s
+3 R +03/+04 1991 Mar 31 2s
+2 R +02/+03 1992 Ja 19 2s
+3 R +03/+04 2011 Mar 27 2s
+4 - +04 2014 O 26 2s
+3 - +03 2016 Mar 27 2s
+4 - +04
+Z Europe/Vienna 1:5:21 - LMT 1893 Ap
+1 c CE%sT 1920
+1 a CE%sT 1940 Ap 1 2s
+1 c CE%sT 1945 Ap 2 2s
+1 1 CEST 1945 Ap 12 2s
+1 - CET 1946
+1 a CE%sT 1981
+1 E CE%sT
+Z Europe/Vilnius 1:41:16 - LMT 1880
+1:24 - WMT 1917
+1:35:36 - KMT 1919 O 10
+1 - CET 1920 Jul 12
+2 - EET 1920 O 9
+1 - CET 1940 Au 3
+3 - MSK 1941 Jun 24
+1 c CE%sT 1944 Au
+3 R MSK/MSD 1989 Mar 26 2s
+2 R EE%sT 1991 S 29 2s
+2 c EE%sT 1998
+2 - EET 1998 Mar 29 1u
+1 E CE%sT 1999 O 31 1u
+2 - EET 2003
+2 E EE%sT
+Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3
+3 - +03 1930 Jun 21
+4 - +04 1961 N 11
+4 R +04/+05 1988 Mar 27 2s
+3 R MSK/MSD 1991 Mar 31 2s
+4 - +04 1992 Mar 29 2s
+3 R MSK/MSD 2011 Mar 27 2s
+4 - MSK 2014 O 26 2s
+3 - MSK 2018 O 28 2s
+4 - +04 2020 D 27 2s
+3 - MSK
+Z Europe/Warsaw 1:24 - LMT 1880
+1:24 - WMT 1915 Au 5
+1 c CE%sT 1918 S 16 3
+2 O EE%sT 1922 Jun
+1 O CE%sT 1940 Jun 23 2
+1 c CE%sT 1944 O
+1 O CE%sT 1977
+1 W- CE%sT 1988
+1 E CE%sT
+Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16
+0:29:46 - BMT 1894 Jun
+1 CH CE%sT 1981
+1 E CE%sT
Z Factory 0 - -00
+Z HST -10 - HST
+Z Indian/Chagos 4:49:40 - LMT 1907
+5 - +05 1996
+6 - +06
+Z Indian/Maldives 4:54 - LMT 1880
+4:54 - MMT 1960
+5 - +05
+Z Indian/Mauritius 3:50 - LMT 1907
+4 MU +04/+05
+Z MET 1 c ME%sT
+Z MST -7 - MST
+Z MST7MDT -7 u M%sT
+Z PST8PDT -8 u P%sT
+Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5
+-11:26:56 - LMT 1911
+-11:30 - -1130 1950
+-11 WS -11/-10 2011 D 29 24
+13 WS +13/+14
+Z Pacific/Auckland 11:39:4 - LMT 1868 N 2
+11:30 NZ NZ%sT 1946
+12 NZ NZ%sT
+Z Pacific/Bougainville 10:22:16 - LMT 1880
+9:48:32 - PMMT 1895
+10 - +10 1942 Jul
+9 - +09 1945 Au 21
+10 - +10 2014 D 28 2
+11 - +11
+Z Pacific/Chatham 12:13:48 - LMT 1868 N 2
+12:15 - +1215 1946
+12:45 k +1245/+1345
+Z Pacific/Easter -7:17:28 - LMT 1890
+-7:17:28 - EMT 1932 S
+-7 x -07/-06 1982 Mar 14 3u
+-6 x -06/-05
+Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13
+11 VU +11/+12
+Z Pacific/Fakaofo -11:24:56 - LMT 1901
+-11 - -11 2011 D 30
+13 - +13
+Z Pacific/Fiji 11:55:44 - LMT 1915 O 26
+12 FJ +12/+13
+Z Pacific/Galapagos -5:58:24 - LMT 1931
+-5 - -05 1986
+-6 EC -06/-05
+Z Pacific/Gambier -8:59:48 - LMT 1912 O
+-9 - -09
+Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O
+11 - +11
+Z Pacific/Guam -14:21 - LMT 1844 D 31
+9:39 - LMT 1901
+10 - GST 1941 D 10
+9 - +09 1944 Jul 31
+10 Gu G%sT 2000 D 23
+10 - ChST
+Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12
+-10:30 - HST 1933 Ap 30 2
+-10:30 1 HDT 1933 May 21 12
+-10:30 u H%sT 1947 Jun 8 2
+-10 - HST
+Z Pacific/Kanton 0 - -00 1937 Au 31
+-12 - -12 1979 O
+-11 - -11 1994 D 31
+13 - +13
+Z Pacific/Kiritimati -10:29:20 - LMT 1901
+-10:40 - -1040 1979 O
+-10 - -10 1994 D 31
+14 - +14
+Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31
+10:51:56 - LMT 1901
+11 - +11 1914 O
+9 - +09 1919 F
+11 - +11 1937
+10 - +10 1941 Ap
+9 - +09 1945 Au
+11 - +11 1969 O
+12 - +12 1999
+11 - +11
+Z Pacific/Kwajalein 11:9:20 - LMT 1901
+11 - +11 1937
+10 - +10 1941 Ap
+9 - +09 1944 F 6
+11 - +11 1969 O
+-12 - -12 1993 Au 20 24
+12 - +12
+Z Pacific/Marquesas -9:18 - LMT 1912 O
+-9:30 - -0930
+Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15
+11:30 - +1130 1942 Au 29
+9 - +09 1945 S 8
+11:30 - +1130 1979 F 10 2
+12 - +12
+Z Pacific/Niue -11:19:40 - LMT 1952 O 16
+-11:20 - -1120 1964 Jul
+-11 - -11
+Z Pacific/Norfolk 11:11:52 - LMT 1901
+11:12 - +1112 1951
+11:30 - +1130 1974 O 27 2s
+11:30 1 +1230 1975 Mar 2 2s
+11:30 - +1130 2015 O 4 2s
+11 - +11 2019 Jul
+11 AN +11/+12
+Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13
+11 NC +11/+12
+Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5
+-11:22:48 - LMT 1911
+-11 - SST
+Z Pacific/Palau -15:2:4 - LMT 1844 D 31
+8:57:56 - LMT 1901
+9 - +09
+Z Pacific/Pitcairn -8:40:20 - LMT 1901
+-8:30 - -0830 1998 Ap 27
+-8 - -08
+Z Pacific/Port_Moresby 9:48:40 - LMT 1880
+9:48:32 - PMMT 1895
+10 - +10
+Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26
+-10:39:4 - LMT 1952 O 16
+-10:30 - -1030 1978 N 12
+-10 CK -10/-0930
+Z Pacific/Tahiti -9:58:16 - LMT 1912 O
+-10 - -10
+Z Pacific/Tarawa 11:32:4 - LMT 1901
+12 - +12
+Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10
+12:20 - +1220 1961
+13 - +13 1999
+13 TO +13/+14
+Z WET 0 E WE%sT
+L Etc/GMT GMT
L Australia/Sydney Australia/ACT
L Australia/Lord_Howe Australia/LHI
L Australia/Sydney Australia/NSW
@@ -4185,7 +4195,6 @@ L America/Puerto_Rico America/Tortola
L Pacific/Port_Moresby Antarctica/DumontDUrville
L Pacific/Auckland Antarctica/McMurdo
L Asia/Riyadh Antarctica/Syowa
-L Asia/Urumqi Antarctica/Vostok
L Europe/Berlin Arctic/Longyearbyen
L Asia/Riyadh Asia/Aden
L Asia/Qatar Asia/Bahrain
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab b/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab
index dbcb61793ee..3fa9306afba 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab
@@ -48,7 +48,7 @@ AR -3124-06411 America/Argentina/Cordoba Argentina (most areas: CB, CC, CN, ER,
AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN)
AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
AR -2649-06513 America/Argentina/Tucuman Tucuman (TM)
-AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH)
+AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
@@ -87,7 +87,7 @@ BN +0456+11455 Asia/Brunei
BO -1630-06809 America/La_Paz
BQ +120903-0681636 America/Kralendijk
BR -0351-03225 America/Noronha Atlantic islands
-BR -0127-04829 America/Belem Para (east); Amapa
+BR -0127-04829 America/Belem Para (east), Amapa
BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB)
BR -0803-03454 America/Recife Pernambuco
BR -0712-04812 America/Araguaina Tocantins
@@ -107,21 +107,21 @@ BT +2728+08939 Asia/Thimphu
BW -2439+02555 Africa/Gaborone
BY +5354+02734 Europe/Minsk
BZ +1730-08812 America/Belize
-CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast)
-CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE
+CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE)
+CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE
CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton)
CA +4606-06447 America/Moncton Atlantic - New Brunswick
CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas)
CA +5125-05707 America/Blanc-Sablon AST - QC (Lower North Shore)
-CA +4339-07923 America/Toronto Eastern - ON, QC (most areas)
+CA +4339-07923 America/Toronto Eastern - ON & QC (most areas)
CA +6344-06828 America/Iqaluit Eastern - NU (most areas)
-CA +484531-0913718 America/Atikokan EST - ON (Atikokan); NU (Coral H)
-CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba
+CA +484531-0913718 America/Atikokan EST - ON (Atikokan), NU (Coral H)
+CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba
CA +744144-0944945 America/Resolute Central - NU (Resolute)
CA +624900-0920459 America/Rankin_Inlet Central - NU (central)
CA +5024-10439 America/Regina CST - SK (most areas)
CA +5017-10750 America/Swift_Current CST - SK (midwest)
-CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W)
+CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W)
CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west)
CA +682059-1334300 America/Inuvik Mountain - NT (west)
CA +4906-11631 America/Creston MST - BC (Creston)
@@ -207,8 +207,8 @@ HT +1832-07220 America/Port-au-Prince
HU +4730+01905 Europe/Budapest
ID -0610+10648 Asia/Jakarta Java, Sumatra
ID -0002+10920 Asia/Pontianak Borneo (west, central)
-ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west)
-ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas
+ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west)
+ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas
IE +5320-00615 Europe/Dublin
IL +314650+0351326 Asia/Jerusalem
IM +5409-00428 Europe/Isle_of_Man
@@ -355,7 +355,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River
RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky
RU +5934+15048 Asia/Magadan MSK+08 - Magadan
RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island
-RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is
+RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is
RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka
RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea
RW -0157+03004 Africa/Kigali
@@ -418,7 +418,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver)
US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural)
US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer)
US +394421-1045903 America/Denver Mountain (most areas)
-US +433649-1161209 America/Boise Mountain - ID (south); OR (east)
+US +433649-1161209 America/Boise Mountain - ID (south), OR (east)
US +332654-1120424 America/Phoenix MST - AZ (except Navajo)
US +340308-1181434 America/Los_Angeles Pacific
US +611305-1495401 America/Anchorage Alaska (most areas)
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab b/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab
index 1f1cecb8485..abd9489753f 100644
--- a/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab
@@ -37,7 +37,7 @@
#country-
#codes coordinates TZ comments
AD +4230+00131 Europe/Andorra
-AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet, Scattered Is
+AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet
AF +3431+06912 Asia/Kabul
AL +4120+01950 Europe/Tirane
AM +4011+04430 Asia/Yerevan
@@ -47,12 +47,13 @@ AQ -6736+06253 Antarctica/Mawson Mawson
AQ -6448-06406 Antarctica/Palmer Palmer
AQ -6734-06808 Antarctica/Rothera Rothera
AQ -720041+0023206 Antarctica/Troll Troll
+AQ -7824+10654 Antarctica/Vostok Vostok
AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
AR -3124-06411 America/Argentina/Cordoba most areas: CB, CC, CN, ER, FM, MN, SE, SF
AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN)
AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
AR -2649-06513 America/Argentina/Tucuman Tucumán (TM)
-AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH)
+AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
@@ -81,7 +82,7 @@ BG +4241+02319 Europe/Sofia
BM +3217-06446 Atlantic/Bermuda
BO -1630-06809 America/La_Paz
BR -0351-03225 America/Noronha Atlantic islands
-BR -0127-04829 America/Belem Pará (east); Amapá
+BR -0127-04829 America/Belem Pará (east), Amapá
BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB)
BR -0803-03454 America/Recife Pernambuco
BR -0712-04812 America/Araguaina Tocantins
@@ -99,19 +100,19 @@ BR -0958-06748 America/Rio_Branco Acre
BT +2728+08939 Asia/Thimphu
BY +5354+02734 Europe/Minsk
BZ +1730-08812 America/Belize
-CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast)
-CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE
+CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE)
+CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE
CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton)
CA +4606-06447 America/Moncton Atlantic - New Brunswick
CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas)
-CA,BS +4339-07923 America/Toronto Eastern - ON, QC (most areas)
+CA,BS +4339-07923 America/Toronto Eastern - ON & QC (most areas)
CA +6344-06828 America/Iqaluit Eastern - NU (most areas)
-CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba
+CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba
CA +744144-0944945 America/Resolute Central - NU (Resolute)
CA +624900-0920459 America/Rankin_Inlet Central - NU (central)
CA +5024-10439 America/Regina CST - SK (most areas)
CA +5017-10750 America/Swift_Current CST - SK (midwest)
-CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W)
+CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W)
CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west)
CA +682059-1334300 America/Inuvik Mountain - NT (west)
CA +5546-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
@@ -126,7 +127,7 @@ CL -3327-07040 America/Santiago most of Chile
CL -5309-07055 America/Punta_Arenas Region of Magallanes
CL -2709-10926 Pacific/Easter Easter Island
CN +3114+12128 Asia/Shanghai Beijing Time
-CN,AQ +4348+08735 Asia/Urumqi Xinjiang Time, Vostok
+CN +4348+08735 Asia/Urumqi Xinjiang Time
CO +0436-07405 America/Bogota
CR +0956-08405 America/Costa_Rica
CU +2308-08222 America/Havana
@@ -171,8 +172,8 @@ HT +1832-07220 America/Port-au-Prince
HU +4730+01905 Europe/Budapest
ID -0610+10648 Asia/Jakarta Java, Sumatra
ID -0002+10920 Asia/Pontianak Borneo (west, central)
-ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west)
-ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas
+ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west)
+ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas
IE +5320-00615 Europe/Dublin
IL +314650+0351326 Asia/Jerusalem
IN +2232+08822 Asia/Kolkata
@@ -251,7 +252,7 @@ PK +2452+06703 Asia/Karachi
PL +5215+02100 Europe/Warsaw
PM +4703-05620 America/Miquelon
PN -2504-13005 Pacific/Pitcairn
-PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST
+PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST - QC (Lower North Shore)
PS +3130+03428 Asia/Gaza Gaza Strip
PS +313200+0350542 Asia/Hebron West Bank
PT +3843-00908 Europe/Lisbon Portugal (mainland)
@@ -287,7 +288,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River
RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky
RU +5934+15048 Asia/Magadan MSK+08 - Magadan
RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island
-RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is
+RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is
RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka
RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea
SA,AQ,KW,YE +2438+04643 Asia/Riyadh Syowa
@@ -329,7 +330,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver)
US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural)
US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer)
US +394421-1045903 America/Denver Mountain (most areas)
-US +433649-1161209 America/Boise Mountain - ID (south); OR (east)
+US +433649-1161209 America/Boise Mountain - ID (south), OR (east)
US,CA +332654-1120424 America/Phoenix MST - AZ (most areas), Creston BC
US +340308-1181434 America/Los_Angeles Pacific
US +611305-1495401 America/Anchorage Alaska (most areas)
diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/zonenow.tab b/contrib/python/pytz/py3/pytz/zoneinfo/zonenow.tab
new file mode 100644
index 00000000000..b6f2910956f
--- /dev/null
+++ b/contrib/python/pytz/py3/pytz/zoneinfo/zonenow.tab
@@ -0,0 +1,303 @@
+# tzdb timezone descriptions, for users who do not care about old timestamps
+#
+# This file is in the public domain.
+#
+# From Paul Eggert (2023-12-18):
+# This file contains a table where each row stands for a timezone
+# where civil timestamps are predicted to agree from now on.
+# This file is like zone1970.tab (see zone1970.tab's coments),
+# but with the following changes:
+#
+# 1. Each timezone corresponds to a set of clocks that are planned
+# to agree from now on. This is a larger set of clocks than in
+# zone1970.tab, where each timezone's clocks must agree from 1970 on.
+# 2. The first column is irrelevant and ignored.
+# 3. The table is sorted in a different way:
+# first by standard time UTC offset;
+# then, if DST is used, by daylight saving UTC offset;
+# then by time zone abbreviation.
+# 4. Every timezone has a nonempty comments column, with wording
+# distinguishing the timezone only from other timezones with the
+# same UTC offset at some point during the year.
+#
+# The format of this table is experimental, and may change in future versions.
+#
+# This table is intended as an aid for users, to help them select timezones
+# appropriate for their practical needs. It is not intended to take or
+# endorse any position on legal or territorial claims.
+#
+#XX coordinates TZ comments
+#
+# -11 - SST
+XX -1416-17042 Pacific/Pago_Pago Midway; Samoa ("SST")
+#
+# -11
+XX -1901-16955 Pacific/Niue Niue
+#
+# -10 - HST
+XX +211825-1575130 Pacific/Honolulu Hawaii ("HST")
+#
+# -10
+XX -1732-14934 Pacific/Tahiti Tahiti; Cook Islands
+#
+# -10/-09 - HST / HDT (North America DST)
+XX +515248-1763929 America/Adak western Aleutians in Alaska ("HST/HDT")
+#
+# -09:30
+XX -0900-13930 Pacific/Marquesas Marquesas
+#
+# -09
+XX -2308-13457 Pacific/Gambier Gambier
+#
+# -09/-08 - AKST/AKDT (North America DST)
+XX +611305-1495401 America/Anchorage most of Alaska ("AKST/AKDT")
+#
+# -08
+XX -2504-13005 Pacific/Pitcairn Pitcairn
+#
+# -08/-07 - PST/PDT (North America DST)
+XX +340308-1181434 America/Los_Angeles Pacific ("PST/PDT") - US & Canada; Mexico near US border
+#
+# -07 - MST
+XX +332654-1120424 America/Phoenix Mountain Standard ("MST") - Arizona; western Mexico; Yukon
+#
+# -07/-06 - MST/MDT (North America DST)
+XX +394421-1045903 America/Denver Mountain ("MST/MDT") - US & Canada; Mexico near US border
+#
+# -06
+XX -0054-08936 Pacific/Galapagos Galápagos
+#
+# -06 - CST
+XX +1924-09909 America/Mexico_City Central Standard ("CST") - Saskatchewan; central Mexico; Central America
+#
+# -06/-05 (Chile DST)
+XX -2709-10926 Pacific/Easter Easter Island
+#
+# -06/-05 - CST/CDT (North America DST)
+XX +415100-0873900 America/Chicago Central ("CST/CDT") - US & Canada; Mexico near US border
+#
+# -05
+XX -1203-07703 America/Lima eastern South America
+#
+# -05 - EST
+XX +175805-0764736 America/Jamaica Eastern Standard ("EST") - Caymans; Jamaica; eastern Mexico; Panama
+#
+# -05/-04 - CST/CDT (Cuba DST)
+XX +2308-08222 America/Havana Cuba
+#
+# -05/-04 - EST/EDT (North America DST)
+XX +404251-0740023 America/New_York Eastern ("EST/EDT") - US & Canada
+#
+# -04
+XX +1030-06656 America/Caracas western South America
+#
+# -04 - AST
+XX +1828-06954 America/Santo_Domingo Atlantic Standard ("AST") - eastern Caribbean
+#
+# -04/-03 (Chile DST)
+XX -3327-07040 America/Santiago most of Chile
+#
+# -04/-03 (Paraguay DST)
+XX -2516-05740 America/Asuncion Paraguay
+#
+# -04/-03 - AST/ADT (North America DST)
+XX +4439-06336 America/Halifax Atlantic ("AST/ADT") - Canada; Bermuda
+#
+# -03:30/-02:30 - NST/NDT (North America DST)
+XX +4734-05243 America/St_Johns Newfoundland ("NST/NDT")
+#
+# -03
+XX -2332-04637 America/Sao_Paulo eastern South America
+#
+# -03/-02 (North America DST)
+XX +4703-05620 America/Miquelon St Pierre & Miquelon
+#
+# -02
+XX -0351-03225 America/Noronha Fernando de Noronha; South Georgia
+#
+# -02/-01 (EU DST)
+XX +6411-05144 America/Nuuk most of Greenland
+#
+# -01
+XX +1455-02331 Atlantic/Cape_Verde Cape Verde
+#
+# -01/+00 (EU DST)
+XX +3744-02540 Atlantic/Azores Azores
+# -01/+00 (EU DST) until 2024-03-31; then -02/-01 (EU DST)
+XX +7029-02158 America/Scoresbysund Ittoqqortoormiit
+#
+# +00 - GMT
+XX +0519-00402 Africa/Abidjan far western Africa; Iceland ("GMT")
+#
+# +00/+01 - GMT/BST (EU DST)
+XX +513030-0000731 Europe/London United Kingdom ("GMT/BST")
+#
+# +00/+01 - WET/WEST (EU DST)
+XX +3843-00908 Europe/Lisbon western Europe ("WET/WEST")
+#
+# +00/+02 - Troll DST
+XX -720041+0023206 Antarctica/Troll Troll Station in Antarctica
+#
+# +01 - CET
+XX +3647+00303 Africa/Algiers Algeria, Tunisia ("CET")
+#
+# +01 - WAT
+XX +0627+00324 Africa/Lagos western Africa ("WAT")
+#
+# +01/+00 - IST/GMT (EU DST in reverse)
+XX +5320-00615 Europe/Dublin Ireland ("IST/GMT")
+#
+# +01/+00 - (Morocco DST)
+XX +3339-00735 Africa/Casablanca Morocco
+#
+# +01/+02 - CET/CEST (EU DST)
+XX +4852+00220 Europe/Paris central Europe ("CET/CEST")
+#
+# +02 - CAT
+XX -2558+03235 Africa/Maputo central Africa ("CAT")
+#
+# +02 - EET
+XX +3254+01311 Africa/Tripoli Libya; Kaliningrad ("EET")
+#
+# +02 - SAST
+XX -2615+02800 Africa/Johannesburg southern Africa ("SAST")
+#
+# +02/+03 - EET/EEST (EU DST)
+XX +3758+02343 Europe/Athens eastern Europe ("EET/EEST")
+#
+# +02/+03 - EET/EEST (Egypt DST)
+XX +3003+03115 Africa/Cairo Egypt
+#
+# +02/+03 - EET/EEST (Lebanon DST)
+XX +3353+03530 Asia/Beirut Lebanon
+#
+# +02/+03 - EET/EEST (Moldova DST)
+XX +4700+02850 Europe/Chisinau Moldova
+#
+# +02/+03 - EET/EEST (Palestine DST)
+XX +3130+03428 Asia/Gaza Palestine
+#
+# +02/+03 - IST/IDT (Israel DST)
+XX +314650+0351326 Asia/Jerusalem Israel
+#
+# +03
+XX +4101+02858 Europe/Istanbul Near East; Belarus
+#
+# +03 - EAT
+XX -0117+03649 Africa/Nairobi eastern Africa ("EAT")
+#
+# +03 - MSK
+XX +554521+0373704 Europe/Moscow Moscow ("MSK")
+#
+# +03:30
+XX +3540+05126 Asia/Tehran Iran
+#
+# +04
+XX +2518+05518 Asia/Dubai Russia; Caucasus; Persian Gulf; Seychelles; Réunion
+#
+# +04:30
+XX +3431+06912 Asia/Kabul Afghanistan
+#
+# +05
+XX +4120+06918 Asia/Tashkent Russia; west Kazakhstan; Tajikistan; Turkmenistan; Uzbekistan; Maldives
+#
+# +05 - PKT
+XX +2452+06703 Asia/Karachi Pakistan ("PKT")
+#
+# +05:30
+XX +0656+07951 Asia/Colombo Sri Lanka
+#
+# +05:30 - IST
+XX +2232+08822 Asia/Kolkata India ("IST")
+#
+# +05:45
+XX +2743+08519 Asia/Kathmandu Nepal
+#
+# +06
+XX +2343+09025 Asia/Dhaka Russia; Kyrgyzstan; Bhutan; Bangladesh; Chagos
+# +06 until 2024-03-01; then +05
+XX +4315+07657 Asia/Almaty Kazakhstan (except western areas)
+#
+# +06:30
+XX +1647+09610 Asia/Yangon Myanmar; Cocos
+#
+# +07
+XX +1345+10031 Asia/Bangkok Russia; Indochina; Christmas Island
+#
+# +07 - WIB
+XX -0610+10648 Asia/Jakarta Indonesia ("WIB")
+#
+# +08
+XX +0117+10351 Asia/Singapore Russia; Brunei; Malaysia; Singapore
+#
+# +08 - AWST
+XX -3157+11551 Australia/Perth Western Australia ("AWST")
+#
+# +08 - CST
+XX +3114+12128 Asia/Shanghai China ("CST")
+#
+# +08 - HKT
+XX +2217+11409 Asia/Hong_Kong Hong Kong ("HKT")
+#
+# +08 - PHT
+XX +1435+12100 Asia/Manila Philippines ("PHT")
+#
+# +08 - WITA
+XX -0507+11924 Asia/Makassar Indonesia ("WITA")
+#
+# +08:45
+XX -3143+12852 Australia/Eucla Eucla
+#
+# +09
+XX +5203+11328 Asia/Chita Russia; Palau; East Timor
+#
+# +09 - JST
+XX +353916+1394441 Asia/Tokyo Japan ("JST")
+#
+# +09 - KST
+XX +3733+12658 Asia/Seoul Korea ("KST")
+#
+# +09 - WIT
+XX -0232+14042 Asia/Jayapura Indonesia ("WIT")
+#
+# +09:30 - ACST
+XX -1228+13050 Australia/Darwin Northern Territory ("ACST")
+#
+# +09:30/+10:30 - ACST/ACDT (Australia DST)
+XX -3455+13835 Australia/Adelaide South Australia ("ACST/ACDT")
+#
+# +10
+XX +4310+13156 Asia/Vladivostok Russia; Yap; Chuuk; Papua New Guinea; Dumont d'Urville
+#
+# +10 - AEST
+XX -2728+15302 Australia/Brisbane Queensland ("AEST")
+#
+# +10 - ChST
+XX +1328+14445 Pacific/Guam Mariana Islands ("ChST")
+#
+# +10/+11 - AEST/AEDT (Australia DST)
+XX -3352+15113 Australia/Sydney southeast Australia ("AEST/AEDT")
+#
+# +10:30/+11
+XX -3133+15905 Australia/Lord_Howe Lord Howe Island
+#
+# +11
+XX -0613+15534 Pacific/Bougainville Russia; Kosrae; Bougainville; Solomons
+#
+# +11/+12 (Australia DST)
+XX -2903+16758 Pacific/Norfolk Norfolk Island
+#
+# +12
+XX +5301+15839 Asia/Kamchatka Russia; Tuvalu; Fiji; etc.
+#
+# +12/+13 (New Zealand DST)
+XX -3652+17446 Pacific/Auckland New Zealand ("NZST/NZDT")
+#
+# +12:45/+13:45 (Chatham DST)
+XX -4357-17633 Pacific/Chatham Chatham Islands
+#
+# +13
+XX -210800-1751200 Pacific/Tongatapu Kanton; Tokelau; Samoa (western); Tonga
+#
+# +14
+XX +0152-15720 Pacific/Kiritimati Kiritimati
diff --git a/contrib/python/pytz/py3/ya.make b/contrib/python/pytz/py3/ya.make
index d4ef56461fe..1a4c76191e4 100644
--- a/contrib/python/pytz/py3/ya.make
+++ b/contrib/python/pytz/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(2023.3.post1)
+VERSION(2024.1)
LICENSE(MIT)
@@ -628,6 +628,7 @@ RESOURCE_FILES(
pytz/zoneinfo/tzdata.zi
pytz/zoneinfo/zone.tab
pytz/zoneinfo/zone1970.tab
+ pytz/zoneinfo/zonenow.tab
)
END()
diff --git a/contrib/python/types-protobuf/.dist-info/METADATA b/contrib/python/types-protobuf/.dist-info/METADATA
index 69b10b8c2ad..da16877bae9 100644
--- a/contrib/python/types-protobuf/.dist-info/METADATA
+++ b/contrib/python/types-protobuf/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: types-protobuf
-Version: 4.24.0.20240106
+Version: 4.24.0.20240129
Summary: Typing stubs for protobuf
Home-page: https://github.com/python/typeshed
License: Apache-2.0 license
@@ -38,6 +38,6 @@ If you find that annotations are missing, feel free to contribute and help compl
See https://github.com/python/typeshed/blob/main/README.md for more details.
-This package was generated from typeshed commit `1de5830a2703936a96a126248227d5c7db883674` and was tested
+This package was generated from typeshed commit `3dbb2573e68a288ac5ad1b4967a9c5ab994b81be` and was tested
with mypy 1.8.0, pyright 1.1.342, and
pytype 2023.12.18.
diff --git a/contrib/python/types-protobuf/google-stubs/py.typed b/contrib/python/types-protobuf/google-stubs/py.typed
deleted file mode 100644
index b648ac92333..00000000000
--- a/contrib/python/types-protobuf/google-stubs/py.typed
+++ /dev/null
@@ -1 +0,0 @@
-partial
diff --git a/contrib/python/types-protobuf/ya.make b/contrib/python/types-protobuf/ya.make
index 3d6029caa56..6632bf34262 100644
--- a/contrib/python/types-protobuf/ya.make
+++ b/contrib/python/types-protobuf/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(4.24.0.20240106)
+VERSION(4.24.0.20240129)
LICENSE(Apache-2.0)
@@ -54,7 +54,6 @@ RESOURCE_FILES(
.dist-info/METADATA
.dist-info/top_level.txt
google-stubs/METADATA.toml
- google-stubs/py.typed
)
END()
diff --git a/contrib/python/wcwidth/py2/.dist-info/METADATA b/contrib/python/wcwidth/py2/.dist-info/METADATA
index 2539b52f735..f7f7fcdcc85 100644
--- a/contrib/python/wcwidth/py2/.dist-info/METADATA
+++ b/contrib/python/wcwidth/py2/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: wcwidth
-Version: 0.2.12
+Version: 0.2.13
Summary: Measures the displayed width of unicode strings in a terminal
Home-page: https://github.com/jquast/wcwidth
Author: Jeff Quast
@@ -63,7 +63,7 @@ Example
>>> text = u'コンニチハ'
Python **incorrectly** uses the *string length* of 5 codepoints rather than the
-*printible length* of 10 cells, so that when using the `rjust` function, the
+*printable length* of 10 cells, so that when using the `rjust` function, the
output length is wrong::
>>> print(len('コンニチハ'))
@@ -247,8 +247,12 @@ Other Languages
=======
History
=======
+
+0.2.13 *2024-01-06*
+ * **Bugfix** zero-width support for Hangul Jamo (Korean)
+
0.2.12 *2023-11-21*
- * re-release to remove .pyi file misplaced in wheel files `Issue #101`.
+ * re-release to remove .pyi file misplaced in wheel files `Issue #101`_.
0.2.11 *2023-11-20*
* Include tests files in the source distribution (`PR #98`_, `PR #100`_).
diff --git a/contrib/python/wcwidth/py2/README.rst b/contrib/python/wcwidth/py2/README.rst
index a0dd44cb83b..65df2081b8d 100644
--- a/contrib/python/wcwidth/py2/README.rst
+++ b/contrib/python/wcwidth/py2/README.rst
@@ -32,7 +32,7 @@ Example
>>> text = u'コンニチハ'
Python **incorrectly** uses the *string length* of 5 codepoints rather than the
-*printible length* of 10 cells, so that when using the `rjust` function, the
+*printable length* of 10 cells, so that when using the `rjust` function, the
output length is wrong::
>>> print(len('コンニチハ'))
@@ -216,8 +216,12 @@ Other Languages
=======
History
=======
+
+0.2.13 *2024-01-06*
+ * **Bugfix** zero-width support for Hangul Jamo (Korean)
+
0.2.12 *2023-11-21*
- * re-release to remove .pyi file misplaced in wheel files `Issue #101`.
+ * re-release to remove .pyi file misplaced in wheel files `Issue #101`_.
0.2.11 *2023-11-20*
* Include tests files in the source distribution (`PR #98`_, `PR #100`_).
diff --git a/contrib/python/wcwidth/py2/tests/test_core.py b/contrib/python/wcwidth/py2/tests/test_core.py
index d2776cd992b..60ed6b1cde7 100644
--- a/contrib/python/wcwidth/py2/tests/test_core.py
+++ b/contrib/python/wcwidth/py2/tests/test_core.py
@@ -222,17 +222,48 @@ def test_balinese_script():
assert length_phrase == expect_length_phrase
+def test_kr_jamo():
+ """
+ Test basic combining of HANGUL CHOSEONG and JUNGSEONG
+
+ Example and from Raymond Chen's blog post,
+ https://devblogs.microsoft.com/oldnewthing/20201009-00/?p=104351
+ """
+ # This is an example where both characters are "wide" when displayed alone.
+ #
+ # But JUNGSEONG (vowel) is designed for combination with a CHOSEONG (consonant).
+ #
+ # This wcwidth library understands their width only when combination,
+ # and not by independent display, like other zero-width characters that may
+ # only combine with an appropriate preceding character.
+ phrase = (
+ u"\u1100" # ᄀ HANGUL CHOSEONG KIYEOK (consonant)
+ u"\u1161" # ᅡ HANGUL JUNGSEONG A (vowel)
+ )
+ expect_length_each = (2, 0)
+ expect_length_phrase = 2
+
+ # exercise,
+ length_each = tuple(map(wcwidth.wcwidth, phrase))
+ length_phrase = wcwidth.wcswidth(phrase)
+
+ # verify.
+ assert length_each == expect_length_each
+ assert length_phrase == expect_length_phrase
+
+
def test_kr_jamo_filler():
u"""
Jamo filler is 0 width.
- According to https://www.unicode.org/L2/L2006/06310-hangul-decompose9.pdf this character and others
- like it, ``\uffa0``, ``\u1160``, ``\u115f``, ``\u1160``, are not commonly viewed with a terminal,
- seems it doesn't matter whether it is implemented or not, they are not typically used !
+ Example from https://www.unicode.org/L2/L2006/06310-hangul-decompose9.pdf
"""
- phrase = u"\u1100\u1160"
- expect_length_each = (2, 1)
- expect_length_phrase = 3
+ phrase = (
+ u"\u1100" # HANGUL CHOSEONG KIYEOK (consonant)
+ u"\u1160" # HANGUL JUNGSEONG FILLER (vowel)
+ )
+ expect_length_each = (2, 0)
+ expect_length_phrase = 2
# exercise,
length_each = tuple(map(wcwidth.wcwidth, phrase))
@@ -355,3 +386,17 @@ def test_kannada_script_2():
# verify.
assert length_each == expect_length_each
assert length_phrase == expect_length_phrase
+
+
+def test_zero_wide_conflict():
+ # Test characters considered both "wide" and "zero" width
+ # - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ # + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ assert wcwidth.wcwidth(unichr(0x03029), unicode_version='4.1.0') == 2
+ assert wcwidth.wcwidth(unichr(0x0302a), unicode_version='4.1.0') == 0
+
+ # - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ # + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
+ assert wcwidth.wcwidth(unichr(0x03099), unicode_version='4.1.0') == 0
+ assert wcwidth.wcwidth(unichr(0x0309a), unicode_version='4.1.0') == 0
+ assert wcwidth.wcwidth(unichr(0x0309b), unicode_version='4.1.0') == 2
diff --git a/contrib/python/wcwidth/py2/tests/test_table_integrity.py b/contrib/python/wcwidth/py2/tests/test_table_integrity.py
new file mode 100644
index 00000000000..66e63ddbe3f
--- /dev/null
+++ b/contrib/python/wcwidth/py2/tests/test_table_integrity.py
@@ -0,0 +1,15 @@
+"""
+Executes verify-table-integrity.py as a unit test.
+"""
+import os
+import sys
+import subprocess
+
+import pytest
+
[email protected](sys.version_info[:2] != (3, 12), reason='Test only with a single version of python')
+def test_verify_table_integrity():
+ subprocess.check_output([sys.executable, os.path.join(os.path.dirname(__file__),
+ os.path.pardir,
+ 'bin',
+ 'verify-table-integrity.py')]) \ No newline at end of file
diff --git a/contrib/python/wcwidth/py2/wcwidth/__init__.py b/contrib/python/wcwidth/py2/wcwidth/__init__.py
index 40eedb6d22a..d686b30e1b6 100644
--- a/contrib/python/wcwidth/py2/wcwidth/__init__.py
+++ b/contrib/python/wcwidth/py2/wcwidth/__init__.py
@@ -26,4 +26,4 @@ __all__ = ('wcwidth', 'wcswidth', 'list_versions')
# We also used pkg_resources to load unicode version tables from version.json,
# generated by bin/update-tables.py, but some environments are unable to
# import pkg_resources for one reason or another, yikes!
-__version__ = '0.2.12'
+__version__ = '0.2.13'
diff --git a/contrib/python/wcwidth/py2/wcwidth/table_wide.py b/contrib/python/wcwidth/py2/wcwidth/table_wide.py
index 02afd5c2b7c..bd6dfdd82a0 100644
--- a/contrib/python/wcwidth/py2/wcwidth/table_wide.py
+++ b/contrib/python/wcwidth/py2/wcwidth/table_wide.py
@@ -1,7 +1,7 @@
"""
Exports WIDE_EASTASIAN table keyed by supporting unicode version level.
-This code generated by wcwidth/bin/update-tables.py on 2023-09-14 15:45:33 UTC.
+This code generated by wcwidth/bin/update-tables.py on 2024-01-06 01:39:49 UTC.
"""
WIDE_EASTASIAN = {
'4.1.0': (
@@ -15,9 +15,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312c,), # Bopomofo Letter B ..Bopomofo Letter Gn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H
@@ -53,9 +54,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312c,), # Bopomofo Letter B ..Bopomofo Letter Gn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H
@@ -91,9 +93,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H
@@ -123,16 +126,15 @@ WIDE_EASTASIAN = {
# Date: 2009-06-09, 17:47:00 PDT [KW]
#
(0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler
- (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae
- (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni
(0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra
(0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H
@@ -145,8 +147,6 @@ WIDE_EASTASIAN = {
(0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke
(0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo
(0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih
- (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e
- (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph
(0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil)
(0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve
(0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop
@@ -165,16 +165,15 @@ WIDE_EASTASIAN = {
# Date: 2010-08-17, 12:17:00 PDT [KW]
#
(0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler
- (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae
- (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni
(0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra
(0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -187,8 +186,6 @@ WIDE_EASTASIAN = {
(0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke
(0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo
(0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih
- (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e
- (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph
(0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil)
(0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve
(0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop
@@ -209,16 +206,15 @@ WIDE_EASTASIAN = {
# Date: 2011-09-19, 18:46:00 GMT [KW]
#
(0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler
- (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae
- (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni
(0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra
(0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -231,8 +227,6 @@ WIDE_EASTASIAN = {
(0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke
(0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo
(0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih
- (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e
- (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph
(0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil)
(0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve
(0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop
@@ -258,9 +252,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -298,9 +293,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -338,9 +334,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -378,9 +375,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -451,9 +449,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -493,7 +492,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -562,9 +562,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312e,), # Bopomofo Letter B ..Bopomofo Letter O With D
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -606,7 +607,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -673,9 +675,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -717,7 +720,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -786,9 +790,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -832,7 +837,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -905,9 +911,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy
@@ -950,7 +957,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -1023,9 +1031,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q
@@ -1043,8 +1052,7 @@ WIDE_EASTASIAN = {
(0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At
(0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa
(0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign
- (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill
- (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea
+ (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma
(0x17000, 0x187f7,), # (nil)
(0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char
(0x18d00, 0x18d08,), # (nil)
@@ -1069,7 +1077,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -1144,9 +1153,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q
@@ -1164,8 +1174,7 @@ WIDE_EASTASIAN = {
(0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At
(0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa
(0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign
- (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill
- (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea
+ (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma
(0x17000, 0x187f7,), # (nil)
(0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char
(0x18d00, 0x18d08,), # (nil)
@@ -1193,7 +1202,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -1270,9 +1280,10 @@ WIDE_EASTASIAN = {
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
(0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description
- (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
+ (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q
@@ -1290,8 +1301,7 @@ WIDE_EASTASIAN = {
(0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At
(0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa
(0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign
- (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill
- (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea
+ (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma
(0x17000, 0x187f7,), # (nil)
(0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char
(0x18d00, 0x18d08,), # (nil)
@@ -1321,7 +1331,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
@@ -1395,9 +1406,10 @@ WIDE_EASTASIAN = {
(0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap
(0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
(0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
- (0x02ff0, 0x0303e,), # Ideographic Description ..Ideographic Variation In
+ (0x02ff0, 0x03029,), # Ideographic Description ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
(0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
- (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q
@@ -1415,8 +1427,7 @@ WIDE_EASTASIAN = {
(0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At
(0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa
(0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign
- (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill
- (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea
+ (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma
(0x17000, 0x187f7,), # (nil)
(0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char
(0x18d00, 0x18d08,), # (nil)
@@ -1446,7 +1457,8 @@ WIDE_EASTASIAN = {
(0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
(0x1f3e0, 0x1f3f0,), # House Building ..European Castle
(0x1f3f4, 0x1f3f4,), # Waving Black Flag
- (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
(0x1f440, 0x1f440,), # Eyes
(0x1f442, 0x1f4fc,), # Ear ..Videocassette
(0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
diff --git a/contrib/python/wcwidth/py2/wcwidth/table_zero.py b/contrib/python/wcwidth/py2/wcwidth/table_zero.py
index 67261fd659a..dd422915605 100644
--- a/contrib/python/wcwidth/py2/wcwidth/table_zero.py
+++ b/contrib/python/wcwidth/py2/wcwidth/table_zero.py
@@ -1,7 +1,7 @@
"""
Exports ZERO_WIDTH table keyed by supporting unicode version level.
-This code generated by wcwidth/bin/update-tables.py on 2023-10-19 20:57:31 UTC.
+This code generated by wcwidth/bin/update-tables.py on 2024-01-04 07:14:52 UTC.
"""
ZERO_WIDTH = {
'4.1.0': (
@@ -107,6 +107,7 @@ ZERO_WIDTH = {
(0x0102c, 0x01032,), # Myanmar Vowel Sign Aa ..Myanmar Vowel Sign Ai
(0x01036, 0x01039,), # Myanmar Sign Anusvara ..Myanmar Sign Virama
(0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -133,6 +134,7 @@ ZERO_WIDTH = {
(0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta
(0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara
(0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe23,), # Combining Ligature Left ..Combining Double Tilde R
@@ -256,6 +258,7 @@ ZERO_WIDTH = {
(0x0102c, 0x01032,), # Myanmar Vowel Sign Aa ..Myanmar Vowel Sign Ai
(0x01036, 0x01039,), # Myanmar Sign Anusvara ..Myanmar Sign Virama
(0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -286,6 +289,7 @@ ZERO_WIDTH = {
(0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta
(0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara
(0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe23,), # Combining Ligature Left ..Combining Double Tilde R
@@ -418,6 +422,7 @@ ZERO_WIDTH = {
(0x01071, 0x01074,), # Myanmar Vowel Sign Geba ..Myanmar Vowel Sign Kayah
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -461,6 +466,7 @@ ZERO_WIDTH = {
(0x0aa29, 0x0aa36,), # Cham Vowel Sign Aa ..Cham Consonant Sign Wa
(0x0aa43, 0x0aa43,), # Cham Consonant Sign Final Ng
(0x0aa4c, 0x0aa4d,), # Cham Consonant Sign Fina..Cham Consonant Sign Fina
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac
@@ -599,6 +605,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -662,6 +669,7 @@ ZERO_WIDTH = {
(0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac
@@ -805,6 +813,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -870,6 +879,7 @@ ZERO_WIDTH = {
(0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac
@@ -1016,6 +1026,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -1084,6 +1095,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac
@@ -1237,6 +1249,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -1305,6 +1318,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac
@@ -1459,6 +1473,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -1527,6 +1542,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac
@@ -1680,6 +1696,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -1751,6 +1768,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2d,), # Combining Ligature Left ..Combining Conjoining Mac
@@ -1928,6 +1946,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -1997,6 +2016,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -2184,6 +2204,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -2254,6 +2275,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -2455,6 +2477,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -2525,6 +2548,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -2739,6 +2763,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -2810,6 +2835,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -3033,6 +3059,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -3104,6 +3131,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -3334,6 +3362,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -3405,6 +3434,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -3635,6 +3665,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -3707,6 +3738,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -3949,6 +3981,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -4020,6 +4053,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -4270,6 +4304,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -4341,6 +4376,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
@@ -4600,6 +4636,7 @@ ZERO_WIDTH = {
(0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
(0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
(0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
(0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
(0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod
(0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
@@ -4671,6 +4708,7 @@ ZERO_WIDTH = {
(0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
(0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
(0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
(0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
(0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
(0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
diff --git a/contrib/python/wcwidth/py2/wcwidth/wcwidth.py b/contrib/python/wcwidth/py2/wcwidth/wcwidth.py
index 59eb5c0806f..e924020630c 100644
--- a/contrib/python/wcwidth/py2/wcwidth/wcwidth.py
+++ b/contrib/python/wcwidth/py2/wcwidth/wcwidth.py
@@ -162,8 +162,11 @@ def wcswidth(pwcs, n=None, unicode_version='auto'):
Given a unicode string, return its printable length on a terminal.
:param str pwcs: Measure width of given unicode string.
- :param int n: When ``n`` is None (default), return the length of the
- entire string, otherwise width the first ``n`` characters specified.
+ :param int n: When ``n`` is None (default), return the length of the entire
+ string, otherwise only the first ``n`` characters are measured. This
+ argument exists only for compatibility with the C POSIX function
+ signature. It is suggested instead to use python's string slicing
+ capability, ``wcswidth(pwcs[:n])``
:param str unicode_version: An explicit definition of the unicode version
level to use for determination, may be ``auto`` (default), which uses
the Environment Variable, ``UNICODE_VERSION`` if defined, or the latest
diff --git a/contrib/python/wcwidth/py2/ya.make b/contrib/python/wcwidth/py2/ya.make
index 8453f5ee2fe..ea44df43087 100644
--- a/contrib/python/wcwidth/py2/ya.make
+++ b/contrib/python/wcwidth/py2/ya.make
@@ -2,7 +2,7 @@
PY2_LIBRARY()
-VERSION(0.2.12)
+VERSION(0.2.13)
LICENSE(MIT)