aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatti Picus <matti.picus@gmail.com>2023-05-03 17:04:15 +0300
committerMatti Picus <matti.picus@gmail.com>2023-05-03 17:04:15 +0300
commit0f375925dee20e67e591eb180031c479e3100f0c (patch)
treebfb5efa43a132e530b3e7ff2e5c657020255c30a
parentmerge default into release (diff)
parentremove duplicate test, remove unneeded xfail (diff)
downloadpypy-0f375925dee20e67e591eb180031c479e3100f0c.tar.gz
pypy-0f375925dee20e67e591eb180031c479e3100f0c.tar.bz2
pypy-0f375925dee20e67e591eb180031c479e3100f0c.zip
merge default
-rw-r--r--.hgtags3
-rw-r--r--LICENSE2
-rw-r--r--extra_tests/ctypes_tests/test_structures.py12
-rw-r--r--lib_pypy/_cffi_ssl/_stdssl/__init__.py9
-rw-r--r--lib_pypy/_cffi_ssl/_stdssl/certificate.py221
-rw-r--r--lib_pypy/_ctypes/primitive.py5
-rw-r--r--lib_pypy/_pypy_util_cffi.py3
-rw-r--r--lib_pypy/_sysconfigdata.py11
-rw-r--r--lib_pypy/cffi/_pycparser/README2
-rw-r--r--lib_pypy/cffi/_pycparser/__init__.py7
-rw-r--r--lib_pypy/cffi/_pycparser/c_lexer.py1
-rw-r--r--lib_pypy/cffi/_pycparser/c_parser.py22
-rw-r--r--lib_pypy/cffi/_pycparser/lextab.py2
-rw-r--r--lib_pypy/cffi/_pycparser/yacctab.py543
-rw-r--r--lib_pypy/pypy_tools/build_cffi_imports.py20
-rw-r--r--pypy/doc/conf.py4
-rw-r--r--pypy/doc/cpython_differences.rst8
-rw-r--r--pypy/doc/release-v7.3.11.rst2
-rw-r--r--pypy/interpreter/astcompiler/assemble.py109
-rw-r--r--pypy/interpreter/astcompiler/codegen.py18
-rw-r--r--pypy/interpreter/astcompiler/optimize.py4
-rw-r--r--pypy/interpreter/astcompiler/test/test_compiler.py9
-rw-r--r--pypy/interpreter/baseobjspace.py30
-rw-r--r--pypy/interpreter/pyparser/pytokenizer.py28
-rw-r--r--pypy/module/_collections/interp_deque.py6
-rw-r--r--pypy/module/_collections/test/apptest_deque.py19
-rw-r--r--pypy/module/array/interp_array.py13
-rw-r--r--pypy/module/array/test/test_array.py35
-rw-r--r--pypy/module/cpyext/parse/cpyext_descrobject.h3
-rw-r--r--pypy/module/cpyext/test/test_typeobject.py41
-rw-r--r--pypy/module/cpyext/typeobject.py6
-rw-r--r--pypy/module/micronumpy/compile.py2
-rw-r--r--pypy/module/micronumpy/flatiter.py4
-rw-r--r--pypy/module/micronumpy/ndarray.py2
-rw-r--r--pypy/module/micronumpy/strides.py4
-rw-r--r--pypy/module/mmap/interp_mmap.py9
-rw-r--r--pypy/module/mmap/test/test_mmap.py21
-rw-r--r--pypy/objspace/fake/objspace.py6
-rw-r--r--pypy/objspace/std/bufferobject.py6
-rw-r--r--pypy/objspace/std/bytearrayobject.py14
-rw-r--r--pypy/objspace/std/listobject.py16
-rw-r--r--pypy/objspace/std/memoryobject.py6
-rw-r--r--pypy/objspace/std/sliceobject.py68
-rw-r--r--pypy/objspace/std/test/test_bytearrayobject.py18
-rw-r--r--pypy/objspace/std/test/test_listobject.py29
-rw-r--r--pypy/objspace/std/test/test_memoryobject.py16
-rw-r--r--pypy/objspace/std/test/test_sliceobject.py16
-rw-r--r--pypy/tool/release/check_versions.py18
-rwxr-xr-xpypy/tool/release/repackage.sh2
-rw-r--r--pypy/tool/release/versions.json205
-rw-r--r--pypy/tool/traceconfig.py48
-rw-r--r--rpython/doc/conf.py4
-rw-r--r--rpython/jit/backend/x86/regalloc.py1
-rw-r--r--rpython/jit/metainterp/optimizeopt/intutils.py8
-rw-r--r--rpython/jit/metainterp/optimizeopt/test/test_intbound.py5
-rw-r--r--rpython/jit/metainterp/optimizeopt/test/test_optimizeintbound.py19
-rw-r--r--rpython/jit/metainterp/test/test_ajit.py33
-rw-r--r--rpython/rlib/objectmodel.py14
-rw-r--r--rpython/rlib/rmd5.py2
-rw-r--r--rpython/rlib/rposix.py314
-rw-r--r--rpython/rlib/rwin32.py25
-rw-r--r--rpython/rlib/src/winreparse.c202
-rw-r--r--rpython/rlib/src/winreparse.h66
-rw-r--r--rpython/rlib/test/test_objectmodel.py6
-rw-r--r--rpython/rlib/test/test_rsocket.py3
-rw-r--r--rpython/rlib/unicodedata/generate_unicodedb.py5
-rw-r--r--rpython/rlib/unicodedata/test/test_unicodedata.py6
-rw-r--r--rpython/rlib/unicodedata/unicodedb_13_0_0.py4
-rw-r--r--rpython/rtyper/lltypesystem/rffi.py30
-rw-r--r--rpython/tool/cparser/cts.py9
-rw-r--r--rpython/translator/platform/__init__.py2
-rw-r--r--rpython/translator/platform/darwin.py3
-rw-r--r--rpython/translator/sandbox/test/test_sandlib.py2
73 files changed, 1808 insertions, 663 deletions
diff --git a/.hgtags b/.hgtags
index 7b143816d4..6ac0a6a236 100644
--- a/.hgtags
+++ b/.hgtags
@@ -157,3 +157,6 @@ bc58732e1737279ed3f090ea3b8f95543893d40f release-pypy3.9-v7.3.10rc2
451ff45aeccbd4a02d379eb650aec7bcd2751c1e release-pypy2.7-v7.3.10
c20fe3f310f1d209d69a71d903dd17e5c3cf0de9 release-pypy3.8-v7.3.10
21401ebc2df332b6be6e3d364a985e951a72bbbd release-pypy3.9-v7.3.10
+646866ee1eabe7bdbdc97b47a40b472991d571e9 release-pypy2.7-v7.3.11
+a9dbdca6fc3286b0addd2240f11d97d8e8de187a release-pypy3.8-v7.3.11
+feeb267ead3e6771d3f2f49b83e1894839f64fb7 release-pypy3.9-v7.3.11
diff --git a/LICENSE b/LICENSE
index 5abcf865b6..bf31869e21 100644
--- a/LICENSE
+++ b/LICENSE
@@ -31,7 +31,7 @@ directories is licensed as follows:
DEALINGS IN THE SOFTWARE.
-PyPy Copyright holders 2003-2022
+PyPy Copyright holders 2003-2023
--------------------------------
Except when otherwise stated (look for LICENSE files or information at
diff --git a/extra_tests/ctypes_tests/test_structures.py b/extra_tests/ctypes_tests/test_structures.py
index fa6ed900ae..65861f3a81 100644
--- a/extra_tests/ctypes_tests/test_structures.py
+++ b/extra_tests/ctypes_tests/test_structures.py
@@ -2,6 +2,7 @@ from ctypes import *
import pytest
import sys
+import weakref
def test_subclass_initializer():
@@ -214,3 +215,14 @@ def test_memoryview():
assert mv.format == 'T{>h:a:>h:b:}'
assert mv.shape == (2, 3)
assert mv.itemsize == 4
+
+def test_weakref():
+ # issue 3883: py_object of weakref
+ class Empty():
+ pass
+
+ e = Empty()
+ r = weakref.ref(e)
+ pr = py_object(r)
+ assert pr.value is e
+
diff --git a/lib_pypy/_cffi_ssl/_stdssl/__init__.py b/lib_pypy/_cffi_ssl/_stdssl/__init__.py
index d83caef6b6..ed84fdae56 100644
--- a/lib_pypy/_cffi_ssl/_stdssl/__init__.py
+++ b/lib_pypy/_cffi_ssl/_stdssl/__init__.py
@@ -3,6 +3,7 @@ import os
import time
import thread as _thread
import weakref
+import __pypy__
try:
from _pypy_openssl import ffi
@@ -1004,10 +1005,10 @@ class _SSLContext(object):
else:
raise ValueError("invalid protocol version")
- ctx = lib.SSL_CTX_new(method)
- if ctx == ffi.NULL:
- raise ssl_error("failed to allocate SSL context")
self.ctx = ffi.gc(lib.SSL_CTX_new(method), lib.SSL_CTX_free)
+ __pypy__.add_memory_pressure(1000)
+ if self.ctx == ffi.NULL:
+ raise ssl_error("failed to allocate SSL context")
self._post_handshake_auth = 0;
self._protocol = protocol
self.hostflags = lib.X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS
@@ -1041,7 +1042,7 @@ class _SSLContext(object):
default_ciphers = b"HIGH:!aNULL:!eNULL"
else:
default_ciphers = b"HIGH:!aNULL:!eNULL:!MD5"
- if not lib.SSL_CTX_set_cipher_list(ctx, default_ciphers):
+ if not lib.SSL_CTX_set_cipher_list(self.ctx, default_ciphers):
lib.ERR_clear_error()
raise SSLError("No cipher can be selected.")
diff --git a/lib_pypy/_cffi_ssl/_stdssl/certificate.py b/lib_pypy/_cffi_ssl/_stdssl/certificate.py
index 6d4323ff79..c181c201e5 100644
--- a/lib_pypy/_cffi_ssl/_stdssl/certificate.py
+++ b/lib_pypy/_cffi_ssl/_stdssl/certificate.py
@@ -63,104 +63,105 @@ def _get_peer_alt_names(certificate):
# get a memory buffer
biobuf = lib.BIO_new(lib.BIO_s_mem());
-
- i = -1
- while True:
- i = lib.X509_get_ext_by_NID(certificate, lib.NID_subject_alt_name, i)
- if i < 0:
- break
-
-
- # now decode the altName
- ext = lib.X509_get_ext(certificate, i);
- method = lib.X509V3_EXT_get(ext)
- if method is ffi.NULL:
- raise ssl_error("No method for internalizing subjectAltName!")
-
- ext_data = lib.X509_EXTENSION_get_data(ext)
- ext_data_len = ext_data.length
- ext_data_value = ffi.new("unsigned char**", ffi.NULL)
- ext_data_value[0] = ext_data.data
-
- if method.it != ffi.NULL:
- names = lib.ASN1_item_d2i(ffi.NULL, ext_data_value, ext_data_len, lib.ASN1_ITEM_ptr(method.it))
- else:
- names = method.d2i(ffi.NULL, ext_data_value, ext_data_len)
-
- names = ffi.cast("GENERAL_NAMES*", names)
- count = lib.sk_GENERAL_NAME_num(names)
- for j in range(count):
- # get a rendering of each name in the set of names
- name = lib.sk_GENERAL_NAME_value(names, j);
- _type = name.type
- if _type == lib.GEN_DIRNAME:
- # we special-case DirName as a tuple of
- # tuples of attributes
- v = _create_tuple_for_X509_NAME(name.d.dirn)
- peer_alt_names.append(("DirName", v))
- # GENERAL_NAME_print() doesn't handle NULL bytes in ASN1_string
- # correctly, CVE-2013-4238
- elif _type == lib.GEN_EMAIL:
- v = _string_from_asn1(name.d.rfc822Name)
- peer_alt_names.append(("email", v))
- elif _type == lib.GEN_DNS:
- v = _string_from_asn1(name.d.dNSName)
- peer_alt_names.append(("DNS", v))
- elif _type == lib.GEN_URI:
- v = _string_from_asn1(name.d.uniformResourceIdentifier)
- peer_alt_names.append(("URI", v))
- elif _type == lib.GEN_RID:
- v = "Registered ID"
- buf = ffi.new("char[2048]")
-
- length = lib.OBJ_obj2txt(buf, 2047, name.d.rid, 0)
- if length < 0:
- # TODO _setSSLError(NULL, 0, __FILE__, __LINE__);
- raise NotImplementedError
- elif length >= 2048:
- v = "<INVALID>"
- else:
- v = _str_with_len(buf, length)
- peer_alt_names.append(("Registered ID", v))
- elif _type == lib.GEN_IPADD:
- # OpenSSL < 3.0.0 adds a trailing \n to IPv6. 3.0.0 removed
- # the trailing newline. Keep it
- v = "IP Address"
- ip = _string_from_asn1(name.d.ip)
- if name.d.ip.length == 4:
- ip_str = '%d.%d.%d.%d' %(ord(ip[0]), ord(ip[1]),
- ord(ip[2]), ord(ip[3]))
- elif name.d.ip.length == 16:
- ip_str = "%X:%X:%X:%X:%X:%X:%X:%X\n" %(
- ord(ip[0]) << 8 | ord(ip[1]),
- ord(ip[2]) << 8 | ord(ip[3]),
- ord(ip[4]) << 8 | ord(ip[5]),
- ord(ip[6]) << 8 | ord(ip[7]),
- ord(ip[8]) << 8 | ord(ip[9]),
- ord(ip[10]) << 8 | ord(ip[11]),
- ord(ip[12]) << 8 | ord(ip[13]),
- ord(ip[14]) << 8 | ord(ip[15]),
- )
- else:
- ip_str = '<invalid>'
- peer_alt_names.append((v, ip_str))
+ try:
+ i = -1
+ while True:
+ i = lib.X509_get_ext_by_NID(certificate, lib.NID_subject_alt_name, i)
+ if i < 0:
+ break
+
+
+ # now decode the altName
+ ext = lib.X509_get_ext(certificate, i);
+ method = lib.X509V3_EXT_get(ext)
+ if method is ffi.NULL:
+ raise ssl_error("No method for internalizing subjectAltName!")
+
+ ext_data = lib.X509_EXTENSION_get_data(ext)
+ ext_data_len = ext_data.length
+ ext_data_value = ffi.new("unsigned char**", ffi.NULL)
+ ext_data_value[0] = ext_data.data
+
+ if method.it != ffi.NULL:
+ names = lib.ASN1_item_d2i(ffi.NULL, ext_data_value, ext_data_len, lib.ASN1_ITEM_ptr(method.it))
else:
- # for everything else, we use the OpenSSL print form
- if _type not in (lib.GEN_OTHERNAME, lib.GEN_X400, \
- lib.GEN_EDIPARTY, lib.GEN_IPADD, lib.GEN_RID):
- warnings.warn("Unknown general type %d" % _type, RuntimeWarning)
- continue
- lib.BIO_reset(biobuf);
- lib.GENERAL_NAME_print(biobuf, name);
- v = _bio_get_str(biobuf)
- idx = v.find(":")
- if idx == -1:
- raise ValueError("Invalid value %s", v)
- peer_alt_names.append((v[:idx], v[idx+1:]))
-
- free_func_addr = ffi.addressof(lib, "GENERAL_NAME_free")
- lib.sk_GENERAL_NAME_pop_free(names, free_func_addr);
- lib.BIO_free(biobuf)
+ names = method.d2i(ffi.NULL, ext_data_value, ext_data_len)
+
+ names = ffi.cast("GENERAL_NAMES*", names)
+ count = lib.sk_GENERAL_NAME_num(names)
+ for j in range(count):
+ # get a rendering of each name in the set of names
+ name = lib.sk_GENERAL_NAME_value(names, j);
+ _type = name.type
+ if _type == lib.GEN_DIRNAME:
+ # we special-case DirName as a tuple of
+ # tuples of attributes
+ v = _create_tuple_for_X509_NAME(name.d.dirn)
+ peer_alt_names.append(("DirName", v))
+ # GENERAL_NAME_print() doesn't handle NULL bytes in ASN1_string
+ # correctly, CVE-2013-4238
+ elif _type == lib.GEN_EMAIL:
+ v = _string_from_asn1(name.d.rfc822Name)
+ peer_alt_names.append(("email", v))
+ elif _type == lib.GEN_DNS:
+ v = _string_from_asn1(name.d.dNSName)
+ peer_alt_names.append(("DNS", v))
+ elif _type == lib.GEN_URI:
+ v = _string_from_asn1(name.d.uniformResourceIdentifier)
+ peer_alt_names.append(("URI", v))
+ elif _type == lib.GEN_RID:
+ v = "Registered ID"
+ buf = ffi.new("char[2048]")
+
+ length = lib.OBJ_obj2txt(buf, 2047, name.d.rid, 0)
+ if length < 0:
+ # TODO _setSSLError(NULL, 0, __FILE__, __LINE__);
+ raise NotImplementedError
+ elif length >= 2048:
+ v = "<INVALID>"
+ else:
+ v = _str_with_len(buf, length)
+ peer_alt_names.append(("Registered ID", v))
+ elif _type == lib.GEN_IPADD:
+ # OpenSSL < 3.0.0 adds a trailing \n to IPv6. 3.0.0 removed
+ # the trailing newline. Keep it
+ v = "IP Address"
+ ip = _string_from_asn1(name.d.ip)
+ if name.d.ip.length == 4:
+ ip_str = '%d.%d.%d.%d' %(ord(ip[0]), ord(ip[1]),
+ ord(ip[2]), ord(ip[3]))
+ elif name.d.ip.length == 16:
+ ip_str = "%X:%X:%X:%X:%X:%X:%X:%X\n" %(
+ ord(ip[0]) << 8 | ord(ip[1]),
+ ord(ip[2]) << 8 | ord(ip[3]),
+ ord(ip[4]) << 8 | ord(ip[5]),
+ ord(ip[6]) << 8 | ord(ip[7]),
+ ord(ip[8]) << 8 | ord(ip[9]),
+ ord(ip[10]) << 8 | ord(ip[11]),
+ ord(ip[12]) << 8 | ord(ip[13]),
+ ord(ip[14]) << 8 | ord(ip[15]),
+ )
+ else:
+ ip_str = '<invalid>'
+ peer_alt_names.append((v, ip_str))
+ else:
+ # for everything else, we use the OpenSSL print form
+ if _type not in (lib.GEN_OTHERNAME, lib.GEN_X400, \
+ lib.GEN_EDIPARTY, lib.GEN_IPADD, lib.GEN_RID):
+ warnings.warn("Unknown general type %d" % _type, RuntimeWarning)
+ continue
+ lib.BIO_reset(biobuf);
+ lib.GENERAL_NAME_print(biobuf, name);
+ v = _bio_get_str(biobuf)
+ idx = v.find(":")
+ if idx == -1:
+ raise ValueError("Invalid value %s", v)
+ peer_alt_names.append((v[:idx], v[idx+1:]))
+
+ free_func_addr = ffi.addressof(lib, "GENERAL_NAME_free")
+ lib.sk_GENERAL_NAME_pop_free(names, free_func_addr);
+ finally:
+ lib.BIO_free(biobuf)
if peer_alt_names is not None:
return tuple(peer_alt_names)
return peer_alt_names
@@ -221,9 +222,8 @@ def _decode_certificate(certificate):
return None
retval["version"] = version
+ biobuf = lib.BIO_new(lib.BIO_s_mem());
try:
- biobuf = lib.BIO_new(lib.BIO_s_mem());
-
lib.BIO_reset(biobuf);
serialNumber = lib.X509_get_serialNumber(certificate);
# should not exceed 20 octets, 160 bits, so buf is big enough
@@ -311,20 +311,21 @@ def _test_decode_cert(path):
if cert is ffi.NULL:
lib.BIO_free(cert)
raise ssl_error("Can't malloc memory to read file")
+ try:
+ epath = path.encode()
+ if lib.BIO_read_filename(cert, epath) <= 0:
+ raise ssl_error("Can't open file")
- epath = path.encode()
- if lib.BIO_read_filename(cert, epath) <= 0:
- lib.BIO_free(cert)
- raise ssl_error("Can't open file")
-
- x = lib.PEM_read_bio_X509(cert, ffi.NULL, ffi.NULL, ffi.NULL)
- if x is ffi.NULL:
- ssl_error("Error decoding PEM-encoded file")
+ x = lib.PEM_read_bio_X509(cert, ffi.NULL, ffi.NULL, ffi.NULL)
+ if x is ffi.NULL:
+ raise ssl_error("Error reading PEM-encoded file")
- retval = _decode_certificate(x)
- lib.X509_free(x);
+ try:
+ retval = _decode_certificate(x)
+ finally:
+ lib.X509_free(x);
- if cert != ffi.NULL:
+ finally:
lib.BIO_free(cert)
return retval
diff --git a/lib_pypy/_ctypes/primitive.py b/lib_pypy/_ctypes/primitive.py
index a4d6086104..b1136996ef 100644
--- a/lib_pypy/_ctypes/primitive.py
+++ b/lib_pypy/_ctypes/primitive.py
@@ -51,7 +51,10 @@ class GlobalPyobjContainer(object):
def add(self, obj):
num = len(self.objs)
- self.objs.append(weakref.ref(obj))
+ if isinstance(obj, weakref.ReferenceType):
+ self.objs.append(obj)
+ else:
+ self.objs.append(weakref.ref(obj))
return num
def get(self, num):
diff --git a/lib_pypy/_pypy_util_cffi.py b/lib_pypy/_pypy_util_cffi.py
index cded8c212e..40563bc6eb 100644
--- a/lib_pypy/_pypy_util_cffi.py
+++ b/lib_pypy/_pypy_util_cffi.py
@@ -1,4 +1,4 @@
-
+import __pypy__
from _pypy_util_cffi_inner import ffi, lib
class StackNew(object):
@@ -13,6 +13,7 @@ class StackNew(object):
if tp.endswith("[]"):
tp = tp[:-2] + "*" # XXX dodgu?
self._p = ffi.cast(tp, lib.malloc(total_size))
+ __pypy__.add_memory_pressure(total_size)
def __enter__(self):
return self._p
diff --git a/lib_pypy/_sysconfigdata.py b/lib_pypy/_sysconfigdata.py
index dda3eddc17..342da84585 100644
--- a/lib_pypy/_sysconfigdata.py
+++ b/lib_pypy/_sysconfigdata.py
@@ -1,5 +1,10 @@
import imp
-build_time_vars = {
- "SO": [s[0] for s in imp.get_suffixes() if s[2] == imp.C_EXTENSION][0]
-}
+so = [s[0] for s in imp.get_suffixes() if s[2] == imp.C_EXTENSION]
+
+if so:
+ build_time_vars = {
+ "SO": so[0]
+ }
+else:
+ build_time_vars = {}
diff --git a/lib_pypy/cffi/_pycparser/README b/lib_pypy/cffi/_pycparser/README
index 001c4bb85b..0bc3a0a823 100644
--- a/lib_pypy/cffi/_pycparser/README
+++ b/lib_pypy/cffi/_pycparser/README
@@ -14,4 +14,4 @@ class CParser(PLYParser):
When updating the version of this in-place, you must regenerate the
lextab.py and yacctab.py files. They will be regenerated on import if they
are not found, so they should be removed, then regenrated, then the new
-versions committed.
+versions committed. Note that they may be generated in a different directory.
diff --git a/lib_pypy/cffi/_pycparser/__init__.py b/lib_pypy/cffi/_pycparser/__init__.py
index d82eb2d6fb..842a81dd30 100644
--- a/lib_pypy/cffi/_pycparser/__init__.py
+++ b/lib_pypy/cffi/_pycparser/__init__.py
@@ -49,7 +49,7 @@ def preprocess_file(filename, cpp_path='cpp', cpp_args=''):
def parse_file(filename, use_cpp=False, cpp_path='cpp', cpp_args='',
- parser=None):
+ parser=None, encoding=None):
""" Parse a C file using pycparser.
filename:
@@ -71,6 +71,9 @@ def parse_file(filename, use_cpp=False, cpp_path='cpp', cpp_args='',
r'-I../utils/fake_libc_include'
If several arguments are required, pass a list of strings.
+ encoding:
+ Encoding to use for the file to parse
+
parser:
Optional parser object to be used instead of the default CParser
@@ -82,7 +85,7 @@ def parse_file(filename, use_cpp=False, cpp_path='cpp', cpp_args='',
if use_cpp:
text = preprocess_file(filename, cpp_path, cpp_args)
else:
- with io.open(filename) as f:
+ with io.open(filename, encoding=encoding) as f:
text = f.read()
if parser is None:
diff --git a/lib_pypy/cffi/_pycparser/c_lexer.py b/lib_pypy/cffi/_pycparser/c_lexer.py
index d68d8ebfa3..22c64bc761 100644
--- a/lib_pypy/cffi/_pycparser/c_lexer.py
+++ b/lib_pypy/cffi/_pycparser/c_lexer.py
@@ -112,6 +112,7 @@ class CLexer(object):
'_BOOL', '_COMPLEX',
'_NORETURN', '_THREAD_LOCAL', '_STATIC_ASSERT',
'_ATOMIC', '_ALIGNOF', '_ALIGNAS',
+ '_PRAGMA',
)
keyword_map = {}
diff --git a/lib_pypy/cffi/_pycparser/c_parser.py b/lib_pypy/cffi/_pycparser/c_parser.py
index 8f701a2c32..3512dd495f 100644
--- a/lib_pypy/cffi/_pycparser/c_parser.py
+++ b/lib_pypy/cffi/_pycparser/c_parser.py
@@ -571,15 +571,29 @@ class CParser(PLYParser):
self._parse_error('Directives not supported yet',
self._token_coord(p, 1))
+ # This encompasses two types of C99-compatible pragmas:
+ # - The #pragma directive:
+ # # pragma character_sequence
+ # - The _Pragma unary operator:
+ # _Pragma ( " string_literal " )
def p_pppragma_directive(self, p):
""" pppragma_directive : PPPRAGMA
| PPPRAGMA PPPRAGMASTR
+ | _PRAGMA LPAREN unified_string_literal RPAREN
"""
- if len(p) == 3:
+ if len(p) == 5:
+ p[0] = c_ast.Pragma(p[3], self._token_coord(p, 2))
+ elif len(p) == 3:
p[0] = c_ast.Pragma(p[2], self._token_coord(p, 2))
else:
p[0] = c_ast.Pragma("", self._token_coord(p, 1))
+ def p_pppragma_directive_list(self, p):
+ """ pppragma_directive_list : pppragma_directive
+ | pppragma_directive_list pppragma_directive
+ """
+ p[0] = [p[1]] if len(p) == 2 else p[1] + [p[2]]
+
# In function definitions, the declarator can be followed by
# a declaration list, for old "K&R style" function definitios.
def p_function_definition_1(self, p):
@@ -671,12 +685,12 @@ class CParser(PLYParser):
# sum += 1;
# }
def p_pragmacomp_or_statement(self, p):
- """ pragmacomp_or_statement : pppragma_directive statement
+ """ pragmacomp_or_statement : pppragma_directive_list statement
| statement
"""
- if isinstance(p[1], c_ast.Pragma) and len(p) == 3:
+ if len(p) == 3:
p[0] = c_ast.Compound(
- block_items=[p[1], p[2]],
+ block_items=p[1]+[p[2]],
coord=self._token_coord(p, 1))
else:
p[0] = p[1]
diff --git a/lib_pypy/cffi/_pycparser/lextab.py b/lib_pypy/cffi/_pycparser/lextab.py
index ed09b55f7d..519f2e6173 100644
--- a/lib_pypy/cffi/_pycparser/lextab.py
+++ b/lib_pypy/cffi/_pycparser/lextab.py
@@ -1,6 +1,6 @@
# lextab.py. This file automatically created by PLY (version 3.10). Don't edit!
_tabversion = '3.10'
-_lextokens = set(('AUTO', 'BREAK', 'CASE', 'CHAR', 'CONST', 'CONTINUE', 'DEFAULT', 'DO', 'DOUBLE', 'ELSE', 'ENUM', 'EXTERN', 'FLOAT', 'FOR', 'GOTO', 'IF', 'INLINE', 'INT', 'LONG', 'REGISTER', 'OFFSETOF', 'RESTRICT', 'RETURN', 'SHORT', 'SIGNED', 'SIZEOF', 'STATIC', 'STRUCT', 'SWITCH', 'TYPEDEF', 'UNION', 'UNSIGNED', 'VOID', 'VOLATILE', 'WHILE', '__INT128', '_BOOL', '_COMPLEX', '_NORETURN', '_THREAD_LOCAL', '_STATIC_ASSERT', '_ATOMIC', '_ALIGNOF', '_ALIGNAS', 'ID', 'TYPEID', 'INT_CONST_DEC', 'INT_CONST_OCT', 'INT_CONST_HEX', 'INT_CONST_BIN', 'INT_CONST_CHAR', 'FLOAT_CONST', 'HEX_FLOAT_CONST', 'CHAR_CONST', 'WCHAR_CONST', 'U8CHAR_CONST', 'U16CHAR_CONST', 'U32CHAR_CONST', 'STRING_LITERAL', 'WSTRING_LITERAL', 'U8STRING_LITERAL', 'U16STRING_LITERAL', 'U32STRING_LITERAL', 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'MOD', 'OR', 'AND', 'NOT', 'XOR', 'LSHIFT', 'RSHIFT', 'LOR', 'LAND', 'LNOT', 'LT', 'LE', 'GT', 'GE', 'EQ', 'NE', 'EQUALS', 'TIMESEQUAL', 'DIVEQUAL', 'MODEQUAL', 'PLUSEQUAL', 'MINUSEQUAL', 'LSHIFTEQUAL', 'RSHIFTEQUAL', 'ANDEQUAL', 'XOREQUAL', 'OREQUAL', 'PLUSPLUS', 'MINUSMINUS', 'ARROW', 'CONDOP', 'LPAREN', 'RPAREN', 'LBRACKET', 'RBRACKET', 'LBRACE', 'RBRACE', 'COMMA', 'PERIOD', 'SEMI', 'COLON', 'ELLIPSIS', 'PPHASH', 'PPPRAGMA', 'PPPRAGMASTR'))
+_lextokens = set(('AUTO', 'BREAK', 'CASE', 'CHAR', 'CONST', 'CONTINUE', 'DEFAULT', 'DO', 'DOUBLE', 'ELSE', 'ENUM', 'EXTERN', 'FLOAT', 'FOR', 'GOTO', 'IF', 'INLINE', 'INT', 'LONG', 'REGISTER', 'OFFSETOF', 'RESTRICT', 'RETURN', 'SHORT', 'SIGNED', 'SIZEOF', 'STATIC', 'STRUCT', 'SWITCH', 'TYPEDEF', 'UNION', 'UNSIGNED', 'VOID', 'VOLATILE', 'WHILE', '__INT128', '_BOOL', '_COMPLEX', '_NORETURN', '_THREAD_LOCAL', '_STATIC_ASSERT', '_ATOMIC', '_ALIGNOF', '_ALIGNAS', '_PRAGMA', 'ID', 'TYPEID', 'INT_CONST_DEC', 'INT_CONST_OCT', 'INT_CONST_HEX', 'INT_CONST_BIN', 'INT_CONST_CHAR', 'FLOAT_CONST', 'HEX_FLOAT_CONST', 'CHAR_CONST', 'WCHAR_CONST', 'U8CHAR_CONST', 'U16CHAR_CONST', 'U32CHAR_CONST', 'STRING_LITERAL', 'WSTRING_LITERAL', 'U8STRING_LITERAL', 'U16STRING_LITERAL', 'U32STRING_LITERAL', 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'MOD', 'OR', 'AND', 'NOT', 'XOR', 'LSHIFT', 'RSHIFT', 'LOR', 'LAND', 'LNOT', 'LT', 'LE', 'GT', 'GE', 'EQ', 'NE', 'EQUALS', 'TIMESEQUAL', 'DIVEQUAL', 'MODEQUAL', 'PLUSEQUAL', 'MINUSEQUAL', 'LSHIFTEQUAL', 'RSHIFTEQUAL', 'ANDEQUAL', 'XOREQUAL', 'OREQUAL', 'PLUSPLUS', 'MINUSMINUS', 'ARROW', 'CONDOP', 'LPAREN', 'RPAREN', 'LBRACKET', 'RBRACKET', 'LBRACE', 'RBRACE', 'COMMA', 'PERIOD', 'SEMI', 'COLON', 'ELLIPSIS', 'PPHASH', 'PPPRAGMA', 'PPPRAGMASTR'))
_lexreflags = 64
_lexliterals = ''
_lexstateinfo = {'INITIAL': 'inclusive', 'ppline': 'exclusive', 'pppragma': 'exclusive'}
diff --git a/lib_pypy/cffi/_pycparser/yacctab.py b/lib_pypy/cffi/_pycparser/yacctab.py
index 549977c6d5..68b1466088 100644
--- a/lib_pypy/cffi/_pycparser/yacctab.py
+++ b/lib_pypy/cffi/_pycparser/yacctab.py
@@ -5,9 +5,9 @@ _tabversion = '3.10'
_lr_method = 'LALR'
-_lr_signature = 'translation_unit_or_emptyleftLORleftLANDleftORleftXORleftANDleftEQNEleftGTGELTLEleftRSHIFTLSHIFTleftPLUSMINUSleftTIMESDIVIDEMODAUTO BREAK CASE CHAR CONST CONTINUE DEFAULT DO DOUBLE ELSE ENUM EXTERN FLOAT FOR GOTO IF INLINE INT LONG REGISTER OFFSETOF RESTRICT RETURN SHORT SIGNED SIZEOF STATIC STRUCT SWITCH TYPEDEF UNION UNSIGNED VOID VOLATILE WHILE __INT128 _BOOL _COMPLEX _NORETURN _THREAD_LOCAL _STATIC_ASSERT _ATOMIC _ALIGNOF _ALIGNAS ID TYPEID INT_CONST_DEC INT_CONST_OCT INT_CONST_HEX INT_CONST_BIN INT_CONST_CHAR FLOAT_CONST HEX_FLOAT_CONST CHAR_CONST WCHAR_CONST U8CHAR_CONST U16CHAR_CONST U32CHAR_CONST STRING_LITERAL WSTRING_LITERAL U8STRING_LITERAL U16STRING_LITERAL U32STRING_LITERAL PLUS MINUS TIMES DIVIDE MOD OR AND NOT XOR LSHIFT RSHIFT LOR LAND LNOT LT LE GT GE EQ NE EQUALS TIMESEQUAL DIVEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL LSHIFTEQUAL RSHIFTEQUAL ANDEQUAL XOREQUAL OREQUAL PLUSPLUS MINUSMINUS ARROW CONDOP LPAREN RPAREN LBRACKET RBRACKET LBRACE RBRACE COMMA PERIOD SEMI COLON ELLIPSIS PPHASH PPPRAGMA PPPRAGMASTRabstract_declarator_opt : empty\n| abstract_declaratorassignment_expression_opt : empty\n| assignment_expressionblock_item_list_opt : empty\n| block_item_listdeclaration_list_opt : empty\n| declaration_listdeclaration_specifiers_no_type_opt : empty\n| declaration_specifiers_no_typedesignation_opt : empty\n| designationexpression_opt : empty\n| expressionid_init_declarator_list_opt : empty\n| id_init_declarator_listidentifier_list_opt : empty\n| identifier_listinit_declarator_list_opt : empty\n| init_declarator_listinitializer_list_opt : empty\n| initializer_listparameter_type_list_opt : empty\n| parameter_type_liststruct_declarator_list_opt : empty\n| struct_declarator_listtype_qualifier_list_opt : empty\n| type_qualifier_list direct_id_declarator : ID\n direct_id_declarator : LPAREN id_declarator RPAREN\n direct_id_declarator : direct_id_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_id_declarator : direct_id_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_id_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_id_declarator : direct_id_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_id_declarator : direct_id_declarator LPAREN parameter_type_list RPAREN\n | direct_id_declarator LPAREN identifier_list_opt RPAREN\n direct_typeid_declarator : TYPEID\n direct_typeid_declarator : LPAREN typeid_declarator RPAREN\n direct_typeid_declarator : direct_typeid_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_typeid_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LPAREN parameter_type_list RPAREN\n | direct_typeid_declarator LPAREN identifier_list_opt RPAREN\n direct_typeid_noparen_declarator : TYPEID\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_typeid_noparen_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LPAREN parameter_type_list RPAREN\n | direct_typeid_noparen_declarator LPAREN identifier_list_opt RPAREN\n id_declarator : direct_id_declarator\n id_declarator : pointer direct_id_declarator\n typeid_declarator : direct_typeid_declarator\n typeid_declarator : pointer direct_typeid_declarator\n typeid_noparen_declarator : direct_typeid_noparen_declarator\n typeid_noparen_declarator : pointer direct_typeid_noparen_declarator\n translation_unit_or_empty : translation_unit\n | empty\n translation_unit : external_declaration\n translation_unit : translation_unit external_declaration\n external_declaration : function_definition\n external_declaration : declaration\n external_declaration : pp_directive\n | pppragma_directive\n external_declaration : SEMI\n external_declaration : static_assert\n static_assert : _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN\n | _STATIC_ASSERT LPAREN constant_expression RPAREN\n pp_directive : PPHASH\n pppragma_directive : PPPRAGMA\n | PPPRAGMA PPPRAGMASTR\n function_definition : id_declarator declaration_list_opt compound_statement\n function_definition : declaration_specifiers id_declarator declaration_list_opt compound_statement\n statement : labeled_statement\n | expression_statement\n | compound_statement\n | selection_statement\n | iteration_statement\n | jump_statement\n | pppragma_directive\n | static_assert\n pragmacomp_or_statement : pppragma_directive statement\n | statement\n decl_body : declaration_specifiers init_declarator_list_opt\n | declaration_specifiers_no_type id_init_declarator_list_opt\n declaration : decl_body SEMI\n declaration_list : declaration\n | declaration_list declaration\n declaration_specifiers_no_type : type_qualifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : storage_class_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : function_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : atomic_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : alignment_specifier declaration_specifiers_no_type_opt\n declaration_specifiers : declaration_specifiers type_qualifier\n declaration_specifiers : declaration_specifiers storage_class_specifier\n declaration_specifiers : declaration_specifiers function_specifier\n declaration_specifiers : declaration_specifiers type_specifier_no_typeid\n declaration_specifiers : type_specifier\n declaration_specifiers : declaration_specifiers_no_type type_specifier\n declaration_specifiers : declaration_specifiers alignment_specifier\n storage_class_specifier : AUTO\n | REGISTER\n | STATIC\n | EXTERN\n | TYPEDEF\n | _THREAD_LOCAL\n function_specifier : INLINE\n | _NORETURN\n type_specifier_no_typeid : VOID\n | _BOOL\n | CHAR\n | SHORT\n | INT\n | LONG\n | FLOAT\n | DOUBLE\n | _COMPLEX\n | SIGNED\n | UNSIGNED\n | __INT128\n type_specifier : typedef_name\n | enum_specifier\n | struct_or_union_specifier\n | type_specifier_no_typeid\n | atomic_specifier\n atomic_specifier : _ATOMIC LPAREN type_name RPAREN\n type_qualifier : CONST\n | RESTRICT\n | VOLATILE\n | _ATOMIC\n init_declarator_list : init_declarator\n | init_declarator_list COMMA init_declarator\n init_declarator : declarator\n | declarator EQUALS initializer\n id_init_declarator_list : id_init_declarator\n | id_init_declarator_list COMMA init_declarator\n id_init_declarator : id_declarator\n | id_declarator EQUALS initializer\n specifier_qualifier_list : specifier_qualifier_list type_specifier_no_typeid\n specifier_qualifier_list : specifier_qualifier_list type_qualifier\n specifier_qualifier_list : type_specifier\n specifier_qualifier_list : type_qualifier_list type_specifier\n specifier_qualifier_list : alignment_specifier\n specifier_qualifier_list : specifier_qualifier_list alignment_specifier\n struct_or_union_specifier : struct_or_union ID\n | struct_or_union TYPEID\n struct_or_union_specifier : struct_or_union brace_open struct_declaration_list brace_close\n | struct_or_union brace_open brace_close\n struct_or_union_specifier : struct_or_union ID brace_open struct_declaration_list brace_close\n | struct_or_union ID brace_open brace_close\n | struct_or_union TYPEID brace_open struct_declaration_list brace_close\n | struct_or_union TYPEID brace_open brace_close\n struct_or_union : STRUCT\n | UNION\n struct_declaration_list : struct_declaration\n | struct_declaration_list struct_declaration\n struct_declaration : specifier_qualifier_list struct_declarator_list_opt SEMI\n struct_declaration : SEMI\n struct_declaration : pppragma_directive\n struct_declarator_list : struct_declarator\n | struct_declarator_list COMMA struct_declarator\n struct_declarator : declarator\n struct_declarator : declarator COLON constant_expression\n | COLON constant_expression\n enum_specifier : ENUM ID\n | ENUM TYPEID\n enum_specifier : ENUM brace_open enumerator_list brace_close\n enum_specifier : ENUM ID brace_open enumerator_list brace_close\n | ENUM TYPEID brace_open enumerator_list brace_close\n enumerator_list : enumerator\n | enumerator_list COMMA\n | enumerator_list COMMA enumerator\n alignment_specifier : _ALIGNAS LPAREN type_name RPAREN\n | _ALIGNAS LPAREN constant_expression RPAREN\n enumerator : ID\n | ID EQUALS constant_expression\n declarator : id_declarator\n | typeid_declarator\n pointer : TIMES type_qualifier_list_opt\n | TIMES type_qualifier_list_opt pointer\n type_qualifier_list : type_qualifier\n | type_qualifier_list type_qualifier\n parameter_type_list : parameter_list\n | parameter_list COMMA ELLIPSIS\n parameter_list : parameter_declaration\n | parameter_list COMMA parameter_declaration\n parameter_declaration : declaration_specifiers id_declarator\n | declaration_specifiers typeid_noparen_declarator\n parameter_declaration : declaration_specifiers abstract_declarator_opt\n identifier_list : identifier\n | identifier_list COMMA identifier\n initializer : assignment_expression\n initializer : brace_open initializer_list_opt brace_close\n | brace_open initializer_list COMMA brace_close\n initializer_list : designation_opt initializer\n | initializer_list COMMA designation_opt initializer\n designation : designator_list EQUALS\n designator_list : designator\n | designator_list designator\n designator : LBRACKET constant_expression RBRACKET\n | PERIOD identifier\n type_name : specifier_qualifier_list abstract_declarator_opt\n abstract_declarator : pointer\n abstract_declarator : pointer direct_abstract_declarator\n abstract_declarator : direct_abstract_declarator\n direct_abstract_declarator : LPAREN abstract_declarator RPAREN direct_abstract_declarator : direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET\n direct_abstract_declarator : LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_abstract_declarator : direct_abstract_declarator LBRACKET TIMES RBRACKET\n direct_abstract_declarator : LBRACKET TIMES RBRACKET\n direct_abstract_declarator : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN\n direct_abstract_declarator : LPAREN parameter_type_list_opt RPAREN\n block_item : declaration\n | statement\n block_item_list : block_item\n | block_item_list block_item\n compound_statement : brace_open block_item_list_opt brace_close labeled_statement : ID COLON pragmacomp_or_statement labeled_statement : CASE constant_expression COLON pragmacomp_or_statement labeled_statement : DEFAULT COLON pragmacomp_or_statement selection_statement : IF LPAREN expression RPAREN pragmacomp_or_statement selection_statement : IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement selection_statement : SWITCH LPAREN expression RPAREN pragmacomp_or_statement iteration_statement : WHILE LPAREN expression RPAREN pragmacomp_or_statement iteration_statement : DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement iteration_statement : FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement jump_statement : GOTO ID SEMI jump_statement : BREAK SEMI jump_statement : CONTINUE SEMI jump_statement : RETURN expression SEMI\n | RETURN SEMI\n expression_statement : expression_opt SEMI expression : assignment_expression\n | expression COMMA assignment_expression\n assignment_expression : LPAREN compound_statement RPAREN typedef_name : TYPEID assignment_expression : conditional_expression\n | unary_expression assignment_operator assignment_expression\n assignment_operator : EQUALS\n | XOREQUAL\n | TIMESEQUAL\n | DIVEQUAL\n | MODEQUAL\n | PLUSEQUAL\n | MINUSEQUAL\n | LSHIFTEQUAL\n | RSHIFTEQUAL\n | ANDEQUAL\n | OREQUAL\n constant_expression : conditional_expression conditional_expression : binary_expression\n | binary_expression CONDOP expression COLON conditional_expression\n binary_expression : cast_expression\n | binary_expression TIMES binary_expression\n | binary_expression DIVIDE binary_expression\n | binary_expression MOD binary_expression\n | binary_expression PLUS binary_expression\n | binary_expression MINUS binary_expression\n | binary_expression RSHIFT binary_expression\n | binary_expression LSHIFT binary_expression\n | binary_expression LT binary_expression\n | binary_expression LE binary_expression\n | binary_expression GE binary_expression\n | binary_expression GT binary_expression\n | binary_expression EQ binary_expression\n | binary_expression NE binary_expression\n | binary_expression AND binary_expression\n | binary_expression OR binary_expression\n | binary_expression XOR binary_expression\n | binary_expression LAND binary_expression\n | binary_expression LOR binary_expression\n cast_expression : unary_expression cast_expression : LPAREN type_name RPAREN cast_expression unary_expression : postfix_expression unary_expression : PLUSPLUS unary_expression\n | MINUSMINUS unary_expression\n | unary_operator cast_expression\n unary_expression : SIZEOF unary_expression\n | SIZEOF LPAREN type_name RPAREN\n | _ALIGNOF LPAREN type_name RPAREN\n unary_operator : AND\n | TIMES\n | PLUS\n | MINUS\n | NOT\n | LNOT\n postfix_expression : primary_expression postfix_expression : postfix_expression LBRACKET expression RBRACKET postfix_expression : postfix_expression LPAREN argument_expression_list RPAREN\n | postfix_expression LPAREN RPAREN\n postfix_expression : postfix_expression PERIOD ID\n | postfix_expression PERIOD TYPEID\n | postfix_expression ARROW ID\n | postfix_expression ARROW TYPEID\n postfix_expression : postfix_expression PLUSPLUS\n | postfix_expression MINUSMINUS\n postfix_expression : LPAREN type_name RPAREN brace_open initializer_list brace_close\n | LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close\n primary_expression : identifier primary_expression : constant primary_expression : unified_string_literal\n | unified_wstring_literal\n primary_expression : LPAREN expression RPAREN primary_expression : OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN\n offsetof_member_designator : identifier\n | offsetof_member_designator PERIOD identifier\n | offsetof_member_designator LBRACKET expression RBRACKET\n argument_expression_list : assignment_expression\n | argument_expression_list COMMA assignment_expression\n identifier : ID constant : INT_CONST_DEC\n | INT_CONST_OCT\n | INT_CONST_HEX\n | INT_CONST_BIN\n | INT_CONST_CHAR\n constant : FLOAT_CONST\n | HEX_FLOAT_CONST\n constant : CHAR_CONST\n | WCHAR_CONST\n | U8CHAR_CONST\n | U16CHAR_CONST\n | U32CHAR_CONST\n unified_string_literal : STRING_LITERAL\n | unified_string_literal STRING_LITERAL\n unified_wstring_literal : WSTRING_LITERAL\n | U8STRING_LITERAL\n | U16STRING_LITERAL\n | U32STRING_LITERAL\n | unified_wstring_literal WSTRING_LITERAL\n | unified_wstring_literal U8STRING_LITERAL\n | unified_wstring_literal U16STRING_LITERAL\n | unified_wstring_literal U32STRING_LITERAL\n brace_open : LBRACE\n brace_close : RBRACE\n empty : '
+_lr_signature = 'translation_unit_or_emptyleftLORleftLANDleftORleftXORleftANDleftEQNEleftGTGELTLEleftRSHIFTLSHIFTleftPLUSMINUSleftTIMESDIVIDEMODAUTO BREAK CASE CHAR CONST CONTINUE DEFAULT DO DOUBLE ELSE ENUM EXTERN FLOAT FOR GOTO IF INLINE INT LONG REGISTER OFFSETOF RESTRICT RETURN SHORT SIGNED SIZEOF STATIC STRUCT SWITCH TYPEDEF UNION UNSIGNED VOID VOLATILE WHILE __INT128 _BOOL _COMPLEX _NORETURN _THREAD_LOCAL _STATIC_ASSERT _ATOMIC _ALIGNOF _ALIGNAS _PRAGMA ID TYPEID INT_CONST_DEC INT_CONST_OCT INT_CONST_HEX INT_CONST_BIN INT_CONST_CHAR FLOAT_CONST HEX_FLOAT_CONST CHAR_CONST WCHAR_CONST U8CHAR_CONST U16CHAR_CONST U32CHAR_CONST STRING_LITERAL WSTRING_LITERAL U8STRING_LITERAL U16STRING_LITERAL U32STRING_LITERAL PLUS MINUS TIMES DIVIDE MOD OR AND NOT XOR LSHIFT RSHIFT LOR LAND LNOT LT LE GT GE EQ NE EQUALS TIMESEQUAL DIVEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL LSHIFTEQUAL RSHIFTEQUAL ANDEQUAL XOREQUAL OREQUAL PLUSPLUS MINUSMINUS ARROW CONDOP LPAREN RPAREN LBRACKET RBRACKET LBRACE RBRACE COMMA PERIOD SEMI COLON ELLIPSIS PPHASH PPPRAGMA PPPRAGMASTRabstract_declarator_opt : empty\n| abstract_declaratorassignment_expression_opt : empty\n| assignment_expressionblock_item_list_opt : empty\n| block_item_listdeclaration_list_opt : empty\n| declaration_listdeclaration_specifiers_no_type_opt : empty\n| declaration_specifiers_no_typedesignation_opt : empty\n| designationexpression_opt : empty\n| expressionid_init_declarator_list_opt : empty\n| id_init_declarator_listidentifier_list_opt : empty\n| identifier_listinit_declarator_list_opt : empty\n| init_declarator_listinitializer_list_opt : empty\n| initializer_listparameter_type_list_opt : empty\n| parameter_type_liststruct_declarator_list_opt : empty\n| struct_declarator_listtype_qualifier_list_opt : empty\n| type_qualifier_list direct_id_declarator : ID\n direct_id_declarator : LPAREN id_declarator RPAREN\n direct_id_declarator : direct_id_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_id_declarator : direct_id_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_id_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_id_declarator : direct_id_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_id_declarator : direct_id_declarator LPAREN parameter_type_list RPAREN\n | direct_id_declarator LPAREN identifier_list_opt RPAREN\n direct_typeid_declarator : TYPEID\n direct_typeid_declarator : LPAREN typeid_declarator RPAREN\n direct_typeid_declarator : direct_typeid_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_typeid_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_typeid_declarator : direct_typeid_declarator LPAREN parameter_type_list RPAREN\n | direct_typeid_declarator LPAREN identifier_list_opt RPAREN\n direct_typeid_noparen_declarator : TYPEID\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET\n | direct_typeid_noparen_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET\n direct_typeid_noparen_declarator : direct_typeid_noparen_declarator LPAREN parameter_type_list RPAREN\n | direct_typeid_noparen_declarator LPAREN identifier_list_opt RPAREN\n id_declarator : direct_id_declarator\n id_declarator : pointer direct_id_declarator\n typeid_declarator : direct_typeid_declarator\n typeid_declarator : pointer direct_typeid_declarator\n typeid_noparen_declarator : direct_typeid_noparen_declarator\n typeid_noparen_declarator : pointer direct_typeid_noparen_declarator\n translation_unit_or_empty : translation_unit\n | empty\n translation_unit : external_declaration\n translation_unit : translation_unit external_declaration\n external_declaration : function_definition\n external_declaration : declaration\n external_declaration : pp_directive\n | pppragma_directive\n external_declaration : SEMI\n external_declaration : static_assert\n static_assert : _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN\n | _STATIC_ASSERT LPAREN constant_expression RPAREN\n pp_directive : PPHASH\n pppragma_directive : PPPRAGMA\n | PPPRAGMA PPPRAGMASTR\n | _PRAGMA LPAREN unified_string_literal RPAREN\n pppragma_directive_list : pppragma_directive\n | pppragma_directive_list pppragma_directive\n function_definition : id_declarator declaration_list_opt compound_statement\n function_definition : declaration_specifiers id_declarator declaration_list_opt compound_statement\n statement : labeled_statement\n | expression_statement\n | compound_statement\n | selection_statement\n | iteration_statement\n | jump_statement\n | pppragma_directive\n | static_assert\n pragmacomp_or_statement : pppragma_directive_list statement\n | statement\n decl_body : declaration_specifiers init_declarator_list_opt\n | declaration_specifiers_no_type id_init_declarator_list_opt\n declaration : decl_body SEMI\n declaration_list : declaration\n | declaration_list declaration\n declaration_specifiers_no_type : type_qualifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : storage_class_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : function_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : atomic_specifier declaration_specifiers_no_type_opt\n declaration_specifiers_no_type : alignment_specifier declaration_specifiers_no_type_opt\n declaration_specifiers : declaration_specifiers type_qualifier\n declaration_specifiers : declaration_specifiers storage_class_specifier\n declaration_specifiers : declaration_specifiers function_specifier\n declaration_specifiers : declaration_specifiers type_specifier_no_typeid\n declaration_specifiers : type_specifier\n declaration_specifiers : declaration_specifiers_no_type type_specifier\n declaration_specifiers : declaration_specifiers alignment_specifier\n storage_class_specifier : AUTO\n | REGISTER\n | STATIC\n | EXTERN\n | TYPEDEF\n | _THREAD_LOCAL\n function_specifier : INLINE\n | _NORETURN\n type_specifier_no_typeid : VOID\n | _BOOL\n | CHAR\n | SHORT\n | INT\n | LONG\n | FLOAT\n | DOUBLE\n | _COMPLEX\n | SIGNED\n | UNSIGNED\n | __INT128\n type_specifier : typedef_name\n | enum_specifier\n | struct_or_union_specifier\n | type_specifier_no_typeid\n | atomic_specifier\n atomic_specifier : _ATOMIC LPAREN type_name RPAREN\n type_qualifier : CONST\n | RESTRICT\n | VOLATILE\n | _ATOMIC\n init_declarator_list : init_declarator\n | init_declarator_list COMMA init_declarator\n init_declarator : declarator\n | declarator EQUALS initializer\n id_init_declarator_list : id_init_declarator\n | id_init_declarator_list COMMA init_declarator\n id_init_declarator : id_declarator\n | id_declarator EQUALS initializer\n specifier_qualifier_list : specifier_qualifier_list type_specifier_no_typeid\n specifier_qualifier_list : specifier_qualifier_list type_qualifier\n specifier_qualifier_list : type_specifier\n specifier_qualifier_list : type_qualifier_list type_specifier\n specifier_qualifier_list : alignment_specifier\n specifier_qualifier_list : specifier_qualifier_list alignment_specifier\n struct_or_union_specifier : struct_or_union ID\n | struct_or_union TYPEID\n struct_or_union_specifier : struct_or_union brace_open struct_declaration_list brace_close\n | struct_or_union brace_open brace_close\n struct_or_union_specifier : struct_or_union ID brace_open struct_declaration_list brace_close\n | struct_or_union ID brace_open brace_close\n | struct_or_union TYPEID brace_open struct_declaration_list brace_close\n | struct_or_union TYPEID brace_open brace_close\n struct_or_union : STRUCT\n | UNION\n struct_declaration_list : struct_declaration\n | struct_declaration_list struct_declaration\n struct_declaration : specifier_qualifier_list struct_declarator_list_opt SEMI\n struct_declaration : SEMI\n struct_declaration : pppragma_directive\n struct_declarator_list : struct_declarator\n | struct_declarator_list COMMA struct_declarator\n struct_declarator : declarator\n struct_declarator : declarator COLON constant_expression\n | COLON constant_expression\n enum_specifier : ENUM ID\n | ENUM TYPEID\n enum_specifier : ENUM brace_open enumerator_list brace_close\n enum_specifier : ENUM ID brace_open enumerator_list brace_close\n | ENUM TYPEID brace_open enumerator_list brace_close\n enumerator_list : enumerator\n | enumerator_list COMMA\n | enumerator_list COMMA enumerator\n alignment_specifier : _ALIGNAS LPAREN type_name RPAREN\n | _ALIGNAS LPAREN constant_expression RPAREN\n enumerator : ID\n | ID EQUALS constant_expression\n declarator : id_declarator\n | typeid_declarator\n pointer : TIMES type_qualifier_list_opt\n | TIMES type_qualifier_list_opt pointer\n type_qualifier_list : type_qualifier\n | type_qualifier_list type_qualifier\n parameter_type_list : parameter_list\n | parameter_list COMMA ELLIPSIS\n parameter_list : parameter_declaration\n | parameter_list COMMA parameter_declaration\n parameter_declaration : declaration_specifiers id_declarator\n | declaration_specifiers typeid_noparen_declarator\n parameter_declaration : declaration_specifiers abstract_declarator_opt\n identifier_list : identifier\n | identifier_list COMMA identifier\n initializer : assignment_expression\n initializer : brace_open initializer_list_opt brace_close\n | brace_open initializer_list COMMA brace_close\n initializer_list : designation_opt initializer\n | initializer_list COMMA designation_opt initializer\n designation : designator_list EQUALS\n designator_list : designator\n | designator_list designator\n designator : LBRACKET constant_expression RBRACKET\n | PERIOD identifier\n type_name : specifier_qualifier_list abstract_declarator_opt\n abstract_declarator : pointer\n abstract_declarator : pointer direct_abstract_declarator\n abstract_declarator : direct_abstract_declarator\n direct_abstract_declarator : LPAREN abstract_declarator RPAREN direct_abstract_declarator : direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET\n direct_abstract_declarator : LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET\n direct_abstract_declarator : direct_abstract_declarator LBRACKET TIMES RBRACKET\n direct_abstract_declarator : LBRACKET TIMES RBRACKET\n direct_abstract_declarator : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN\n direct_abstract_declarator : LPAREN parameter_type_list_opt RPAREN\n block_item : declaration\n | statement\n block_item_list : block_item\n | block_item_list block_item\n compound_statement : brace_open block_item_list_opt brace_close labeled_statement : ID COLON pragmacomp_or_statement labeled_statement : CASE constant_expression COLON pragmacomp_or_statement labeled_statement : DEFAULT COLON pragmacomp_or_statement selection_statement : IF LPAREN expression RPAREN pragmacomp_or_statement selection_statement : IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement selection_statement : SWITCH LPAREN expression RPAREN pragmacomp_or_statement iteration_statement : WHILE LPAREN expression RPAREN pragmacomp_or_statement iteration_statement : DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement iteration_statement : FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement jump_statement : GOTO ID SEMI jump_statement : BREAK SEMI jump_statement : CONTINUE SEMI jump_statement : RETURN expression SEMI\n | RETURN SEMI\n expression_statement : expression_opt SEMI expression : assignment_expression\n | expression COMMA assignment_expression\n assignment_expression : LPAREN compound_statement RPAREN typedef_name : TYPEID assignment_expression : conditional_expression\n | unary_expression assignment_operator assignment_expression\n assignment_operator : EQUALS\n | XOREQUAL\n | TIMESEQUAL\n | DIVEQUAL\n | MODEQUAL\n | PLUSEQUAL\n | MINUSEQUAL\n | LSHIFTEQUAL\n | RSHIFTEQUAL\n | ANDEQUAL\n | OREQUAL\n constant_expression : conditional_expression conditional_expression : binary_expression\n | binary_expression CONDOP expression COLON conditional_expression\n binary_expression : cast_expression\n | binary_expression TIMES binary_expression\n | binary_expression DIVIDE binary_expression\n | binary_expression MOD binary_expression\n | binary_expression PLUS binary_expression\n | binary_expression MINUS binary_expression\n | binary_expression RSHIFT binary_expression\n | binary_expression LSHIFT binary_expression\n | binary_expression LT binary_expression\n | binary_expression LE binary_expression\n | binary_expression GE binary_expression\n | binary_expression GT binary_expression\n | binary_expression EQ binary_expression\n | binary_expression NE binary_expression\n | binary_expression AND binary_expression\n | binary_expression OR binary_expression\n | binary_expression XOR binary_expression\n | binary_expression LAND binary_expression\n | binary_expression LOR binary_expression\n cast_expression : unary_expression cast_expression : LPAREN type_name RPAREN cast_expression unary_expression : postfix_expression unary_expression : PLUSPLUS unary_expression\n | MINUSMINUS unary_expression\n | unary_operator cast_expression\n unary_expression : SIZEOF unary_expression\n | SIZEOF LPAREN type_name RPAREN\n | _ALIGNOF LPAREN type_name RPAREN\n unary_operator : AND\n | TIMES\n | PLUS\n | MINUS\n | NOT\n | LNOT\n postfix_expression : primary_expression postfix_expression : postfix_expression LBRACKET expression RBRACKET postfix_expression : postfix_expression LPAREN argument_expression_list RPAREN\n | postfix_expression LPAREN RPAREN\n postfix_expression : postfix_expression PERIOD ID\n | postfix_expression PERIOD TYPEID\n | postfix_expression ARROW ID\n | postfix_expression ARROW TYPEID\n postfix_expression : postfix_expression PLUSPLUS\n | postfix_expression MINUSMINUS\n postfix_expression : LPAREN type_name RPAREN brace_open initializer_list brace_close\n | LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close\n primary_expression : identifier primary_expression : constant primary_expression : unified_string_literal\n | unified_wstring_literal\n primary_expression : LPAREN expression RPAREN primary_expression : OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN\n offsetof_member_designator : identifier\n | offsetof_member_designator PERIOD identifier\n | offsetof_member_designator LBRACKET expression RBRACKET\n argument_expression_list : assignment_expression\n | argument_expression_list COMMA assignment_expression\n identifier : ID constant : INT_CONST_DEC\n | INT_CONST_OCT\n | INT_CONST_HEX\n | INT_CONST_BIN\n | INT_CONST_CHAR\n constant : FLOAT_CONST\n | HEX_FLOAT_CONST\n constant : CHAR_CONST\n | WCHAR_CONST\n | U8CHAR_CONST\n | U16CHAR_CONST\n | U32CHAR_CONST\n unified_string_literal : STRING_LITERAL\n | unified_string_literal STRING_LITERAL\n unified_wstring_literal : WSTRING_LITERAL\n | U8STRING_LITERAL\n | U16STRING_LITERAL\n | U32STRING_LITERAL\n | unified_wstring_literal WSTRING_LITERAL\n | unified_wstring_literal U8STRING_LITERAL\n | unified_wstring_literal U16STRING_LITERAL\n | unified_wstring_literal U32STRING_LITERAL\n brace_open : LBRACE\n brace_close : RBRACE\n empty : '
-_lr_action_items = {'$end':([0,1,2,3,4,5,6,7,8,9,10,14,15,63,89,90,125,205,248,262,351,493,],[-337,0,-58,-59,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-87,-72,-73,-336,-74,-69,-218,-68,]),'SEMI':([0,2,4,5,6,7,8,9,10,12,13,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,68,69,70,71,72,73,74,75,76,77,78,80,82,83,84,85,86,87,88,89,90,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,115,116,117,119,120,121,122,125,126,128,130,138,139,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,200,201,202,203,204,205,206,207,208,209,211,217,218,219,220,221,222,223,224,225,226,227,228,229,230,233,236,239,242,243,244,245,246,247,248,249,250,251,252,262,263,287,288,289,291,292,293,296,297,298,299,307,308,322,323,326,329,330,331,332,333,334,335,336,337,338,339,340,341,342,344,345,349,350,351,352,353,354,356,357,365,366,367,368,369,370,371,372,398,399,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,434,435,454,455,458,459,460,463,464,465,466,468,470,474,475,476,477,478,479,480,487,488,491,493,495,496,499,500,502,503,516,517,518,519,520,521,523,524,525,529,530,532,546,547,548,549,551,554,556,563,564,567,572,573,575,577,578,579,],[9,9,-60,-62,-63,-64,-65,-66,-67,-337,89,-70,-71,-52,-337,-337,-337,-125,-99,-337,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,-337,-337,-126,-131,-178,-95,-96,-97,-98,-101,-85,-131,-19,-20,-132,-134,-179,-54,-37,-87,-72,-53,-90,-9,-10,-337,-91,-92,-100,-86,-126,-15,-16,-136,-138,-94,-93,-166,-167,-335,-146,-147,207,-73,-337,-178,-55,-303,-252,-253,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-30,207,207,207,-149,-156,-336,-337,-159,-160,-142,-144,-13,-337,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,357,-14,-337,369,370,372,-235,-239,-274,-74,-38,-133,-135,-193,-69,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-35,-36,-137,-139,-168,207,-151,207,-153,-148,-157,460,-140,-141,-145,-25,-26,-161,-163,-143,-127,-174,-175,-218,-217,-13,-337,-337,-234,-81,-84,-337,477,-230,-231,478,-233,-43,-44,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-292,-293,-294,-295,-296,-31,-34,-169,-170,-150,-152,-158,-165,-219,-337,-221,-237,-236,-83,523,-337,-229,-232,-240,-194,-39,-42,-275,-68,-290,-291,-281,-282,-32,-33,-162,-164,-220,-337,-337,-337,-337,552,-195,-40,-41,-254,-222,-84,-224,-225,565,-299,-306,-337,573,-300,-223,-226,-337,-337,-228,-227,]),'PPHASH':([0,2,4,5,6,7,8,9,10,14,15,63,89,90,125,205,248,262,351,493,],[14,14,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-87,-72,-73,-336,-74,-69,-218,-68,]),'PPPRAGMA':([0,2,4,5,6,7,8,9,10,14,15,63,89,90,119,122,125,126,200,201,202,204,205,207,208,218,219,220,221,222,223,224,225,226,227,228,229,239,248,262,329,331,334,351,352,354,356,357,365,366,369,370,372,460,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[15,15,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-87,-72,-335,15,-73,15,15,15,15,-156,-336,-159,-160,15,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,15,-74,-69,15,15,-157,-218,-217,15,15,-234,15,-84,-230,-231,-233,-158,-219,15,-221,-83,-229,-232,-68,-220,15,15,15,-222,-84,-224,-225,15,-223,-226,15,15,-228,-227,]),'_STATIC_ASSERT':([0,2,4,5,6,7,8,9,10,14,15,63,89,90,119,125,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,248,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[16,16,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-87,-72,-335,-73,16,-336,16,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,16,-74,-69,-218,-217,16,16,-234,16,-84,-230,-231,-233,-219,16,-221,-83,-229,-232,-68,-220,16,16,16,-222,-84,-224,-225,16,-223,-226,16,16,-228,-227,]),'ID':([0,2,4,5,6,7,8,9,10,12,14,15,17,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,63,68,69,70,71,73,74,75,76,77,79,80,81,89,90,91,93,94,96,97,98,99,100,101,102,104,110,111,112,113,114,115,116,117,118,119,120,121,124,125,126,132,133,134,135,136,142,143,144,145,148,149,150,151,155,156,179,180,181,189,191,192,193,194,195,196,203,205,206,209,211,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,241,244,248,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,290,294,302,305,306,310,314,318,319,326,327,328,330,332,333,336,337,338,343,344,345,349,350,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,393,395,396,397,400,443,444,447,450,452,454,455,458,459,461,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,501,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,557,558,563,565,572,573,575,577,578,579,],[27,27,-60,-62,-63,-64,-65,-66,-67,27,-70,-71,27,27,-337,-337,-337,-125,-99,27,-337,-104,-337,-122,-123,-124,-126,-238,116,120,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-154,-155,-61,27,27,-126,-131,-95,-96,-97,-98,-101,27,-131,27,-87,-72,154,-337,154,-90,-9,-10,-337,-91,-92,-100,-126,-94,-180,-27,-28,-182,-93,-166,-167,199,-335,-146,-147,154,-73,230,27,154,-337,154,154,-284,-285,-286,-283,154,154,154,154,-287,-288,154,-337,-28,27,27,154,-181,-183,199,199,-149,-336,27,-142,-144,230,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,154,154,230,368,154,-74,-337,154,-337,-28,-69,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,426,428,154,154,-284,154,154,154,27,27,-337,-168,199,154,-151,-153,-148,-140,-141,-145,154,-143,-127,-174,-175,-218,-217,230,230,-234,154,154,154,154,230,-84,154,-230,-231,-233,154,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,154,-12,154,154,-284,154,154,154,-337,154,27,154,154,-169,-170,-150,-152,27,154,-219,230,-221,154,-83,154,-229,-232,-337,-198,-337,-68,154,154,154,154,-337,-28,-284,-220,230,230,230,154,154,154,-11,-284,154,154,-222,-84,-224,-225,154,-337,154,154,230,154,-223,-226,230,230,-228,-227,]),'LPAREN':([0,2,4,5,6,7,8,9,10,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,68,69,70,71,73,74,75,76,77,79,80,81,87,88,89,90,91,93,95,96,97,98,99,100,101,102,104,107,110,111,112,113,114,115,116,117,119,120,121,124,125,126,130,132,133,134,136,138,142,143,144,145,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,189,191,192,193,194,203,205,206,209,211,213,218,219,220,221,222,223,224,225,226,227,228,229,230,231,234,235,237,238,239,240,244,248,249,253,254,255,256,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,287,288,290,294,296,297,298,299,302,305,306,307,308,314,315,318,319,320,321,326,328,330,332,333,336,337,338,343,344,345,347,348,349,350,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,398,399,400,401,424,426,427,428,429,434,435,441,442,443,447,450,452,454,455,458,459,461,462,464,465,466,469,473,474,476,477,478,481,483,487,488,492,493,494,495,496,497,502,503,504,505,506,509,510,512,514,518,519,520,521,522,523,526,527,529,530,537,538,539,540,541,542,543,544,545,546,547,548,549,552,554,555,556,558,559,560,563,565,567,570,571,572,573,575,577,578,579,],[17,17,-60,-62,-63,-64,-65,-66,-67,81,-70,-71,91,17,94,17,-337,-337,-337,-125,-99,17,-337,-29,-104,-337,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,123,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,124,-61,81,17,-126,123,-95,-96,-97,-98,-101,81,-131,81,135,-37,-87,-72,136,-337,94,-90,-9,-10,-337,-91,-92,-100,-126,123,-94,-180,-27,-28,-182,-93,-166,-167,-335,-146,-147,136,-73,235,135,81,235,-337,235,-303,-284,-285,-286,-283,284,290,290,136,294,295,-289,-312,-287,-288,-301,-302,-304,300,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-30,235,-337,-28,318,81,235,-181,-183,-149,-336,81,-142,-144,347,235,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,136,358,235,362,363,235,367,235,-74,-38,-337,235,-337,-28,-69,-326,235,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,235,235,-297,-298,235,235,-331,-332,-333,-334,-284,235,235,-35,-36,318,444,318,-337,-45,453,-168,136,-151,-153,-148,-140,-141,-145,136,-143,-127,347,347,-174,-175,-218,-217,235,235,-234,235,235,235,235,235,-84,235,-230,-231,-233,235,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,235,-12,136,-284,235,235,-43,-44,136,-305,-292,-293,-294,-295,-296,-31,-34,444,453,-337,318,235,235,-169,-170,-150,-152,81,136,-219,235,-221,136,522,-83,235,-229,-232,-337,-198,-39,-42,-337,-68,136,-290,-291,235,-32,-33,235,-337,-28,-207,-213,-211,-284,-220,235,235,235,235,235,235,-11,-40,-41,-284,235,235,-50,-51,-209,-208,-210,-212,-222,-84,-224,-225,235,-299,-337,-306,235,-46,-49,235,235,-300,-47,-48,-223,-226,235,235,-228,-227,]),'TIMES':([0,2,4,5,6,7,8,9,10,12,14,15,17,20,21,22,23,24,25,26,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,68,69,70,71,73,74,75,76,77,80,81,89,90,91,93,96,97,98,99,100,101,102,104,110,111,112,113,114,115,116,117,119,120,121,124,125,126,132,133,134,136,138,140,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,189,191,192,194,203,205,206,209,211,213,218,219,220,221,222,223,224,225,226,227,228,229,230,231,235,239,244,247,248,253,254,255,256,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,287,288,289,290,291,292,293,294,296,297,298,299,302,305,306,318,319,326,328,330,332,333,336,337,338,343,344,345,347,349,350,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,443,450,452,454,455,458,459,461,462,464,465,466,469,474,476,477,478,481,483,491,492,493,494,495,496,497,499,500,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,554,555,556,558,563,565,567,572,573,575,577,578,579,],[29,29,-60,-62,-63,-64,-65,-66,-67,29,-70,-71,29,-337,-337,-337,-125,-99,29,-337,-104,-337,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,29,29,-126,-131,-95,-96,-97,-98,-101,-131,29,-87,-72,142,-337,-90,-9,-10,-337,-91,-92,-100,-126,-94,29,-27,-28,-182,-93,-166,-167,-335,-146,-147,142,-73,142,29,142,-337,142,-303,265,-255,-284,-285,-286,-283,-274,-276,142,142,142,142,-289,-312,-287,-288,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,302,-337,-28,29,29,142,-183,-149,-336,29,-142,-144,29,142,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,142,142,142,142,-274,-74,-337,395,-337,-28,-69,-326,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,-297,-298,-277,142,-278,-279,-280,142,-331,-332,-333,-334,-284,142,142,29,451,-168,142,-151,-153,-148,-140,-141,-145,142,-143,-127,29,-174,-175,-218,-217,142,142,-234,142,142,142,142,142,-84,142,-230,-231,-233,142,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,142,-12,142,-284,142,142,142,-305,-256,-257,-258,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,-292,-293,-294,-295,-296,-337,142,514,-169,-170,-150,-152,29,142,-219,142,-221,142,-83,142,-229,-232,-337,-198,-275,-337,-68,142,-290,-291,142,-281,-282,537,-337,-28,-284,-220,142,142,142,142,142,142,-11,-284,142,142,-222,-84,-224,-225,142,-299,-337,-306,142,142,142,-300,-223,-226,142,142,-228,-227,]),'TYPEID':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,63,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,89,90,94,95,96,97,98,99,100,101,102,104,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,132,135,136,178,189,190,191,193,194,200,201,202,203,204,205,206,207,208,209,210,211,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,285,286,290,294,295,300,307,308,309,314,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,461,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[34,34,-60,-62,-63,-64,-65,-66,-67,34,88,-70,-71,-52,-337,-337,-337,-125,-99,34,-337,-29,-104,-337,-122,-123,-124,-126,-238,117,121,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-154,-155,-61,34,-88,88,34,-126,-131,34,-95,-96,-97,-98,-101,88,-131,88,-87,-72,34,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-180,-27,-28,-182,-93,-166,-167,-335,-146,-147,34,34,34,-73,34,-89,88,34,34,-30,320,34,88,-181,-183,34,34,34,-149,-156,-336,88,-159,-160,-142,34,-144,34,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,34,-74,-69,427,429,34,34,34,34,-35,-36,34,320,34,-168,34,-151,34,-153,-148,-157,-140,-141,-145,-143,-127,34,-174,-175,-218,-217,-234,-81,-84,34,-230,-231,-233,-31,-34,34,34,-169,-170,-150,-152,-158,88,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'ENUM':([0,2,4,5,6,7,8,9,10,11,14,15,18,20,21,22,25,26,27,28,33,49,50,51,52,53,54,55,56,57,58,59,63,66,67,69,70,71,72,89,90,94,95,96,97,98,99,100,101,110,114,115,119,122,123,124,125,126,127,135,136,178,190,194,200,201,202,204,205,207,208,210,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,329,331,334,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[35,35,-60,-62,-63,-64,-65,-66,-67,35,-70,-71,-52,-337,-337,-337,35,-337,-29,-104,-337,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,35,-88,35,-337,-131,35,-87,-72,35,-53,-90,-9,-10,-337,-91,-92,-94,-182,-93,-335,35,35,35,-73,35,-89,35,35,-30,35,-183,35,35,35,-156,-336,-159,-160,35,35,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,35,-74,-69,35,35,35,35,-35,-36,35,35,35,35,-157,-127,35,-174,-175,-218,-217,-234,-81,-84,35,-230,-231,-233,-31,-34,35,35,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'VOID':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[37,37,-60,-62,-63,-64,-65,-66,-67,37,37,-70,-71,-52,-337,-337,-337,-125,-99,37,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,37,-88,37,37,-126,-131,37,-95,-96,-97,-98,-101,-131,-87,-72,37,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,37,37,37,-73,37,-89,37,37,-30,37,37,-183,37,37,37,-149,-156,-336,37,-159,-160,-142,37,-144,37,37,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,37,-74,-69,37,37,37,37,-35,-36,37,37,-168,37,-151,37,-153,-148,-157,-140,-141,-145,-143,-127,37,-174,-175,-218,-217,-234,-81,-84,37,-230,-231,-233,-31,-34,37,37,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'_BOOL':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[38,38,-60,-62,-63,-64,-65,-66,-67,38,38,-70,-71,-52,-337,-337,-337,-125,-99,38,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,38,-88,38,38,-126,-131,38,-95,-96,-97,-98,-101,-131,-87,-72,38,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,38,38,38,-73,38,-89,38,38,-30,38,38,-183,38,38,38,-149,-156,-336,38,-159,-160,-142,38,-144,38,38,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,38,-74,-69,38,38,38,38,-35,-36,38,38,-168,38,-151,38,-153,-148,-157,-140,-141,-145,-143,-127,38,-174,-175,-218,-217,-234,-81,-84,38,-230,-231,-233,-31,-34,38,38,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'CHAR':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[39,39,-60,-62,-63,-64,-65,-66,-67,39,39,-70,-71,-52,-337,-337,-337,-125,-99,39,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,39,-88,39,39,-126,-131,39,-95,-96,-97,-98,-101,-131,-87,-72,39,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,39,39,39,-73,39,-89,39,39,-30,39,39,-183,39,39,39,-149,-156,-336,39,-159,-160,-142,39,-144,39,39,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,39,-74,-69,39,39,39,39,-35,-36,39,39,-168,39,-151,39,-153,-148,-157,-140,-141,-145,-143,-127,39,-174,-175,-218,-217,-234,-81,-84,39,-230,-231,-233,-31,-34,39,39,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'SHORT':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[40,40,-60,-62,-63,-64,-65,-66,-67,40,40,-70,-71,-52,-337,-337,-337,-125,-99,40,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,40,-88,40,40,-126,-131,40,-95,-96,-97,-98,-101,-131,-87,-72,40,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,40,40,40,-73,40,-89,40,40,-30,40,40,-183,40,40,40,-149,-156,-336,40,-159,-160,-142,40,-144,40,40,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,40,-74,-69,40,40,40,40,-35,-36,40,40,-168,40,-151,40,-153,-148,-157,-140,-141,-145,-143,-127,40,-174,-175,-218,-217,-234,-81,-84,40,-230,-231,-233,-31,-34,40,40,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'INT':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[41,41,-60,-62,-63,-64,-65,-66,-67,41,41,-70,-71,-52,-337,-337,-337,-125,-99,41,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,41,-88,41,41,-126,-131,41,-95,-96,-97,-98,-101,-131,-87,-72,41,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,41,41,41,-73,41,-89,41,41,-30,41,41,-183,41,41,41,-149,-156,-336,41,-159,-160,-142,41,-144,41,41,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,41,-74,-69,41,41,41,41,-35,-36,41,41,-168,41,-151,41,-153,-148,-157,-140,-141,-145,-143,-127,41,-174,-175,-218,-217,-234,-81,-84,41,-230,-231,-233,-31,-34,41,41,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'LONG':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[42,42,-60,-62,-63,-64,-65,-66,-67,42,42,-70,-71,-52,-337,-337,-337,-125,-99,42,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,42,-88,42,42,-126,-131,42,-95,-96,-97,-98,-101,-131,-87,-72,42,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,42,42,42,-73,42,-89,42,42,-30,42,42,-183,42,42,42,-149,-156,-336,42,-159,-160,-142,42,-144,42,42,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,42,-74,-69,42,42,42,42,-35,-36,42,42,-168,42,-151,42,-153,-148,-157,-140,-141,-145,-143,-127,42,-174,-175,-218,-217,-234,-81,-84,42,-230,-231,-233,-31,-34,42,42,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'FLOAT':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[43,43,-60,-62,-63,-64,-65,-66,-67,43,43,-70,-71,-52,-337,-337,-337,-125,-99,43,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,43,-88,43,43,-126,-131,43,-95,-96,-97,-98,-101,-131,-87,-72,43,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,43,43,43,-73,43,-89,43,43,-30,43,43,-183,43,43,43,-149,-156,-336,43,-159,-160,-142,43,-144,43,43,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,43,-74,-69,43,43,43,43,-35,-36,43,43,-168,43,-151,43,-153,-148,-157,-140,-141,-145,-143,-127,43,-174,-175,-218,-217,-234,-81,-84,43,-230,-231,-233,-31,-34,43,43,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'DOUBLE':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[44,44,-60,-62,-63,-64,-65,-66,-67,44,44,-70,-71,-52,-337,-337,-337,-125,-99,44,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,44,-88,44,44,-126,-131,44,-95,-96,-97,-98,-101,-131,-87,-72,44,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,44,44,44,-73,44,-89,44,44,-30,44,44,-183,44,44,44,-149,-156,-336,44,-159,-160,-142,44,-144,44,44,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,44,-74,-69,44,44,44,44,-35,-36,44,44,-168,44,-151,44,-153,-148,-157,-140,-141,-145,-143,-127,44,-174,-175,-218,-217,-234,-81,-84,44,-230,-231,-233,-31,-34,44,44,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'_COMPLEX':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[45,45,-60,-62,-63,-64,-65,-66,-67,45,45,-70,-71,-52,-337,-337,-337,-125,-99,45,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,45,-88,45,45,-126,-131,45,-95,-96,-97,-98,-101,-131,-87,-72,45,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,45,45,45,-73,45,-89,45,45,-30,45,45,-183,45,45,45,-149,-156,-336,45,-159,-160,-142,45,-144,45,45,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,45,-74,-69,45,45,45,45,-35,-36,45,45,-168,45,-151,45,-153,-148,-157,-140,-141,-145,-143,-127,45,-174,-175,-218,-217,-234,-81,-84,45,-230,-231,-233,-31,-34,45,45,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'SIGNED':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[46,46,-60,-62,-63,-64,-65,-66,-67,46,46,-70,-71,-52,-337,-337,-337,-125,-99,46,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,46,-88,46,46,-126,-131,46,-95,-96,-97,-98,-101,-131,-87,-72,46,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,46,46,46,-73,46,-89,46,46,-30,46,46,-183,46,46,46,-149,-156,-336,46,-159,-160,-142,46,-144,46,46,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,46,-74,-69,46,46,46,46,-35,-36,46,46,-168,46,-151,46,-153,-148,-157,-140,-141,-145,-143,-127,46,-174,-175,-218,-217,-234,-81,-84,46,-230,-231,-233,-31,-34,46,46,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'UNSIGNED':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[47,47,-60,-62,-63,-64,-65,-66,-67,47,47,-70,-71,-52,-337,-337,-337,-125,-99,47,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,47,-88,47,47,-126,-131,47,-95,-96,-97,-98,-101,-131,-87,-72,47,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,47,47,47,-73,47,-89,47,47,-30,47,47,-183,47,47,47,-149,-156,-336,47,-159,-160,-142,47,-144,47,47,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,47,-74,-69,47,47,47,47,-35,-36,47,47,-168,47,-151,47,-153,-148,-157,-140,-141,-145,-143,-127,47,-174,-175,-218,-217,-234,-81,-84,47,-230,-231,-233,-31,-34,47,47,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'__INT128':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,94,95,96,97,98,99,100,101,102,104,110,114,115,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[48,48,-60,-62,-63,-64,-65,-66,-67,48,48,-70,-71,-52,-337,-337,-337,-125,-99,48,-337,-29,-104,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,48,-88,48,48,-126,-131,48,-95,-96,-97,-98,-101,-131,-87,-72,48,-53,-90,-9,-10,-337,-91,-92,-100,-126,-94,-182,-93,-166,-167,-335,-146,-147,48,48,48,-73,48,-89,48,48,-30,48,48,-183,48,48,48,-149,-156,-336,48,-159,-160,-142,48,-144,48,48,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,48,-74,-69,48,48,48,48,-35,-36,48,48,-168,48,-151,48,-153,-148,-157,-140,-141,-145,-143,-127,48,-174,-175,-218,-217,-234,-81,-84,48,-230,-231,-233,-31,-34,48,48,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'_ATOMIC':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,69,70,71,72,73,74,75,76,77,80,89,90,93,94,95,96,97,98,99,100,101,102,104,110,113,114,115,116,117,119,120,121,122,123,124,125,126,127,134,135,136,178,180,181,189,190,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,255,256,262,290,294,295,300,307,308,309,318,319,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,443,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,505,506,518,546,547,548,549,572,573,578,579,],[49,49,-60,-62,-63,-64,-65,-66,-67,71,80,-70,-71,-52,71,71,71,-125,-99,107,71,-29,-104,80,-122,-123,-124,71,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,71,-88,80,107,71,-131,71,-95,-96,-97,-98,-101,-131,-87,-72,80,49,-53,-90,-9,-10,71,-91,-92,-100,-126,-94,80,-182,-93,-166,-167,-335,-146,-147,49,49,49,-73,71,-89,80,49,49,-30,80,80,80,107,-183,49,49,49,-149,-156,-336,80,-159,-160,-142,71,-144,80,71,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,49,-74,80,80,-69,49,49,49,49,-35,-36,49,49,80,-168,49,-151,49,-153,-148,-157,-140,-141,-145,-143,-127,49,-174,-175,-218,-217,-234,-81,-84,71,-230,-231,-233,-31,-34,80,49,49,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,80,80,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'CONST':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,93,94,95,99,102,104,113,114,116,117,119,120,121,122,123,124,125,126,127,134,135,136,178,180,181,189,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,255,256,262,290,294,295,300,307,308,309,318,319,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,443,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,505,506,518,546,547,548,549,572,573,578,579,],[50,50,-60,-62,-63,-64,-65,-66,-67,50,50,-70,-71,-52,50,50,50,-125,-99,50,-29,-104,50,-122,-123,-124,50,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,50,-88,50,50,-131,50,-95,-96,-97,-98,-101,-131,-87,-72,50,50,-53,50,-100,-126,50,-182,-166,-167,-335,-146,-147,50,50,50,-73,50,-89,50,50,50,-30,50,50,50,-183,50,50,50,-149,-156,-336,50,-159,-160,-142,50,-144,50,50,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,50,-74,50,50,-69,50,50,50,50,-35,-36,50,50,50,-168,50,-151,50,-153,-148,-157,-140,-141,-145,-143,-127,50,-174,-175,-218,-217,-234,-81,-84,50,-230,-231,-233,-31,-34,50,50,50,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,50,50,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'RESTRICT':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,93,94,95,99,102,104,113,114,116,117,119,120,121,122,123,124,125,126,127,134,135,136,178,180,181,189,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,255,256,262,290,294,295,300,307,308,309,318,319,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,443,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,505,506,518,546,547,548,549,572,573,578,579,],[51,51,-60,-62,-63,-64,-65,-66,-67,51,51,-70,-71,-52,51,51,51,-125,-99,51,-29,-104,51,-122,-123,-124,51,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,51,-88,51,51,-131,51,-95,-96,-97,-98,-101,-131,-87,-72,51,51,-53,51,-100,-126,51,-182,-166,-167,-335,-146,-147,51,51,51,-73,51,-89,51,51,51,-30,51,51,51,-183,51,51,51,-149,-156,-336,51,-159,-160,-142,51,-144,51,51,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,51,-74,51,51,-69,51,51,51,51,-35,-36,51,51,51,-168,51,-151,51,-153,-148,-157,-140,-141,-145,-143,-127,51,-174,-175,-218,-217,-234,-81,-84,51,-230,-231,-233,-31,-34,51,51,51,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,51,51,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'VOLATILE':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,93,94,95,99,102,104,113,114,116,117,119,120,121,122,123,124,125,126,127,134,135,136,178,180,181,189,194,200,201,202,203,204,205,206,207,208,209,210,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,255,256,262,290,294,295,300,307,308,309,318,319,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,443,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,505,506,518,546,547,548,549,572,573,578,579,],[52,52,-60,-62,-63,-64,-65,-66,-67,52,52,-70,-71,-52,52,52,52,-125,-99,52,-29,-104,52,-122,-123,-124,52,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,52,-88,52,52,-131,52,-95,-96,-97,-98,-101,-131,-87,-72,52,52,-53,52,-100,-126,52,-182,-166,-167,-335,-146,-147,52,52,52,-73,52,-89,52,52,52,-30,52,52,52,-183,52,52,52,-149,-156,-336,52,-159,-160,-142,52,-144,52,52,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,52,-74,52,52,-69,52,52,52,52,-35,-36,52,52,52,-168,52,-151,52,-153,-148,-157,-140,-141,-145,-143,-127,52,-174,-175,-218,-217,-234,-81,-84,52,-230,-231,-233,-31,-34,52,52,52,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,52,52,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'AUTO':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,125,126,127,135,178,189,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[53,53,-60,-62,-63,-64,-65,-66,-67,53,53,-70,-71,-52,53,53,53,-125,-99,53,-29,-104,-122,-123,-124,53,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,53,-88,53,53,-131,53,-95,-96,-97,-98,-101,-131,-87,-72,53,-53,53,-100,-126,-166,-167,-335,-146,-147,-73,53,-89,53,-30,53,-149,-336,53,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,-69,-35,-36,53,53,-168,-151,-153,-148,-127,53,-174,-175,-218,-217,-234,-81,-84,53,-230,-231,-233,-31,-34,53,53,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'REGISTER':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,125,126,127,135,178,189,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[54,54,-60,-62,-63,-64,-65,-66,-67,54,54,-70,-71,-52,54,54,54,-125,-99,54,-29,-104,-122,-123,-124,54,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,54,-88,54,54,-131,54,-95,-96,-97,-98,-101,-131,-87,-72,54,-53,54,-100,-126,-166,-167,-335,-146,-147,-73,54,-89,54,-30,54,-149,-336,54,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,-69,-35,-36,54,54,-168,-151,-153,-148,-127,54,-174,-175,-218,-217,-234,-81,-84,54,-230,-231,-233,-31,-34,54,54,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'STATIC':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,93,94,95,99,102,104,114,116,117,119,120,121,125,126,127,134,135,178,181,189,194,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,256,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,443,444,453,454,455,458,459,464,466,474,477,478,493,502,503,506,518,546,547,548,549,572,573,578,579,],[28,28,-60,-62,-63,-64,-65,-66,-67,28,28,-70,-71,-52,28,28,28,-125,-99,28,-29,-104,-122,-123,-124,28,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,28,-88,28,28,-131,28,-95,-96,-97,-98,-101,-131,-87,-72,180,28,-53,28,-100,-126,-182,-166,-167,-335,-146,-147,-73,28,-89,255,28,-30,306,28,-183,-149,-336,28,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,397,-69,-35,-36,28,28,-168,-151,-153,-148,-127,28,-174,-175,-218,-217,-234,-81,-84,28,-230,-231,-233,-31,-34,505,28,28,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,539,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'EXTERN':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,125,126,127,135,178,189,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[55,55,-60,-62,-63,-64,-65,-66,-67,55,55,-70,-71,-52,55,55,55,-125,-99,55,-29,-104,-122,-123,-124,55,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,55,-88,55,55,-131,55,-95,-96,-97,-98,-101,-131,-87,-72,55,-53,55,-100,-126,-166,-167,-335,-146,-147,-73,55,-89,55,-30,55,-149,-336,55,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,-69,-35,-36,55,55,-168,-151,-153,-148,-127,55,-174,-175,-218,-217,-234,-81,-84,55,-230,-231,-233,-31,-34,55,55,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'TYPEDEF':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,125,126,127,135,178,189,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[56,56,-60,-62,-63,-64,-65,-66,-67,56,56,-70,-71,-52,56,56,56,-125,-99,56,-29,-104,-122,-123,-124,56,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,56,-88,56,56,-131,56,-95,-96,-97,-98,-101,-131,-87,-72,56,-53,56,-100,-126,-166,-167,-335,-146,-147,-73,56,-89,56,-30,56,-149,-336,56,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,-69,-35,-36,56,56,-168,-151,-153,-148,-127,56,-174,-175,-218,-217,-234,-81,-84,56,-230,-231,-233,-31,-34,56,56,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'_THREAD_LOCAL':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,125,126,127,135,178,189,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[57,57,-60,-62,-63,-64,-65,-66,-67,57,57,-70,-71,-52,57,57,57,-125,-99,57,-29,-104,-122,-123,-124,57,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,57,-88,57,57,-131,57,-95,-96,-97,-98,-101,-131,-87,-72,57,-53,57,-100,-126,-166,-167,-335,-146,-147,-73,57,-89,57,-30,57,-149,-336,57,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,-69,-35,-36,57,57,-168,-151,-153,-148,-127,57,-174,-175,-218,-217,-234,-81,-84,57,-230,-231,-233,-31,-34,57,57,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'INLINE':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,125,126,127,135,178,189,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[58,58,-60,-62,-63,-64,-65,-66,-67,58,58,-70,-71,-52,58,58,58,-125,-99,58,-29,-104,-122,-123,-124,58,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,58,-88,58,58,-131,58,-95,-96,-97,-98,-101,-131,-87,-72,58,-53,58,-100,-126,-166,-167,-335,-146,-147,-73,58,-89,58,-30,58,-149,-336,58,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,-69,-35,-36,58,58,-168,-151,-153,-148,-127,58,-174,-175,-218,-217,-234,-81,-84,58,-230,-231,-233,-31,-34,58,58,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'_NORETURN':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,125,126,127,135,178,189,203,205,218,219,220,221,222,223,224,225,226,227,228,229,248,262,307,308,309,318,326,330,332,333,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[59,59,-60,-62,-63,-64,-65,-66,-67,59,59,-70,-71,-52,59,59,59,-125,-99,59,-29,-104,-122,-123,-124,59,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,59,-88,59,59,-131,59,-95,-96,-97,-98,-101,-131,-87,-72,59,-53,59,-100,-126,-166,-167,-335,-146,-147,-73,59,-89,59,-30,59,-149,-336,59,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-74,-69,-35,-36,59,59,-168,-151,-153,-148,-127,59,-174,-175,-218,-217,-234,-81,-84,59,-230,-231,-233,-31,-34,59,59,-169,-170,-150,-152,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'_ALIGNAS':([0,2,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,23,24,26,27,28,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,66,67,68,70,71,72,73,74,75,76,77,80,89,90,94,95,99,102,104,116,117,119,120,121,122,123,124,125,126,127,135,136,178,189,200,201,202,203,204,205,206,207,208,209,211,213,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,326,329,330,331,332,333,334,336,337,338,344,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,454,455,458,459,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[60,60,-60,-62,-63,-64,-65,-66,-67,60,60,-70,-71,-52,60,60,60,-125,-99,60,-29,-104,-122,-123,-124,60,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,60,-88,60,60,-131,60,-95,-96,-97,-98,-101,-131,-87,-72,60,-53,60,-100,-126,-166,-167,-335,-146,-147,60,60,60,-73,60,-89,60,60,-30,60,60,60,60,-149,-156,-336,60,-159,-160,-142,-144,60,60,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,60,-74,-69,60,60,60,60,-35,-36,60,60,-168,60,-151,60,-153,-148,-157,-140,-141,-145,-143,-127,60,-174,-175,-218,-217,-234,-81,-84,60,-230,-231,-233,-31,-34,60,60,-169,-170,-150,-152,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'STRUCT':([0,2,4,5,6,7,8,9,10,11,14,15,18,20,21,22,25,26,27,28,33,49,50,51,52,53,54,55,56,57,58,59,63,66,67,69,70,71,72,89,90,94,95,96,97,98,99,100,101,110,114,115,119,122,123,124,125,126,127,135,136,178,190,194,200,201,202,204,205,207,208,210,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,329,331,334,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[61,61,-60,-62,-63,-64,-65,-66,-67,61,-70,-71,-52,-337,-337,-337,61,-337,-29,-104,-337,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,61,-88,61,-337,-131,61,-87,-72,61,-53,-90,-9,-10,-337,-91,-92,-94,-182,-93,-335,61,61,61,-73,61,-89,61,61,-30,61,-183,61,61,61,-156,-336,-159,-160,61,61,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,61,-74,-69,61,61,61,61,-35,-36,61,61,61,61,-157,-127,61,-174,-175,-218,-217,-234,-81,-84,61,-230,-231,-233,-31,-34,61,61,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'UNION':([0,2,4,5,6,7,8,9,10,11,14,15,18,20,21,22,25,26,27,28,33,49,50,51,52,53,54,55,56,57,58,59,63,66,67,69,70,71,72,89,90,94,95,96,97,98,99,100,101,110,114,115,119,122,123,124,125,126,127,135,136,178,190,194,200,201,202,204,205,207,208,210,218,219,220,221,222,223,224,225,226,227,228,229,235,248,262,290,294,295,300,307,308,309,318,329,331,334,345,347,349,350,351,352,357,365,366,367,369,370,372,434,435,444,453,460,464,466,474,477,478,493,502,503,518,546,547,548,549,572,573,578,579,],[62,62,-60,-62,-63,-64,-65,-66,-67,62,-70,-71,-52,-337,-337,-337,62,-337,-29,-104,-337,-131,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-61,62,-88,62,-337,-131,62,-87,-72,62,-53,-90,-9,-10,-337,-91,-92,-94,-182,-93,-335,62,62,62,-73,62,-89,62,62,-30,62,-183,62,62,62,-156,-336,-159,-160,62,62,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,62,-74,-69,62,62,62,62,-35,-36,62,62,62,62,-157,-127,62,-174,-175,-218,-217,-234,-81,-84,62,-230,-231,-233,-31,-34,62,62,-158,-219,-221,-83,-229,-232,-68,-32,-33,-220,-222,-84,-224,-225,-223,-226,-228,-227,]),'LBRACE':([11,15,18,27,35,36,61,62,64,65,66,67,72,89,90,95,116,117,119,120,121,126,127,129,133,178,192,205,218,219,220,221,222,223,224,225,226,227,228,229,235,239,253,262,307,308,351,352,354,356,357,365,366,369,370,372,387,388,389,400,434,435,464,465,466,469,474,477,478,481,483,492,493,498,499,502,503,518,519,520,521,526,527,546,547,548,549,555,563,572,573,575,577,578,579,],[-337,-71,-52,-29,119,119,-154,-155,119,-7,-8,-88,-337,-87,-72,-53,119,119,-335,119,119,119,-89,119,119,-30,119,-336,119,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,119,119,-337,-69,-35,-36,-218,-217,119,119,-234,119,-84,-230,-231,-233,-11,119,-12,119,-31,-34,-219,119,-221,119,-83,-229,-232,-337,-198,-337,-68,119,119,-32,-33,-220,119,119,119,119,-11,-222,-84,-224,-225,-337,119,-223,-226,119,119,-228,-227,]),'RBRACE':([15,89,90,119,122,126,138,139,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,197,198,199,200,201,202,204,205,207,208,216,217,218,219,220,221,222,223,224,225,226,227,228,229,246,247,252,253,262,263,287,288,289,291,292,293,296,297,298,299,324,325,327,329,331,334,351,352,357,365,366,369,370,372,385,386,387,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,456,457,460,464,466,468,474,477,478,479,480,481,482,491,493,495,496,499,500,518,525,531,532,546,547,548,549,553,554,555,556,567,572,573,578,579,],[-71,-87,-72,-335,205,-337,-303,-252,-253,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,205,-171,-176,205,205,205,-156,-336,-159,-160,205,-5,-6,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-239,-274,-193,-337,-69,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,205,205,-172,205,205,-157,-218,-217,-234,-81,-84,-230,-231,-233,205,-22,-21,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-292,-293,-294,-295,-296,-173,-177,-158,-219,-221,-237,-83,-229,-232,-240,-194,205,-196,-275,-68,-290,-291,-281,-282,-220,-195,205,-254,-222,-84,-224,-225,-197,-299,205,-306,-300,-223,-226,-228,-227,]),'CASE':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,231,-336,231,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,231,-69,-218,-217,231,231,-234,231,-84,-230,-231,-233,-219,231,-221,-83,-229,-232,-68,-220,231,231,231,-222,-84,-224,-225,231,-223,-226,231,231,-228,-227,]),'DEFAULT':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,232,-336,232,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,232,-69,-218,-217,232,232,-234,232,-84,-230,-231,-233,-219,232,-221,-83,-229,-232,-68,-220,232,232,232,-222,-84,-224,-225,232,-223,-226,232,232,-228,-227,]),'IF':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,234,-336,234,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,234,-69,-218,-217,234,234,-234,234,-84,-230,-231,-233,-219,234,-221,-83,-229,-232,-68,-220,234,234,234,-222,-84,-224,-225,234,-223,-226,234,234,-228,-227,]),'SWITCH':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,237,-336,237,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,237,-69,-218,-217,237,237,-234,237,-84,-230,-231,-233,-219,237,-221,-83,-229,-232,-68,-220,237,237,237,-222,-84,-224,-225,237,-223,-226,237,237,-228,-227,]),'WHILE':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,364,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,238,-336,238,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,238,-69,-218,-217,238,238,-234,473,238,-84,-230,-231,-233,-219,238,-221,-83,-229,-232,-68,-220,238,238,238,-222,-84,-224,-225,238,-223,-226,238,238,-228,-227,]),'DO':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,239,-336,239,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,239,-69,-218,-217,239,239,-234,239,-84,-230,-231,-233,-219,239,-221,-83,-229,-232,-68,-220,239,239,239,-222,-84,-224,-225,239,-223,-226,239,239,-228,-227,]),'FOR':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,240,-336,240,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,240,-69,-218,-217,240,240,-234,240,-84,-230,-231,-233,-219,240,-221,-83,-229,-232,-68,-220,240,240,240,-222,-84,-224,-225,240,-223,-226,240,240,-228,-227,]),'GOTO':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,241,-336,241,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,241,-69,-218,-217,241,241,-234,241,-84,-230,-231,-233,-219,241,-221,-83,-229,-232,-68,-220,241,241,241,-222,-84,-224,-225,241,-223,-226,241,241,-228,-227,]),'BREAK':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,242,-336,242,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,242,-69,-218,-217,242,242,-234,242,-84,-230,-231,-233,-219,242,-221,-83,-229,-232,-68,-220,242,242,242,-222,-84,-224,-225,242,-223,-226,242,242,-228,-227,]),'CONTINUE':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,243,-336,243,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,243,-69,-218,-217,243,243,-234,243,-84,-230,-231,-233,-219,243,-221,-83,-229,-232,-68,-220,243,243,243,-222,-84,-224,-225,243,-223,-226,243,243,-228,-227,]),'RETURN':([15,89,90,119,126,205,218,219,220,221,222,223,224,225,226,227,228,229,239,262,351,352,354,356,357,365,366,369,370,372,464,465,466,474,477,478,493,518,519,520,521,546,547,548,549,563,572,573,575,577,578,579,],[-71,-87,-72,-335,244,-336,244,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,244,-69,-218,-217,244,244,-234,244,-84,-230,-231,-233,-219,244,-221,-83,-229,-232,-68,-220,244,244,244,-222,-84,-224,-225,244,-223,-226,244,244,-228,-227,]),'PLUSPLUS':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,138,142,143,144,145,147,148,149,150,151,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,230,231,235,239,244,253,254,255,256,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,287,288,290,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,401,424,426,427,428,429,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,495,496,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,554,555,556,558,563,565,567,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,148,-337,-27,-28,-182,-335,148,148,148,-337,148,-303,-284,-285,-286,-283,287,148,148,148,148,-289,-312,-287,-288,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,148,-337,-28,148,-183,-336,148,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,148,148,148,148,-337,148,-337,-28,-69,-326,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,-297,-298,148,148,-331,-332,-333,-334,-284,148,148,-337,148,148,-218,-217,148,148,-234,148,148,148,148,148,-84,148,-230,-231,-233,148,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,148,-12,148,-284,148,148,148,-305,-292,-293,-294,-295,-296,-337,148,148,148,-219,148,-221,148,-83,148,-229,-232,-337,-198,-337,-68,148,-290,-291,148,148,-337,-28,-284,-220,148,148,148,148,148,148,-11,-284,148,148,-222,-84,-224,-225,148,-299,-337,-306,148,148,148,-300,-223,-226,148,148,-228,-227,]),'MINUSMINUS':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,138,142,143,144,145,147,148,149,150,151,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,230,231,235,239,244,253,254,255,256,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,287,288,290,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,401,424,426,427,428,429,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,495,496,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,554,555,556,558,563,565,567,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,149,-337,-27,-28,-182,-335,149,149,149,-337,149,-303,-284,-285,-286,-283,288,149,149,149,149,-289,-312,-287,-288,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,149,-337,-28,149,-183,-336,149,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,149,149,149,149,-337,149,-337,-28,-69,-326,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,-297,-298,149,149,-331,-332,-333,-334,-284,149,149,-337,149,149,-218,-217,149,149,-234,149,149,149,149,149,-84,149,-230,-231,-233,149,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,149,-12,149,-284,149,149,149,-305,-292,-293,-294,-295,-296,-337,149,149,149,-219,149,-221,149,-83,149,-229,-232,-337,-198,-337,-68,149,-290,-291,149,149,-337,-28,-284,-220,149,149,149,149,149,149,-11,-284,149,149,-222,-84,-224,-225,149,-299,-337,-306,149,149,149,-300,-223,-226,149,149,-228,-227,]),'SIZEOF':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,151,-337,-27,-28,-182,-335,151,151,151,-337,151,-284,-285,-286,-283,151,151,151,151,-287,-288,151,-337,-28,151,-183,-336,151,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,151,151,151,151,-337,151,-337,-28,-69,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,-284,151,151,-337,151,151,-218,-217,151,151,-234,151,151,151,151,151,-84,151,-230,-231,-233,151,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,151,-12,151,-284,151,151,151,-337,151,151,151,-219,151,-221,151,-83,151,-229,-232,-337,-198,-337,-68,151,151,151,-337,-28,-284,-220,151,151,151,151,151,151,-11,-284,151,151,-222,-84,-224,-225,151,-337,151,151,151,-223,-226,151,151,-228,-227,]),'_ALIGNOF':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,152,-337,-27,-28,-182,-335,152,152,152,-337,152,-284,-285,-286,-283,152,152,152,152,-287,-288,152,-337,-28,152,-183,-336,152,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,152,152,152,152,-337,152,-337,-28,-69,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,-284,152,152,-337,152,152,-218,-217,152,152,-234,152,152,152,152,152,-84,152,-230,-231,-233,152,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,152,-12,152,-284,152,152,152,-337,152,152,152,-219,152,-221,152,-83,152,-229,-232,-337,-198,-337,-68,152,152,152,-337,-28,-284,-220,152,152,152,152,152,152,-11,-284,152,152,-222,-84,-224,-225,152,-337,152,152,152,-223,-226,152,152,-228,-227,]),'AND':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,138,140,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,230,231,235,239,244,247,253,254,255,256,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,287,288,289,290,291,292,293,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,443,450,452,462,464,465,466,469,474,476,477,478,481,483,491,492,493,494,495,496,497,499,500,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,554,555,556,558,563,565,567,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,145,-337,-27,-28,-182,-335,145,145,145,-337,145,-303,278,-255,-284,-285,-286,-283,-274,-276,145,145,145,145,-289,-312,-287,-288,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,145,-337,-28,145,-183,-336,145,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,145,145,145,145,-274,-337,145,-337,-28,-69,-326,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,-297,-298,-277,145,-278,-279,-280,145,-331,-332,-333,-334,-284,145,145,-337,145,145,-218,-217,145,145,-234,145,145,145,145,145,-84,145,-230,-231,-233,145,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,145,-12,145,-284,145,145,145,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,278,278,278,278,-292,-293,-294,-295,-296,-337,145,145,145,-219,145,-221,145,-83,145,-229,-232,-337,-198,-275,-337,-68,145,-290,-291,145,-281,-282,145,-337,-28,-284,-220,145,145,145,145,145,145,-11,-284,145,145,-222,-84,-224,-225,145,-299,-337,-306,145,145,145,-300,-223,-226,145,145,-228,-227,]),'PLUS':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,138,140,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,230,231,235,239,244,247,253,254,255,256,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,287,288,289,290,291,292,293,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,443,450,452,462,464,465,466,469,474,476,477,478,481,483,491,492,493,494,495,496,497,499,500,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,554,555,556,558,563,565,567,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,143,-337,-27,-28,-182,-335,143,143,143,-337,143,-303,268,-255,-284,-285,-286,-283,-274,-276,143,143,143,143,-289,-312,-287,-288,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,143,-337,-28,143,-183,-336,143,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,143,143,143,143,-274,-337,143,-337,-28,-69,-326,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,-297,-298,-277,143,-278,-279,-280,143,-331,-332,-333,-334,-284,143,143,-337,143,143,-218,-217,143,143,-234,143,143,143,143,143,-84,143,-230,-231,-233,143,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,143,-12,143,-284,143,143,143,-305,-256,-257,-258,-259,-260,268,268,268,268,268,268,268,268,268,268,268,268,268,-292,-293,-294,-295,-296,-337,143,143,143,-219,143,-221,143,-83,143,-229,-232,-337,-198,-275,-337,-68,143,-290,-291,143,-281,-282,143,-337,-28,-284,-220,143,143,143,143,143,143,-11,-284,143,143,-222,-84,-224,-225,143,-299,-337,-306,143,143,143,-300,-223,-226,143,143,-228,-227,]),'MINUS':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,138,140,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,230,231,235,239,244,247,253,254,255,256,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,287,288,289,290,291,292,293,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,443,450,452,462,464,465,466,469,474,476,477,478,481,483,491,492,493,494,495,496,497,499,500,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,554,555,556,558,563,565,567,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,144,-337,-27,-28,-182,-335,144,144,144,-337,144,-303,269,-255,-284,-285,-286,-283,-274,-276,144,144,144,144,-289,-312,-287,-288,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,144,-337,-28,144,-183,-336,144,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,-312,144,144,144,144,-274,-337,144,-337,-28,-69,-326,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,-297,-298,-277,144,-278,-279,-280,144,-331,-332,-333,-334,-284,144,144,-337,144,144,-218,-217,144,144,-234,144,144,144,144,144,-84,144,-230,-231,-233,144,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,144,-12,144,-284,144,144,144,-305,-256,-257,-258,-259,-260,269,269,269,269,269,269,269,269,269,269,269,269,269,-292,-293,-294,-295,-296,-337,144,144,144,-219,144,-221,144,-83,144,-229,-232,-337,-198,-275,-337,-68,144,-290,-291,144,-281,-282,144,-337,-28,-284,-220,144,144,144,144,144,144,-11,-284,144,144,-222,-84,-224,-225,144,-299,-337,-306,144,144,144,-300,-223,-226,144,144,-228,-227,]),'NOT':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,155,-337,-27,-28,-182,-335,155,155,155,-337,155,-284,-285,-286,-283,155,155,155,155,-287,-288,155,-337,-28,155,-183,-336,155,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,155,155,155,155,-337,155,-337,-28,-69,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,-284,155,155,-337,155,155,-218,-217,155,155,-234,155,155,155,155,155,-84,155,-230,-231,-233,155,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,155,-12,155,-284,155,155,155,-337,155,155,155,-219,155,-221,155,-83,155,-229,-232,-337,-198,-337,-68,155,155,155,-337,-28,-284,-220,155,155,155,155,155,155,-11,-284,155,155,-222,-84,-224,-225,155,-337,155,155,155,-223,-226,155,155,-228,-227,]),'LNOT':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,156,-337,-27,-28,-182,-335,156,156,156,-337,156,-284,-285,-286,-283,156,156,156,156,-287,-288,156,-337,-28,156,-183,-336,156,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,156,156,156,156,-337,156,-337,-28,-69,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,-284,156,156,-337,156,156,-218,-217,156,156,-234,156,156,156,156,156,-84,156,-230,-231,-233,156,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,156,-12,156,-284,156,156,156,-337,156,156,156,-219,156,-221,156,-83,156,-229,-232,-337,-198,-337,-68,156,156,156,-337,-28,-284,-220,156,156,156,156,156,156,-11,-284,156,156,-222,-84,-224,-225,156,-337,156,156,156,-223,-226,156,156,-228,-227,]),'OFFSETOF':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,160,-337,-27,-28,-182,-335,160,160,160,-337,160,-284,-285,-286,-283,160,160,160,160,-287,-288,160,-337,-28,160,-183,-336,160,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,160,160,160,160,-337,160,-337,-28,-69,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,-284,160,160,-337,160,160,-218,-217,160,160,-234,160,160,160,160,160,-84,160,-230,-231,-233,160,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,160,-12,160,-284,160,160,160,-337,160,160,160,-219,160,-221,160,-83,160,-229,-232,-337,-198,-337,-68,160,160,160,-337,-28,-284,-220,160,160,160,160,160,160,-11,-284,160,160,-222,-84,-224,-225,160,-337,160,160,160,-223,-226,160,160,-228,-227,]),'INT_CONST_DEC':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,161,-337,-27,-28,-182,-335,161,161,161,-337,161,-284,-285,-286,-283,161,161,161,161,-287,-288,161,-337,-28,161,-183,-336,161,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,161,161,161,161,-337,161,-337,-28,-69,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,-284,161,161,-337,161,161,-218,-217,161,161,-234,161,161,161,161,161,-84,161,-230,-231,-233,161,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,161,-12,161,-284,161,161,161,-337,161,161,161,-219,161,-221,161,-83,161,-229,-232,-337,-198,-337,-68,161,161,161,-337,-28,-284,-220,161,161,161,161,161,161,-11,-284,161,161,-222,-84,-224,-225,161,-337,161,161,161,-223,-226,161,161,-228,-227,]),'INT_CONST_OCT':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,162,-337,-27,-28,-182,-335,162,162,162,-337,162,-284,-285,-286,-283,162,162,162,162,-287,-288,162,-337,-28,162,-183,-336,162,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,162,162,162,162,-337,162,-337,-28,-69,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,-284,162,162,-337,162,162,-218,-217,162,162,-234,162,162,162,162,162,-84,162,-230,-231,-233,162,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,162,-12,162,-284,162,162,162,-337,162,162,162,-219,162,-221,162,-83,162,-229,-232,-337,-198,-337,-68,162,162,162,-337,-28,-284,-220,162,162,162,162,162,162,-11,-284,162,162,-222,-84,-224,-225,162,-337,162,162,162,-223,-226,162,162,-228,-227,]),'INT_CONST_HEX':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,163,-337,-27,-28,-182,-335,163,163,163,-337,163,-284,-285,-286,-283,163,163,163,163,-287,-288,163,-337,-28,163,-183,-336,163,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,163,163,163,163,-337,163,-337,-28,-69,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,-284,163,163,-337,163,163,-218,-217,163,163,-234,163,163,163,163,163,-84,163,-230,-231,-233,163,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,163,-12,163,-284,163,163,163,-337,163,163,163,-219,163,-221,163,-83,163,-229,-232,-337,-198,-337,-68,163,163,163,-337,-28,-284,-220,163,163,163,163,163,163,-11,-284,163,163,-222,-84,-224,-225,163,-337,163,163,163,-223,-226,163,163,-228,-227,]),'INT_CONST_BIN':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,164,-337,-27,-28,-182,-335,164,164,164,-337,164,-284,-285,-286,-283,164,164,164,164,-287,-288,164,-337,-28,164,-183,-336,164,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,164,164,164,164,-337,164,-337,-28,-69,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,-284,164,164,-337,164,164,-218,-217,164,164,-234,164,164,164,164,164,-84,164,-230,-231,-233,164,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,164,-12,164,-284,164,164,164,-337,164,164,164,-219,164,-221,164,-83,164,-229,-232,-337,-198,-337,-68,164,164,164,-337,-28,-284,-220,164,164,164,164,164,164,-11,-284,164,164,-222,-84,-224,-225,164,-337,164,164,164,-223,-226,164,164,-228,-227,]),'INT_CONST_CHAR':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,165,-337,-27,-28,-182,-335,165,165,165,-337,165,-284,-285,-286,-283,165,165,165,165,-287,-288,165,-337,-28,165,-183,-336,165,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,165,165,165,165,-337,165,-337,-28,-69,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,-284,165,165,-337,165,165,-218,-217,165,165,-234,165,165,165,165,165,-84,165,-230,-231,-233,165,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,165,-12,165,-284,165,165,165,-337,165,165,165,-219,165,-221,165,-83,165,-229,-232,-337,-198,-337,-68,165,165,165,-337,-28,-284,-220,165,165,165,165,165,165,-11,-284,165,165,-222,-84,-224,-225,165,-337,165,165,165,-223,-226,165,165,-228,-227,]),'FLOAT_CONST':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,166,-337,-27,-28,-182,-335,166,166,166,-337,166,-284,-285,-286,-283,166,166,166,166,-287,-288,166,-337,-28,166,-183,-336,166,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,166,166,166,166,-337,166,-337,-28,-69,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,-284,166,166,-337,166,166,-218,-217,166,166,-234,166,166,166,166,166,-84,166,-230,-231,-233,166,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,166,-12,166,-284,166,166,166,-337,166,166,166,-219,166,-221,166,-83,166,-229,-232,-337,-198,-337,-68,166,166,166,-337,-28,-284,-220,166,166,166,166,166,166,-11,-284,166,166,-222,-84,-224,-225,166,-337,166,166,166,-223,-226,166,166,-228,-227,]),'HEX_FLOAT_CONST':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,167,-337,-27,-28,-182,-335,167,167,167,-337,167,-284,-285,-286,-283,167,167,167,167,-287,-288,167,-337,-28,167,-183,-336,167,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,167,167,167,167,-337,167,-337,-28,-69,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,-284,167,167,-337,167,167,-218,-217,167,167,-234,167,167,167,167,167,-84,167,-230,-231,-233,167,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,167,-12,167,-284,167,167,167,-337,167,167,167,-219,167,-221,167,-83,167,-229,-232,-337,-198,-337,-68,167,167,167,-337,-28,-284,-220,167,167,167,167,167,167,-11,-284,167,167,-222,-84,-224,-225,167,-337,167,167,167,-223,-226,167,167,-228,-227,]),'CHAR_CONST':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,168,-337,-27,-28,-182,-335,168,168,168,-337,168,-284,-285,-286,-283,168,168,168,168,-287,-288,168,-337,-28,168,-183,-336,168,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,168,168,168,168,-337,168,-337,-28,-69,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,-284,168,168,-337,168,168,-218,-217,168,168,-234,168,168,168,168,168,-84,168,-230,-231,-233,168,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,168,-12,168,-284,168,168,168,-337,168,168,168,-219,168,-221,168,-83,168,-229,-232,-337,-198,-337,-68,168,168,168,-337,-28,-284,-220,168,168,168,168,168,168,-11,-284,168,168,-222,-84,-224,-225,168,-337,168,168,168,-223,-226,168,168,-228,-227,]),'WCHAR_CONST':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,169,-337,-27,-28,-182,-335,169,169,169,-337,169,-284,-285,-286,-283,169,169,169,169,-287,-288,169,-337,-28,169,-183,-336,169,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,169,169,169,169,-337,169,-337,-28,-69,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,-284,169,169,-337,169,169,-218,-217,169,169,-234,169,169,169,169,169,-84,169,-230,-231,-233,169,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,169,-12,169,-284,169,169,169,-337,169,169,169,-219,169,-221,169,-83,169,-229,-232,-337,-198,-337,-68,169,169,169,-337,-28,-284,-220,169,169,169,169,169,169,-11,-284,169,169,-222,-84,-224,-225,169,-337,169,169,169,-223,-226,169,169,-228,-227,]),'U8CHAR_CONST':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,170,-337,-27,-28,-182,-335,170,170,170,-337,170,-284,-285,-286,-283,170,170,170,170,-287,-288,170,-337,-28,170,-183,-336,170,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,170,170,170,170,-337,170,-337,-28,-69,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,-284,170,170,-337,170,170,-218,-217,170,170,-234,170,170,170,170,170,-84,170,-230,-231,-233,170,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,170,-12,170,-284,170,170,170,-337,170,170,170,-219,170,-221,170,-83,170,-229,-232,-337,-198,-337,-68,170,170,170,-337,-28,-284,-220,170,170,170,170,170,170,-11,-284,170,170,-222,-84,-224,-225,170,-337,170,170,170,-223,-226,170,170,-228,-227,]),'U16CHAR_CONST':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,171,-337,-27,-28,-182,-335,171,171,171,-337,171,-284,-285,-286,-283,171,171,171,171,-287,-288,171,-337,-28,171,-183,-336,171,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,171,171,171,171,-337,171,-337,-28,-69,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,-284,171,171,-337,171,171,-218,-217,171,171,-234,171,171,171,171,171,-84,171,-230,-231,-233,171,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,171,-12,171,-284,171,171,171,-337,171,171,171,-219,171,-221,171,-83,171,-229,-232,-337,-198,-337,-68,171,171,171,-337,-28,-284,-220,171,171,171,171,171,171,-11,-284,171,171,-222,-84,-224,-225,171,-337,171,171,171,-223,-226,171,171,-228,-227,]),'U32CHAR_CONST':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,172,-337,-27,-28,-182,-335,172,172,172,-337,172,-284,-285,-286,-283,172,172,172,172,-287,-288,172,-337,-28,172,-183,-336,172,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,172,172,172,172,-337,172,-337,-28,-69,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,-284,172,172,-337,172,172,-218,-217,172,172,-234,172,172,172,172,172,-84,172,-230,-231,-233,172,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,172,-12,172,-284,172,172,172,-337,172,172,172,-219,172,-221,172,-83,172,-229,-232,-337,-198,-337,-68,172,172,172,-337,-28,-284,-220,172,172,172,172,172,172,-11,-284,172,172,-222,-84,-224,-225,172,-337,172,172,172,-223,-226,172,172,-228,-227,]),'STRING_LITERAL':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,138,142,143,144,145,148,149,150,151,155,156,173,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,402,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,173,-337,-27,-28,-182,-335,173,173,173,-337,173,263,-284,-285,-286,-283,173,173,173,173,-287,-288,-325,173,-337,-28,173,-183,-336,173,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,173,173,173,173,-337,173,-337,-28,173,-69,-326,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,-284,173,173,-337,173,173,-218,-217,173,173,-234,173,173,173,173,173,-84,173,-230,-231,-233,173,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,173,-12,173,-284,173,173,173,263,-337,173,173,173,-219,173,-221,173,-83,173,-229,-232,-337,-198,-337,-68,173,173,173,-337,-28,-284,-220,173,173,173,173,173,173,-11,-284,173,173,-222,-84,-224,-225,173,-337,173,173,173,-223,-226,173,173,-228,-227,]),'WSTRING_LITERAL':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,159,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,174,-337,-27,-28,-182,-335,174,174,174,-337,174,-284,-285,-286,-283,174,174,174,174,-287,-288,296,-327,-328,-329,-330,174,-337,-28,174,-183,-336,174,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,174,174,174,174,-337,174,-337,-28,-69,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,-331,-332,-333,-334,-284,174,174,-337,174,174,-218,-217,174,174,-234,174,174,174,174,174,-84,174,-230,-231,-233,174,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,174,-12,174,-284,174,174,174,-337,174,174,174,-219,174,-221,174,-83,174,-229,-232,-337,-198,-337,-68,174,174,174,-337,-28,-284,-220,174,174,174,174,174,174,-11,-284,174,174,-222,-84,-224,-225,174,-337,174,174,174,-223,-226,174,174,-228,-227,]),'U8STRING_LITERAL':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,159,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,175,-337,-27,-28,-182,-335,175,175,175,-337,175,-284,-285,-286,-283,175,175,175,175,-287,-288,297,-327,-328,-329,-330,175,-337,-28,175,-183,-336,175,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,175,175,175,175,-337,175,-337,-28,-69,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,-331,-332,-333,-334,-284,175,175,-337,175,175,-218,-217,175,175,-234,175,175,175,175,175,-84,175,-230,-231,-233,175,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,175,-12,175,-284,175,175,175,-337,175,175,175,-219,175,-221,175,-83,175,-229,-232,-337,-198,-337,-68,175,175,175,-337,-28,-284,-220,175,175,175,175,175,175,-11,-284,175,175,-222,-84,-224,-225,175,-337,175,175,175,-223,-226,175,175,-228,-227,]),'U16STRING_LITERAL':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,159,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,176,-337,-27,-28,-182,-335,176,176,176,-337,176,-284,-285,-286,-283,176,176,176,176,-287,-288,298,-327,-328,-329,-330,176,-337,-28,176,-183,-336,176,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,176,176,176,176,-337,176,-337,-28,-69,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,-331,-332,-333,-334,-284,176,176,-337,176,176,-218,-217,176,176,-234,176,176,176,176,176,-84,176,-230,-231,-233,176,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,176,-12,176,-284,176,176,176,-337,176,176,176,-219,176,-221,176,-83,176,-229,-232,-337,-198,-337,-68,176,176,176,-337,-28,-284,-220,176,176,176,176,176,176,-11,-284,176,176,-222,-84,-224,-225,176,-337,176,176,176,-223,-226,176,176,-228,-227,]),'U32STRING_LITERAL':([15,50,51,52,80,89,90,91,93,112,113,114,119,124,126,133,134,136,142,143,144,145,148,149,150,151,155,156,159,174,175,176,177,179,180,181,192,194,205,218,219,220,221,222,223,224,225,226,227,228,229,231,235,239,244,253,254,255,256,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,296,297,298,299,302,305,306,319,328,343,351,352,354,356,357,358,361,362,363,365,366,367,369,370,372,373,374,375,376,377,378,379,380,381,382,383,384,387,388,389,392,395,396,397,400,443,450,452,462,464,465,466,469,474,476,477,478,481,483,492,493,494,497,504,505,506,514,518,519,520,521,522,523,526,527,537,538,539,546,547,548,549,552,555,558,563,565,572,573,575,577,578,579,],[-71,-128,-129,-130,-131,-87,-72,177,-337,-27,-28,-182,-335,177,177,177,-337,177,-284,-285,-286,-283,177,177,177,177,-287,-288,299,-327,-328,-329,-330,177,-337,-28,177,-183,-336,177,-216,-214,-215,-75,-76,-77,-78,-79,-80,-81,-82,177,177,177,177,-337,177,-337,-28,-69,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,-331,-332,-333,-334,-284,177,177,-337,177,177,-218,-217,177,177,-234,177,177,177,177,177,-84,177,-230,-231,-233,177,-241,-242,-243,-244,-245,-246,-247,-248,-249,-250,-251,-11,177,-12,177,-284,177,177,177,-337,177,177,177,-219,177,-221,177,-83,177,-229,-232,-337,-198,-337,-68,177,177,177,-337,-28,-284,-220,177,177,177,177,177,177,-11,-284,177,177,-222,-84,-224,-225,177,-337,177,177,177,-223,-226,177,177,-228,-227,]),'ELSE':([15,90,205,222,223,224,225,226,227,228,229,262,351,357,365,366,369,370,372,464,466,474,477,478,493,518,546,547,548,549,572,573,578,579,],[-71,-72,-336,-75,-76,-77,-78,-79,-80,-81,-82,-69,-218,-234,-81,-84,-230,-231,-233,-219,-221,-83,-229,-232,-68,-220,-222,563,-224,-225,-223,-226,-228,-227,]),'PPPRAGMASTR':([15,],[90,]),'EQUALS':([18,27,72,85,86,87,88,95,109,128,130,138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,199,205,230,247,249,263,287,288,289,291,292,293,296,297,298,299,307,308,390,391,398,399,401,424,426,427,428,429,434,435,484,486,487,488,491,495,496,499,500,502,503,528,529,530,554,556,567,],[-52,-29,-178,133,-179,-54,-37,-53,192,-178,-55,-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-30,328,-336,-312,374,-38,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-35,-36,483,-199,-43,-44,-305,-292,-293,-294,-295,-296,-31,-34,-200,-202,-39,-42,-275,-290,-291,-281,-282,-32,-33,-201,-40,-41,-299,-306,-300,]),'COMMA':([18,23,24,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,59,72,73,74,75,76,77,80,83,84,85,86,87,88,95,102,104,106,108,109,111,112,113,114,116,117,120,121,128,130,137,138,139,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,184,186,187,188,189,193,194,197,198,199,203,205,209,211,213,230,236,245,246,247,249,250,251,252,260,263,287,288,289,291,292,293,296,297,298,299,307,308,311,312,313,314,315,316,317,320,321,322,323,324,325,326,327,330,332,333,336,337,338,340,341,342,344,345,346,348,349,350,371,386,398,399,401,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,433,434,435,439,440,441,442,454,455,456,457,458,459,463,467,468,470,471,472,479,480,482,487,488,491,495,496,499,500,502,503,509,510,512,516,517,525,529,530,531,532,533,540,541,542,543,544,545,550,553,554,556,559,560,567,569,570,571,],[-52,-125,-99,-29,-104,-337,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-178,-95,-96,-97,-98,-101,-131,132,-132,-134,-179,-54,-37,-53,-100,-126,191,-136,-138,-180,-27,-28,-182,-166,-167,-146,-147,-178,-55,261,-303,-252,-253,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-30,309,310,-186,-191,-337,-181,-183,327,-171,-176,-149,-336,-142,-144,-337,-312,361,-235,-239,-274,-38,-133,-135,-193,361,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-35,-36,-188,-189,-190,-204,-56,-1,-2,-45,-206,-137,-139,327,327,-168,-172,-151,-153,-148,-140,-141,-145,461,-161,-163,-143,-127,-203,-204,-174,-175,361,481,-43,-44,-305,361,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,361,497,-292,-310,-293,-294,-295,-296,501,-31,-34,-187,-192,-57,-205,-169,-170,-173,-177,-150,-152,-165,361,-237,-236,361,361,-240,-194,-196,-39,-42,-275,-290,-291,-281,-282,-32,-33,-207,-213,-211,-162,-164,-195,-40,-41,555,-254,-311,-50,-51,-209,-208,-210,-212,361,-197,-299,-306,-46,-49,-300,361,-47,-48,]),'RPAREN':([18,23,24,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,59,73,74,75,76,77,80,87,88,92,94,95,102,104,111,112,113,114,116,117,120,121,130,131,135,137,138,139,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,182,183,184,185,186,187,188,189,193,194,203,205,209,211,212,213,214,215,236,245,246,247,249,257,258,259,260,263,284,287,288,289,291,292,293,296,297,298,299,307,308,311,312,313,314,315,316,317,318,320,321,326,330,332,333,336,337,338,344,345,346,347,348,349,350,351,353,359,360,398,399,401,402,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,423,424,425,426,427,428,429,430,431,432,434,435,438,439,440,441,442,444,445,446,447,448,449,453,454,455,458,459,467,468,470,471,472,479,487,488,491,495,496,499,500,502,503,507,508,509,510,512,515,529,530,532,533,534,535,540,541,542,543,544,545,550,552,554,556,559,560,565,566,567,568,570,571,574,576,],[-52,-125,-99,-29,-104,-337,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-95,-96,-97,-98,-101,-131,-54,-37,178,-337,-53,-100,-126,-180,-27,-28,-182,-166,-167,-146,-147,-55,249,-337,262,-303,-252,-253,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-30,307,308,-184,-17,-18,-186,-191,-337,-181,-183,-149,-336,-142,-144,345,-337,349,350,-14,-235,-239,-274,-38,398,399,400,401,-326,424,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-35,-36,-188,-189,-190,-204,-56,-1,-2,-337,-45,-206,-168,-151,-153,-148,-140,-141,-145,-143,-127,-203,-337,-204,-174,-175,-218,-13,468,469,-43,-44,-305,493,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,496,-292,-310,-293,-294,-295,-296,498,499,500,-31,-34,-185,-187,-192,-57,-205,-337,509,510,-204,-23,-24,-337,-169,-170,-150,-152,519,-237,-236,520,521,-240,-39,-42,-275,-290,-291,-281,-282,-32,-33,540,541,-207,-213,-211,545,-40,-41,-254,-311,556,-307,-50,-51,-209,-208,-210,-212,564,-337,-299,-306,-46,-49,-337,575,-300,-308,-47,-48,577,-309,]),'COLON':([18,23,27,30,31,32,34,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,80,86,87,88,95,104,116,117,120,121,128,130,138,139,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,203,205,206,209,211,230,232,245,246,247,249,263,287,288,289,291,292,293,296,297,298,299,307,308,326,330,332,333,336,337,338,342,344,345,349,350,355,398,399,401,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,434,435,454,455,458,459,461,468,470,479,487,488,491,495,496,499,500,502,503,529,530,532,554,556,567,],[-52,-125,-29,-122,-123,-124,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-128,-129,-130,-131,-179,-54,-37,-53,-126,-166,-167,-146,-147,-178,-55,-303,-252,-253,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-30,-149,-336,343,-142,-144,354,356,-235,-239,-274,-38,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-35,-36,-168,-151,-153,-148,-140,-141,-145,462,-143,-127,-174,-175,465,-43,-44,-305,494,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-292,-293,-294,-295,-296,-31,-34,-169,-170,-150,-152,343,-237,-236,-240,-39,-42,-275,-290,-291,-281,-282,-32,-33,-40,-41,-254,-299,-306,-300,]),'LBRACKET':([18,23,24,27,28,29,30,31,32,33,34,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,59,73,74,75,76,77,80,87,88,95,102,104,111,112,113,114,116,117,119,120,121,130,138,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,189,193,194,203,205,209,211,213,230,249,253,263,287,288,296,297,298,299,307,308,314,315,318,320,321,326,330,332,333,336,337,338,344,345,347,348,349,350,390,391,398,399,401,424,426,427,428,429,434,435,441,442,447,454,455,458,459,481,484,486,487,488,492,495,496,502,503,509,510,512,528,529,530,534,535,540,541,542,543,544,545,554,555,556,559,560,567,568,570,571,576,],[93,-125,-99,-29,-104,-337,-122,-123,-124,-126,-238,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-128,-129,-130,-102,-103,-105,-106,-107,-108,-109,-95,-96,-97,-98,-101,-131,134,-37,93,-100,-126,-180,-27,-28,-182,-166,-167,-335,-146,-147,134,-303,283,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-30,319,-181,-183,-149,-336,-142,-144,319,-312,-38,392,-326,-297,-298,-331,-332,-333,-334,-35,-36,319,443,319,-45,452,-168,-151,-153,-148,-140,-141,-145,-143,-127,319,319,-174,-175,392,-199,-43,-44,-305,-292,-293,-294,-295,-296,-31,-34,443,452,319,-169,-170,-150,-152,392,-200,-202,-39,-42,392,-290,-291,-32,-33,-207,-213,-211,-201,-40,-41,558,-307,-50,-51,-209,-208,-210,-212,-299,392,-306,-46,-49,-300,-308,-47,-48,-309,]),'RBRACKET':([50,51,52,80,93,112,113,114,134,138,139,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,181,194,205,245,246,247,254,256,263,287,288,289,291,292,293,296,297,298,299,301,302,303,304,319,394,395,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,424,426,427,428,429,436,437,443,450,451,452,468,470,479,485,489,490,491,495,496,499,500,504,506,511,513,514,532,536,537,554,556,561,562,567,569,],[-128,-129,-130,-131,-337,-27,-28,-182,-337,-303,-252,-253,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-337,-28,-183,-336,-235,-239,-274,-337,-28,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,434,435,-3,-4,-337,487,488,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,495,-292,-293,-294,-295,-296,502,503,-337,-337,512,-337,-237,-236,-240,528,529,530,-275,-290,-291,-281,-282,-337,-28,542,543,544,-254,559,560,-299,-306,570,571,-300,576,]),'PERIOD':([119,138,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,253,263,287,288,296,297,298,299,390,391,401,424,426,427,428,429,481,484,486,492,495,496,528,534,535,554,555,556,567,568,576,],[-335,-303,285,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,393,-326,-297,-298,-331,-332,-333,-334,393,-199,-305,-292,-293,-294,-295,-296,393,-200,-202,393,-290,-291,-201,557,-307,-299,393,-306,-300,-308,-309,]),'ARROW':([138,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,263,287,288,296,297,298,299,401,424,426,427,428,429,495,496,554,556,567,],[-303,286,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-326,-297,-298,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-290,-291,-299,-306,-300,]),'CONDOP':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,264,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'DIVIDE':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,266,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'MOD':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,267,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'RSHIFT':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,270,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,270,270,270,270,270,270,270,270,270,270,270,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'LSHIFT':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,271,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,271,271,271,271,271,271,271,271,271,271,271,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'LT':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,272,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,272,272,272,272,272,272,272,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'LE':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,273,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,273,273,273,273,273,273,273,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'GE':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,274,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,274,274,274,274,274,274,274,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'GT':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,275,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,275,275,275,275,275,275,275,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'EQ':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,276,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,276,276,276,276,276,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'NE':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,277,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,277,277,277,277,277,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'OR':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,279,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,279,279,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'XOR':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,280,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,280,-271,280,280,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'LAND':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,281,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,281,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'LOR':([138,140,141,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,282,-255,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,-274,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-256,-257,-258,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'XOREQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,375,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'TIMESEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,376,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'DIVEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,377,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'MODEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,378,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'PLUSEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,379,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'MINUSEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,380,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'LSHIFTEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,381,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'RSHIFTEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,382,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'ANDEQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,383,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'OREQUAL':([138,146,147,153,154,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,205,230,247,263,287,288,289,291,292,293,296,297,298,299,401,424,426,427,428,429,491,495,496,499,500,554,556,567,],[-303,-274,-276,-289,-312,-301,-302,-304,-313,-314,-315,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-327,-328,-329,-330,-336,-312,384,-326,-297,-298,-277,-278,-279,-280,-331,-332,-333,-334,-305,-292,-293,-294,-295,-296,-275,-290,-291,-281,-282,-299,-306,-300,]),'ELLIPSIS':([309,],[438,]),}
+_lr_action_items = {'$end':([0,1,2,3,4,5,6,7,8,9,10,14,15,64,90,91,127,208,251,262,267,355,499,],[-340,0,-58,-59,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-76,-339,-77,-73,-69,-221,-68,]),'SEMI':([0,2,4,5,6,7,8,9,10,12,13,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,69,70,71,72,73,74,75,76,77,78,79,81,83,84,85,86,87,88,89,90,91,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,117,118,119,121,122,123,124,127,128,130,132,139,140,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,203,204,205,206,207,208,209,210,211,212,214,220,221,222,223,224,225,226,227,228,229,230,231,232,233,236,239,242,245,246,247,248,249,250,251,252,253,254,255,262,263,267,291,292,293,295,296,297,300,301,302,303,311,312,326,327,330,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,353,354,355,356,357,358,360,361,369,370,371,372,373,374,375,376,377,403,404,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,439,440,459,460,463,464,465,468,469,470,471,473,475,479,480,481,482,483,484,485,486,493,494,497,499,501,502,505,506,508,509,522,523,524,525,526,527,529,530,531,535,536,538,552,553,554,555,556,558,561,563,570,571,574,579,580,582,584,585,586,],[9,9,-60,-62,-63,-64,-65,-66,-67,-340,90,-70,-71,-52,-340,-340,-340,-128,-102,-340,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,-340,-340,-129,-134,-181,-98,-99,-100,-101,-104,-88,-134,-19,-20,-135,-137,-182,-54,-37,-90,-72,-53,-93,-9,-10,-340,-94,-95,-103,-89,-129,-15,-16,-139,-141,-97,-96,-169,-170,-338,-149,-150,210,-76,-340,-181,-55,-328,-30,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,210,210,210,-152,-159,-339,-340,-162,-163,-145,-147,-13,-340,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,361,-14,-340,374,375,377,-238,-242,-277,-77,-38,-136,-138,-196,-73,-329,-69,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-140,-142,-171,210,-154,210,-156,-151,-160,465,-143,-144,-148,-25,-26,-164,-166,-146,-130,-177,-178,-221,-220,-13,-340,-340,-237,-340,-87,-74,-340,483,-233,-234,484,-236,-43,-44,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-31,-34,-172,-173,-153,-155,-161,-168,-222,-340,-224,-240,-239,-86,-75,529,-340,-232,-235,-243,-197,-39,-42,-278,-68,-293,-294,-284,-285,-32,-33,-165,-167,-223,-340,-340,-340,-340,559,-198,-40,-41,-257,-225,-87,-74,-227,-228,572,-302,-309,-340,580,-303,-226,-229,-340,-340,-231,-230,]),'PPHASH':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,127,208,251,262,267,355,499,],[14,14,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-76,-339,-77,-73,-69,-221,-68,]),'PPPRAGMA':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,121,124,127,128,203,204,205,207,208,210,211,221,222,223,224,225,226,227,228,229,230,231,232,242,251,262,267,333,335,338,355,356,358,360,361,369,370,371,374,375,377,465,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[15,15,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-338,15,-76,15,15,15,15,-159,-339,-162,-163,15,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,15,-77,-73,-69,15,15,-160,-221,-220,15,15,-237,15,-87,-74,-233,-234,-236,-161,-222,15,-224,-86,-75,-232,-235,-68,-223,15,15,15,-225,-87,-74,-227,-228,15,-226,-229,15,15,-231,-230,]),'_PRAGMA':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,121,124,127,128,203,204,205,207,208,210,211,221,222,223,224,225,226,227,228,229,230,231,232,242,251,262,267,333,335,338,355,356,358,360,361,369,370,371,374,375,377,465,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[16,16,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-338,16,-76,16,16,16,16,-159,-339,-162,-163,16,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,16,-77,-73,-69,16,16,-160,-221,-220,16,16,-237,16,-87,-74,-233,-234,-236,-161,-222,16,-224,-86,-75,-232,-235,-68,-223,16,16,16,-225,-87,-74,-227,-228,16,-226,-229,16,16,-231,-230,]),'_STATIC_ASSERT':([0,2,4,5,6,7,8,9,10,14,15,64,90,91,121,127,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,251,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[18,18,-60,-62,-63,-64,-65,-66,-67,-70,-71,-61,-90,-72,-338,-76,18,-339,18,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,18,-77,-73,-69,-221,-220,18,18,-237,18,-87,-74,-233,-234,-236,-222,18,-224,-86,-75,-232,-235,-68,-223,18,18,18,-225,-87,-74,-227,-228,18,-226,-229,18,18,-231,-230,]),'ID':([0,2,4,5,6,7,8,9,10,12,14,15,17,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,69,70,71,72,74,75,76,77,78,80,81,82,90,91,94,95,96,98,99,100,101,102,103,104,106,112,113,114,115,116,117,118,119,120,121,122,123,126,127,128,134,135,136,137,141,147,148,149,150,153,154,155,156,160,161,182,183,184,192,194,195,196,197,198,199,206,208,209,212,214,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,244,247,251,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,294,298,306,309,310,314,318,322,323,330,331,332,334,336,337,340,341,342,347,348,349,353,354,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,398,400,401,402,405,448,449,452,455,457,459,460,463,464,466,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,507,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,564,565,570,572,579,580,582,584,585,586,],[28,28,-60,-62,-63,-64,-65,-66,-67,28,-70,-71,28,28,-340,-340,-340,-128,-102,28,-340,-107,-340,-125,-126,-127,-129,-241,118,122,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-157,-158,-61,28,28,-129,-134,-98,-99,-100,-101,-104,28,-134,28,-90,-72,159,-340,159,-93,-9,-10,-340,-94,-95,-103,-129,-97,-183,-27,-28,-185,-96,-169,-170,202,-338,-149,-150,159,-76,233,28,159,-340,159,159,-287,-288,-289,-286,159,159,159,159,-290,-291,159,-340,-28,28,28,159,-184,-186,202,202,-152,-339,28,-145,-147,233,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,159,159,233,373,159,-77,-340,159,-340,-28,-73,-69,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,431,433,159,159,-287,159,159,159,28,28,-340,-171,202,159,-154,-156,-151,-143,-144,-148,159,-146,-130,-177,-178,-221,-220,233,233,-237,159,159,159,159,233,-87,-74,159,-233,-234,-236,159,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,159,-12,159,159,-287,159,159,159,-340,159,28,159,159,-172,-173,-153,-155,28,159,-222,233,-224,159,-86,-75,159,-232,-235,-340,-201,-340,-68,159,159,159,159,-340,-28,-287,-223,233,233,233,159,159,159,-11,-287,159,159,-225,-87,-74,-227,-228,159,-340,159,159,233,159,-226,-229,233,233,-231,-230,]),'LPAREN':([0,2,4,5,6,7,8,9,10,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,64,69,70,71,72,74,75,76,77,78,80,81,82,88,89,90,91,94,95,97,98,99,100,101,102,103,104,106,109,112,113,114,115,116,117,118,119,121,122,123,126,127,128,132,134,135,136,139,140,141,143,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,192,194,195,196,197,206,208,209,212,214,216,221,222,223,224,225,226,227,228,229,230,231,232,233,234,237,238,240,241,242,243,247,251,252,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,294,298,300,301,302,303,306,309,310,311,312,318,319,322,323,324,325,330,332,334,336,337,340,341,342,347,348,349,351,352,353,354,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,403,404,405,406,429,431,432,433,434,439,440,446,447,448,452,455,457,459,460,463,464,466,467,469,470,471,474,478,479,480,482,483,484,487,489,493,494,498,499,500,501,502,503,508,509,510,511,512,515,516,518,520,524,525,526,527,528,529,532,533,535,536,543,544,545,546,547,548,549,550,551,552,553,554,555,556,559,561,562,563,565,566,567,570,572,574,577,578,579,580,582,584,585,586,],[17,17,-60,-62,-63,-64,-65,-66,-67,82,-70,-71,92,17,94,96,17,-340,-340,-340,-128,-102,17,-340,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,125,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,126,-61,82,17,-129,125,-98,-99,-100,-101,-104,82,-134,82,137,-37,-90,-72,141,-340,96,-93,-9,-10,-340,-94,-95,-103,-129,125,-97,-183,-27,-28,-185,-96,-169,-170,-338,-149,-150,141,-76,238,137,82,238,-340,-328,-30,238,-306,-287,-288,-289,-286,288,294,294,141,298,299,-292,-315,-290,-291,-304,-305,-307,304,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,238,-340,-28,322,82,238,-184,-186,-152,-339,82,-145,-147,351,238,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,141,362,238,366,367,238,372,238,-77,-38,-340,238,-340,-28,-73,-329,-69,238,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,238,238,-300,-301,238,238,-334,-335,-336,-337,-287,238,238,-35,-36,322,449,322,-340,-45,458,-171,141,-154,-156,-151,-143,-144,-148,141,-146,-130,351,351,-177,-178,-221,-220,238,238,-237,238,238,238,238,238,-87,-74,238,-233,-234,-236,238,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,238,-12,141,-287,238,238,-43,-44,141,-308,-295,-296,-297,-298,-299,-31,-34,449,458,-340,322,238,238,-172,-173,-153,-155,82,141,-222,238,-224,141,528,-86,-75,238,-232,-235,-340,-201,-39,-42,-340,-68,141,-293,-294,238,-32,-33,238,-340,-28,-210,-216,-214,-287,-223,238,238,238,238,238,238,-11,-40,-41,-287,238,238,-50,-51,-212,-211,-213,-215,-225,-87,-74,-227,-228,238,-302,-340,-309,238,-46,-49,238,238,-303,-47,-48,-226,-229,238,238,-231,-230,]),'TIMES':([0,2,4,5,6,7,8,9,10,12,14,15,17,21,22,23,24,25,26,27,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,69,70,71,72,74,75,76,77,78,81,82,90,91,94,95,98,99,100,101,102,103,104,106,112,113,114,115,116,117,118,119,121,122,123,126,127,128,134,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,192,194,195,197,206,208,209,212,214,216,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,251,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,322,323,330,332,334,336,337,340,341,342,347,348,349,351,353,354,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,459,460,463,464,466,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[30,30,-60,-62,-63,-64,-65,-66,-67,30,-70,-71,30,-340,-340,-340,-128,-102,30,-340,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,30,30,-129,-134,-98,-99,-100,-101,-104,-134,30,-90,-72,147,-340,-93,-9,-10,-340,-94,-95,-103,-129,-97,30,-27,-28,-185,-96,-169,-170,-338,-149,-150,147,-76,147,30,147,-340,-328,147,-306,269,-258,-287,-288,-289,-286,-277,-279,147,147,147,147,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,306,-340,-28,30,30,147,-186,-152,-339,30,-145,-147,30,147,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,147,147,147,147,-277,-77,-340,400,-340,-28,-73,-329,-69,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,-300,-301,-280,147,-281,-282,-283,147,-334,-335,-336,-337,-287,147,147,30,456,-171,147,-154,-156,-151,-143,-144,-148,147,-146,-130,30,-177,-178,-221,-220,147,147,-237,147,147,147,147,147,-87,-74,147,-233,-234,-236,147,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,147,-12,147,-287,147,147,147,-308,-259,-260,-261,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,-295,-296,-297,-298,-299,-340,147,520,-172,-173,-153,-155,30,147,-222,147,-224,147,-86,-75,147,-232,-235,-340,-201,-278,-340,-68,147,-293,-294,147,-284,-285,543,-340,-28,-287,-223,147,147,147,147,147,147,-11,-287,147,147,-225,-87,-74,-227,-228,147,-302,-340,-309,147,147,147,-303,-226,-229,147,147,-231,-230,]),'TYPEID':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,67,68,69,70,71,72,73,74,75,76,77,78,80,81,82,90,91,96,97,98,99,100,101,102,103,104,106,112,113,114,115,116,117,118,119,121,122,123,124,125,126,127,128,129,134,137,140,141,192,193,194,196,197,203,204,205,206,207,208,209,210,211,212,213,214,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,289,290,294,298,299,304,311,312,313,318,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,466,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[35,35,-60,-62,-63,-64,-65,-66,-67,35,89,-70,-71,-52,-340,-340,-340,-128,-102,35,-340,-29,-107,-340,-125,-126,-127,-129,-241,119,123,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-157,-158,-61,35,-91,89,35,-129,-134,35,-98,-99,-100,-101,-104,89,-134,89,-90,-72,35,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-183,-27,-28,-185,-96,-169,-170,-338,-149,-150,35,35,35,-76,35,-92,89,35,-30,35,324,35,89,-184,-186,35,35,35,-152,-159,-339,89,-162,-163,-145,35,-147,35,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,35,-77,-73,-69,432,434,35,35,35,35,-35,-36,35,324,35,-171,35,-154,35,-156,-151,-160,-143,-144,-148,-146,-130,35,-177,-178,-221,-220,-237,-87,-84,35,-233,-234,-236,-31,-34,35,35,-172,-173,-153,-155,-161,89,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'ENUM':([0,2,4,5,6,7,8,9,10,11,14,15,19,21,22,23,26,27,28,29,34,50,51,52,53,54,55,56,57,58,59,60,64,67,68,70,71,72,73,90,91,96,97,98,99,100,101,102,103,112,116,117,121,124,125,126,127,128,129,137,140,141,193,197,203,204,205,207,208,210,211,213,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,333,335,338,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[36,36,-60,-62,-63,-64,-65,-66,-67,36,-70,-71,-52,-340,-340,-340,36,-340,-29,-107,-340,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,36,-91,36,-340,-134,36,-90,-72,36,-53,-93,-9,-10,-340,-94,-95,-97,-185,-96,-338,36,36,36,-76,36,-92,36,-30,36,36,-186,36,36,36,-159,-339,-162,-163,36,36,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,36,-77,-73,-69,36,36,36,36,-35,-36,36,36,36,36,-160,-130,36,-177,-178,-221,-220,-237,-87,-84,36,-233,-234,-236,-31,-34,36,36,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'VOID':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[38,38,-60,-62,-63,-64,-65,-66,-67,38,38,-70,-71,-52,-340,-340,-340,-128,-102,38,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,38,-91,38,38,-129,-134,38,-98,-99,-100,-101,-104,-134,-90,-72,38,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,38,38,38,-76,38,-92,38,-30,38,38,38,-186,38,38,38,-152,-159,-339,38,-162,-163,-145,38,-147,38,38,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,38,-77,-73,-69,38,38,38,38,-35,-36,38,38,-171,38,-154,38,-156,-151,-160,-143,-144,-148,-146,-130,38,-177,-178,-221,-220,-237,-87,-84,38,-233,-234,-236,-31,-34,38,38,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_BOOL':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[39,39,-60,-62,-63,-64,-65,-66,-67,39,39,-70,-71,-52,-340,-340,-340,-128,-102,39,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,39,-91,39,39,-129,-134,39,-98,-99,-100,-101,-104,-134,-90,-72,39,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,39,39,39,-76,39,-92,39,-30,39,39,39,-186,39,39,39,-152,-159,-339,39,-162,-163,-145,39,-147,39,39,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,39,-77,-73,-69,39,39,39,39,-35,-36,39,39,-171,39,-154,39,-156,-151,-160,-143,-144,-148,-146,-130,39,-177,-178,-221,-220,-237,-87,-84,39,-233,-234,-236,-31,-34,39,39,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'CHAR':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[40,40,-60,-62,-63,-64,-65,-66,-67,40,40,-70,-71,-52,-340,-340,-340,-128,-102,40,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,40,-91,40,40,-129,-134,40,-98,-99,-100,-101,-104,-134,-90,-72,40,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,40,40,40,-76,40,-92,40,-30,40,40,40,-186,40,40,40,-152,-159,-339,40,-162,-163,-145,40,-147,40,40,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,40,-77,-73,-69,40,40,40,40,-35,-36,40,40,-171,40,-154,40,-156,-151,-160,-143,-144,-148,-146,-130,40,-177,-178,-221,-220,-237,-87,-84,40,-233,-234,-236,-31,-34,40,40,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'SHORT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[41,41,-60,-62,-63,-64,-65,-66,-67,41,41,-70,-71,-52,-340,-340,-340,-128,-102,41,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,41,-91,41,41,-129,-134,41,-98,-99,-100,-101,-104,-134,-90,-72,41,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,41,41,41,-76,41,-92,41,-30,41,41,41,-186,41,41,41,-152,-159,-339,41,-162,-163,-145,41,-147,41,41,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,41,-77,-73,-69,41,41,41,41,-35,-36,41,41,-171,41,-154,41,-156,-151,-160,-143,-144,-148,-146,-130,41,-177,-178,-221,-220,-237,-87,-84,41,-233,-234,-236,-31,-34,41,41,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'INT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[42,42,-60,-62,-63,-64,-65,-66,-67,42,42,-70,-71,-52,-340,-340,-340,-128,-102,42,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,42,-91,42,42,-129,-134,42,-98,-99,-100,-101,-104,-134,-90,-72,42,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,42,42,42,-76,42,-92,42,-30,42,42,42,-186,42,42,42,-152,-159,-339,42,-162,-163,-145,42,-147,42,42,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,42,-77,-73,-69,42,42,42,42,-35,-36,42,42,-171,42,-154,42,-156,-151,-160,-143,-144,-148,-146,-130,42,-177,-178,-221,-220,-237,-87,-84,42,-233,-234,-236,-31,-34,42,42,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'LONG':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[43,43,-60,-62,-63,-64,-65,-66,-67,43,43,-70,-71,-52,-340,-340,-340,-128,-102,43,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,43,-91,43,43,-129,-134,43,-98,-99,-100,-101,-104,-134,-90,-72,43,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,43,43,43,-76,43,-92,43,-30,43,43,43,-186,43,43,43,-152,-159,-339,43,-162,-163,-145,43,-147,43,43,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,43,-77,-73,-69,43,43,43,43,-35,-36,43,43,-171,43,-154,43,-156,-151,-160,-143,-144,-148,-146,-130,43,-177,-178,-221,-220,-237,-87,-84,43,-233,-234,-236,-31,-34,43,43,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'FLOAT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[44,44,-60,-62,-63,-64,-65,-66,-67,44,44,-70,-71,-52,-340,-340,-340,-128,-102,44,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,44,-91,44,44,-129,-134,44,-98,-99,-100,-101,-104,-134,-90,-72,44,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,44,44,44,-76,44,-92,44,-30,44,44,44,-186,44,44,44,-152,-159,-339,44,-162,-163,-145,44,-147,44,44,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,44,-77,-73,-69,44,44,44,44,-35,-36,44,44,-171,44,-154,44,-156,-151,-160,-143,-144,-148,-146,-130,44,-177,-178,-221,-220,-237,-87,-84,44,-233,-234,-236,-31,-34,44,44,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'DOUBLE':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[45,45,-60,-62,-63,-64,-65,-66,-67,45,45,-70,-71,-52,-340,-340,-340,-128,-102,45,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,45,-91,45,45,-129,-134,45,-98,-99,-100,-101,-104,-134,-90,-72,45,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,45,45,45,-76,45,-92,45,-30,45,45,45,-186,45,45,45,-152,-159,-339,45,-162,-163,-145,45,-147,45,45,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,45,-77,-73,-69,45,45,45,45,-35,-36,45,45,-171,45,-154,45,-156,-151,-160,-143,-144,-148,-146,-130,45,-177,-178,-221,-220,-237,-87,-84,45,-233,-234,-236,-31,-34,45,45,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_COMPLEX':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[46,46,-60,-62,-63,-64,-65,-66,-67,46,46,-70,-71,-52,-340,-340,-340,-128,-102,46,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,46,-91,46,46,-129,-134,46,-98,-99,-100,-101,-104,-134,-90,-72,46,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,46,46,46,-76,46,-92,46,-30,46,46,46,-186,46,46,46,-152,-159,-339,46,-162,-163,-145,46,-147,46,46,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,46,-77,-73,-69,46,46,46,46,-35,-36,46,46,-171,46,-154,46,-156,-151,-160,-143,-144,-148,-146,-130,46,-177,-178,-221,-220,-237,-87,-84,46,-233,-234,-236,-31,-34,46,46,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'SIGNED':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[47,47,-60,-62,-63,-64,-65,-66,-67,47,47,-70,-71,-52,-340,-340,-340,-128,-102,47,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,47,-91,47,47,-129,-134,47,-98,-99,-100,-101,-104,-134,-90,-72,47,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,47,47,47,-76,47,-92,47,-30,47,47,47,-186,47,47,47,-152,-159,-339,47,-162,-163,-145,47,-147,47,47,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,47,-77,-73,-69,47,47,47,47,-35,-36,47,47,-171,47,-154,47,-156,-151,-160,-143,-144,-148,-146,-130,47,-177,-178,-221,-220,-237,-87,-84,47,-233,-234,-236,-31,-34,47,47,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'UNSIGNED':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[48,48,-60,-62,-63,-64,-65,-66,-67,48,48,-70,-71,-52,-340,-340,-340,-128,-102,48,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,48,-91,48,48,-129,-134,48,-98,-99,-100,-101,-104,-134,-90,-72,48,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,48,48,48,-76,48,-92,48,-30,48,48,48,-186,48,48,48,-152,-159,-339,48,-162,-163,-145,48,-147,48,48,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,48,-77,-73,-69,48,48,48,48,-35,-36,48,48,-171,48,-154,48,-156,-151,-160,-143,-144,-148,-146,-130,48,-177,-178,-221,-220,-237,-87,-84,48,-233,-234,-236,-31,-34,48,48,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'__INT128':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,96,97,98,99,100,101,102,103,104,106,112,116,117,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[49,49,-60,-62,-63,-64,-65,-66,-67,49,49,-70,-71,-52,-340,-340,-340,-128,-102,49,-340,-29,-107,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,49,-91,49,49,-129,-134,49,-98,-99,-100,-101,-104,-134,-90,-72,49,-53,-93,-9,-10,-340,-94,-95,-103,-129,-97,-185,-96,-169,-170,-338,-149,-150,49,49,49,-76,49,-92,49,-30,49,49,49,-186,49,49,49,-152,-159,-339,49,-162,-163,-145,49,-147,49,49,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,49,-77,-73,-69,49,49,49,49,-35,-36,49,49,-171,49,-154,49,-156,-151,-160,-143,-144,-148,-146,-130,49,-177,-178,-221,-220,-237,-87,-84,49,-233,-234,-236,-31,-34,49,49,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_ATOMIC':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,70,71,72,73,74,75,76,77,78,81,90,91,95,96,97,98,99,100,101,102,103,104,106,112,115,116,117,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,193,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[50,50,-60,-62,-63,-64,-65,-66,-67,72,81,-70,-71,-52,72,72,72,-128,-102,109,72,-29,-107,81,-125,-126,-127,72,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,72,-91,81,109,72,-134,72,-98,-99,-100,-101,-104,-134,-90,-72,81,50,-53,-93,-9,-10,72,-94,-95,-103,-129,-97,81,-185,-96,-169,-170,-338,-149,-150,50,50,50,-76,72,-92,81,50,-30,50,81,81,81,109,-186,50,50,50,-152,-159,-339,81,-162,-163,-145,72,-147,81,72,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,50,-77,81,81,-73,-69,50,50,50,50,-35,-36,50,50,81,-171,50,-154,50,-156,-151,-160,-143,-144,-148,-146,-130,50,-177,-178,-221,-220,-237,-87,-84,72,-233,-234,-236,-31,-34,81,50,50,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,81,81,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'CONST':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,115,116,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[51,51,-60,-62,-63,-64,-65,-66,-67,51,51,-70,-71,-52,51,51,51,-128,-102,51,-29,-107,51,-125,-126,-127,51,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,51,-91,51,51,-134,51,-98,-99,-100,-101,-104,-134,-90,-72,51,51,-53,51,-103,-129,51,-185,-169,-170,-338,-149,-150,51,51,51,-76,51,-92,51,51,-30,51,51,51,51,-186,51,51,51,-152,-159,-339,51,-162,-163,-145,51,-147,51,51,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,51,-77,51,51,-73,-69,51,51,51,51,-35,-36,51,51,51,-171,51,-154,51,-156,-151,-160,-143,-144,-148,-146,-130,51,-177,-178,-221,-220,-237,-87,-84,51,-233,-234,-236,-31,-34,51,51,51,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,51,51,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'RESTRICT':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,115,116,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[52,52,-60,-62,-63,-64,-65,-66,-67,52,52,-70,-71,-52,52,52,52,-128,-102,52,-29,-107,52,-125,-126,-127,52,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,52,-91,52,52,-134,52,-98,-99,-100,-101,-104,-134,-90,-72,52,52,-53,52,-103,-129,52,-185,-169,-170,-338,-149,-150,52,52,52,-76,52,-92,52,52,-30,52,52,52,52,-186,52,52,52,-152,-159,-339,52,-162,-163,-145,52,-147,52,52,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,52,-77,52,52,-73,-69,52,52,52,52,-35,-36,52,52,52,-171,52,-154,52,-156,-151,-160,-143,-144,-148,-146,-130,52,-177,-178,-221,-220,-237,-87,-84,52,-233,-234,-236,-31,-34,52,52,52,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,52,52,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'VOLATILE':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,115,116,118,119,121,122,123,124,125,126,127,128,129,136,137,140,141,183,184,192,197,203,204,205,206,207,208,209,210,211,212,213,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,258,259,262,267,294,298,299,304,311,312,313,322,323,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,511,512,524,552,553,554,555,556,579,580,585,586,],[53,53,-60,-62,-63,-64,-65,-66,-67,53,53,-70,-71,-52,53,53,53,-128,-102,53,-29,-107,53,-125,-126,-127,53,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,53,-91,53,53,-134,53,-98,-99,-100,-101,-104,-134,-90,-72,53,53,-53,53,-103,-129,53,-185,-169,-170,-338,-149,-150,53,53,53,-76,53,-92,53,53,-30,53,53,53,53,-186,53,53,53,-152,-159,-339,53,-162,-163,-145,53,-147,53,53,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,53,-77,53,53,-73,-69,53,53,53,53,-35,-36,53,53,53,-171,53,-154,53,-156,-151,-160,-143,-144,-148,-146,-130,53,-177,-178,-221,-220,-237,-87,-84,53,-233,-234,-236,-31,-34,53,53,53,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,53,53,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'AUTO':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[54,54,-60,-62,-63,-64,-65,-66,-67,54,54,-70,-71,-52,54,54,54,-128,-102,54,-29,-107,-125,-126,-127,54,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,54,-91,54,54,-134,54,-98,-99,-100,-101,-104,-134,-90,-72,54,-53,54,-103,-129,-169,-170,-338,-149,-150,-76,54,-92,54,-30,54,-152,-339,54,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,54,54,-171,-154,-156,-151,-130,54,-177,-178,-221,-220,-237,-87,-84,54,-233,-234,-236,-31,-34,54,54,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'REGISTER':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[55,55,-60,-62,-63,-64,-65,-66,-67,55,55,-70,-71,-52,55,55,55,-128,-102,55,-29,-107,-125,-126,-127,55,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,55,-91,55,55,-134,55,-98,-99,-100,-101,-104,-134,-90,-72,55,-53,55,-103,-129,-169,-170,-338,-149,-150,-76,55,-92,55,-30,55,-152,-339,55,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,55,55,-171,-154,-156,-151,-130,55,-177,-178,-221,-220,-237,-87,-84,55,-233,-234,-236,-31,-34,55,55,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'STATIC':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,95,96,97,101,104,106,116,118,119,121,122,123,127,128,129,136,137,140,184,192,197,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,259,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,448,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,512,524,552,553,554,555,556,579,580,585,586,],[29,29,-60,-62,-63,-64,-65,-66,-67,29,29,-70,-71,-52,29,29,29,-128,-102,29,-29,-107,-125,-126,-127,29,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,29,-91,29,29,-134,29,-98,-99,-100,-101,-104,-134,-90,-72,183,29,-53,29,-103,-129,-185,-169,-170,-338,-149,-150,-76,29,-92,258,29,-30,310,29,-186,-152,-339,29,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,402,-73,-69,-35,-36,29,29,-171,-154,-156,-151,-130,29,-177,-178,-221,-220,-237,-87,-84,29,-233,-234,-236,-31,-34,511,29,29,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,545,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'EXTERN':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[56,56,-60,-62,-63,-64,-65,-66,-67,56,56,-70,-71,-52,56,56,56,-128,-102,56,-29,-107,-125,-126,-127,56,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,56,-91,56,56,-134,56,-98,-99,-100,-101,-104,-134,-90,-72,56,-53,56,-103,-129,-169,-170,-338,-149,-150,-76,56,-92,56,-30,56,-152,-339,56,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,56,56,-171,-154,-156,-151,-130,56,-177,-178,-221,-220,-237,-87,-84,56,-233,-234,-236,-31,-34,56,56,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'TYPEDEF':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[57,57,-60,-62,-63,-64,-65,-66,-67,57,57,-70,-71,-52,57,57,57,-128,-102,57,-29,-107,-125,-126,-127,57,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,57,-91,57,57,-134,57,-98,-99,-100,-101,-104,-134,-90,-72,57,-53,57,-103,-129,-169,-170,-338,-149,-150,-76,57,-92,57,-30,57,-152,-339,57,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,57,57,-171,-154,-156,-151,-130,57,-177,-178,-221,-220,-237,-87,-84,57,-233,-234,-236,-31,-34,57,57,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_THREAD_LOCAL':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[58,58,-60,-62,-63,-64,-65,-66,-67,58,58,-70,-71,-52,58,58,58,-128,-102,58,-29,-107,-125,-126,-127,58,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,58,-91,58,58,-134,58,-98,-99,-100,-101,-104,-134,-90,-72,58,-53,58,-103,-129,-169,-170,-338,-149,-150,-76,58,-92,58,-30,58,-152,-339,58,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,58,58,-171,-154,-156,-151,-130,58,-177,-178,-221,-220,-237,-87,-84,58,-233,-234,-236,-31,-34,58,58,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'INLINE':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[59,59,-60,-62,-63,-64,-65,-66,-67,59,59,-70,-71,-52,59,59,59,-128,-102,59,-29,-107,-125,-126,-127,59,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,59,-91,59,59,-134,59,-98,-99,-100,-101,-104,-134,-90,-72,59,-53,59,-103,-129,-169,-170,-338,-149,-150,-76,59,-92,59,-30,59,-152,-339,59,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,59,59,-171,-154,-156,-151,-130,59,-177,-178,-221,-220,-237,-87,-84,59,-233,-234,-236,-31,-34,59,59,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_NORETURN':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,127,128,129,137,140,192,206,208,221,222,223,224,225,226,227,228,229,230,231,232,251,262,267,311,312,313,322,330,334,336,337,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[60,60,-60,-62,-63,-64,-65,-66,-67,60,60,-70,-71,-52,60,60,60,-128,-102,60,-29,-107,-125,-126,-127,60,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,60,-91,60,60,-134,60,-98,-99,-100,-101,-104,-134,-90,-72,60,-53,60,-103,-129,-169,-170,-338,-149,-150,-76,60,-92,60,-30,60,-152,-339,60,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-77,-73,-69,-35,-36,60,60,-171,-154,-156,-151,-130,60,-177,-178,-221,-220,-237,-87,-84,60,-233,-234,-236,-31,-34,60,60,-172,-173,-153,-155,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'_ALIGNAS':([0,2,4,5,6,7,8,9,10,11,12,14,15,19,21,22,23,24,25,27,28,29,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,64,67,68,69,71,72,73,74,75,76,77,78,81,90,91,96,97,101,104,106,118,119,121,122,123,124,125,126,127,128,129,137,140,141,192,203,204,205,206,207,208,209,210,211,212,214,216,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,330,333,334,335,336,337,338,340,341,342,348,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,459,460,463,464,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[61,61,-60,-62,-63,-64,-65,-66,-67,61,61,-70,-71,-52,61,61,61,-128,-102,61,-29,-107,-125,-126,-127,61,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,61,-91,61,61,-134,61,-98,-99,-100,-101,-104,-134,-90,-72,61,-53,61,-103,-129,-169,-170,-338,-149,-150,61,61,61,-76,61,-92,61,-30,61,61,61,61,61,-152,-159,-339,61,-162,-163,-145,-147,61,61,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,61,-77,-73,-69,61,61,61,61,-35,-36,61,61,-171,61,-154,61,-156,-151,-160,-143,-144,-148,-146,-130,61,-177,-178,-221,-220,-237,-87,-84,61,-233,-234,-236,-31,-34,61,61,-172,-173,-153,-155,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'STRUCT':([0,2,4,5,6,7,8,9,10,11,14,15,19,21,22,23,26,27,28,29,34,50,51,52,53,54,55,56,57,58,59,60,64,67,68,70,71,72,73,90,91,96,97,98,99,100,101,102,103,112,116,117,121,124,125,126,127,128,129,137,140,141,193,197,203,204,205,207,208,210,211,213,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,333,335,338,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[62,62,-60,-62,-63,-64,-65,-66,-67,62,-70,-71,-52,-340,-340,-340,62,-340,-29,-107,-340,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,62,-91,62,-340,-134,62,-90,-72,62,-53,-93,-9,-10,-340,-94,-95,-97,-185,-96,-338,62,62,62,-76,62,-92,62,-30,62,62,-186,62,62,62,-159,-339,-162,-163,62,62,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,62,-77,-73,-69,62,62,62,62,-35,-36,62,62,62,62,-160,-130,62,-177,-178,-221,-220,-237,-87,-84,62,-233,-234,-236,-31,-34,62,62,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'UNION':([0,2,4,5,6,7,8,9,10,11,14,15,19,21,22,23,26,27,28,29,34,50,51,52,53,54,55,56,57,58,59,60,64,67,68,70,71,72,73,90,91,96,97,98,99,100,101,102,103,112,116,117,121,124,125,126,127,128,129,137,140,141,193,197,203,204,205,207,208,210,211,213,221,222,223,224,225,226,227,228,229,230,231,232,238,251,262,267,294,298,299,304,311,312,313,322,333,335,338,349,351,353,354,355,356,361,370,371,372,374,375,377,439,440,449,458,465,469,471,479,480,483,484,499,508,509,524,552,553,554,555,556,579,580,585,586,],[63,63,-60,-62,-63,-64,-65,-66,-67,63,-70,-71,-52,-340,-340,-340,63,-340,-29,-107,-340,-134,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-61,63,-91,63,-340,-134,63,-90,-72,63,-53,-93,-9,-10,-340,-94,-95,-97,-185,-96,-338,63,63,63,-76,63,-92,63,-30,63,63,-186,63,63,63,-159,-339,-162,-163,63,63,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,63,-77,-73,-69,63,63,63,63,-35,-36,63,63,63,63,-160,-130,63,-177,-178,-221,-220,-237,-87,-84,63,-233,-234,-236,-31,-34,63,63,-161,-222,-224,-86,-84,-232,-235,-68,-32,-33,-223,-225,-87,-84,-227,-228,-226,-229,-231,-230,]),'LBRACE':([11,15,19,28,36,37,62,63,65,66,67,68,73,90,91,97,118,119,121,122,123,128,129,131,135,140,195,208,221,222,223,224,225,226,227,228,229,230,231,232,238,242,256,262,267,311,312,355,356,358,360,361,369,370,371,374,375,377,392,393,394,405,439,440,469,470,471,474,479,480,483,484,487,489,498,499,504,505,508,509,524,525,526,527,532,533,552,553,554,555,556,562,570,579,580,582,584,585,586,],[-340,-71,-52,-29,121,121,-157,-158,121,-7,-8,-91,-340,-90,-72,-53,121,121,-338,121,121,121,-92,121,121,-30,121,-339,121,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,121,121,-340,-73,-69,-35,-36,-221,-220,121,121,-237,121,-87,-74,-233,-234,-236,-11,121,-12,121,-31,-34,-222,121,-224,121,-86,-75,-232,-235,-340,-201,-340,-68,121,121,-32,-33,-223,121,121,121,121,-11,-225,-87,-74,-227,-228,-340,121,-226,-229,121,121,-231,-230,]),'RBRACE':([15,90,91,121,124,128,139,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,200,201,202,203,204,205,207,208,210,211,219,220,221,222,223,224,225,226,227,228,229,230,231,232,249,250,255,256,262,263,267,291,292,293,295,296,297,300,301,302,303,328,329,331,333,335,338,355,356,361,370,371,374,375,377,390,391,392,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,461,462,465,469,471,473,479,480,483,484,485,486,487,488,497,499,501,502,505,506,524,531,537,538,552,553,554,555,556,560,561,562,563,574,579,580,585,586,],[-71,-90,-72,-338,208,-340,-328,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,208,-174,-179,208,208,208,-159,-339,-162,-163,208,-5,-6,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-242,-277,-196,-340,-73,-329,-69,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,208,208,-175,208,208,-160,-221,-220,-237,-87,-84,-233,-234,-236,208,-22,-21,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-176,-180,-161,-222,-224,-240,-86,-84,-232,-235,-243,-197,208,-199,-278,-68,-293,-294,-284,-285,-223,-198,208,-257,-225,-87,-84,-227,-228,-200,-302,208,-309,-303,-226,-229,-231,-230,]),'CASE':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,234,-339,234,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,234,-73,-69,-221,-220,234,234,-237,234,-87,-74,-233,-234,-236,-222,234,-224,-86,-75,-232,-235,-68,-223,234,234,234,-225,-87,-74,-227,-228,234,-226,-229,234,234,-231,-230,]),'DEFAULT':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,235,-339,235,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,235,-73,-69,-221,-220,235,235,-237,235,-87,-74,-233,-234,-236,-222,235,-224,-86,-75,-232,-235,-68,-223,235,235,235,-225,-87,-74,-227,-228,235,-226,-229,235,235,-231,-230,]),'IF':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,237,-339,237,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,237,-73,-69,-221,-220,237,237,-237,237,-87,-74,-233,-234,-236,-222,237,-224,-86,-75,-232,-235,-68,-223,237,237,237,-225,-87,-74,-227,-228,237,-226,-229,237,237,-231,-230,]),'SWITCH':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,240,-339,240,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,240,-73,-69,-221,-220,240,240,-237,240,-87,-74,-233,-234,-236,-222,240,-224,-86,-75,-232,-235,-68,-223,240,240,240,-225,-87,-74,-227,-228,240,-226,-229,240,240,-231,-230,]),'WHILE':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,368,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,241,-339,241,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,241,-73,-69,-221,-220,241,241,-237,478,241,-87,-74,-233,-234,-236,-222,241,-224,-86,-75,-232,-235,-68,-223,241,241,241,-225,-87,-74,-227,-228,241,-226,-229,241,241,-231,-230,]),'DO':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,242,-339,242,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,242,-73,-69,-221,-220,242,242,-237,242,-87,-74,-233,-234,-236,-222,242,-224,-86,-75,-232,-235,-68,-223,242,242,242,-225,-87,-74,-227,-228,242,-226,-229,242,242,-231,-230,]),'FOR':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,243,-339,243,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,243,-73,-69,-221,-220,243,243,-237,243,-87,-74,-233,-234,-236,-222,243,-224,-86,-75,-232,-235,-68,-223,243,243,243,-225,-87,-74,-227,-228,243,-226,-229,243,243,-231,-230,]),'GOTO':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,244,-339,244,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,244,-73,-69,-221,-220,244,244,-237,244,-87,-74,-233,-234,-236,-222,244,-224,-86,-75,-232,-235,-68,-223,244,244,244,-225,-87,-74,-227,-228,244,-226,-229,244,244,-231,-230,]),'BREAK':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,245,-339,245,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,245,-73,-69,-221,-220,245,245,-237,245,-87,-74,-233,-234,-236,-222,245,-224,-86,-75,-232,-235,-68,-223,245,245,245,-225,-87,-74,-227,-228,245,-226,-229,245,245,-231,-230,]),'CONTINUE':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,246,-339,246,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,246,-73,-69,-221,-220,246,246,-237,246,-87,-74,-233,-234,-236,-222,246,-224,-86,-75,-232,-235,-68,-223,246,246,246,-225,-87,-74,-227,-228,246,-226,-229,246,246,-231,-230,]),'RETURN':([15,90,91,121,128,208,221,222,223,224,225,226,227,228,229,230,231,232,242,262,267,355,356,358,360,361,369,370,371,374,375,377,469,470,471,479,480,483,484,499,524,525,526,527,552,553,554,555,556,570,579,580,582,584,585,586,],[-71,-90,-72,-338,247,-339,247,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,247,-73,-69,-221,-220,247,247,-237,247,-87,-74,-233,-234,-236,-222,247,-224,-86,-75,-232,-235,-68,-223,247,247,247,-225,-87,-74,-227,-228,247,-226,-229,247,247,-231,-230,]),'PLUSPLUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,147,148,149,150,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,501,502,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,153,-340,-27,-28,-185,-338,153,153,153,-340,-328,153,-306,-287,-288,-289,-286,291,153,153,153,153,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,153,-340,-28,153,-186,-339,153,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,153,153,153,153,-340,153,-340,-28,-73,-329,-69,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,-300,-301,153,153,-334,-335,-336,-337,-287,153,153,-340,153,153,-221,-220,153,153,-237,153,153,153,153,153,-87,-74,153,-233,-234,-236,153,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,153,-12,153,-287,153,153,153,-308,-295,-296,-297,-298,-299,-340,153,153,153,-222,153,-224,153,-86,-75,153,-232,-235,-340,-201,-340,-68,153,-293,-294,153,153,-340,-28,-287,-223,153,153,153,153,153,153,-11,-287,153,153,-225,-87,-74,-227,-228,153,-302,-340,-309,153,153,153,-303,-226,-229,153,153,-231,-230,]),'MINUSMINUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,147,148,149,150,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,501,502,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,154,-340,-27,-28,-185,-338,154,154,154,-340,-328,154,-306,-287,-288,-289,-286,292,154,154,154,154,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,154,-340,-28,154,-186,-339,154,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,154,154,154,154,-340,154,-340,-28,-73,-329,-69,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,-300,-301,154,154,-334,-335,-336,-337,-287,154,154,-340,154,154,-221,-220,154,154,-237,154,154,154,154,154,-87,-74,154,-233,-234,-236,154,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,154,-12,154,-287,154,154,154,-308,-295,-296,-297,-298,-299,-340,154,154,154,-222,154,-224,154,-86,-75,154,-232,-235,-340,-201,-340,-68,154,-293,-294,154,154,-340,-28,-287,-223,154,154,154,154,154,154,-11,-287,154,154,-225,-87,-74,-227,-228,154,-302,-340,-309,154,154,154,-303,-226,-229,154,154,-231,-230,]),'SIZEOF':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,156,-340,-27,-28,-185,-338,156,156,156,-340,156,-287,-288,-289,-286,156,156,156,156,-290,-291,156,-340,-28,156,-186,-339,156,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,156,156,156,156,-340,156,-340,-28,-73,-69,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,-287,156,156,-340,156,156,-221,-220,156,156,-237,156,156,156,156,156,-87,-74,156,-233,-234,-236,156,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,156,-12,156,-287,156,156,156,-340,156,156,156,-222,156,-224,156,-86,-75,156,-232,-235,-340,-201,-340,-68,156,156,156,-340,-28,-287,-223,156,156,156,156,156,156,-11,-287,156,156,-225,-87,-74,-227,-228,156,-340,156,156,156,-226,-229,156,156,-231,-230,]),'_ALIGNOF':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,157,-340,-27,-28,-185,-338,157,157,157,-340,157,-287,-288,-289,-286,157,157,157,157,-290,-291,157,-340,-28,157,-186,-339,157,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,157,157,157,157,-340,157,-340,-28,-73,-69,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,-287,157,157,-340,157,157,-221,-220,157,157,-237,157,157,157,157,157,-87,-74,157,-233,-234,-236,157,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,157,-12,157,-287,157,157,157,-340,157,157,157,-222,157,-224,157,-86,-75,157,-232,-235,-340,-201,-340,-68,157,157,157,-340,-28,-287,-223,157,157,157,157,157,157,-11,-287,157,157,-225,-87,-74,-227,-228,157,-340,157,157,157,-226,-229,157,157,-231,-230,]),'AND':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,150,-340,-27,-28,-185,-338,150,150,150,-340,-328,150,-306,282,-258,-287,-288,-289,-286,-277,-279,150,150,150,150,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,150,-340,-28,150,-186,-339,150,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,150,150,150,150,-277,-340,150,-340,-28,-73,-329,-69,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,-300,-301,-280,150,-281,-282,-283,150,-334,-335,-336,-337,-287,150,150,-340,150,150,-221,-220,150,150,-237,150,150,150,150,150,-87,-74,150,-233,-234,-236,150,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,150,-12,150,-287,150,150,150,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,282,282,282,282,-295,-296,-297,-298,-299,-340,150,150,150,-222,150,-224,150,-86,-75,150,-232,-235,-340,-201,-278,-340,-68,150,-293,-294,150,-284,-285,150,-340,-28,-287,-223,150,150,150,150,150,150,-11,-287,150,150,-225,-87,-74,-227,-228,150,-302,-340,-309,150,150,150,-303,-226,-229,150,150,-231,-230,]),'PLUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,148,-340,-27,-28,-185,-338,148,148,148,-340,-328,148,-306,272,-258,-287,-288,-289,-286,-277,-279,148,148,148,148,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,148,-340,-28,148,-186,-339,148,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,148,148,148,148,-277,-340,148,-340,-28,-73,-329,-69,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,-300,-301,-280,148,-281,-282,-283,148,-334,-335,-336,-337,-287,148,148,-340,148,148,-221,-220,148,148,-237,148,148,148,148,148,-87,-74,148,-233,-234,-236,148,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,148,-12,148,-287,148,148,148,-308,-259,-260,-261,-262,-263,272,272,272,272,272,272,272,272,272,272,272,272,272,-295,-296,-297,-298,-299,-340,148,148,148,-222,148,-224,148,-86,-75,148,-232,-235,-340,-201,-278,-340,-68,148,-293,-294,148,-284,-285,148,-340,-28,-287,-223,148,148,148,148,148,148,-11,-287,148,148,-225,-87,-74,-227,-228,148,-302,-340,-309,148,148,148,-303,-226,-229,148,148,-231,-230,]),'MINUS':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,139,141,143,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,233,234,238,242,247,250,256,257,258,259,262,263,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,291,292,293,294,295,296,297,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,497,498,499,500,501,502,503,505,506,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,561,562,563,565,570,572,574,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,149,-340,-27,-28,-185,-338,149,149,149,-340,-328,149,-306,273,-258,-287,-288,-289,-286,-277,-279,149,149,149,149,-292,-315,-290,-291,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,149,-340,-28,149,-186,-339,149,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,-315,149,149,149,149,-277,-340,149,-340,-28,-73,-329,-69,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,-300,-301,-280,149,-281,-282,-283,149,-334,-335,-336,-337,-287,149,149,-340,149,149,-221,-220,149,149,-237,149,149,149,149,149,-87,-74,149,-233,-234,-236,149,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,149,-12,149,-287,149,149,149,-308,-259,-260,-261,-262,-263,273,273,273,273,273,273,273,273,273,273,273,273,273,-295,-296,-297,-298,-299,-340,149,149,149,-222,149,-224,149,-86,-75,149,-232,-235,-340,-201,-278,-340,-68,149,-293,-294,149,-284,-285,149,-340,-28,-287,-223,149,149,149,149,149,149,-11,-287,149,149,-225,-87,-74,-227,-228,149,-302,-340,-309,149,149,149,-303,-226,-229,149,149,-231,-230,]),'NOT':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,160,-340,-27,-28,-185,-338,160,160,160,-340,160,-287,-288,-289,-286,160,160,160,160,-290,-291,160,-340,-28,160,-186,-339,160,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,160,160,160,160,-340,160,-340,-28,-73,-69,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,-287,160,160,-340,160,160,-221,-220,160,160,-237,160,160,160,160,160,-87,-74,160,-233,-234,-236,160,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,160,-12,160,-287,160,160,160,-340,160,160,160,-222,160,-224,160,-86,-75,160,-232,-235,-340,-201,-340,-68,160,160,160,-340,-28,-287,-223,160,160,160,160,160,160,-11,-287,160,160,-225,-87,-74,-227,-228,160,-340,160,160,160,-226,-229,160,160,-231,-230,]),'LNOT':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,161,-340,-27,-28,-185,-338,161,161,161,-340,161,-287,-288,-289,-286,161,161,161,161,-290,-291,161,-340,-28,161,-186,-339,161,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,161,161,161,161,-340,161,-340,-28,-73,-69,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,-287,161,161,-340,161,161,-221,-220,161,161,-237,161,161,161,161,161,-87,-74,161,-233,-234,-236,161,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,161,-12,161,-287,161,161,161,-340,161,161,161,-222,161,-224,161,-86,-75,161,-232,-235,-340,-201,-340,-68,161,161,161,-340,-28,-287,-223,161,161,161,161,161,161,-11,-287,161,161,-225,-87,-74,-227,-228,161,-340,161,161,161,-226,-229,161,161,-231,-230,]),'OFFSETOF':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,165,-340,-27,-28,-185,-338,165,165,165,-340,165,-287,-288,-289,-286,165,165,165,165,-290,-291,165,-340,-28,165,-186,-339,165,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,165,165,165,165,-340,165,-340,-28,-73,-69,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,-287,165,165,-340,165,165,-221,-220,165,165,-237,165,165,165,165,165,-87,-74,165,-233,-234,-236,165,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,165,-12,165,-287,165,165,165,-340,165,165,165,-222,165,-224,165,-86,-75,165,-232,-235,-340,-201,-340,-68,165,165,165,-340,-28,-287,-223,165,165,165,165,165,165,-11,-287,165,165,-225,-87,-74,-227,-228,165,-340,165,165,165,-226,-229,165,165,-231,-230,]),'INT_CONST_DEC':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,166,-340,-27,-28,-185,-338,166,166,166,-340,166,-287,-288,-289,-286,166,166,166,166,-290,-291,166,-340,-28,166,-186,-339,166,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,166,166,166,166,-340,166,-340,-28,-73,-69,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,-287,166,166,-340,166,166,-221,-220,166,166,-237,166,166,166,166,166,-87,-74,166,-233,-234,-236,166,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,166,-12,166,-287,166,166,166,-340,166,166,166,-222,166,-224,166,-86,-75,166,-232,-235,-340,-201,-340,-68,166,166,166,-340,-28,-287,-223,166,166,166,166,166,166,-11,-287,166,166,-225,-87,-74,-227,-228,166,-340,166,166,166,-226,-229,166,166,-231,-230,]),'INT_CONST_OCT':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,167,-340,-27,-28,-185,-338,167,167,167,-340,167,-287,-288,-289,-286,167,167,167,167,-290,-291,167,-340,-28,167,-186,-339,167,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,167,167,167,167,-340,167,-340,-28,-73,-69,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,-287,167,167,-340,167,167,-221,-220,167,167,-237,167,167,167,167,167,-87,-74,167,-233,-234,-236,167,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,167,-12,167,-287,167,167,167,-340,167,167,167,-222,167,-224,167,-86,-75,167,-232,-235,-340,-201,-340,-68,167,167,167,-340,-28,-287,-223,167,167,167,167,167,167,-11,-287,167,167,-225,-87,-74,-227,-228,167,-340,167,167,167,-226,-229,167,167,-231,-230,]),'INT_CONST_HEX':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,168,-340,-27,-28,-185,-338,168,168,168,-340,168,-287,-288,-289,-286,168,168,168,168,-290,-291,168,-340,-28,168,-186,-339,168,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,168,168,168,168,-340,168,-340,-28,-73,-69,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,-287,168,168,-340,168,168,-221,-220,168,168,-237,168,168,168,168,168,-87,-74,168,-233,-234,-236,168,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,168,-12,168,-287,168,168,168,-340,168,168,168,-222,168,-224,168,-86,-75,168,-232,-235,-340,-201,-340,-68,168,168,168,-340,-28,-287,-223,168,168,168,168,168,168,-11,-287,168,168,-225,-87,-74,-227,-228,168,-340,168,168,168,-226,-229,168,168,-231,-230,]),'INT_CONST_BIN':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,169,-340,-27,-28,-185,-338,169,169,169,-340,169,-287,-288,-289,-286,169,169,169,169,-290,-291,169,-340,-28,169,-186,-339,169,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,169,169,169,169,-340,169,-340,-28,-73,-69,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,-287,169,169,-340,169,169,-221,-220,169,169,-237,169,169,169,169,169,-87,-74,169,-233,-234,-236,169,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,169,-12,169,-287,169,169,169,-340,169,169,169,-222,169,-224,169,-86,-75,169,-232,-235,-340,-201,-340,-68,169,169,169,-340,-28,-287,-223,169,169,169,169,169,169,-11,-287,169,169,-225,-87,-74,-227,-228,169,-340,169,169,169,-226,-229,169,169,-231,-230,]),'INT_CONST_CHAR':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,170,-340,-27,-28,-185,-338,170,170,170,-340,170,-287,-288,-289,-286,170,170,170,170,-290,-291,170,-340,-28,170,-186,-339,170,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,170,170,170,170,-340,170,-340,-28,-73,-69,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,-287,170,170,-340,170,170,-221,-220,170,170,-237,170,170,170,170,170,-87,-74,170,-233,-234,-236,170,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,170,-12,170,-287,170,170,170,-340,170,170,170,-222,170,-224,170,-86,-75,170,-232,-235,-340,-201,-340,-68,170,170,170,-340,-28,-287,-223,170,170,170,170,170,170,-11,-287,170,170,-225,-87,-74,-227,-228,170,-340,170,170,170,-226,-229,170,170,-231,-230,]),'FLOAT_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,171,-340,-27,-28,-185,-338,171,171,171,-340,171,-287,-288,-289,-286,171,171,171,171,-290,-291,171,-340,-28,171,-186,-339,171,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,171,171,171,171,-340,171,-340,-28,-73,-69,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,-287,171,171,-340,171,171,-221,-220,171,171,-237,171,171,171,171,171,-87,-74,171,-233,-234,-236,171,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,171,-12,171,-287,171,171,171,-340,171,171,171,-222,171,-224,171,-86,-75,171,-232,-235,-340,-201,-340,-68,171,171,171,-340,-28,-287,-223,171,171,171,171,171,171,-11,-287,171,171,-225,-87,-74,-227,-228,171,-340,171,171,171,-226,-229,171,171,-231,-230,]),'HEX_FLOAT_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,172,-340,-27,-28,-185,-338,172,172,172,-340,172,-287,-288,-289,-286,172,172,172,172,-290,-291,172,-340,-28,172,-186,-339,172,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,172,172,172,172,-340,172,-340,-28,-73,-69,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,-287,172,172,-340,172,172,-221,-220,172,172,-237,172,172,172,172,172,-87,-74,172,-233,-234,-236,172,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,172,-12,172,-287,172,172,172,-340,172,172,172,-222,172,-224,172,-86,-75,172,-232,-235,-340,-201,-340,-68,172,172,172,-340,-28,-287,-223,172,172,172,172,172,172,-11,-287,172,172,-225,-87,-74,-227,-228,172,-340,172,172,172,-226,-229,172,172,-231,-230,]),'CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,173,-340,-27,-28,-185,-338,173,173,173,-340,173,-287,-288,-289,-286,173,173,173,173,-290,-291,173,-340,-28,173,-186,-339,173,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,173,173,173,173,-340,173,-340,-28,-73,-69,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,-287,173,173,-340,173,173,-221,-220,173,173,-237,173,173,173,173,173,-87,-74,173,-233,-234,-236,173,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,173,-12,173,-287,173,173,173,-340,173,173,173,-222,173,-224,173,-86,-75,173,-232,-235,-340,-201,-340,-68,173,173,173,-340,-28,-287,-223,173,173,173,173,173,173,-11,-287,173,173,-225,-87,-74,-227,-228,173,-340,173,173,173,-226,-229,173,173,-231,-230,]),'WCHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,174,-340,-27,-28,-185,-338,174,174,174,-340,174,-287,-288,-289,-286,174,174,174,174,-290,-291,174,-340,-28,174,-186,-339,174,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,174,174,174,174,-340,174,-340,-28,-73,-69,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,-287,174,174,-340,174,174,-221,-220,174,174,-237,174,174,174,174,174,-87,-74,174,-233,-234,-236,174,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,174,-12,174,-287,174,174,174,-340,174,174,174,-222,174,-224,174,-86,-75,174,-232,-235,-340,-201,-340,-68,174,174,174,-340,-28,-287,-223,174,174,174,174,174,174,-11,-287,174,174,-225,-87,-74,-227,-228,174,-340,174,174,174,-226,-229,174,174,-231,-230,]),'U8CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,175,-340,-27,-28,-185,-338,175,175,175,-340,175,-287,-288,-289,-286,175,175,175,175,-290,-291,175,-340,-28,175,-186,-339,175,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,175,175,175,175,-340,175,-340,-28,-73,-69,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,-287,175,175,-340,175,175,-221,-220,175,175,-237,175,175,175,175,175,-87,-74,175,-233,-234,-236,175,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,175,-12,175,-287,175,175,175,-340,175,175,175,-222,175,-224,175,-86,-75,175,-232,-235,-340,-201,-340,-68,175,175,175,-340,-28,-287,-223,175,175,175,175,175,175,-11,-287,175,175,-225,-87,-74,-227,-228,175,-340,175,175,175,-226,-229,175,175,-231,-230,]),'U16CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,176,-340,-27,-28,-185,-338,176,176,176,-340,176,-287,-288,-289,-286,176,176,176,176,-290,-291,176,-340,-28,176,-186,-339,176,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,176,176,176,176,-340,176,-340,-28,-73,-69,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,-287,176,176,-340,176,176,-221,-220,176,176,-237,176,176,176,176,176,-87,-74,176,-233,-234,-236,176,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,176,-12,176,-287,176,176,176,-340,176,176,176,-222,176,-224,176,-86,-75,176,-232,-235,-340,-201,-340,-68,176,176,176,-340,-28,-287,-223,176,176,176,176,176,176,-11,-287,176,176,-225,-87,-74,-227,-228,176,-340,176,176,176,-226,-229,176,176,-231,-230,]),'U32CHAR_CONST':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,177,-340,-27,-28,-185,-338,177,177,177,-340,177,-287,-288,-289,-286,177,177,177,177,-290,-291,177,-340,-28,177,-186,-339,177,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,177,177,177,177,-340,177,-340,-28,-73,-69,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,-287,177,177,-340,177,177,-221,-220,177,177,-237,177,177,177,177,177,-87,-74,177,-233,-234,-236,177,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,177,-12,177,-287,177,177,177,-340,177,177,177,-222,177,-224,177,-86,-75,177,-232,-235,-340,-201,-340,-68,177,177,177,-340,-28,-287,-223,177,177,177,177,177,177,-11,-287,177,177,-225,-87,-74,-227,-228,177,-340,177,177,177,-226,-229,177,177,-231,-230,]),'STRING_LITERAL':([15,51,52,53,81,90,91,92,94,95,114,115,116,121,126,128,135,136,138,139,141,143,147,148,149,150,153,154,155,156,160,161,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,263,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,407,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,139,139,-340,-27,-28,-185,-338,139,139,139,-340,263,-328,139,263,-287,-288,-289,-286,139,139,139,139,-290,-291,139,-340,-28,139,-186,-339,139,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,139,139,139,139,-340,139,-340,-28,-73,-329,139,-69,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,-287,139,139,-340,139,139,-221,-220,139,139,-237,139,139,139,139,139,-87,-74,139,-233,-234,-236,139,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,139,-12,139,-287,139,139,139,263,-340,139,139,139,-222,139,-224,139,-86,-75,139,-232,-235,-340,-201,-340,-68,139,139,139,-340,-28,-287,-223,139,139,139,139,139,139,-11,-287,139,139,-225,-87,-74,-227,-228,139,-340,139,139,139,-226,-229,139,139,-231,-230,]),'WSTRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,178,-340,-27,-28,-185,-338,178,178,178,-340,178,-287,-288,-289,-286,178,178,178,178,-290,-291,300,-330,-331,-332,-333,178,-340,-28,178,-186,-339,178,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,178,178,178,178,-340,178,-340,-28,-73,-69,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,-334,-335,-336,-337,-287,178,178,-340,178,178,-221,-220,178,178,-237,178,178,178,178,178,-87,-74,178,-233,-234,-236,178,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,178,-12,178,-287,178,178,178,-340,178,178,178,-222,178,-224,178,-86,-75,178,-232,-235,-340,-201,-340,-68,178,178,178,-340,-28,-287,-223,178,178,178,178,178,178,-11,-287,178,178,-225,-87,-74,-227,-228,178,-340,178,178,178,-226,-229,178,178,-231,-230,]),'U8STRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,179,-340,-27,-28,-185,-338,179,179,179,-340,179,-287,-288,-289,-286,179,179,179,179,-290,-291,301,-330,-331,-332,-333,179,-340,-28,179,-186,-339,179,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,179,179,179,179,-340,179,-340,-28,-73,-69,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,-334,-335,-336,-337,-287,179,179,-340,179,179,-221,-220,179,179,-237,179,179,179,179,179,-87,-74,179,-233,-234,-236,179,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,179,-12,179,-287,179,179,179,-340,179,179,179,-222,179,-224,179,-86,-75,179,-232,-235,-340,-201,-340,-68,179,179,179,-340,-28,-287,-223,179,179,179,179,179,179,-11,-287,179,179,-225,-87,-74,-227,-228,179,-340,179,179,179,-226,-229,179,179,-231,-230,]),'U16STRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,180,-340,-27,-28,-185,-338,180,180,180,-340,180,-287,-288,-289,-286,180,180,180,180,-290,-291,302,-330,-331,-332,-333,180,-340,-28,180,-186,-339,180,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,180,180,180,180,-340,180,-340,-28,-73,-69,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,-334,-335,-336,-337,-287,180,180,-340,180,180,-221,-220,180,180,-237,180,180,180,180,180,-87,-74,180,-233,-234,-236,180,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,180,-12,180,-287,180,180,180,-340,180,180,180,-222,180,-224,180,-86,-75,180,-232,-235,-340,-201,-340,-68,180,180,180,-340,-28,-287,-223,180,180,180,180,180,180,-11,-287,180,180,-225,-87,-74,-227,-228,180,-340,180,180,180,-226,-229,180,180,-231,-230,]),'U32STRING_LITERAL':([15,51,52,53,81,90,91,94,95,114,115,116,121,126,128,135,136,141,147,148,149,150,153,154,155,156,160,161,164,178,179,180,181,182,183,184,195,197,208,221,222,223,224,225,226,227,228,229,230,231,232,234,238,242,247,256,257,258,259,262,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,300,301,302,303,306,309,310,323,332,347,355,356,358,360,361,362,365,366,367,369,370,371,372,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,392,393,394,397,400,401,402,405,448,455,457,467,469,470,471,474,479,480,482,483,484,487,489,498,499,500,503,510,511,512,520,524,525,526,527,528,529,532,533,543,544,545,552,553,554,555,556,559,562,565,570,572,579,580,582,584,585,586,],[-71,-131,-132,-133,-134,-90,-72,181,-340,-27,-28,-185,-338,181,181,181,-340,181,-287,-288,-289,-286,181,181,181,181,-290,-291,303,-330,-331,-332,-333,181,-340,-28,181,-186,-339,181,-219,-217,-218,-78,-79,-80,-81,-82,-83,-84,-85,181,181,181,181,-340,181,-340,-28,-73,-69,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,-334,-335,-336,-337,-287,181,181,-340,181,181,-221,-220,181,181,-237,181,181,181,181,181,-87,-74,181,-233,-234,-236,181,-244,-245,-246,-247,-248,-249,-250,-251,-252,-253,-254,-11,181,-12,181,-287,181,181,181,-340,181,181,181,-222,181,-224,181,-86,-75,181,-232,-235,-340,-201,-340,-68,181,181,181,-340,-28,-287,-223,181,181,181,181,181,181,-11,-287,181,181,-225,-87,-74,-227,-228,181,-340,181,181,181,-226,-229,181,181,-231,-230,]),'ELSE':([15,91,208,225,226,227,228,229,230,232,262,267,355,361,370,371,374,375,377,469,471,479,480,483,484,499,524,552,553,554,555,556,579,580,585,586,],[-71,-72,-339,-78,-79,-80,-81,-82,-83,-85,-73,-69,-221,-237,-87,-84,-233,-234,-236,-222,-224,-86,-84,-232,-235,-68,-223,-225,570,-84,-227,-228,-226,-229,-231,-230,]),'PPPRAGMASTR':([15,],[91,]),'EQUALS':([19,28,73,86,87,88,89,97,111,130,132,139,140,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,202,208,233,250,252,263,291,292,293,295,296,297,300,301,302,303,311,312,395,396,403,404,406,429,431,432,433,434,439,440,490,492,493,494,497,501,502,505,506,508,509,534,535,536,561,563,574,],[-52,-29,-181,135,-182,-54,-37,-53,195,-181,-55,-328,-30,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,332,-339,-315,379,-38,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,489,-202,-43,-44,-308,-295,-296,-297,-298,-299,-31,-34,-203,-205,-39,-42,-278,-293,-294,-284,-285,-32,-33,-204,-40,-41,-302,-309,-303,]),'COMMA':([19,24,25,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,73,74,75,76,77,78,81,84,85,86,87,88,89,97,104,106,108,110,111,113,114,115,116,118,119,122,123,130,132,139,140,142,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,187,189,190,191,192,196,197,200,201,202,206,208,212,214,216,233,239,248,249,250,252,253,254,255,263,265,291,292,293,295,296,297,300,301,302,303,311,312,315,316,317,318,319,320,321,324,325,326,327,328,329,330,331,334,336,337,340,341,342,344,345,346,348,349,350,352,353,354,376,391,403,404,406,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,438,439,440,444,445,446,447,459,460,461,462,463,464,468,472,473,475,476,477,485,486,488,493,494,497,501,502,505,506,508,509,515,516,518,522,523,531,535,536,537,538,539,546,547,548,549,550,551,557,560,561,563,566,567,574,576,577,578,],[-52,-128,-102,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-181,-98,-99,-100,-101,-104,-134,134,-135,-137,-182,-54,-37,-53,-103,-129,194,-139,-141,-183,-27,-28,-185,-169,-170,-149,-150,-181,-55,-328,-30,266,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,313,314,-189,-194,-340,-184,-186,331,-174,-179,-152,-339,-145,-147,-340,-315,365,-238,-242,-277,-38,-136,-138,-196,-329,365,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-191,-192,-193,-207,-56,-1,-2,-45,-209,-140,-142,331,331,-171,-175,-154,-156,-151,-143,-144,-148,466,-164,-166,-146,-130,-206,-207,-177,-178,365,487,-43,-44,-308,365,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,365,503,-295,-313,-296,-297,-298,-299,507,-31,-34,-190,-195,-57,-208,-172,-173,-176,-180,-153,-155,-168,365,-240,-239,365,365,-243,-197,-199,-39,-42,-278,-293,-294,-284,-285,-32,-33,-210,-216,-214,-165,-167,-198,-40,-41,562,-257,-314,-50,-51,-212,-211,-213,-215,365,-200,-302,-309,-46,-49,-303,365,-47,-48,]),'RPAREN':([19,24,25,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,74,75,76,77,78,81,88,89,93,96,97,104,106,113,114,115,116,118,119,122,123,132,133,137,138,139,140,142,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,185,186,187,188,189,190,191,192,196,197,206,208,212,214,215,216,217,218,239,248,249,250,252,260,261,263,264,265,288,291,292,293,295,296,297,300,301,302,303,311,312,315,316,317,318,319,320,321,322,324,325,330,334,336,337,340,341,342,348,349,350,351,352,353,354,355,357,363,364,403,404,406,407,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,428,429,430,431,432,433,434,435,436,437,439,440,443,444,445,446,447,449,450,451,452,453,454,458,459,460,463,464,472,473,475,476,477,485,493,494,497,501,502,505,506,508,509,513,514,515,516,518,521,535,536,538,539,540,541,546,547,548,549,550,551,557,559,561,563,566,567,572,573,574,575,577,578,581,583,],[-52,-128,-102,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-98,-99,-100,-101,-104,-134,-54,-37,140,-340,-53,-103,-129,-183,-27,-28,-185,-169,-170,-149,-150,-55,252,-340,262,-328,-30,267,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,311,312,-187,-17,-18,-189,-194,-340,-184,-186,-152,-339,-145,-147,349,-340,353,354,-14,-238,-242,-277,-38,403,404,-329,405,406,429,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-191,-192,-193,-207,-56,-1,-2,-340,-45,-209,-171,-154,-156,-151,-143,-144,-148,-146,-130,-206,-340,-207,-177,-178,-221,-13,473,474,-43,-44,-308,499,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,502,-295,-313,-296,-297,-298,-299,504,505,506,-31,-34,-188,-190,-195,-57,-208,-340,515,516,-207,-23,-24,-340,-172,-173,-153,-155,525,-240,-239,526,527,-243,-39,-42,-278,-293,-294,-284,-285,-32,-33,546,547,-210,-216,-214,551,-40,-41,-257,-314,563,-310,-50,-51,-212,-211,-213,-215,571,-340,-302,-309,-46,-49,-340,582,-303,-311,-47,-48,584,-312,]),'COLON':([19,24,28,31,32,33,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,81,87,88,89,97,106,118,119,122,123,130,132,139,140,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,206,208,209,212,214,233,235,248,249,250,252,263,291,292,293,295,296,297,300,301,302,303,311,312,330,334,336,337,340,341,342,346,348,349,353,354,359,403,404,406,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,439,440,459,460,463,464,466,473,475,485,493,494,497,501,502,505,506,508,509,535,536,538,561,563,574,],[-52,-128,-29,-125,-126,-127,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-134,-182,-54,-37,-53,-129,-169,-170,-149,-150,-181,-55,-328,-30,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-152,-339,347,-145,-147,358,360,-238,-242,-277,-38,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-35,-36,-171,-154,-156,-151,-143,-144,-148,467,-146,-130,-177,-178,470,-43,-44,-308,500,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-31,-34,-172,-173,-153,-155,347,-240,-239,-243,-39,-42,-278,-293,-294,-284,-285,-32,-33,-40,-41,-257,-302,-309,-303,]),'LBRACKET':([19,24,25,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,74,75,76,77,78,81,88,89,97,104,106,113,114,115,116,118,119,121,122,123,132,139,140,143,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,192,196,197,206,208,212,214,216,233,252,256,263,291,292,300,301,302,303,311,312,318,319,322,324,325,330,334,336,337,340,341,342,348,349,351,352,353,354,395,396,403,404,406,429,431,432,433,434,439,440,446,447,452,459,460,463,464,487,490,492,493,494,498,501,502,508,509,515,516,518,534,535,536,540,541,546,547,548,549,550,551,561,562,563,566,567,574,575,577,578,583,],[95,-128,-102,-29,-107,-340,-125,-126,-127,-129,-241,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-131,-132,-133,-105,-106,-108,-109,-110,-111,-112,-98,-99,-100,-101,-104,-134,136,-37,95,-103,-129,-183,-27,-28,-185,-169,-170,-338,-149,-150,136,-328,-30,-306,287,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,323,-184,-186,-152,-339,-145,-147,323,-315,-38,397,-329,-300,-301,-334,-335,-336,-337,-35,-36,323,448,323,-45,457,-171,-154,-156,-151,-143,-144,-148,-146,-130,323,323,-177,-178,397,-202,-43,-44,-308,-295,-296,-297,-298,-299,-31,-34,448,457,323,-172,-173,-153,-155,397,-203,-205,-39,-42,397,-293,-294,-32,-33,-210,-216,-214,-204,-40,-41,565,-310,-50,-51,-212,-211,-213,-215,-302,397,-309,-46,-49,-303,-311,-47,-48,-312,]),'RBRACKET':([51,52,53,81,95,114,115,116,136,139,143,144,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,197,208,248,249,250,257,259,263,291,292,293,295,296,297,300,301,302,303,305,306,307,308,323,399,400,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,429,431,432,433,434,441,442,448,455,456,457,473,475,485,491,495,496,497,501,502,505,506,510,512,517,519,520,538,542,543,561,563,568,569,574,576,],[-131,-132,-133,-134,-340,-27,-28,-185,-340,-328,-306,-255,-256,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-340,-28,-186,-339,-238,-242,-277,-340,-28,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,439,440,-3,-4,-340,493,494,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,501,-295,-296,-297,-298,-299,508,509,-340,-340,518,-340,-240,-239,-243,534,535,536,-278,-293,-294,-284,-285,-340,-28,548,549,550,-257,566,567,-302,-309,577,578,-303,583,]),'PERIOD':([121,139,143,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,256,263,291,292,300,301,302,303,395,396,406,429,431,432,433,434,487,490,492,498,501,502,534,540,541,561,562,563,574,575,583,],[-338,-328,-306,289,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,398,-329,-300,-301,-334,-335,-336,-337,398,-202,-308,-295,-296,-297,-298,-299,398,-203,-205,398,-293,-294,-204,564,-310,-302,398,-309,-303,-311,-312,]),'ARROW':([139,143,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,263,291,292,300,301,302,303,406,429,431,432,433,434,501,502,561,563,574,],[-328,-306,290,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-329,-300,-301,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-293,-294,-302,-309,-303,]),'CONDOP':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,268,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'DIVIDE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,270,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'MOD':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,271,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'RSHIFT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,274,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,274,274,274,274,274,274,274,274,274,274,274,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LSHIFT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,275,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,275,275,275,275,275,275,275,275,275,275,275,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,276,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,276,276,276,276,276,276,276,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,277,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,277,277,277,277,277,277,277,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'GE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,278,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,278,278,278,278,278,278,278,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'GT':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,279,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,279,279,279,279,279,279,279,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'EQ':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,280,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,280,280,280,280,280,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'NE':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,281,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,281,281,281,281,281,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'OR':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,283,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,283,283,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'XOR':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,284,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,284,-274,284,284,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LAND':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,285,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,285,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LOR':([139,143,145,146,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,286,-258,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,-277,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-259,-260,-261,-262,-263,-264,-265,-266,-267,-268,-269,-270,-271,-272,-273,-274,-275,-276,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'XOREQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,380,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'TIMESEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,381,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'DIVEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,382,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'MODEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,383,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'PLUSEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,384,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'MINUSEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,385,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'LSHIFTEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,386,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'RSHIFTEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,387,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'ANDEQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,388,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'OREQUAL':([139,143,151,152,158,159,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,208,233,250,263,291,292,293,295,296,297,300,301,302,303,406,429,431,432,433,434,497,501,502,505,506,561,563,574,],[-328,-306,-277,-279,-292,-315,-304,-305,-307,-316,-317,-318,-319,-320,-321,-322,-323,-324,-325,-326,-327,-330,-331,-332,-333,-339,-315,389,-329,-300,-301,-280,-281,-282,-283,-334,-335,-336,-337,-308,-295,-296,-297,-298,-299,-278,-293,-294,-284,-285,-302,-309,-303,]),'ELLIPSIS':([313,],[443,]),}
_lr_action = {}
for _k, _v in _lr_action_items.items():
@@ -16,7 +16,7 @@ for _k, _v in _lr_action_items.items():
_lr_action[_x][_k] = _y
del _lr_action_items
-_lr_goto_items = {'translation_unit_or_empty':([0,],[1,]),'translation_unit':([0,],[2,]),'empty':([0,11,12,20,21,22,25,26,29,33,68,69,70,72,93,94,99,126,134,135,179,180,189,206,213,218,239,253,254,255,318,319,347,354,356,365,367,443,444,450,452,453,465,476,481,492,504,505,519,520,521,523,552,555,563,565,575,577,],[3,65,82,97,97,97,105,97,112,97,82,105,97,65,112,185,97,217,112,185,303,112,316,339,316,353,353,387,303,112,448,112,448,353,353,353,353,112,185,303,303,448,353,353,527,527,303,112,353,353,353,353,353,527,353,353,353,353,]),'external_declaration':([0,2,],[4,63,]),'function_definition':([0,2,],[5,5,]),'declaration':([0,2,11,66,72,126,218,367,],[6,6,67,127,67,220,220,476,]),'pp_directive':([0,2,],[7,7,]),'pppragma_directive':([0,2,122,126,200,201,202,218,239,329,331,354,356,365,465,519,520,521,563,575,577,],[8,8,208,228,208,208,208,228,365,208,208,365,365,228,365,365,365,365,365,365,365,]),'static_assert':([0,2,126,218,239,354,356,365,465,519,520,521,563,575,577,],[10,10,229,229,229,229,229,229,229,229,229,229,229,229,229,]),'id_declarator':([0,2,12,17,25,68,69,81,132,189,191,206,318,461,],[11,11,72,92,109,128,109,92,128,311,128,128,92,128,]),'declaration_specifiers':([0,2,11,66,72,94,126,135,218,309,318,347,367,444,453,],[12,12,68,68,68,189,68,189,68,189,189,189,68,189,189,]),'decl_body':([0,2,11,66,72,126,218,367,],[13,13,13,13,13,13,13,13,]),'direct_id_declarator':([0,2,12,17,19,25,68,69,79,81,132,189,191,206,314,318,447,461,],[18,18,18,18,95,18,18,18,95,18,18,18,18,18,95,18,95,18,]),'pointer':([0,2,12,17,25,68,69,81,111,132,189,191,206,213,318,347,461,],[19,19,79,19,19,79,19,79,193,79,314,79,79,348,447,348,79,]),'type_qualifier':([0,2,11,12,20,21,22,26,29,33,66,68,70,72,93,94,99,113,122,123,124,126,134,135,136,180,181,189,200,201,202,206,210,213,218,235,255,256,290,294,295,300,309,318,319,329,331,347,367,443,444,453,505,506,],[20,20,20,73,20,20,20,20,114,20,20,73,20,20,114,20,20,194,114,114,114,20,114,20,114,114,194,73,114,114,114,337,194,337,20,114,114,194,114,114,114,114,20,20,114,114,114,20,20,114,20,20,114,194,]),'storage_class_specifier':([0,2,11,12,20,21,22,26,33,66,68,70,72,94,99,126,135,189,218,309,318,347,367,444,453,],[21,21,21,74,21,21,21,21,21,21,74,21,21,21,21,21,21,74,21,21,21,21,21,21,21,]),'function_specifier':([0,2,11,12,20,21,22,26,33,66,68,70,72,94,99,126,135,189,218,309,318,347,367,444,453,],[22,22,22,75,22,22,22,22,22,22,75,22,22,22,22,22,22,75,22,22,22,22,22,22,22,]),'type_specifier_no_typeid':([0,2,11,12,25,66,68,69,72,94,122,123,124,126,135,136,189,190,200,201,202,206,210,213,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[23,23,23,76,23,23,76,23,23,23,23,23,23,23,23,23,76,23,23,23,23,336,23,336,23,23,23,23,23,23,23,23,23,23,23,23,23,23,]),'type_specifier':([0,2,11,25,66,69,72,94,122,123,124,126,135,136,190,200,201,202,210,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[24,24,24,102,24,102,24,24,209,209,209,24,24,209,102,209,209,209,344,24,209,209,209,209,209,24,24,209,209,24,24,24,24,]),'declaration_specifiers_no_type':([0,2,11,20,21,22,26,33,66,70,72,94,99,126,135,218,309,318,347,367,444,453,],[25,25,69,98,98,98,98,98,69,98,69,190,98,69,190,69,190,190,190,69,190,190,]),'alignment_specifier':([0,2,11,12,20,21,22,26,33,66,68,70,72,94,99,122,123,124,126,135,136,189,200,201,202,206,213,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[26,26,26,77,26,26,26,26,26,26,77,26,26,26,26,211,211,211,26,26,211,77,211,211,211,338,338,26,211,211,211,211,211,26,26,211,211,26,26,26,26,]),'typedef_name':([0,2,11,25,66,69,72,94,122,123,124,126,135,136,190,200,201,202,210,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,]),'enum_specifier':([0,2,11,25,66,69,72,94,122,123,124,126,135,136,190,200,201,202,210,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,]),'struct_or_union_specifier':([0,2,11,25,66,69,72,94,122,123,124,126,135,136,190,200,201,202,210,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,]),'atomic_specifier':([0,2,11,20,21,22,25,26,33,66,69,70,72,94,99,122,123,124,126,135,136,190,200,201,202,210,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[33,33,70,99,99,99,104,99,99,70,104,99,70,33,99,104,104,104,70,33,104,104,104,104,104,104,70,104,104,104,104,104,33,33,104,104,33,70,33,33,]),'struct_or_union':([0,2,11,25,66,69,72,94,122,123,124,126,135,136,190,200,201,202,210,218,235,290,294,295,300,309,318,329,331,347,367,444,453,],[36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,]),'declaration_list_opt':([11,72,],[64,129,]),'declaration_list':([11,72,],[66,66,]),'init_declarator_list_opt':([12,68,],[78,78,]),'init_declarator_list':([12,68,],[83,83,]),'init_declarator':([12,68,132,191,],[84,84,250,322,]),'declarator':([12,68,132,191,206,461,],[85,85,85,85,342,342,]),'typeid_declarator':([12,68,81,132,191,206,461,],[86,86,131,86,86,86,86,]),'direct_typeid_declarator':([12,68,79,81,132,191,206,461,],[87,87,130,87,87,87,87,87,]),'declaration_specifiers_no_type_opt':([20,21,22,26,33,70,99,],[96,100,101,110,115,115,115,]),'id_init_declarator_list_opt':([25,69,],[103,103,]),'id_init_declarator_list':([25,69,],[106,106,]),'id_init_declarator':([25,69,],[108,108,]),'type_qualifier_list_opt':([29,93,134,180,255,319,443,505,],[111,179,254,305,396,450,504,538,]),'type_qualifier_list':([29,93,122,123,124,134,136,180,200,201,202,235,255,290,294,295,300,319,329,331,443,505,],[113,181,210,210,210,256,210,113,210,210,210,210,113,210,210,210,210,113,210,210,506,113,]),'brace_open':([35,36,64,116,117,120,121,126,129,133,192,218,235,239,354,356,365,388,400,465,469,498,499,519,520,521,526,563,575,577,],[118,122,126,195,196,200,201,126,126,253,253,126,126,126,126,126,126,253,492,126,492,492,492,126,126,126,253,126,126,126,]),'compound_statement':([64,126,129,218,235,239,354,356,365,465,519,520,521,563,575,577,],[125,224,248,224,359,224,224,224,224,224,224,224,224,224,224,224,]),'constant_expression':([91,124,231,328,343,392,462,],[137,215,355,457,463,485,517,]),'unified_string_literal':([91,124,126,133,136,148,149,150,151,179,192,218,231,235,239,244,254,261,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,402,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,]),'conditional_expression':([91,124,126,133,136,179,192,218,231,235,239,244,254,264,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,450,452,462,465,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[139,139,246,246,246,246,246,246,139,246,246,246,246,246,246,246,246,246,246,246,139,139,246,246,246,246,246,246,246,246,246,246,139,246,246,246,246,139,246,246,532,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,]),'binary_expression':([91,124,126,133,136,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,450,452,462,465,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[140,140,140,140,140,140,140,140,140,140,140,140,140,140,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,]),'cast_expression':([91,124,126,133,136,150,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[141,141,141,141,141,292,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,491,141,141,141,141,491,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,]),'unary_expression':([91,124,126,133,136,148,149,150,151,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[146,146,247,247,247,289,291,146,293,247,247,247,146,247,247,247,247,247,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,247,247,247,247,247,247,146,146,247,247,247,247,247,247,247,247,247,247,146,247,247,146,247,247,146,247,146,247,146,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,]),'postfix_expression':([91,124,126,133,136,148,149,150,151,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,]),'unary_operator':([91,124,126,133,136,148,149,150,151,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,]),'primary_expression':([91,124,126,133,136,148,149,150,151,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,]),'identifier':([91,94,124,126,133,135,136,148,149,150,151,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,310,328,343,354,356,358,361,362,363,365,367,373,388,392,393,396,397,400,444,450,452,462,465,469,476,494,497,501,504,519,520,521,522,523,526,538,539,552,557,558,563,565,575,577,],[157,188,157,157,157,188,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,440,157,157,157,157,157,157,157,157,157,157,157,157,157,486,157,157,157,188,157,157,157,157,157,157,157,157,535,157,157,157,157,157,157,157,157,157,157,568,157,157,157,157,157,]),'constant':([91,124,126,133,136,148,149,150,151,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,]),'unified_wstring_literal':([91,124,126,133,136,148,149,150,151,179,192,218,231,235,239,244,254,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,290,294,305,306,328,343,354,356,358,361,362,363,365,367,373,388,392,396,397,400,450,452,462,465,469,476,494,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,]),'parameter_type_list':([94,135,318,347,444,453,],[182,257,449,449,507,449,]),'identifier_list_opt':([94,135,444,],[183,258,508,]),'parameter_list':([94,135,318,347,444,453,],[184,184,184,184,184,184,]),'identifier_list':([94,135,444,],[186,186,186,]),'parameter_declaration':([94,135,309,318,347,444,453,],[187,187,439,187,187,187,187,]),'enumerator_list':([118,195,196,],[197,324,325,]),'enumerator':([118,195,196,327,],[198,198,198,456,]),'struct_declaration_list':([122,200,201,],[202,329,331,]),'brace_close':([122,197,200,201,202,216,324,325,329,331,385,481,531,555,],[203,326,330,332,333,351,454,455,458,459,480,525,554,567,]),'struct_declaration':([122,200,201,202,329,331,],[204,204,204,334,334,334,]),'specifier_qualifier_list':([122,123,124,136,200,201,202,235,290,294,295,300,329,331,],[206,213,213,213,206,206,206,213,213,213,213,213,206,206,]),'type_name':([123,124,136,235,290,294,295,300,],[212,214,259,360,430,431,432,433,]),'block_item_list_opt':([126,],[216,]),'block_item_list':([126,],[218,]),'block_item':([126,218,],[219,352,]),'statement':([126,218,239,354,356,365,465,519,520,521,563,575,577,],[221,221,366,366,366,474,366,547,366,366,366,366,366,]),'labeled_statement':([126,218,239,354,356,365,465,519,520,521,563,575,577,],[222,222,222,222,222,222,222,222,222,222,222,222,222,]),'expression_statement':([126,218,239,354,356,365,465,519,520,521,563,575,577,],[223,223,223,223,223,223,223,223,223,223,223,223,223,]),'selection_statement':([126,218,239,354,356,365,465,519,520,521,563,575,577,],[225,225,225,225,225,225,225,225,225,225,225,225,225,]),'iteration_statement':([126,218,239,354,356,365,465,519,520,521,563,575,577,],[226,226,226,226,226,226,226,226,226,226,226,226,226,]),'jump_statement':([126,218,239,354,356,365,465,519,520,521,563,575,577,],[227,227,227,227,227,227,227,227,227,227,227,227,227,]),'expression_opt':([126,218,239,354,356,365,367,465,476,519,520,521,523,552,563,565,575,577,],[233,233,233,233,233,233,475,233,524,233,233,233,551,566,233,574,233,233,]),'expression':([126,136,218,235,239,244,264,283,290,294,354,356,358,362,363,365,367,465,476,519,520,521,522,523,552,558,563,565,575,577,],[236,260,236,260,236,371,403,422,260,260,236,236,467,471,472,236,236,236,236,236,236,236,550,236,236,569,236,236,236,236,]),'assignment_expression':([126,133,136,179,192,218,235,239,244,254,264,283,284,290,294,305,306,354,356,358,361,362,363,365,367,373,388,396,397,450,452,465,476,497,504,519,520,521,522,523,526,538,539,552,558,563,565,575,577,],[245,252,245,304,252,245,245,245,245,304,245,245,425,245,245,436,437,245,245,245,470,245,245,245,245,479,252,489,490,304,304,245,245,533,304,245,245,245,245,245,252,561,562,245,245,245,245,245,245,]),'initializer':([133,192,388,526,],[251,323,482,553,]),'assignment_expression_opt':([179,254,450,452,504,],[301,394,511,513,536,]),'typeid_noparen_declarator':([189,],[312,]),'abstract_declarator_opt':([189,213,],[313,346,]),'direct_typeid_noparen_declarator':([189,314,],[315,441,]),'abstract_declarator':([189,213,318,347,],[317,317,445,445,]),'direct_abstract_declarator':([189,213,314,318,347,348,447,],[321,321,442,321,321,442,442,]),'struct_declarator_list_opt':([206,],[335,]),'struct_declarator_list':([206,],[340,]),'struct_declarator':([206,461,],[341,516,]),'pragmacomp_or_statement':([239,354,356,465,519,520,521,563,575,577,],[364,464,466,518,546,548,549,572,578,579,]),'assignment_operator':([247,],[373,]),'initializer_list_opt':([253,],[385,]),'initializer_list':([253,492,],[386,531,]),'designation_opt':([253,481,492,555,],[388,526,388,526,]),'designation':([253,481,492,555,],[389,389,389,389,]),'designator_list':([253,481,492,555,],[390,390,390,390,]),'designator':([253,390,481,492,555,],[391,484,391,391,391,]),'argument_expression_list':([284,],[423,]),'parameter_type_list_opt':([318,347,453,],[446,446,515,]),'offsetof_member_designator':([501,],[534,]),}
+_lr_goto_items = {'translation_unit_or_empty':([0,],[1,]),'translation_unit':([0,],[2,]),'empty':([0,11,12,21,22,23,26,27,30,34,69,70,71,73,95,96,101,128,136,137,182,183,192,209,216,221,242,256,257,258,322,323,351,358,360,369,372,448,449,455,457,458,470,482,487,498,510,511,525,526,527,529,559,562,570,572,582,584,],[3,66,83,99,99,99,107,99,114,99,83,107,99,66,114,188,99,220,114,188,307,114,320,343,320,357,357,392,307,114,453,114,453,357,357,357,357,114,188,307,307,453,357,357,533,533,307,114,357,357,357,357,357,533,357,357,357,357,]),'external_declaration':([0,2,],[4,64,]),'function_definition':([0,2,],[5,5,]),'declaration':([0,2,11,67,73,128,221,372,],[6,6,68,129,68,223,223,482,]),'pp_directive':([0,2,],[7,7,]),'pppragma_directive':([0,2,124,128,203,204,205,221,242,333,335,358,360,369,470,525,526,527,570,582,584,],[8,8,211,231,211,211,211,231,371,211,211,371,371,480,371,554,371,371,371,371,371,]),'static_assert':([0,2,128,221,242,358,360,369,470,525,526,527,570,582,584,],[10,10,232,232,232,232,232,232,232,232,232,232,232,232,232,]),'id_declarator':([0,2,12,17,26,69,70,82,134,192,194,209,322,466,],[11,11,73,93,111,130,111,93,130,315,130,130,93,130,]),'declaration_specifiers':([0,2,11,67,73,96,128,137,221,313,322,351,372,449,458,],[12,12,69,69,69,192,69,192,69,192,192,192,69,192,192,]),'decl_body':([0,2,11,67,73,128,221,372,],[13,13,13,13,13,13,13,13,]),'direct_id_declarator':([0,2,12,17,20,26,69,70,80,82,134,192,194,209,318,322,452,466,],[19,19,19,19,97,19,19,19,97,19,19,19,19,19,97,19,97,19,]),'pointer':([0,2,12,17,26,69,70,82,113,134,192,194,209,216,322,351,466,],[20,20,80,20,20,80,20,80,196,80,318,80,80,352,452,352,80,]),'type_qualifier':([0,2,11,12,21,22,23,27,30,34,67,69,71,73,95,96,101,115,124,125,126,128,136,137,141,183,184,192,203,204,205,209,213,216,221,238,258,259,294,298,299,304,313,322,323,333,335,351,372,448,449,458,511,512,],[21,21,21,74,21,21,21,21,116,21,21,74,21,21,116,21,21,197,116,116,116,21,116,21,116,116,197,74,116,116,116,341,197,341,21,116,116,197,116,116,116,116,21,21,116,116,116,21,21,116,21,21,116,197,]),'storage_class_specifier':([0,2,11,12,21,22,23,27,34,67,69,71,73,96,101,128,137,192,221,313,322,351,372,449,458,],[22,22,22,75,22,22,22,22,22,22,75,22,22,22,22,22,22,75,22,22,22,22,22,22,22,]),'function_specifier':([0,2,11,12,21,22,23,27,34,67,69,71,73,96,101,128,137,192,221,313,322,351,372,449,458,],[23,23,23,76,23,23,23,23,23,23,76,23,23,23,23,23,23,76,23,23,23,23,23,23,23,]),'type_specifier_no_typeid':([0,2,11,12,26,67,69,70,73,96,124,125,126,128,137,141,192,193,203,204,205,209,213,216,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[24,24,24,77,24,24,77,24,24,24,24,24,24,24,24,24,77,24,24,24,24,340,24,340,24,24,24,24,24,24,24,24,24,24,24,24,24,24,]),'type_specifier':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[25,25,25,104,25,104,25,25,212,212,212,25,25,212,104,212,212,212,348,25,212,212,212,212,212,25,25,212,212,25,25,25,25,]),'declaration_specifiers_no_type':([0,2,11,21,22,23,27,34,67,71,73,96,101,128,137,221,313,322,351,372,449,458,],[26,26,70,100,100,100,100,100,70,100,70,193,100,70,193,70,193,193,193,70,193,193,]),'alignment_specifier':([0,2,11,12,21,22,23,27,34,67,69,71,73,96,101,124,125,126,128,137,141,192,203,204,205,209,216,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[27,27,27,78,27,27,27,27,27,27,78,27,27,27,27,214,214,214,27,27,214,78,214,214,214,342,342,27,214,214,214,214,214,27,27,214,214,27,27,27,27,]),'typedef_name':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,]),'enum_specifier':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,]),'struct_or_union_specifier':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,]),'atomic_specifier':([0,2,11,21,22,23,26,27,34,67,70,71,73,96,101,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[34,34,71,101,101,101,106,101,101,71,106,101,71,34,101,106,106,106,71,34,106,106,106,106,106,106,71,106,106,106,106,106,34,34,106,106,34,71,34,34,]),'struct_or_union':([0,2,11,26,67,70,73,96,124,125,126,128,137,141,193,203,204,205,213,221,238,294,298,299,304,313,322,333,335,351,372,449,458,],[37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,]),'declaration_list_opt':([11,73,],[65,131,]),'declaration_list':([11,73,],[67,67,]),'init_declarator_list_opt':([12,69,],[79,79,]),'init_declarator_list':([12,69,],[84,84,]),'init_declarator':([12,69,134,194,],[85,85,253,326,]),'declarator':([12,69,134,194,209,466,],[86,86,86,86,346,346,]),'typeid_declarator':([12,69,82,134,194,209,466,],[87,87,133,87,87,87,87,]),'direct_typeid_declarator':([12,69,80,82,134,194,209,466,],[88,88,132,88,88,88,88,88,]),'declaration_specifiers_no_type_opt':([21,22,23,27,34,71,101,],[98,102,103,112,117,117,117,]),'id_init_declarator_list_opt':([26,70,],[105,105,]),'id_init_declarator_list':([26,70,],[108,108,]),'id_init_declarator':([26,70,],[110,110,]),'type_qualifier_list_opt':([30,95,136,183,258,323,448,511,],[113,182,257,309,401,455,510,544,]),'type_qualifier_list':([30,95,124,125,126,136,141,183,203,204,205,238,258,294,298,299,304,323,333,335,448,511,],[115,184,213,213,213,259,213,115,213,213,213,213,115,213,213,213,213,115,213,213,512,115,]),'brace_open':([36,37,65,118,119,122,123,128,131,135,195,221,238,242,358,360,369,393,405,470,474,504,505,525,526,527,532,570,582,584,],[120,124,128,198,199,203,204,128,128,256,256,128,128,128,128,128,128,256,498,128,498,498,498,128,128,128,256,128,128,128,]),'compound_statement':([65,128,131,221,238,242,358,360,369,470,525,526,527,570,582,584,],[127,227,251,227,363,227,227,227,227,227,227,227,227,227,227,227,]),'unified_string_literal':([92,94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,266,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[138,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,407,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,]),'constant_expression':([94,126,234,332,347,397,467,],[142,218,359,462,468,491,523,]),'conditional_expression':([94,126,128,135,141,182,195,221,234,238,242,247,257,268,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,455,457,467,470,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[144,144,249,249,249,249,249,249,144,249,249,249,249,249,249,249,249,249,249,249,144,144,249,249,249,249,249,249,249,249,249,249,144,249,249,249,249,144,249,249,538,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,]),'binary_expression':([94,126,128,135,141,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,455,457,467,470,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[145,145,145,145,145,145,145,145,145,145,145,145,145,145,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,]),'cast_expression':([94,126,128,135,141,155,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[146,146,146,146,146,296,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,497,146,146,146,146,497,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,]),'unary_expression':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[151,151,250,250,250,293,295,151,297,250,250,250,151,250,250,250,250,250,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,250,250,250,250,250,250,151,151,250,250,250,250,250,250,250,250,250,250,151,250,250,151,250,250,151,250,151,250,151,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,]),'postfix_expression':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,]),'unary_operator':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,]),'primary_expression':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,]),'identifier':([94,96,126,128,135,137,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,314,332,347,358,360,362,365,366,367,369,372,378,393,397,398,401,402,405,449,455,457,467,470,474,482,500,503,507,510,525,526,527,528,529,532,544,545,559,564,565,570,572,582,584,],[162,191,162,162,162,191,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,445,162,162,162,162,162,162,162,162,162,162,162,162,162,492,162,162,162,191,162,162,162,162,162,162,162,162,541,162,162,162,162,162,162,162,162,162,162,575,162,162,162,162,162,]),'constant':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,]),'unified_wstring_literal':([94,126,128,135,141,153,154,155,156,182,195,221,234,238,242,247,257,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,294,298,309,310,332,347,358,360,362,365,366,367,369,372,378,393,397,401,402,405,455,457,467,470,474,482,500,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,]),'parameter_type_list':([96,137,322,351,449,458,],[185,260,454,454,513,454,]),'identifier_list_opt':([96,137,449,],[186,261,514,]),'parameter_list':([96,137,322,351,449,458,],[187,187,187,187,187,187,]),'identifier_list':([96,137,449,],[189,189,189,]),'parameter_declaration':([96,137,313,322,351,449,458,],[190,190,444,190,190,190,190,]),'enumerator_list':([120,198,199,],[200,328,329,]),'enumerator':([120,198,199,331,],[201,201,201,461,]),'struct_declaration_list':([124,203,204,],[205,333,335,]),'brace_close':([124,200,203,204,205,219,328,329,333,335,390,487,537,562,],[206,330,334,336,337,355,459,460,463,464,486,531,561,574,]),'struct_declaration':([124,203,204,205,333,335,],[207,207,207,338,338,338,]),'specifier_qualifier_list':([124,125,126,141,203,204,205,238,294,298,299,304,333,335,],[209,216,216,216,209,209,209,216,216,216,216,216,209,209,]),'type_name':([125,126,141,238,294,298,299,304,],[215,217,264,364,435,436,437,438,]),'block_item_list_opt':([128,],[219,]),'block_item_list':([128,],[221,]),'block_item':([128,221,],[222,356,]),'statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[224,224,370,370,370,479,370,553,370,370,370,370,370,]),'labeled_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[225,225,225,225,225,225,225,225,225,225,225,225,225,]),'expression_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[226,226,226,226,226,226,226,226,226,226,226,226,226,]),'selection_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[228,228,228,228,228,228,228,228,228,228,228,228,228,]),'iteration_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[229,229,229,229,229,229,229,229,229,229,229,229,229,]),'jump_statement':([128,221,242,358,360,369,470,525,526,527,570,582,584,],[230,230,230,230,230,230,230,230,230,230,230,230,230,]),'expression_opt':([128,221,242,358,360,369,372,470,482,525,526,527,529,559,570,572,582,584,],[236,236,236,236,236,236,481,236,530,236,236,236,558,573,236,581,236,236,]),'expression':([128,141,221,238,242,247,268,287,294,298,358,360,362,366,367,369,372,470,482,525,526,527,528,529,559,565,570,572,582,584,],[239,265,239,265,239,376,408,427,265,265,239,239,472,476,477,239,239,239,239,239,239,239,557,239,239,576,239,239,239,239,]),'assignment_expression':([128,135,141,182,195,221,238,242,247,257,268,287,288,294,298,309,310,358,360,362,365,366,367,369,372,378,393,401,402,455,457,470,482,503,510,525,526,527,528,529,532,544,545,559,565,570,572,582,584,],[248,255,248,308,255,248,248,248,248,308,248,248,430,248,248,441,442,248,248,248,475,248,248,248,248,485,255,495,496,308,308,248,248,539,308,248,248,248,248,248,255,568,569,248,248,248,248,248,248,]),'initializer':([135,195,393,532,],[254,327,488,560,]),'assignment_expression_opt':([182,257,455,457,510,],[305,399,517,519,542,]),'typeid_noparen_declarator':([192,],[316,]),'abstract_declarator_opt':([192,216,],[317,350,]),'direct_typeid_noparen_declarator':([192,318,],[319,446,]),'abstract_declarator':([192,216,322,351,],[321,321,450,450,]),'direct_abstract_declarator':([192,216,318,322,351,352,452,],[325,325,447,325,325,447,447,]),'struct_declarator_list_opt':([209,],[339,]),'struct_declarator_list':([209,],[344,]),'struct_declarator':([209,466,],[345,522,]),'pragmacomp_or_statement':([242,358,360,470,525,526,527,570,582,584,],[368,469,471,524,552,555,556,579,585,586,]),'pppragma_directive_list':([242,358,360,470,525,526,527,570,582,584,],[369,369,369,369,369,369,369,369,369,369,]),'assignment_operator':([250,],[378,]),'initializer_list_opt':([256,],[390,]),'initializer_list':([256,498,],[391,537,]),'designation_opt':([256,487,498,562,],[393,532,393,532,]),'designation':([256,487,498,562,],[394,394,394,394,]),'designator_list':([256,487,498,562,],[395,395,395,395,]),'designator':([256,395,487,498,562,],[396,490,396,396,396,]),'argument_expression_list':([288,],[428,]),'parameter_type_list_opt':([322,351,458,],[451,451,521,]),'offsetof_member_designator':([507,],[540,]),}
_lr_goto = {}
for _k, _v in _lr_goto_items.items():
@@ -96,271 +96,274 @@ _lr_productions = [
('static_assert -> _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN','static_assert',6,'p_static_assert_declaration','c_parser.py',560),
('static_assert -> _STATIC_ASSERT LPAREN constant_expression RPAREN','static_assert',4,'p_static_assert_declaration','c_parser.py',561),
('pp_directive -> PPHASH','pp_directive',1,'p_pp_directive','c_parser.py',569),
- ('pppragma_directive -> PPPRAGMA','pppragma_directive',1,'p_pppragma_directive','c_parser.py',575),
- ('pppragma_directive -> PPPRAGMA PPPRAGMASTR','pppragma_directive',2,'p_pppragma_directive','c_parser.py',576),
- ('function_definition -> id_declarator declaration_list_opt compound_statement','function_definition',3,'p_function_definition_1','c_parser.py',586),
- ('function_definition -> declaration_specifiers id_declarator declaration_list_opt compound_statement','function_definition',4,'p_function_definition_2','c_parser.py',604),
- ('statement -> labeled_statement','statement',1,'p_statement','c_parser.py',619),
- ('statement -> expression_statement','statement',1,'p_statement','c_parser.py',620),
- ('statement -> compound_statement','statement',1,'p_statement','c_parser.py',621),
- ('statement -> selection_statement','statement',1,'p_statement','c_parser.py',622),
- ('statement -> iteration_statement','statement',1,'p_statement','c_parser.py',623),
- ('statement -> jump_statement','statement',1,'p_statement','c_parser.py',624),
- ('statement -> pppragma_directive','statement',1,'p_statement','c_parser.py',625),
- ('statement -> static_assert','statement',1,'p_statement','c_parser.py',626),
- ('pragmacomp_or_statement -> pppragma_directive statement','pragmacomp_or_statement',2,'p_pragmacomp_or_statement','c_parser.py',674),
- ('pragmacomp_or_statement -> statement','pragmacomp_or_statement',1,'p_pragmacomp_or_statement','c_parser.py',675),
- ('decl_body -> declaration_specifiers init_declarator_list_opt','decl_body',2,'p_decl_body','c_parser.py',694),
- ('decl_body -> declaration_specifiers_no_type id_init_declarator_list_opt','decl_body',2,'p_decl_body','c_parser.py',695),
- ('declaration -> decl_body SEMI','declaration',2,'p_declaration','c_parser.py',755),
- ('declaration_list -> declaration','declaration_list',1,'p_declaration_list','c_parser.py',764),
- ('declaration_list -> declaration_list declaration','declaration_list',2,'p_declaration_list','c_parser.py',765),
- ('declaration_specifiers_no_type -> type_qualifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_1','c_parser.py',775),
- ('declaration_specifiers_no_type -> storage_class_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_2','c_parser.py',780),
- ('declaration_specifiers_no_type -> function_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_3','c_parser.py',785),
- ('declaration_specifiers_no_type -> atomic_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_4','c_parser.py',792),
- ('declaration_specifiers_no_type -> alignment_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_5','c_parser.py',797),
- ('declaration_specifiers -> declaration_specifiers type_qualifier','declaration_specifiers',2,'p_declaration_specifiers_1','c_parser.py',802),
- ('declaration_specifiers -> declaration_specifiers storage_class_specifier','declaration_specifiers',2,'p_declaration_specifiers_2','c_parser.py',807),
- ('declaration_specifiers -> declaration_specifiers function_specifier','declaration_specifiers',2,'p_declaration_specifiers_3','c_parser.py',812),
- ('declaration_specifiers -> declaration_specifiers type_specifier_no_typeid','declaration_specifiers',2,'p_declaration_specifiers_4','c_parser.py',817),
- ('declaration_specifiers -> type_specifier','declaration_specifiers',1,'p_declaration_specifiers_5','c_parser.py',822),
- ('declaration_specifiers -> declaration_specifiers_no_type type_specifier','declaration_specifiers',2,'p_declaration_specifiers_6','c_parser.py',827),
- ('declaration_specifiers -> declaration_specifiers alignment_specifier','declaration_specifiers',2,'p_declaration_specifiers_7','c_parser.py',832),
- ('storage_class_specifier -> AUTO','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',837),
- ('storage_class_specifier -> REGISTER','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',838),
- ('storage_class_specifier -> STATIC','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',839),
- ('storage_class_specifier -> EXTERN','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',840),
- ('storage_class_specifier -> TYPEDEF','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',841),
- ('storage_class_specifier -> _THREAD_LOCAL','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',842),
- ('function_specifier -> INLINE','function_specifier',1,'p_function_specifier','c_parser.py',847),
- ('function_specifier -> _NORETURN','function_specifier',1,'p_function_specifier','c_parser.py',848),
- ('type_specifier_no_typeid -> VOID','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',853),
- ('type_specifier_no_typeid -> _BOOL','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',854),
- ('type_specifier_no_typeid -> CHAR','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',855),
- ('type_specifier_no_typeid -> SHORT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',856),
- ('type_specifier_no_typeid -> INT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',857),
- ('type_specifier_no_typeid -> LONG','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',858),
- ('type_specifier_no_typeid -> FLOAT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',859),
- ('type_specifier_no_typeid -> DOUBLE','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',860),
- ('type_specifier_no_typeid -> _COMPLEX','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',861),
- ('type_specifier_no_typeid -> SIGNED','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',862),
- ('type_specifier_no_typeid -> UNSIGNED','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',863),
- ('type_specifier_no_typeid -> __INT128','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',864),
- ('type_specifier -> typedef_name','type_specifier',1,'p_type_specifier','c_parser.py',869),
- ('type_specifier -> enum_specifier','type_specifier',1,'p_type_specifier','c_parser.py',870),
- ('type_specifier -> struct_or_union_specifier','type_specifier',1,'p_type_specifier','c_parser.py',871),
- ('type_specifier -> type_specifier_no_typeid','type_specifier',1,'p_type_specifier','c_parser.py',872),
- ('type_specifier -> atomic_specifier','type_specifier',1,'p_type_specifier','c_parser.py',873),
- ('atomic_specifier -> _ATOMIC LPAREN type_name RPAREN','atomic_specifier',4,'p_atomic_specifier','c_parser.py',879),
- ('type_qualifier -> CONST','type_qualifier',1,'p_type_qualifier','c_parser.py',886),
- ('type_qualifier -> RESTRICT','type_qualifier',1,'p_type_qualifier','c_parser.py',887),
- ('type_qualifier -> VOLATILE','type_qualifier',1,'p_type_qualifier','c_parser.py',888),
- ('type_qualifier -> _ATOMIC','type_qualifier',1,'p_type_qualifier','c_parser.py',889),
- ('init_declarator_list -> init_declarator','init_declarator_list',1,'p_init_declarator_list','c_parser.py',894),
- ('init_declarator_list -> init_declarator_list COMMA init_declarator','init_declarator_list',3,'p_init_declarator_list','c_parser.py',895),
- ('init_declarator -> declarator','init_declarator',1,'p_init_declarator','c_parser.py',903),
- ('init_declarator -> declarator EQUALS initializer','init_declarator',3,'p_init_declarator','c_parser.py',904),
- ('id_init_declarator_list -> id_init_declarator','id_init_declarator_list',1,'p_id_init_declarator_list','c_parser.py',909),
- ('id_init_declarator_list -> id_init_declarator_list COMMA init_declarator','id_init_declarator_list',3,'p_id_init_declarator_list','c_parser.py',910),
- ('id_init_declarator -> id_declarator','id_init_declarator',1,'p_id_init_declarator','c_parser.py',915),
- ('id_init_declarator -> id_declarator EQUALS initializer','id_init_declarator',3,'p_id_init_declarator','c_parser.py',916),
- ('specifier_qualifier_list -> specifier_qualifier_list type_specifier_no_typeid','specifier_qualifier_list',2,'p_specifier_qualifier_list_1','c_parser.py',923),
- ('specifier_qualifier_list -> specifier_qualifier_list type_qualifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_2','c_parser.py',928),
- ('specifier_qualifier_list -> type_specifier','specifier_qualifier_list',1,'p_specifier_qualifier_list_3','c_parser.py',933),
- ('specifier_qualifier_list -> type_qualifier_list type_specifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_4','c_parser.py',938),
- ('specifier_qualifier_list -> alignment_specifier','specifier_qualifier_list',1,'p_specifier_qualifier_list_5','c_parser.py',943),
- ('specifier_qualifier_list -> specifier_qualifier_list alignment_specifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_6','c_parser.py',948),
- ('struct_or_union_specifier -> struct_or_union ID','struct_or_union_specifier',2,'p_struct_or_union_specifier_1','c_parser.py',956),
- ('struct_or_union_specifier -> struct_or_union TYPEID','struct_or_union_specifier',2,'p_struct_or_union_specifier_1','c_parser.py',957),
- ('struct_or_union_specifier -> struct_or_union brace_open struct_declaration_list brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_2','c_parser.py',967),
- ('struct_or_union_specifier -> struct_or_union brace_open brace_close','struct_or_union_specifier',3,'p_struct_or_union_specifier_2','c_parser.py',968),
- ('struct_or_union_specifier -> struct_or_union ID brace_open struct_declaration_list brace_close','struct_or_union_specifier',5,'p_struct_or_union_specifier_3','c_parser.py',985),
- ('struct_or_union_specifier -> struct_or_union ID brace_open brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_3','c_parser.py',986),
- ('struct_or_union_specifier -> struct_or_union TYPEID brace_open struct_declaration_list brace_close','struct_or_union_specifier',5,'p_struct_or_union_specifier_3','c_parser.py',987),
- ('struct_or_union_specifier -> struct_or_union TYPEID brace_open brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_3','c_parser.py',988),
- ('struct_or_union -> STRUCT','struct_or_union',1,'p_struct_or_union','c_parser.py',1004),
- ('struct_or_union -> UNION','struct_or_union',1,'p_struct_or_union','c_parser.py',1005),
- ('struct_declaration_list -> struct_declaration','struct_declaration_list',1,'p_struct_declaration_list','c_parser.py',1012),
- ('struct_declaration_list -> struct_declaration_list struct_declaration','struct_declaration_list',2,'p_struct_declaration_list','c_parser.py',1013),
- ('struct_declaration -> specifier_qualifier_list struct_declarator_list_opt SEMI','struct_declaration',3,'p_struct_declaration_1','c_parser.py',1021),
- ('struct_declaration -> SEMI','struct_declaration',1,'p_struct_declaration_2','c_parser.py',1059),
- ('struct_declaration -> pppragma_directive','struct_declaration',1,'p_struct_declaration_3','c_parser.py',1064),
- ('struct_declarator_list -> struct_declarator','struct_declarator_list',1,'p_struct_declarator_list','c_parser.py',1069),
- ('struct_declarator_list -> struct_declarator_list COMMA struct_declarator','struct_declarator_list',3,'p_struct_declarator_list','c_parser.py',1070),
- ('struct_declarator -> declarator','struct_declarator',1,'p_struct_declarator_1','c_parser.py',1078),
- ('struct_declarator -> declarator COLON constant_expression','struct_declarator',3,'p_struct_declarator_2','c_parser.py',1083),
- ('struct_declarator -> COLON constant_expression','struct_declarator',2,'p_struct_declarator_2','c_parser.py',1084),
- ('enum_specifier -> ENUM ID','enum_specifier',2,'p_enum_specifier_1','c_parser.py',1092),
- ('enum_specifier -> ENUM TYPEID','enum_specifier',2,'p_enum_specifier_1','c_parser.py',1093),
- ('enum_specifier -> ENUM brace_open enumerator_list brace_close','enum_specifier',4,'p_enum_specifier_2','c_parser.py',1098),
- ('enum_specifier -> ENUM ID brace_open enumerator_list brace_close','enum_specifier',5,'p_enum_specifier_3','c_parser.py',1103),
- ('enum_specifier -> ENUM TYPEID brace_open enumerator_list brace_close','enum_specifier',5,'p_enum_specifier_3','c_parser.py',1104),
- ('enumerator_list -> enumerator','enumerator_list',1,'p_enumerator_list','c_parser.py',1109),
- ('enumerator_list -> enumerator_list COMMA','enumerator_list',2,'p_enumerator_list','c_parser.py',1110),
- ('enumerator_list -> enumerator_list COMMA enumerator','enumerator_list',3,'p_enumerator_list','c_parser.py',1111),
- ('alignment_specifier -> _ALIGNAS LPAREN type_name RPAREN','alignment_specifier',4,'p_alignment_specifier','c_parser.py',1122),
- ('alignment_specifier -> _ALIGNAS LPAREN constant_expression RPAREN','alignment_specifier',4,'p_alignment_specifier','c_parser.py',1123),
- ('enumerator -> ID','enumerator',1,'p_enumerator','c_parser.py',1128),
- ('enumerator -> ID EQUALS constant_expression','enumerator',3,'p_enumerator','c_parser.py',1129),
- ('declarator -> id_declarator','declarator',1,'p_declarator','c_parser.py',1144),
- ('declarator -> typeid_declarator','declarator',1,'p_declarator','c_parser.py',1145),
- ('pointer -> TIMES type_qualifier_list_opt','pointer',2,'p_pointer','c_parser.py',1257),
- ('pointer -> TIMES type_qualifier_list_opt pointer','pointer',3,'p_pointer','c_parser.py',1258),
- ('type_qualifier_list -> type_qualifier','type_qualifier_list',1,'p_type_qualifier_list','c_parser.py',1287),
- ('type_qualifier_list -> type_qualifier_list type_qualifier','type_qualifier_list',2,'p_type_qualifier_list','c_parser.py',1288),
- ('parameter_type_list -> parameter_list','parameter_type_list',1,'p_parameter_type_list','c_parser.py',1293),
- ('parameter_type_list -> parameter_list COMMA ELLIPSIS','parameter_type_list',3,'p_parameter_type_list','c_parser.py',1294),
- ('parameter_list -> parameter_declaration','parameter_list',1,'p_parameter_list','c_parser.py',1302),
- ('parameter_list -> parameter_list COMMA parameter_declaration','parameter_list',3,'p_parameter_list','c_parser.py',1303),
- ('parameter_declaration -> declaration_specifiers id_declarator','parameter_declaration',2,'p_parameter_declaration_1','c_parser.py',1322),
- ('parameter_declaration -> declaration_specifiers typeid_noparen_declarator','parameter_declaration',2,'p_parameter_declaration_1','c_parser.py',1323),
- ('parameter_declaration -> declaration_specifiers abstract_declarator_opt','parameter_declaration',2,'p_parameter_declaration_2','c_parser.py',1334),
- ('identifier_list -> identifier','identifier_list',1,'p_identifier_list','c_parser.py',1366),
- ('identifier_list -> identifier_list COMMA identifier','identifier_list',3,'p_identifier_list','c_parser.py',1367),
- ('initializer -> assignment_expression','initializer',1,'p_initializer_1','c_parser.py',1376),
- ('initializer -> brace_open initializer_list_opt brace_close','initializer',3,'p_initializer_2','c_parser.py',1381),
- ('initializer -> brace_open initializer_list COMMA brace_close','initializer',4,'p_initializer_2','c_parser.py',1382),
- ('initializer_list -> designation_opt initializer','initializer_list',2,'p_initializer_list','c_parser.py',1390),
- ('initializer_list -> initializer_list COMMA designation_opt initializer','initializer_list',4,'p_initializer_list','c_parser.py',1391),
- ('designation -> designator_list EQUALS','designation',2,'p_designation','c_parser.py',1402),
- ('designator_list -> designator','designator_list',1,'p_designator_list','c_parser.py',1410),
- ('designator_list -> designator_list designator','designator_list',2,'p_designator_list','c_parser.py',1411),
- ('designator -> LBRACKET constant_expression RBRACKET','designator',3,'p_designator','c_parser.py',1416),
- ('designator -> PERIOD identifier','designator',2,'p_designator','c_parser.py',1417),
- ('type_name -> specifier_qualifier_list abstract_declarator_opt','type_name',2,'p_type_name','c_parser.py',1422),
- ('abstract_declarator -> pointer','abstract_declarator',1,'p_abstract_declarator_1','c_parser.py',1434),
- ('abstract_declarator -> pointer direct_abstract_declarator','abstract_declarator',2,'p_abstract_declarator_2','c_parser.py',1442),
- ('abstract_declarator -> direct_abstract_declarator','abstract_declarator',1,'p_abstract_declarator_3','c_parser.py',1447),
- ('direct_abstract_declarator -> LPAREN abstract_declarator RPAREN','direct_abstract_declarator',3,'p_direct_abstract_declarator_1','c_parser.py',1457),
- ('direct_abstract_declarator -> direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_2','c_parser.py',1461),
- ('direct_abstract_declarator -> LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_3','c_parser.py',1472),
- ('direct_abstract_declarator -> direct_abstract_declarator LBRACKET TIMES RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_4','c_parser.py',1482),
- ('direct_abstract_declarator -> LBRACKET TIMES RBRACKET','direct_abstract_declarator',3,'p_direct_abstract_declarator_5','c_parser.py',1493),
- ('direct_abstract_declarator -> direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN','direct_abstract_declarator',4,'p_direct_abstract_declarator_6','c_parser.py',1502),
- ('direct_abstract_declarator -> LPAREN parameter_type_list_opt RPAREN','direct_abstract_declarator',3,'p_direct_abstract_declarator_7','c_parser.py',1512),
- ('block_item -> declaration','block_item',1,'p_block_item','c_parser.py',1523),
- ('block_item -> statement','block_item',1,'p_block_item','c_parser.py',1524),
- ('block_item_list -> block_item','block_item_list',1,'p_block_item_list','c_parser.py',1531),
- ('block_item_list -> block_item_list block_item','block_item_list',2,'p_block_item_list','c_parser.py',1532),
- ('compound_statement -> brace_open block_item_list_opt brace_close','compound_statement',3,'p_compound_statement_1','c_parser.py',1538),
- ('labeled_statement -> ID COLON pragmacomp_or_statement','labeled_statement',3,'p_labeled_statement_1','c_parser.py',1544),
- ('labeled_statement -> CASE constant_expression COLON pragmacomp_or_statement','labeled_statement',4,'p_labeled_statement_2','c_parser.py',1548),
- ('labeled_statement -> DEFAULT COLON pragmacomp_or_statement','labeled_statement',3,'p_labeled_statement_3','c_parser.py',1552),
- ('selection_statement -> IF LPAREN expression RPAREN pragmacomp_or_statement','selection_statement',5,'p_selection_statement_1','c_parser.py',1556),
- ('selection_statement -> IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement','selection_statement',7,'p_selection_statement_2','c_parser.py',1560),
- ('selection_statement -> SWITCH LPAREN expression RPAREN pragmacomp_or_statement','selection_statement',5,'p_selection_statement_3','c_parser.py',1564),
- ('iteration_statement -> WHILE LPAREN expression RPAREN pragmacomp_or_statement','iteration_statement',5,'p_iteration_statement_1','c_parser.py',1569),
- ('iteration_statement -> DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI','iteration_statement',7,'p_iteration_statement_2','c_parser.py',1573),
- ('iteration_statement -> FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement','iteration_statement',9,'p_iteration_statement_3','c_parser.py',1577),
- ('iteration_statement -> FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement','iteration_statement',8,'p_iteration_statement_4','c_parser.py',1581),
- ('jump_statement -> GOTO ID SEMI','jump_statement',3,'p_jump_statement_1','c_parser.py',1586),
- ('jump_statement -> BREAK SEMI','jump_statement',2,'p_jump_statement_2','c_parser.py',1590),
- ('jump_statement -> CONTINUE SEMI','jump_statement',2,'p_jump_statement_3','c_parser.py',1594),
- ('jump_statement -> RETURN expression SEMI','jump_statement',3,'p_jump_statement_4','c_parser.py',1598),
- ('jump_statement -> RETURN SEMI','jump_statement',2,'p_jump_statement_4','c_parser.py',1599),
- ('expression_statement -> expression_opt SEMI','expression_statement',2,'p_expression_statement','c_parser.py',1604),
- ('expression -> assignment_expression','expression',1,'p_expression','c_parser.py',1611),
- ('expression -> expression COMMA assignment_expression','expression',3,'p_expression','c_parser.py',1612),
- ('assignment_expression -> LPAREN compound_statement RPAREN','assignment_expression',3,'p_parenthesized_compound_expression','c_parser.py',1624),
- ('typedef_name -> TYPEID','typedef_name',1,'p_typedef_name','c_parser.py',1628),
- ('assignment_expression -> conditional_expression','assignment_expression',1,'p_assignment_expression','c_parser.py',1632),
- ('assignment_expression -> unary_expression assignment_operator assignment_expression','assignment_expression',3,'p_assignment_expression','c_parser.py',1633),
- ('assignment_operator -> EQUALS','assignment_operator',1,'p_assignment_operator','c_parser.py',1646),
- ('assignment_operator -> XOREQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1647),
- ('assignment_operator -> TIMESEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1648),
- ('assignment_operator -> DIVEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1649),
- ('assignment_operator -> MODEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1650),
- ('assignment_operator -> PLUSEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1651),
- ('assignment_operator -> MINUSEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1652),
- ('assignment_operator -> LSHIFTEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1653),
- ('assignment_operator -> RSHIFTEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1654),
- ('assignment_operator -> ANDEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1655),
- ('assignment_operator -> OREQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1656),
- ('constant_expression -> conditional_expression','constant_expression',1,'p_constant_expression','c_parser.py',1661),
- ('conditional_expression -> binary_expression','conditional_expression',1,'p_conditional_expression','c_parser.py',1665),
- ('conditional_expression -> binary_expression CONDOP expression COLON conditional_expression','conditional_expression',5,'p_conditional_expression','c_parser.py',1666),
- ('binary_expression -> cast_expression','binary_expression',1,'p_binary_expression','c_parser.py',1674),
- ('binary_expression -> binary_expression TIMES binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1675),
- ('binary_expression -> binary_expression DIVIDE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1676),
- ('binary_expression -> binary_expression MOD binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1677),
- ('binary_expression -> binary_expression PLUS binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1678),
- ('binary_expression -> binary_expression MINUS binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1679),
- ('binary_expression -> binary_expression RSHIFT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1680),
- ('binary_expression -> binary_expression LSHIFT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1681),
- ('binary_expression -> binary_expression LT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1682),
- ('binary_expression -> binary_expression LE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1683),
- ('binary_expression -> binary_expression GE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1684),
- ('binary_expression -> binary_expression GT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1685),
- ('binary_expression -> binary_expression EQ binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1686),
- ('binary_expression -> binary_expression NE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1687),
- ('binary_expression -> binary_expression AND binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1688),
- ('binary_expression -> binary_expression OR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1689),
- ('binary_expression -> binary_expression XOR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1690),
- ('binary_expression -> binary_expression LAND binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1691),
- ('binary_expression -> binary_expression LOR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1692),
- ('cast_expression -> unary_expression','cast_expression',1,'p_cast_expression_1','c_parser.py',1700),
- ('cast_expression -> LPAREN type_name RPAREN cast_expression','cast_expression',4,'p_cast_expression_2','c_parser.py',1704),
- ('unary_expression -> postfix_expression','unary_expression',1,'p_unary_expression_1','c_parser.py',1708),
- ('unary_expression -> PLUSPLUS unary_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1712),
- ('unary_expression -> MINUSMINUS unary_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1713),
- ('unary_expression -> unary_operator cast_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1714),
- ('unary_expression -> SIZEOF unary_expression','unary_expression',2,'p_unary_expression_3','c_parser.py',1719),
- ('unary_expression -> SIZEOF LPAREN type_name RPAREN','unary_expression',4,'p_unary_expression_3','c_parser.py',1720),
- ('unary_expression -> _ALIGNOF LPAREN type_name RPAREN','unary_expression',4,'p_unary_expression_3','c_parser.py',1721),
- ('unary_operator -> AND','unary_operator',1,'p_unary_operator','c_parser.py',1729),
- ('unary_operator -> TIMES','unary_operator',1,'p_unary_operator','c_parser.py',1730),
- ('unary_operator -> PLUS','unary_operator',1,'p_unary_operator','c_parser.py',1731),
- ('unary_operator -> MINUS','unary_operator',1,'p_unary_operator','c_parser.py',1732),
- ('unary_operator -> NOT','unary_operator',1,'p_unary_operator','c_parser.py',1733),
- ('unary_operator -> LNOT','unary_operator',1,'p_unary_operator','c_parser.py',1734),
- ('postfix_expression -> primary_expression','postfix_expression',1,'p_postfix_expression_1','c_parser.py',1739),
- ('postfix_expression -> postfix_expression LBRACKET expression RBRACKET','postfix_expression',4,'p_postfix_expression_2','c_parser.py',1743),
- ('postfix_expression -> postfix_expression LPAREN argument_expression_list RPAREN','postfix_expression',4,'p_postfix_expression_3','c_parser.py',1747),
- ('postfix_expression -> postfix_expression LPAREN RPAREN','postfix_expression',3,'p_postfix_expression_3','c_parser.py',1748),
- ('postfix_expression -> postfix_expression PERIOD ID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1753),
- ('postfix_expression -> postfix_expression PERIOD TYPEID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1754),
- ('postfix_expression -> postfix_expression ARROW ID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1755),
- ('postfix_expression -> postfix_expression ARROW TYPEID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1756),
- ('postfix_expression -> postfix_expression PLUSPLUS','postfix_expression',2,'p_postfix_expression_5','c_parser.py',1762),
- ('postfix_expression -> postfix_expression MINUSMINUS','postfix_expression',2,'p_postfix_expression_5','c_parser.py',1763),
- ('postfix_expression -> LPAREN type_name RPAREN brace_open initializer_list brace_close','postfix_expression',6,'p_postfix_expression_6','c_parser.py',1768),
- ('postfix_expression -> LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close','postfix_expression',7,'p_postfix_expression_6','c_parser.py',1769),
- ('primary_expression -> identifier','primary_expression',1,'p_primary_expression_1','c_parser.py',1774),
- ('primary_expression -> constant','primary_expression',1,'p_primary_expression_2','c_parser.py',1778),
- ('primary_expression -> unified_string_literal','primary_expression',1,'p_primary_expression_3','c_parser.py',1782),
- ('primary_expression -> unified_wstring_literal','primary_expression',1,'p_primary_expression_3','c_parser.py',1783),
- ('primary_expression -> LPAREN expression RPAREN','primary_expression',3,'p_primary_expression_4','c_parser.py',1788),
- ('primary_expression -> OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN','primary_expression',6,'p_primary_expression_5','c_parser.py',1792),
- ('offsetof_member_designator -> identifier','offsetof_member_designator',1,'p_offsetof_member_designator','c_parser.py',1800),
- ('offsetof_member_designator -> offsetof_member_designator PERIOD identifier','offsetof_member_designator',3,'p_offsetof_member_designator','c_parser.py',1801),
- ('offsetof_member_designator -> offsetof_member_designator LBRACKET expression RBRACKET','offsetof_member_designator',4,'p_offsetof_member_designator','c_parser.py',1802),
- ('argument_expression_list -> assignment_expression','argument_expression_list',1,'p_argument_expression_list','c_parser.py',1814),
- ('argument_expression_list -> argument_expression_list COMMA assignment_expression','argument_expression_list',3,'p_argument_expression_list','c_parser.py',1815),
- ('identifier -> ID','identifier',1,'p_identifier','c_parser.py',1824),
- ('constant -> INT_CONST_DEC','constant',1,'p_constant_1','c_parser.py',1828),
- ('constant -> INT_CONST_OCT','constant',1,'p_constant_1','c_parser.py',1829),
- ('constant -> INT_CONST_HEX','constant',1,'p_constant_1','c_parser.py',1830),
- ('constant -> INT_CONST_BIN','constant',1,'p_constant_1','c_parser.py',1831),
- ('constant -> INT_CONST_CHAR','constant',1,'p_constant_1','c_parser.py',1832),
- ('constant -> FLOAT_CONST','constant',1,'p_constant_2','c_parser.py',1851),
- ('constant -> HEX_FLOAT_CONST','constant',1,'p_constant_2','c_parser.py',1852),
- ('constant -> CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1868),
- ('constant -> WCHAR_CONST','constant',1,'p_constant_3','c_parser.py',1869),
- ('constant -> U8CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1870),
- ('constant -> U16CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1871),
- ('constant -> U32CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1872),
- ('unified_string_literal -> STRING_LITERAL','unified_string_literal',1,'p_unified_string_literal','c_parser.py',1883),
- ('unified_string_literal -> unified_string_literal STRING_LITERAL','unified_string_literal',2,'p_unified_string_literal','c_parser.py',1884),
- ('unified_wstring_literal -> WSTRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1894),
- ('unified_wstring_literal -> U8STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1895),
- ('unified_wstring_literal -> U16STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1896),
- ('unified_wstring_literal -> U32STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1897),
- ('unified_wstring_literal -> unified_wstring_literal WSTRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1898),
- ('unified_wstring_literal -> unified_wstring_literal U8STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1899),
- ('unified_wstring_literal -> unified_wstring_literal U16STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1900),
- ('unified_wstring_literal -> unified_wstring_literal U32STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1901),
- ('brace_open -> LBRACE','brace_open',1,'p_brace_open','c_parser.py',1911),
- ('brace_close -> RBRACE','brace_close',1,'p_brace_close','c_parser.py',1917),
- ('empty -> <empty>','empty',0,'p_empty','c_parser.py',1923),
+ ('pppragma_directive -> PPPRAGMA','pppragma_directive',1,'p_pppragma_directive','c_parser.py',580),
+ ('pppragma_directive -> PPPRAGMA PPPRAGMASTR','pppragma_directive',2,'p_pppragma_directive','c_parser.py',581),
+ ('pppragma_directive -> _PRAGMA LPAREN unified_string_literal RPAREN','pppragma_directive',4,'p_pppragma_directive','c_parser.py',582),
+ ('pppragma_directive_list -> pppragma_directive','pppragma_directive_list',1,'p_pppragma_directive_list','c_parser.py',592),
+ ('pppragma_directive_list -> pppragma_directive_list pppragma_directive','pppragma_directive_list',2,'p_pppragma_directive_list','c_parser.py',593),
+ ('function_definition -> id_declarator declaration_list_opt compound_statement','function_definition',3,'p_function_definition_1','c_parser.py',600),
+ ('function_definition -> declaration_specifiers id_declarator declaration_list_opt compound_statement','function_definition',4,'p_function_definition_2','c_parser.py',618),
+ ('statement -> labeled_statement','statement',1,'p_statement','c_parser.py',633),
+ ('statement -> expression_statement','statement',1,'p_statement','c_parser.py',634),
+ ('statement -> compound_statement','statement',1,'p_statement','c_parser.py',635),
+ ('statement -> selection_statement','statement',1,'p_statement','c_parser.py',636),
+ ('statement -> iteration_statement','statement',1,'p_statement','c_parser.py',637),
+ ('statement -> jump_statement','statement',1,'p_statement','c_parser.py',638),
+ ('statement -> pppragma_directive','statement',1,'p_statement','c_parser.py',639),
+ ('statement -> static_assert','statement',1,'p_statement','c_parser.py',640),
+ ('pragmacomp_or_statement -> pppragma_directive_list statement','pragmacomp_or_statement',2,'p_pragmacomp_or_statement','c_parser.py',688),
+ ('pragmacomp_or_statement -> statement','pragmacomp_or_statement',1,'p_pragmacomp_or_statement','c_parser.py',689),
+ ('decl_body -> declaration_specifiers init_declarator_list_opt','decl_body',2,'p_decl_body','c_parser.py',708),
+ ('decl_body -> declaration_specifiers_no_type id_init_declarator_list_opt','decl_body',2,'p_decl_body','c_parser.py',709),
+ ('declaration -> decl_body SEMI','declaration',2,'p_declaration','c_parser.py',769),
+ ('declaration_list -> declaration','declaration_list',1,'p_declaration_list','c_parser.py',778),
+ ('declaration_list -> declaration_list declaration','declaration_list',2,'p_declaration_list','c_parser.py',779),
+ ('declaration_specifiers_no_type -> type_qualifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_1','c_parser.py',789),
+ ('declaration_specifiers_no_type -> storage_class_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_2','c_parser.py',794),
+ ('declaration_specifiers_no_type -> function_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_3','c_parser.py',799),
+ ('declaration_specifiers_no_type -> atomic_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_4','c_parser.py',806),
+ ('declaration_specifiers_no_type -> alignment_specifier declaration_specifiers_no_type_opt','declaration_specifiers_no_type',2,'p_declaration_specifiers_no_type_5','c_parser.py',811),
+ ('declaration_specifiers -> declaration_specifiers type_qualifier','declaration_specifiers',2,'p_declaration_specifiers_1','c_parser.py',816),
+ ('declaration_specifiers -> declaration_specifiers storage_class_specifier','declaration_specifiers',2,'p_declaration_specifiers_2','c_parser.py',821),
+ ('declaration_specifiers -> declaration_specifiers function_specifier','declaration_specifiers',2,'p_declaration_specifiers_3','c_parser.py',826),
+ ('declaration_specifiers -> declaration_specifiers type_specifier_no_typeid','declaration_specifiers',2,'p_declaration_specifiers_4','c_parser.py',831),
+ ('declaration_specifiers -> type_specifier','declaration_specifiers',1,'p_declaration_specifiers_5','c_parser.py',836),
+ ('declaration_specifiers -> declaration_specifiers_no_type type_specifier','declaration_specifiers',2,'p_declaration_specifiers_6','c_parser.py',841),
+ ('declaration_specifiers -> declaration_specifiers alignment_specifier','declaration_specifiers',2,'p_declaration_specifiers_7','c_parser.py',846),
+ ('storage_class_specifier -> AUTO','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',851),
+ ('storage_class_specifier -> REGISTER','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',852),
+ ('storage_class_specifier -> STATIC','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',853),
+ ('storage_class_specifier -> EXTERN','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',854),
+ ('storage_class_specifier -> TYPEDEF','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',855),
+ ('storage_class_specifier -> _THREAD_LOCAL','storage_class_specifier',1,'p_storage_class_specifier','c_parser.py',856),
+ ('function_specifier -> INLINE','function_specifier',1,'p_function_specifier','c_parser.py',861),
+ ('function_specifier -> _NORETURN','function_specifier',1,'p_function_specifier','c_parser.py',862),
+ ('type_specifier_no_typeid -> VOID','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',867),
+ ('type_specifier_no_typeid -> _BOOL','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',868),
+ ('type_specifier_no_typeid -> CHAR','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',869),
+ ('type_specifier_no_typeid -> SHORT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',870),
+ ('type_specifier_no_typeid -> INT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',871),
+ ('type_specifier_no_typeid -> LONG','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',872),
+ ('type_specifier_no_typeid -> FLOAT','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',873),
+ ('type_specifier_no_typeid -> DOUBLE','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',874),
+ ('type_specifier_no_typeid -> _COMPLEX','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',875),
+ ('type_specifier_no_typeid -> SIGNED','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',876),
+ ('type_specifier_no_typeid -> UNSIGNED','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',877),
+ ('type_specifier_no_typeid -> __INT128','type_specifier_no_typeid',1,'p_type_specifier_no_typeid','c_parser.py',878),
+ ('type_specifier -> typedef_name','type_specifier',1,'p_type_specifier','c_parser.py',883),
+ ('type_specifier -> enum_specifier','type_specifier',1,'p_type_specifier','c_parser.py',884),
+ ('type_specifier -> struct_or_union_specifier','type_specifier',1,'p_type_specifier','c_parser.py',885),
+ ('type_specifier -> type_specifier_no_typeid','type_specifier',1,'p_type_specifier','c_parser.py',886),
+ ('type_specifier -> atomic_specifier','type_specifier',1,'p_type_specifier','c_parser.py',887),
+ ('atomic_specifier -> _ATOMIC LPAREN type_name RPAREN','atomic_specifier',4,'p_atomic_specifier','c_parser.py',893),
+ ('type_qualifier -> CONST','type_qualifier',1,'p_type_qualifier','c_parser.py',900),
+ ('type_qualifier -> RESTRICT','type_qualifier',1,'p_type_qualifier','c_parser.py',901),
+ ('type_qualifier -> VOLATILE','type_qualifier',1,'p_type_qualifier','c_parser.py',902),
+ ('type_qualifier -> _ATOMIC','type_qualifier',1,'p_type_qualifier','c_parser.py',903),
+ ('init_declarator_list -> init_declarator','init_declarator_list',1,'p_init_declarator_list','c_parser.py',908),
+ ('init_declarator_list -> init_declarator_list COMMA init_declarator','init_declarator_list',3,'p_init_declarator_list','c_parser.py',909),
+ ('init_declarator -> declarator','init_declarator',1,'p_init_declarator','c_parser.py',917),
+ ('init_declarator -> declarator EQUALS initializer','init_declarator',3,'p_init_declarator','c_parser.py',918),
+ ('id_init_declarator_list -> id_init_declarator','id_init_declarator_list',1,'p_id_init_declarator_list','c_parser.py',923),
+ ('id_init_declarator_list -> id_init_declarator_list COMMA init_declarator','id_init_declarator_list',3,'p_id_init_declarator_list','c_parser.py',924),
+ ('id_init_declarator -> id_declarator','id_init_declarator',1,'p_id_init_declarator','c_parser.py',929),
+ ('id_init_declarator -> id_declarator EQUALS initializer','id_init_declarator',3,'p_id_init_declarator','c_parser.py',930),
+ ('specifier_qualifier_list -> specifier_qualifier_list type_specifier_no_typeid','specifier_qualifier_list',2,'p_specifier_qualifier_list_1','c_parser.py',937),
+ ('specifier_qualifier_list -> specifier_qualifier_list type_qualifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_2','c_parser.py',942),
+ ('specifier_qualifier_list -> type_specifier','specifier_qualifier_list',1,'p_specifier_qualifier_list_3','c_parser.py',947),
+ ('specifier_qualifier_list -> type_qualifier_list type_specifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_4','c_parser.py',952),
+ ('specifier_qualifier_list -> alignment_specifier','specifier_qualifier_list',1,'p_specifier_qualifier_list_5','c_parser.py',957),
+ ('specifier_qualifier_list -> specifier_qualifier_list alignment_specifier','specifier_qualifier_list',2,'p_specifier_qualifier_list_6','c_parser.py',962),
+ ('struct_or_union_specifier -> struct_or_union ID','struct_or_union_specifier',2,'p_struct_or_union_specifier_1','c_parser.py',970),
+ ('struct_or_union_specifier -> struct_or_union TYPEID','struct_or_union_specifier',2,'p_struct_or_union_specifier_1','c_parser.py',971),
+ ('struct_or_union_specifier -> struct_or_union brace_open struct_declaration_list brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_2','c_parser.py',981),
+ ('struct_or_union_specifier -> struct_or_union brace_open brace_close','struct_or_union_specifier',3,'p_struct_or_union_specifier_2','c_parser.py',982),
+ ('struct_or_union_specifier -> struct_or_union ID brace_open struct_declaration_list brace_close','struct_or_union_specifier',5,'p_struct_or_union_specifier_3','c_parser.py',999),
+ ('struct_or_union_specifier -> struct_or_union ID brace_open brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_3','c_parser.py',1000),
+ ('struct_or_union_specifier -> struct_or_union TYPEID brace_open struct_declaration_list brace_close','struct_or_union_specifier',5,'p_struct_or_union_specifier_3','c_parser.py',1001),
+ ('struct_or_union_specifier -> struct_or_union TYPEID brace_open brace_close','struct_or_union_specifier',4,'p_struct_or_union_specifier_3','c_parser.py',1002),
+ ('struct_or_union -> STRUCT','struct_or_union',1,'p_struct_or_union','c_parser.py',1018),
+ ('struct_or_union -> UNION','struct_or_union',1,'p_struct_or_union','c_parser.py',1019),
+ ('struct_declaration_list -> struct_declaration','struct_declaration_list',1,'p_struct_declaration_list','c_parser.py',1026),
+ ('struct_declaration_list -> struct_declaration_list struct_declaration','struct_declaration_list',2,'p_struct_declaration_list','c_parser.py',1027),
+ ('struct_declaration -> specifier_qualifier_list struct_declarator_list_opt SEMI','struct_declaration',3,'p_struct_declaration_1','c_parser.py',1035),
+ ('struct_declaration -> SEMI','struct_declaration',1,'p_struct_declaration_2','c_parser.py',1073),
+ ('struct_declaration -> pppragma_directive','struct_declaration',1,'p_struct_declaration_3','c_parser.py',1078),
+ ('struct_declarator_list -> struct_declarator','struct_declarator_list',1,'p_struct_declarator_list','c_parser.py',1083),
+ ('struct_declarator_list -> struct_declarator_list COMMA struct_declarator','struct_declarator_list',3,'p_struct_declarator_list','c_parser.py',1084),
+ ('struct_declarator -> declarator','struct_declarator',1,'p_struct_declarator_1','c_parser.py',1092),
+ ('struct_declarator -> declarator COLON constant_expression','struct_declarator',3,'p_struct_declarator_2','c_parser.py',1097),
+ ('struct_declarator -> COLON constant_expression','struct_declarator',2,'p_struct_declarator_2','c_parser.py',1098),
+ ('enum_specifier -> ENUM ID','enum_specifier',2,'p_enum_specifier_1','c_parser.py',1106),
+ ('enum_specifier -> ENUM TYPEID','enum_specifier',2,'p_enum_specifier_1','c_parser.py',1107),
+ ('enum_specifier -> ENUM brace_open enumerator_list brace_close','enum_specifier',4,'p_enum_specifier_2','c_parser.py',1112),
+ ('enum_specifier -> ENUM ID brace_open enumerator_list brace_close','enum_specifier',5,'p_enum_specifier_3','c_parser.py',1117),
+ ('enum_specifier -> ENUM TYPEID brace_open enumerator_list brace_close','enum_specifier',5,'p_enum_specifier_3','c_parser.py',1118),
+ ('enumerator_list -> enumerator','enumerator_list',1,'p_enumerator_list','c_parser.py',1123),
+ ('enumerator_list -> enumerator_list COMMA','enumerator_list',2,'p_enumerator_list','c_parser.py',1124),
+ ('enumerator_list -> enumerator_list COMMA enumerator','enumerator_list',3,'p_enumerator_list','c_parser.py',1125),
+ ('alignment_specifier -> _ALIGNAS LPAREN type_name RPAREN','alignment_specifier',4,'p_alignment_specifier','c_parser.py',1136),
+ ('alignment_specifier -> _ALIGNAS LPAREN constant_expression RPAREN','alignment_specifier',4,'p_alignment_specifier','c_parser.py',1137),
+ ('enumerator -> ID','enumerator',1,'p_enumerator','c_parser.py',1142),
+ ('enumerator -> ID EQUALS constant_expression','enumerator',3,'p_enumerator','c_parser.py',1143),
+ ('declarator -> id_declarator','declarator',1,'p_declarator','c_parser.py',1158),
+ ('declarator -> typeid_declarator','declarator',1,'p_declarator','c_parser.py',1159),
+ ('pointer -> TIMES type_qualifier_list_opt','pointer',2,'p_pointer','c_parser.py',1271),
+ ('pointer -> TIMES type_qualifier_list_opt pointer','pointer',3,'p_pointer','c_parser.py',1272),
+ ('type_qualifier_list -> type_qualifier','type_qualifier_list',1,'p_type_qualifier_list','c_parser.py',1301),
+ ('type_qualifier_list -> type_qualifier_list type_qualifier','type_qualifier_list',2,'p_type_qualifier_list','c_parser.py',1302),
+ ('parameter_type_list -> parameter_list','parameter_type_list',1,'p_parameter_type_list','c_parser.py',1307),
+ ('parameter_type_list -> parameter_list COMMA ELLIPSIS','parameter_type_list',3,'p_parameter_type_list','c_parser.py',1308),
+ ('parameter_list -> parameter_declaration','parameter_list',1,'p_parameter_list','c_parser.py',1316),
+ ('parameter_list -> parameter_list COMMA parameter_declaration','parameter_list',3,'p_parameter_list','c_parser.py',1317),
+ ('parameter_declaration -> declaration_specifiers id_declarator','parameter_declaration',2,'p_parameter_declaration_1','c_parser.py',1336),
+ ('parameter_declaration -> declaration_specifiers typeid_noparen_declarator','parameter_declaration',2,'p_parameter_declaration_1','c_parser.py',1337),
+ ('parameter_declaration -> declaration_specifiers abstract_declarator_opt','parameter_declaration',2,'p_parameter_declaration_2','c_parser.py',1348),
+ ('identifier_list -> identifier','identifier_list',1,'p_identifier_list','c_parser.py',1380),
+ ('identifier_list -> identifier_list COMMA identifier','identifier_list',3,'p_identifier_list','c_parser.py',1381),
+ ('initializer -> assignment_expression','initializer',1,'p_initializer_1','c_parser.py',1390),
+ ('initializer -> brace_open initializer_list_opt brace_close','initializer',3,'p_initializer_2','c_parser.py',1395),
+ ('initializer -> brace_open initializer_list COMMA brace_close','initializer',4,'p_initializer_2','c_parser.py',1396),
+ ('initializer_list -> designation_opt initializer','initializer_list',2,'p_initializer_list','c_parser.py',1404),
+ ('initializer_list -> initializer_list COMMA designation_opt initializer','initializer_list',4,'p_initializer_list','c_parser.py',1405),
+ ('designation -> designator_list EQUALS','designation',2,'p_designation','c_parser.py',1416),
+ ('designator_list -> designator','designator_list',1,'p_designator_list','c_parser.py',1424),
+ ('designator_list -> designator_list designator','designator_list',2,'p_designator_list','c_parser.py',1425),
+ ('designator -> LBRACKET constant_expression RBRACKET','designator',3,'p_designator','c_parser.py',1430),
+ ('designator -> PERIOD identifier','designator',2,'p_designator','c_parser.py',1431),
+ ('type_name -> specifier_qualifier_list abstract_declarator_opt','type_name',2,'p_type_name','c_parser.py',1436),
+ ('abstract_declarator -> pointer','abstract_declarator',1,'p_abstract_declarator_1','c_parser.py',1448),
+ ('abstract_declarator -> pointer direct_abstract_declarator','abstract_declarator',2,'p_abstract_declarator_2','c_parser.py',1456),
+ ('abstract_declarator -> direct_abstract_declarator','abstract_declarator',1,'p_abstract_declarator_3','c_parser.py',1461),
+ ('direct_abstract_declarator -> LPAREN abstract_declarator RPAREN','direct_abstract_declarator',3,'p_direct_abstract_declarator_1','c_parser.py',1471),
+ ('direct_abstract_declarator -> direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_2','c_parser.py',1475),
+ ('direct_abstract_declarator -> LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_3','c_parser.py',1486),
+ ('direct_abstract_declarator -> direct_abstract_declarator LBRACKET TIMES RBRACKET','direct_abstract_declarator',4,'p_direct_abstract_declarator_4','c_parser.py',1496),
+ ('direct_abstract_declarator -> LBRACKET TIMES RBRACKET','direct_abstract_declarator',3,'p_direct_abstract_declarator_5','c_parser.py',1507),
+ ('direct_abstract_declarator -> direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN','direct_abstract_declarator',4,'p_direct_abstract_declarator_6','c_parser.py',1516),
+ ('direct_abstract_declarator -> LPAREN parameter_type_list_opt RPAREN','direct_abstract_declarator',3,'p_direct_abstract_declarator_7','c_parser.py',1526),
+ ('block_item -> declaration','block_item',1,'p_block_item','c_parser.py',1537),
+ ('block_item -> statement','block_item',1,'p_block_item','c_parser.py',1538),
+ ('block_item_list -> block_item','block_item_list',1,'p_block_item_list','c_parser.py',1545),
+ ('block_item_list -> block_item_list block_item','block_item_list',2,'p_block_item_list','c_parser.py',1546),
+ ('compound_statement -> brace_open block_item_list_opt brace_close','compound_statement',3,'p_compound_statement_1','c_parser.py',1552),
+ ('labeled_statement -> ID COLON pragmacomp_or_statement','labeled_statement',3,'p_labeled_statement_1','c_parser.py',1558),
+ ('labeled_statement -> CASE constant_expression COLON pragmacomp_or_statement','labeled_statement',4,'p_labeled_statement_2','c_parser.py',1562),
+ ('labeled_statement -> DEFAULT COLON pragmacomp_or_statement','labeled_statement',3,'p_labeled_statement_3','c_parser.py',1566),
+ ('selection_statement -> IF LPAREN expression RPAREN pragmacomp_or_statement','selection_statement',5,'p_selection_statement_1','c_parser.py',1570),
+ ('selection_statement -> IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement','selection_statement',7,'p_selection_statement_2','c_parser.py',1574),
+ ('selection_statement -> SWITCH LPAREN expression RPAREN pragmacomp_or_statement','selection_statement',5,'p_selection_statement_3','c_parser.py',1578),
+ ('iteration_statement -> WHILE LPAREN expression RPAREN pragmacomp_or_statement','iteration_statement',5,'p_iteration_statement_1','c_parser.py',1583),
+ ('iteration_statement -> DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI','iteration_statement',7,'p_iteration_statement_2','c_parser.py',1587),
+ ('iteration_statement -> FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement','iteration_statement',9,'p_iteration_statement_3','c_parser.py',1591),
+ ('iteration_statement -> FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement','iteration_statement',8,'p_iteration_statement_4','c_parser.py',1595),
+ ('jump_statement -> GOTO ID SEMI','jump_statement',3,'p_jump_statement_1','c_parser.py',1600),
+ ('jump_statement -> BREAK SEMI','jump_statement',2,'p_jump_statement_2','c_parser.py',1604),
+ ('jump_statement -> CONTINUE SEMI','jump_statement',2,'p_jump_statement_3','c_parser.py',1608),
+ ('jump_statement -> RETURN expression SEMI','jump_statement',3,'p_jump_statement_4','c_parser.py',1612),
+ ('jump_statement -> RETURN SEMI','jump_statement',2,'p_jump_statement_4','c_parser.py',1613),
+ ('expression_statement -> expression_opt SEMI','expression_statement',2,'p_expression_statement','c_parser.py',1618),
+ ('expression -> assignment_expression','expression',1,'p_expression','c_parser.py',1625),
+ ('expression -> expression COMMA assignment_expression','expression',3,'p_expression','c_parser.py',1626),
+ ('assignment_expression -> LPAREN compound_statement RPAREN','assignment_expression',3,'p_parenthesized_compound_expression','c_parser.py',1638),
+ ('typedef_name -> TYPEID','typedef_name',1,'p_typedef_name','c_parser.py',1642),
+ ('assignment_expression -> conditional_expression','assignment_expression',1,'p_assignment_expression','c_parser.py',1646),
+ ('assignment_expression -> unary_expression assignment_operator assignment_expression','assignment_expression',3,'p_assignment_expression','c_parser.py',1647),
+ ('assignment_operator -> EQUALS','assignment_operator',1,'p_assignment_operator','c_parser.py',1660),
+ ('assignment_operator -> XOREQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1661),
+ ('assignment_operator -> TIMESEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1662),
+ ('assignment_operator -> DIVEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1663),
+ ('assignment_operator -> MODEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1664),
+ ('assignment_operator -> PLUSEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1665),
+ ('assignment_operator -> MINUSEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1666),
+ ('assignment_operator -> LSHIFTEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1667),
+ ('assignment_operator -> RSHIFTEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1668),
+ ('assignment_operator -> ANDEQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1669),
+ ('assignment_operator -> OREQUAL','assignment_operator',1,'p_assignment_operator','c_parser.py',1670),
+ ('constant_expression -> conditional_expression','constant_expression',1,'p_constant_expression','c_parser.py',1675),
+ ('conditional_expression -> binary_expression','conditional_expression',1,'p_conditional_expression','c_parser.py',1679),
+ ('conditional_expression -> binary_expression CONDOP expression COLON conditional_expression','conditional_expression',5,'p_conditional_expression','c_parser.py',1680),
+ ('binary_expression -> cast_expression','binary_expression',1,'p_binary_expression','c_parser.py',1688),
+ ('binary_expression -> binary_expression TIMES binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1689),
+ ('binary_expression -> binary_expression DIVIDE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1690),
+ ('binary_expression -> binary_expression MOD binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1691),
+ ('binary_expression -> binary_expression PLUS binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1692),
+ ('binary_expression -> binary_expression MINUS binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1693),
+ ('binary_expression -> binary_expression RSHIFT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1694),
+ ('binary_expression -> binary_expression LSHIFT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1695),
+ ('binary_expression -> binary_expression LT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1696),
+ ('binary_expression -> binary_expression LE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1697),
+ ('binary_expression -> binary_expression GE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1698),
+ ('binary_expression -> binary_expression GT binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1699),
+ ('binary_expression -> binary_expression EQ binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1700),
+ ('binary_expression -> binary_expression NE binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1701),
+ ('binary_expression -> binary_expression AND binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1702),
+ ('binary_expression -> binary_expression OR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1703),
+ ('binary_expression -> binary_expression XOR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1704),
+ ('binary_expression -> binary_expression LAND binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1705),
+ ('binary_expression -> binary_expression LOR binary_expression','binary_expression',3,'p_binary_expression','c_parser.py',1706),
+ ('cast_expression -> unary_expression','cast_expression',1,'p_cast_expression_1','c_parser.py',1714),
+ ('cast_expression -> LPAREN type_name RPAREN cast_expression','cast_expression',4,'p_cast_expression_2','c_parser.py',1718),
+ ('unary_expression -> postfix_expression','unary_expression',1,'p_unary_expression_1','c_parser.py',1722),
+ ('unary_expression -> PLUSPLUS unary_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1726),
+ ('unary_expression -> MINUSMINUS unary_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1727),
+ ('unary_expression -> unary_operator cast_expression','unary_expression',2,'p_unary_expression_2','c_parser.py',1728),
+ ('unary_expression -> SIZEOF unary_expression','unary_expression',2,'p_unary_expression_3','c_parser.py',1733),
+ ('unary_expression -> SIZEOF LPAREN type_name RPAREN','unary_expression',4,'p_unary_expression_3','c_parser.py',1734),
+ ('unary_expression -> _ALIGNOF LPAREN type_name RPAREN','unary_expression',4,'p_unary_expression_3','c_parser.py',1735),
+ ('unary_operator -> AND','unary_operator',1,'p_unary_operator','c_parser.py',1743),
+ ('unary_operator -> TIMES','unary_operator',1,'p_unary_operator','c_parser.py',1744),
+ ('unary_operator -> PLUS','unary_operator',1,'p_unary_operator','c_parser.py',1745),
+ ('unary_operator -> MINUS','unary_operator',1,'p_unary_operator','c_parser.py',1746),
+ ('unary_operator -> NOT','unary_operator',1,'p_unary_operator','c_parser.py',1747),
+ ('unary_operator -> LNOT','unary_operator',1,'p_unary_operator','c_parser.py',1748),
+ ('postfix_expression -> primary_expression','postfix_expression',1,'p_postfix_expression_1','c_parser.py',1753),
+ ('postfix_expression -> postfix_expression LBRACKET expression RBRACKET','postfix_expression',4,'p_postfix_expression_2','c_parser.py',1757),
+ ('postfix_expression -> postfix_expression LPAREN argument_expression_list RPAREN','postfix_expression',4,'p_postfix_expression_3','c_parser.py',1761),
+ ('postfix_expression -> postfix_expression LPAREN RPAREN','postfix_expression',3,'p_postfix_expression_3','c_parser.py',1762),
+ ('postfix_expression -> postfix_expression PERIOD ID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1767),
+ ('postfix_expression -> postfix_expression PERIOD TYPEID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1768),
+ ('postfix_expression -> postfix_expression ARROW ID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1769),
+ ('postfix_expression -> postfix_expression ARROW TYPEID','postfix_expression',3,'p_postfix_expression_4','c_parser.py',1770),
+ ('postfix_expression -> postfix_expression PLUSPLUS','postfix_expression',2,'p_postfix_expression_5','c_parser.py',1776),
+ ('postfix_expression -> postfix_expression MINUSMINUS','postfix_expression',2,'p_postfix_expression_5','c_parser.py',1777),
+ ('postfix_expression -> LPAREN type_name RPAREN brace_open initializer_list brace_close','postfix_expression',6,'p_postfix_expression_6','c_parser.py',1782),
+ ('postfix_expression -> LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close','postfix_expression',7,'p_postfix_expression_6','c_parser.py',1783),
+ ('primary_expression -> identifier','primary_expression',1,'p_primary_expression_1','c_parser.py',1788),
+ ('primary_expression -> constant','primary_expression',1,'p_primary_expression_2','c_parser.py',1792),
+ ('primary_expression -> unified_string_literal','primary_expression',1,'p_primary_expression_3','c_parser.py',1796),
+ ('primary_expression -> unified_wstring_literal','primary_expression',1,'p_primary_expression_3','c_parser.py',1797),
+ ('primary_expression -> LPAREN expression RPAREN','primary_expression',3,'p_primary_expression_4','c_parser.py',1802),
+ ('primary_expression -> OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN','primary_expression',6,'p_primary_expression_5','c_parser.py',1806),
+ ('offsetof_member_designator -> identifier','offsetof_member_designator',1,'p_offsetof_member_designator','c_parser.py',1814),
+ ('offsetof_member_designator -> offsetof_member_designator PERIOD identifier','offsetof_member_designator',3,'p_offsetof_member_designator','c_parser.py',1815),
+ ('offsetof_member_designator -> offsetof_member_designator LBRACKET expression RBRACKET','offsetof_member_designator',4,'p_offsetof_member_designator','c_parser.py',1816),
+ ('argument_expression_list -> assignment_expression','argument_expression_list',1,'p_argument_expression_list','c_parser.py',1828),
+ ('argument_expression_list -> argument_expression_list COMMA assignment_expression','argument_expression_list',3,'p_argument_expression_list','c_parser.py',1829),
+ ('identifier -> ID','identifier',1,'p_identifier','c_parser.py',1838),
+ ('constant -> INT_CONST_DEC','constant',1,'p_constant_1','c_parser.py',1842),
+ ('constant -> INT_CONST_OCT','constant',1,'p_constant_1','c_parser.py',1843),
+ ('constant -> INT_CONST_HEX','constant',1,'p_constant_1','c_parser.py',1844),
+ ('constant -> INT_CONST_BIN','constant',1,'p_constant_1','c_parser.py',1845),
+ ('constant -> INT_CONST_CHAR','constant',1,'p_constant_1','c_parser.py',1846),
+ ('constant -> FLOAT_CONST','constant',1,'p_constant_2','c_parser.py',1865),
+ ('constant -> HEX_FLOAT_CONST','constant',1,'p_constant_2','c_parser.py',1866),
+ ('constant -> CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1882),
+ ('constant -> WCHAR_CONST','constant',1,'p_constant_3','c_parser.py',1883),
+ ('constant -> U8CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1884),
+ ('constant -> U16CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1885),
+ ('constant -> U32CHAR_CONST','constant',1,'p_constant_3','c_parser.py',1886),
+ ('unified_string_literal -> STRING_LITERAL','unified_string_literal',1,'p_unified_string_literal','c_parser.py',1897),
+ ('unified_string_literal -> unified_string_literal STRING_LITERAL','unified_string_literal',2,'p_unified_string_literal','c_parser.py',1898),
+ ('unified_wstring_literal -> WSTRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1908),
+ ('unified_wstring_literal -> U8STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1909),
+ ('unified_wstring_literal -> U16STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1910),
+ ('unified_wstring_literal -> U32STRING_LITERAL','unified_wstring_literal',1,'p_unified_wstring_literal','c_parser.py',1911),
+ ('unified_wstring_literal -> unified_wstring_literal WSTRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1912),
+ ('unified_wstring_literal -> unified_wstring_literal U8STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1913),
+ ('unified_wstring_literal -> unified_wstring_literal U16STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1914),
+ ('unified_wstring_literal -> unified_wstring_literal U32STRING_LITERAL','unified_wstring_literal',2,'p_unified_wstring_literal','c_parser.py',1915),
+ ('brace_open -> LBRACE','brace_open',1,'p_brace_open','c_parser.py',1925),
+ ('brace_close -> RBRACE','brace_close',1,'p_brace_close','c_parser.py',1931),
+ ('empty -> <empty>','empty',0,'p_empty','c_parser.py',1937),
]
diff --git a/lib_pypy/pypy_tools/build_cffi_imports.py b/lib_pypy/pypy_tools/build_cffi_imports.py
index f50eb69f58..d9145ff3d1 100644
--- a/lib_pypy/pypy_tools/build_cffi_imports.py
+++ b/lib_pypy/pypy_tools/build_cffi_imports.py
@@ -53,26 +53,26 @@ configure_args = ['./configure',
# without an _ssl module, but the OpenSSL download site redirect HTTP
# to HTTPS
cffi_dependencies = {
- 'lzma': ('http://distfiles.macports.org/xz/xz-5.2.5.tar.bz2',
- '5117f930900b341493827d63aa910ff5e011e0b994197c3b71c08a20228a42df',
- [configure_args,
- ['make', '-s', '-j', str(multiprocessing.cpu_count())],
- ['make', 'install', 'DESTDIR={}/'.format(deps_destdir)],
- ]),
- '_ssl1': ('http://artfiles.org/openssl.org/source/openssl-1.1.1s.tar.gz',
- 'c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa',
+ '_ssl1': ('http://artfiles.org/openssl.org/source/openssl-1.1.1t.tar.gz',
+ '8dee9b24bdb1dcbf0c3d1e9b02fb8f6bf22165e807f45adeb7c9677536859d3b',
[
['./config', '--prefix=/usr', 'no-shared'],
['make', '-s', '-j', str(multiprocessing.cpu_count())],
['make', 'install', 'DESTDIR={}/'.format(deps_destdir)],
]),
- '_ssl3': ('http://artfiles.org/openssl.org/source/openssl-3.0.7.tar.gz',
- '83049d042a260e696f62406ac5c08bf706fd84383f945cf21bd61e9ed95c396e',
+ '_ssl3': ('http://artfiles.org/openssl.org/source/openssl-3.0.8.tar.gz',
+ '6c13d2bf38fdf31eac3ce2a347073673f5d63263398f1f69d0df4a41253e4b3e',
[
['./config', '--prefix=/usr', 'no-shared', 'enable-fips'],
['make', '-s', '-j', str(multiprocessing.cpu_count())],
['make', 'install', 'DESTDIR={}/'.format(deps_destdir)],
]),
+ 'lzma': ('http://distfiles.macports.org/xz/xz-5.2.5.tar.bz2',
+ '5117f930900b341493827d63aa910ff5e011e0b994197c3b71c08a20228a42df',
+ [configure_args,
+ ['make', '-s', '-j', str(multiprocessing.cpu_count())],
+ ['make', 'install', 'DESTDIR={}/'.format(deps_destdir)],
+ ]),
}
cffi_dependencies['_ssl'] = cffi_dependencies['_ssl1']
diff --git a/pypy/doc/conf.py b/pypy/doc/conf.py
index d7ea8fb65c..f0eab77cd2 100644
--- a/pypy/doc/conf.py
+++ b/pypy/doc/conf.py
@@ -75,7 +75,7 @@ master_doc = 'index'
# General information about the project.
project = u'PyPy'
-copyright = u'2022, The PyPy Project'
+copyright = u'2023, The PyPy Project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -89,7 +89,7 @@ copyright = u'2022, The PyPy Project'
# The short X.Y version.
version = '7.3'
# The full version, including alpha/beta/rc tags.
-release = '7.3.11'
+release = '7.3.12'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/pypy/doc/cpython_differences.rst b/pypy/doc/cpython_differences.rst
index ec5c76c0a2..805814258a 100644
--- a/pypy/doc/cpython_differences.rst
+++ b/pypy/doc/cpython_differences.rst
@@ -84,7 +84,7 @@ object and the weakref will be considered as dead at the same time,
and the callback will not be invoked. (Issue `#2030`__)
.. __: https://docs.python.org/2/library/weakref.html
-.. __: https://foss.heptapod.net/pypy/pypy/issue/2030/
+.. __: https://foss.heptapod.net/pypy/pypy/-/issues/2030/
---------------------------------
@@ -287,7 +287,7 @@ Another consequence is that ``cmp(float('nan'), float('nan')) == 0``, because
no good value to return from this call to ``cmp``, because ``cmp`` pretends
that there is a total order on floats, but that is wrong for NaNs).
-.. __: https://foss.heptapod.net/pypy/pypy/issue/1974/different-behaviour-for-collections-of
+.. __: https://foss.heptapod.net/pypy/pypy/-/issues/1974
Permitted ABI tags in extensions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -623,6 +623,6 @@ that are neither mentioned above nor in :source:`lib_pypy/` are not available in
.. _`is ignored in PyPy`: https://bugs.python.org/issue14621
.. _`little point`: https://events.ccc.de/congress/2012/Fahrplan/events/5152.en.html
-.. _`#2072`: https://foss.heptapod.net/pypy/pypy/issue/2072/
-.. _`issue #2653`: https://foss.heptapod.net/pypy/pypy/issues/2653/
+.. _`#2072`: https://foss.heptapod.net/pypy/pypy/-/issues/2072/
+.. _`issue #2653`: https://foss.heptapod.net/pypy/pypy/-/issues/2653/
.. _SyntaxError: https://www.pypy.org/posts/2018/04/improving-syntaxerror-in-pypy-5733639208090522433.html
diff --git a/pypy/doc/release-v7.3.11.rst b/pypy/doc/release-v7.3.11.rst
index 5837c928f5..cd29675ecb 100644
--- a/pypy/doc/release-v7.3.11.rst
+++ b/pypy/doc/release-v7.3.11.rst
@@ -5,7 +5,7 @@ PyPy v7.3.11: release of python 2.7, 3.8, and 3.9
..
Changelog up to commit 207858e40e63
-.. note::
+.. note_::
This is a pre-release announcement. When the release actually happens, it
will be announced on the `PyPy blog`_
diff --git a/pypy/interpreter/astcompiler/assemble.py b/pypy/interpreter/astcompiler/assemble.py
index 5684b078d0..60e6c36013 100644
--- a/pypy/interpreter/astcompiler/assemble.py
+++ b/pypy/interpreter/astcompiler/assemble.py
@@ -3,6 +3,7 @@
import math
import os
from rpython.rlib.objectmodel import we_are_translated
+from rpython.rlib import rstring
from pypy.interpreter.astcompiler import ast, misc, symtable
from pypy.interpreter.error import OperationError
@@ -10,6 +11,12 @@ from pypy.interpreter.pycode import PyCode
from pypy.interpreter.miscutils import string_sort
from pypy.tool import stdlib_opcode as ops
+is_absolute_jump = misc.dict_to_switch(
+ {opcode.index: True
+ for opcode in ops.unrolling_opcode_descs
+ if opcode.index in ops.hasjabs},
+ default=False)
+
class StackDepthComputationError(Exception):
pass
@@ -22,7 +29,7 @@ class Instruction(object):
self.opcode = opcode
self.arg = arg
self.lineno = 0
- self.has_jump = False
+ self.jump = None
def size(self):
"""Return the size of bytes of this instruction when it is
@@ -32,13 +39,12 @@ class Instruction(object):
return (6 if self.arg > 0xFFFF else 3)
return 1
- def jump_to(self, target, absolute=False):
+ def jump_to(self, target):
"""Indicate the target this jump instruction.
The opcode must be a JUMP opcode.
"""
- self.jump = (target, absolute)
- self.has_jump = True
+ self.jump = target
def __repr__(self):
data = [ops.opname[self.opcode]]
@@ -46,8 +52,8 @@ class Instruction(object):
if self.opcode >= ops.HAVE_ARGUMENT:
data.append(self.arg)
template += " %i"
- if self.has_jump:
- data.append(self.jump[0])
+ if self.jump is not None:
+ data.append(self.jump)
template += " %s"
template += ">"
return template % tuple(data)
@@ -61,18 +67,20 @@ class Block(object):
reaches the end of the block, it continues to next_block.
"""
- marked = False
- have_return = False
- auto_inserted_return = False
-
def __init__(self):
self.instructions = []
self.next_block = None
-
- def _post_order_see(self, stack, nextblock):
- if nextblock.marked == 0:
- nextblock.marked = 1
- stack.append(nextblock)
+ self.marked = 0
+ # is True if instructions[-1] is one that unconditionally leaves the
+ # execution of the instructions in the block (return, raise,
+ # unconditional jumps)
+ self.cant_add_instructions = False
+ self.auto_inserted_return = False
+
+ def _post_order_see(self, stack):
+ if self.marked == 0:
+ self.marked = 1
+ stack.append(self)
def post_order(self):
"""Return this block and its children in post order. This means
@@ -91,16 +99,16 @@ class Block(object):
if current.marked == 1:
current.marked = 2
if current.next_block is not None:
- self._post_order_see(stack, current.next_block)
+ current.next_block._post_order_see(stack)
else:
i = current.marked - 2
assert i >= 0
while i < len(current.instructions):
instr = current.instructions[i]
i += 1
- if instr.has_jump:
+ if instr.jump is not None:
current.marked = i + 2
- self._post_order_see(stack, instr.jump[0])
+ instr.jump._post_order_see(stack)
break
else:
resultblocks.append(current)
@@ -117,9 +125,8 @@ class Block(object):
i += instr.size()
return i
- def get_code(self):
+ def get_code(self, code):
"""Encode the instructions in this block into bytecode."""
- code = []
for instr in self.instructions:
opcode = instr.opcode
if opcode >= ops.HAVE_ARGUMENT:
@@ -135,7 +142,6 @@ class Block(object):
code.append(chr(arg >> 8))
else:
code.append(chr(opcode))
- return ''.join(code)
def _make_index_dict_filter(syms, flag):
@@ -189,7 +195,6 @@ class PythonCodeMaker(ast.ASTVisitor):
def use_block(self, block):
"""Start emitting bytecode into block."""
self.current_block = block
- self.instrs = block.instructions
def use_next_block(self, block=None):
"""Set this block as the next_block for the last and use it."""
@@ -203,7 +208,18 @@ class PythonCodeMaker(ast.ASTVisitor):
"""Return False if any code can be meaningfully added to the
current block, or True if it would be dead code."""
# currently only True after a RETURN_VALUE.
- return self.current_block.have_return
+ return self.current_block.cant_add_instructions
+
+ def emit_instr(self, instr):
+ self.current_block.instructions.append(instr)
+ op = instr.opcode
+ if (
+ op == ops.RETURN_VALUE or
+ op == ops.RAISE_VARARGS or
+ op == ops.JUMP_FORWARD or
+ op == ops.JUMP_ABSOLUTE
+ ):
+ self.current_block.cant_add_instructions = True
def emit_op(self, op):
"""Emit an opcode without an argument."""
@@ -212,9 +228,7 @@ class PythonCodeMaker(ast.ASTVisitor):
instr.lineno = self.lineno
self.lineno_set = True
if not self.is_dead_code():
- self.instrs.append(instr)
- if op == ops.RETURN_VALUE:
- self.current_block.have_return = True
+ self.emit_instr(instr)
return instr
def emit_op_arg(self, op, arg):
@@ -224,15 +238,15 @@ class PythonCodeMaker(ast.ASTVisitor):
instr.lineno = self.lineno
self.lineno_set = True
if not self.is_dead_code():
- self.instrs.append(instr)
+ self.emit_instr(instr)
def emit_op_name(self, op, container, name):
"""Emit an opcode referencing a name."""
self.emit_op_arg(op, self.add_name(container, name))
- def emit_jump(self, op, block_to, absolute=False):
+ def emit_jump(self, op, block_to):
"""Emit a jump opcode to another block."""
- self.emit_op(op).jump_to(block_to, absolute)
+ self.emit_op(op).jump_to(block_to)
def add_name(self, container, name):
"""Get the index of a name in container."""
@@ -292,12 +306,13 @@ class PythonCodeMaker(ast.ASTVisitor):
for block in blocks:
block.offset = offset
offset += block.code_size()
+ totalsize = offset
for block in blocks:
offset = block.offset
for instr in block.instructions:
offset += instr.size()
- if instr.has_jump:
- target, absolute = instr.jump
+ if instr.jump is not None:
+ target = instr.jump
op = instr.opcode
# Optimize an unconditional jump going to another
# unconditional jump.
@@ -305,29 +320,29 @@ class PythonCodeMaker(ast.ASTVisitor):
if target.instructions:
target_op = target.instructions[0].opcode
if target_op == ops.JUMP_ABSOLUTE:
- target = target.instructions[0].jump[0]
+ target = target.instructions[0].jump
instr.opcode = ops.JUMP_ABSOLUTE
- absolute = True
elif target_op == ops.RETURN_VALUE:
# Replace JUMP_* to a RETURN into
# just a RETURN
instr.opcode = ops.RETURN_VALUE
instr.arg = 0
- instr.has_jump = False
+ instr.jump = None
# The size of the code changed,
# we have to trigger another pass
force_redo = True
continue
- if absolute:
+ if is_absolute_jump(instr.opcode):
jump_arg = target.offset
else:
jump_arg = target.offset - offset
+ assert jump_arg >= 0
instr.arg = jump_arg
if jump_arg > 0xFFFF:
extended_arg_count += 1
if (extended_arg_count == last_extended_arg_count and
- not force_redo):
- break
+ not force_redo):
+ return totalsize
else:
last_extended_arg_count = extended_arg_count
@@ -366,7 +381,7 @@ class PythonCodeMaker(ast.ASTVisitor):
if depth >= self._max_depth:
self._max_depth = depth
jump_op = instr.opcode
- if instr.has_jump:
+ if instr.jump is not None:
target_depth = depth
if jump_op == ops.FOR_ITER:
target_depth -= 2
@@ -381,7 +396,7 @@ class PythonCodeMaker(ast.ASTVisitor):
elif (jump_op == ops.JUMP_IF_TRUE_OR_POP or
jump_op == ops.JUMP_IF_FALSE_OR_POP):
depth -= 1
- self._next_stack_depth_walk(instr.jump[0], target_depth)
+ self._next_stack_depth_walk(instr.jump, target_depth)
if jump_op == ops.JUMP_ABSOLUTE or jump_op == ops.JUMP_FORWARD:
# Nothing more can occur.
break
@@ -397,7 +412,7 @@ class PythonCodeMaker(ast.ASTVisitor):
"""Build the line number table for tracebacks and tracing."""
current_line = self.first_lineno
current_off = 0
- table = []
+ table = rstring.StringBuilder()
push = table.append
for block in blocks:
offset = block.offset
@@ -434,12 +449,18 @@ class PythonCodeMaker(ast.ASTVisitor):
current_line = instr.lineno
current_off = offset
offset += instr.size()
- return ''.join(table)
+ return table.build()
+
+ def _build_code(self, blocks, size):
+ bytecode = rstring.StringBuilder(size)
+ for block in blocks:
+ block.get_code(bytecode)
+ return bytecode.build()
def assemble(self):
"""Build a PyCode object."""
# Unless it's interactive, every code object must end in a return.
- if not self.current_block.have_return:
+ if not self.current_block.cant_add_instructions:
self.use_next_block()
if self.add_none_to_final_return:
self.load_const(self.space.w_None)
@@ -452,7 +473,7 @@ class PythonCodeMaker(ast.ASTVisitor):
else:
self.first_lineno = 1
blocks = self.first_block.post_order()
- self._resolve_block_targets(blocks)
+ size = self._resolve_block_targets(blocks)
lnotab = self._build_lnotab(blocks)
stack_depth = self._stacksize(blocks)
consts_w = self.consts_w[:]
@@ -461,7 +482,7 @@ class PythonCodeMaker(ast.ASTVisitor):
cell_names = _list_from_dict(self.cell_vars)
free_names = _list_from_dict(self.free_vars, len(cell_names))
flags = self._get_code_flags() | self.compile_info.flags
- bytecode = ''.join([block.get_code() for block in blocks])
+ bytecode = self._build_code(blocks, size)
return PyCode(self.space,
self.argcount,
len(self.var_names),
diff --git a/pypy/interpreter/astcompiler/codegen.py b/pypy/interpreter/astcompiler/codegen.py
index f31c30e2de..1628cb5498 100644
--- a/pypy/interpreter/astcompiler/codegen.py
+++ b/pypy/interpreter/astcompiler/codegen.py
@@ -470,13 +470,13 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
current_block, block = self.frame_blocks[-1]
# Continue cannot be in a finally block.
if current_block == F_BLOCK_LOOP:
- self.emit_jump(ops.JUMP_ABSOLUTE, block, True)
+ self.emit_jump(ops.JUMP_ABSOLUTE, block)
elif current_block == F_BLOCK_EXCEPT or \
current_block == F_BLOCK_FINALLY:
for i in range(len(self.frame_blocks) - 2, -1, -1):
f_type, block = self.frame_blocks[i]
if f_type == F_BLOCK_LOOP:
- self.emit_jump(ops.CONTINUE_LOOP, block, True)
+ self.emit_jump(ops.CONTINUE_LOOP, block)
break
if f_type == F_BLOCK_FINALLY_END:
self.error("'continue' not supported inside 'finally' "
@@ -501,7 +501,7 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
self.emit_jump(ops.FOR_ITER, cleanup)
fr.target.walkabout(self)
self.visit_sequence(fr.body)
- self.emit_jump(ops.JUMP_ABSOLUTE, start, True)
+ self.emit_jump(ops.JUMP_ABSOLUTE, start)
self.use_next_block(cleanup)
self.emit_op(ops.POP_BLOCK)
self.pop_frame_block(F_BLOCK_LOOP, start)
@@ -527,7 +527,7 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
self.lineno_set = False
wh.test.accept_jump_if(self, False, anchor)
self.visit_sequence(wh.body)
- self.emit_jump(ops.JUMP_ABSOLUTE, loop, True)
+ self.emit_jump(ops.JUMP_ABSOLUTE, loop)
if test_constant == optimize.CONST_NOT_CONST:
self.use_next_block(anchor)
self.emit_op(ops.POP_BLOCK)
@@ -556,7 +556,7 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
self.emit_op(ops.DUP_TOP)
handler.type.walkabout(self)
self.emit_op_arg(ops.COMPARE_OP, 10)
- self.emit_jump(ops.POP_JUMP_IF_FALSE, next_except, True)
+ self.emit_jump(ops.POP_JUMP_IF_FALSE, next_except)
else:
if i != len(te.handlers) - 1:
self.error(
@@ -838,7 +838,7 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
end = self.new_block()
for value in op.values[:-1]:
value.walkabout(self)
- self.emit_jump(instr, end, True)
+ self.emit_jump(instr, end)
op.values[-1].walkabout(self)
self.use_next_block(end)
@@ -855,7 +855,7 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
self.emit_op(ops.ROT_THREE)
op_kind = compare_operations(comp.ops[i - 1])
self.emit_op_arg(ops.COMPARE_OP, op_kind)
- self.emit_jump(ops.JUMP_IF_FALSE_OR_POP, cleanup, True)
+ self.emit_jump(ops.JUMP_IF_FALSE_OR_POP, cleanup)
if i < (ops_count - 1):
comp.comparators[i].walkabout(self)
last_op, last_comparator = comp.ops[-1], comp.comparators[-1]
@@ -1058,7 +1058,7 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
self.emit_op_arg(ops.LIST_APPEND, gen_index + 1)
self.use_next_block(skip)
self.use_next_block(if_cleanup)
- self.emit_jump(ops.JUMP_ABSOLUTE, start, True)
+ self.emit_jump(ops.JUMP_ABSOLUTE, start)
self.use_next_block(anchor)
def visit_ListComp(self, lc):
@@ -1102,7 +1102,7 @@ class PythonCodeGenerator(assemble.PythonCodeMaker):
else:
node.accept_comp_iteration(self, gen_index)
self.use_next_block(if_cleanup)
- self.emit_jump(ops.JUMP_ABSOLUTE, start, True)
+ self.emit_jump(ops.JUMP_ABSOLUTE, start)
self.use_next_block(anchor)
def _compile_comprehension(self, node, name, sub_scope):
diff --git a/pypy/interpreter/astcompiler/optimize.py b/pypy/interpreter/astcompiler/optimize.py
index 0b64c769dd..220126da7e 100644
--- a/pypy/interpreter/astcompiler/optimize.py
+++ b/pypy/interpreter/astcompiler/optimize.py
@@ -40,9 +40,9 @@ class __extend__(ast.expr):
def accept_jump_if(self, gen, condition, target):
self.walkabout(gen)
if condition:
- gen.emit_jump(ops.POP_JUMP_IF_TRUE, target, True)
+ gen.emit_jump(ops.POP_JUMP_IF_TRUE, target)
else:
- gen.emit_jump(ops.POP_JUMP_IF_FALSE, target, True)
+ gen.emit_jump(ops.POP_JUMP_IF_FALSE, target)
class __extend__(ast.Num):
diff --git a/pypy/interpreter/astcompiler/test/test_compiler.py b/pypy/interpreter/astcompiler/test/test_compiler.py
index f7c779835b..d8021db6d4 100644
--- a/pypy/interpreter/astcompiler/test/test_compiler.py
+++ b/pypy/interpreter/astcompiler/test/test_compiler.py
@@ -1126,6 +1126,15 @@ class TestOptimizations:
counts = self.count_instructions(source)
assert counts == {ops.LOAD_CONST:1, ops.RETURN_VALUE: 1}
+ def test_remove_dead_code_after_raise(self):
+ source = """def f(x):
+ raise ValueError
+ x += 1
+ """
+ counts = self.count_instructions(source)
+ assert counts == {ops.LOAD_GLOBAL:1, ops.RAISE_VARARGS: 1}
+
+
def test_remove_dead_jump_after_return(self):
source = """def f(x, y, z):
if x:
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
index cf30d03be4..66a0f9306c 100644
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -1499,26 +1499,31 @@ class ObjSpace(object):
if op == 'ge': return self.ge(w_x1, w_x2)
assert False, "bad value for op"
- def decode_index(self, w_index_or_slice, seqlength):
+ def decode_index4_unsafe(self, w_index_or_slice, seqlength):
"""Helper for custom sequence implementations
- -> (index, 0, 0) or
- (start, stop, step)
+ -> (index, 0, 0, 1) or
+ (start, stop, step, slice_length)
+
+ UNSAFE: if the __index__ method of one of the slice's start/stop/step
+ fields changes the sequence, then the result can be incorrect
"""
if self.isinstance_w(w_index_or_slice, self.w_slice):
from pypy.objspace.std.sliceobject import W_SliceObject
assert isinstance(w_index_or_slice, W_SliceObject)
- start, stop, step = w_index_or_slice.indices3(self, seqlength)
+ start, stop, step, length = w_index_or_slice.indices4(self,
+ seqlength)
else:
- start = self.int_w(w_index_or_slice, allow_conversion=False)
+ start = self.getindex_w(w_index_or_slice, self.w_IndexError)
if start < 0:
start += seqlength
if not (0 <= start < seqlength):
raise oefmt(self.w_IndexError, "index out of range")
stop = 0
step = 0
- return start, stop, step
+ length = 1
+ return start, stop, step, length
- def decode_index4(self, w_index_or_slice, seqlength):
+ def decode_index4(self, w_index_or_slice, w_seq):
"""Helper for custom sequence implementations
-> (index, 0, 0, 1) or
(start, stop, step, slice_length)
@@ -1526,10 +1531,14 @@ class ObjSpace(object):
if self.isinstance_w(w_index_or_slice, self.w_slice):
from pypy.objspace.std.sliceobject import W_SliceObject
assert isinstance(w_index_or_slice, W_SliceObject)
- start, stop, step, length = w_index_or_slice.indices4(self,
- seqlength)
+ # it's important to first unpack the slice and then read the length
+ # of the sequence, because the former can change the latter
+ start, stop, step = w_index_or_slice.unpack(self)
+ seqlength = self.len_w(w_seq)
+ start, stop, step, length = w_index_or_slice.adjust_indices(start, stop, step, seqlength)
else:
- start = self.int_w(w_index_or_slice, allow_conversion=False)
+ start = self.getindex_w(w_index_or_slice, self.w_IndexError)
+ seqlength = self.len_w(w_seq)
if start < 0:
start += seqlength
if not (0 <= start < seqlength):
@@ -1539,6 +1548,7 @@ class ObjSpace(object):
length = 1
return start, stop, step, length
+
def getindex_w(self, w_obj, w_exception, objdescr=None, errmsg=None):
"""Return w_obj.__index__() as an RPython int.
If w_exception is None, silently clamp in case of overflow;
diff --git a/pypy/interpreter/pyparser/pytokenizer.py b/pypy/interpreter/pyparser/pytokenizer.py
index 4b5a4b424e..9c694d8ed2 100644
--- a/pypy/interpreter/pyparser/pytokenizer.py
+++ b/pypy/interpreter/pyparser/pytokenizer.py
@@ -80,6 +80,7 @@ def generate_tokens(lines, flags):
contstrs, needcont = [], False
indents = [0]
last_comment = ''
+ # contains the tokens of the opening parens
parenstack = []
# make the annotator happy
@@ -152,7 +153,10 @@ def generate_tokens(lines, flags):
else: # continued statement
if not line:
if parenstack:
- _, lnum1, start1, line1 = parenstack[0]
+ openparen = parenstack[0]
+ lnum1 = openparen.lineno
+ start1 = openparen.column
+ line1 = openparen.line
raise TokenError("parenthesis is never closed", line1,
lnum1, start1 + 1, token_list, lnum)
raise TokenError("end of file (EOF) in multi-line statement", line,
@@ -222,13 +226,25 @@ def generate_tokens(lines, flags):
lnum, start, line))
last_comment = ''
else:
+ if token in python_opmap:
+ punct = python_opmap[token]
+ else:
+ punct = tokens.OP
+ tok = Token(punct, token, lnum, start, line)
if initial in '([{':
- parenstack.append((initial, lnum, start, line))
+ parenstack.append(tok)
elif initial in ')]}':
if not parenstack:
raise TokenError("unmatched '%s'" % initial, line,
lnum, start + 1, token_list)
- opening, lnum1, start1, line1 = parenstack.pop()
+ openparen = parenstack.pop()
+
+ #opening, lnum1, start1, line1 = parenstack.pop()
+ opening = openparen.value[0]
+ lnum1 = openparen.lineno
+ start1 = openparen.column
+ line1 = openparen.line
+
if not ((opening == "(" and initial == ")") or
(opening == "[" and initial == "]") or
(opening == "{" and initial == "}")):
@@ -239,11 +255,7 @@ def generate_tokens(lines, flags):
msg += " on line " + str(lnum1)
raise TokenError(
msg, line, lnum, start + 1, token_list)
- if token in python_opmap:
- punct = python_opmap[token]
- else:
- punct = tokens.OP
- token_list.append(Token(punct, token, lnum, start, line))
+ token_list.append(tok)
last_comment = ''
else:
if start < 0:
diff --git a/pypy/module/_collections/interp_deque.py b/pypy/module/_collections/interp_deque.py
index 43bff2bdaf..f2580e7d66 100644
--- a/pypy/module/_collections/interp_deque.py
+++ b/pypy/module/_collections/interp_deque.py
@@ -374,7 +374,7 @@ class W_Deque(W_Root):
def getitem(self, w_index):
space = self.space
- start, stop, step = space.decode_index(w_index, self.len)
+ start, stop, step, _ = space.decode_index4(w_index, self)
if step == 0: # index only
b, i = self.locate(start)
return b.data[i]
@@ -383,7 +383,7 @@ class W_Deque(W_Root):
def setitem(self, w_index, w_newobj):
space = self.space
- start, stop, step = space.decode_index(w_index, self.len)
+ start, stop, step, _ = space.decode_index4(w_index, self)
if step == 0: # index only
b, i = self.locate(start)
b.data[i] = w_newobj
@@ -392,7 +392,7 @@ class W_Deque(W_Root):
def delitem(self, w_index):
space = self.space
- start, stop, step = space.decode_index(w_index, self.len)
+ start, stop, step, _ = space.decode_index4(w_index, self)
if step == 0: # index only
self.del_item(start)
else:
diff --git a/pypy/module/_collections/test/apptest_deque.py b/pypy/module/_collections/test/apptest_deque.py
index 66b903d6bb..38e8aa27ff 100644
--- a/pypy/module/_collections/test/apptest_deque.py
+++ b/pypy/module/_collections/test/apptest_deque.py
@@ -279,3 +279,22 @@ def test_free():
d.pop()
gc.collect(); gc.collect(); gc.collect()
assert X.freed
+
+def test_index_method():
+ d = deque([1, 2, 3, 4, 5])
+ class A(object):
+ def __index__(self):
+ return 1
+ assert d[A()] == 2
+
+def test_index_method_mutates():
+ d = deque([1, 2, 3, 4, 5])
+ class A(object):
+ def __index__(self):
+ d.clear()
+ return 1
+ with raises(IndexError):
+ d[A()]
+ d = deque([1, 2, 3, 4, 5])
+ with raises(IndexError):
+ d[A()] = 2
diff --git a/pypy/module/array/interp_array.py b/pypy/module/array/interp_array.py
index 5ebac5a3e4..63af36e4cd 100644
--- a/pypy/module/array/interp_array.py
+++ b/pypy/module/array/interp_array.py
@@ -568,8 +568,8 @@ class W_ArrayBase(W_Root):
def descr_getitem(self, space, w_idx):
"x.__getitem__(y) <==> x[y]"
if not space.isinstance_w(w_idx, space.w_slice):
- idx, stop, step = space.decode_index(w_idx, self.len)
- assert step == 0
+ idx, stop, step, slicelength = space.decode_index4(w_idx, self)
+ assert step == 0 and slicelength == 1
return self.w_getitem(space, idx)
else:
return self.getitem_slice(space, w_idx)
@@ -590,7 +590,7 @@ class W_ArrayBase(W_Root):
w_item)
def descr_delitem(self, space, w_idx):
- start, stop, step, size = self.space.decode_index4(w_idx, self.len)
+ start, stop, step, size = self.space.decode_index4(w_idx, self)
if step != 1:
# I don't care about efficiency of that so far
w_lst = self.descr_tolist(space)
@@ -1129,7 +1129,7 @@ def make_array(mytype):
keepalive_until_here(self)
def getitem_slice(self, space, w_idx):
- start, stop, step, size = space.decode_index4(w_idx, self.len)
+ start, stop, step, size = space.decode_index4(w_idx, self)
w_a = mytype.w_class(self.space)
w_a.setlen(size, overallocate=False)
assert step != 0
@@ -1144,7 +1144,8 @@ def make_array(mytype):
return w_a
def setitem(self, space, w_idx, w_item):
- idx, stop, step = space.decode_index(w_idx, self.len)
+ idx, stop, step, slicelength = space.decode_index4(w_idx, self)
+ assert slicelength == 1
if step != 0:
raise oefmt(self.space.w_TypeError,
"can only assign array to array slice")
@@ -1156,7 +1157,7 @@ def make_array(mytype):
if not isinstance(w_item, W_Array):
raise oefmt(space.w_TypeError,
"can only assign to a slice array")
- start, stop, step, size = self.space.decode_index4(w_idx, self.len)
+ start, stop, step, size = self.space.decode_index4(w_idx, self)
assert step != 0
if w_item.len != size or self is w_item:
if start == self.len and step > 0:
diff --git a/pypy/module/array/test/test_array.py b/pypy/module/array/test/test_array.py
index 39e2aebdab..10e54a1b94 100644
--- a/pypy/module/array/test/test_array.py
+++ b/pypy/module/array/test/test_array.py
@@ -1074,5 +1074,40 @@ class AppTestArray(object):
raises(TypeError, "a[MyInt(0)]")
raises(TypeError, "a[MyInt(0):MyInt(5)]")
+ def test_index_special_method(self):
+ class MyInt(object):
+ def __init__(self, x):
+ self.x = x
+
+ def __index__(self):
+ return self.x
+
+ a = self.array('i', [1, 2, 3, 4, 5, 6])
+ assert a[MyInt(0)] == 1
+ assert a[MyInt(0):MyInt(5)] == self.array('i', [1, 2, 3, 4, 5])
+
+ a[MyInt(0)] = 2
+ assert a[MyInt(0)] == 2
+ del a[MyInt(0)]
+ assert a == self.array('i', [2, 3, 4, 5, 6])
+
def test_fresh_array_buffer_str(self):
assert str(buffer(self.array('i'))) == ''
+
+ def test_mutate_while_slice(self):
+ class X:
+ def __index__(self):
+ del a[:]
+ return 1
+
+ a = self.array('i', [1, 2, 3, 4, 5, 6])
+ length = len(a[:X():2])
+ assert length == 0
+
+ a = self.array('i', [1, 2, 3, 4, 5, 6])
+ length = len(a[:X():2])
+ assert length == 0
+
+ a = self.array('i', [1, 2, 3, 4, 5, 6])
+ length = len(a[:X():2])
+ assert length == 0
diff --git a/pypy/module/cpyext/parse/cpyext_descrobject.h b/pypy/module/cpyext/parse/cpyext_descrobject.h
index 184c41af1d..60e703a859 100644
--- a/pypy/module/cpyext/parse/cpyext_descrobject.h
+++ b/pypy/module/cpyext/parse/cpyext_descrobject.h
@@ -39,6 +39,9 @@ typedef struct {
PyDescr_COMMON;
} PyDescrObject;
+#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
+#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
+
typedef struct {
PyDescr_COMMON;
PyMethodDef *d_method;
diff --git a/pypy/module/cpyext/test/test_typeobject.py b/pypy/module/cpyext/test/test_typeobject.py
index 7b2b831803..ab5595fb27 100644
--- a/pypy/module/cpyext/test/test_typeobject.py
+++ b/pypy/module/cpyext/test/test_typeobject.py
@@ -1820,3 +1820,44 @@ class AppTestFlags(AppTestCpythonExtensionBase):
assert module.test_pypy_flags(float, Py_TPPYPYFLAGS_FLOAT_SUBCLASS) == 0
assert module.test_pypy_flags(MyFloat, Py_TPPYPYFLAGS_FLOAT_SUBCLASS) == 0
+ def test_newgetset(self):
+ # Taken from the yara-python project
+ module = self.import_extension('foo', [
+ ('newexc', 'METH_NOARGS',
+ """
+ PyObject *YaraWarningError = PyErr_NewException("foo.YaraWarningError", PyExc_Exception, NULL);
+
+ PyTypeObject *YaraWarningError_type = (PyTypeObject *) YaraWarningError;
+ PyObject* descr = PyDescr_NewGetSet(YaraWarningError_type,
+ YaraWarningError_getsetters);
+ if (PyDict_SetItem(YaraWarningError_type->tp_dict,
+ PyDescr_NAME(descr), descr) < 0) {
+ Py_DECREF(descr);
+ return NULL;
+ }
+ return YaraWarningError;
+ """),
+ ], prologue="""
+ static PyObject* YaraWarningError_getwarnings(PyObject *self, void* closure)
+ {
+ PyObject *args = PyObject_GetAttrString(self, "args");
+ if (!args) {
+ return NULL;
+ }
+
+ PyObject* ret = PyTuple_GetItem(args, 0);
+ Py_XINCREF(ret);
+ Py_XDECREF(args);
+ return ret;
+ }
+
+ static PyGetSetDef YaraWarningError_getsetters[] = {
+ {"warnings", YaraWarningError_getwarnings, NULL, NULL, NULL},
+ {NULL}
+ };
+ """)
+ errtype = module.newexc()
+ err = errtype("abc")
+ assert err.warnings == "abc"
+
+
diff --git a/pypy/module/cpyext/typeobject.py b/pypy/module/cpyext/typeobject.py
index 0499e72694..cf4e13d2cc 100644
--- a/pypy/module/cpyext/typeobject.py
+++ b/pypy/module/cpyext/typeobject.py
@@ -73,9 +73,11 @@ class W_GetSetPropertyEx(GetSetProperty):
self.name, self.w_type)
+@cpython_api([PyTypeObjectPtr, lltype.Ptr(PyGetSetDef)], PyObject, result_is_ll=True)
def PyDescr_NewGetSet(space, w_type, getset):
# Note the arguments are reversed
- return W_GetSetPropertyEx(getset, w_type)
+ w_descr = W_GetSetPropertyEx(getset, w_type)
+ return make_ref(space, w_descr, w_type)
def make_GetSet(space, getsetprop):
py_getsetdef = lltype.malloc(PyGetSetDef, flavor='raw')
@@ -278,7 +280,7 @@ def convert_getset_defs(space, dict_w, getsets, w_type):
if not name:
break
name = rffi.charp2str(name)
- w_descr = PyDescr_NewGetSet(space, w_type, getset)
+ w_descr = W_GetSetPropertyEx(getset, w_type)
dict_w[name] = w_descr
def convert_member_defs(space, dict_w, members, w_type):
diff --git a/pypy/module/micronumpy/compile.py b/pypy/module/micronumpy/compile.py
index 3da09391d5..8296cb871c 100644
--- a/pypy/module/micronumpy/compile.py
+++ b/pypy/module/micronumpy/compile.py
@@ -156,7 +156,7 @@ class FakeSpace(ObjSpace):
raise NotImplementedError
- def decode_index4(self, w_idx, size):
+ def decode_index4_unsafe(self, w_idx, size):
if isinstance(w_idx, IntObject):
return (self.int_w(w_idx), 0, 0, 1)
else:
diff --git a/pypy/module/micronumpy/flatiter.py b/pypy/module/micronumpy/flatiter.py
index 30c92659bc..f35c2e418b 100644
--- a/pypy/module/micronumpy/flatiter.py
+++ b/pypy/module/micronumpy/flatiter.py
@@ -67,7 +67,7 @@ class W_FlatIterator(W_NDimArray):
space.isinstance_w(w_idx, space.w_slice)):
raise oefmt(space.w_IndexError, 'unsupported iterator index')
try:
- start, stop, step, length = space.decode_index4(w_idx, self.iter.size)
+ start, stop, step, length = space.decode_index4_unsafe(w_idx, self.iter.size)
state = self.iter.goto(start)
if length == 1:
return self.iter.getitem(state)
@@ -82,7 +82,7 @@ class W_FlatIterator(W_NDimArray):
if not (space.isinstance_w(w_idx, space.w_int) or
space.isinstance_w(w_idx, space.w_slice)):
raise oefmt(space.w_IndexError, 'unsupported iterator index')
- start, stop, step, length = space.decode_index4(w_idx, self.iter.size)
+ start, stop, step, length = space.decode_index4_unsafe(w_idx, self.iter.size)
try:
state = self.iter.goto(start)
dtype = self.base.get_dtype()
diff --git a/pypy/module/micronumpy/ndarray.py b/pypy/module/micronumpy/ndarray.py
index 681729555e..f543fa1921 100644
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -184,7 +184,7 @@ class __extend__(W_NDimArray):
arr_index_in_shape = True
else:
if space.isinstance_w(w_item, space.w_slice):
- lgt = space.decode_index4(w_item, self.get_shape()[i])[3]
+ lgt = space.decode_index4_unsafe(w_item, self.get_shape()[i])[3]
if not arr_index_in_shape:
prefix.append(w_item)
res_shape.append(lgt)
diff --git a/pypy/module/micronumpy/strides.py b/pypy/module/micronumpy/strides.py
index c311db605c..f33a5efe88 100644
--- a/pypy/module/micronumpy/strides.py
+++ b/pypy/module/micronumpy/strides.py
@@ -40,7 +40,7 @@ class IntegerChunk(BaseChunk):
self.w_idx = w_idx
def compute(self, space, base_length, base_stride):
- start, _, _, _ = space.decode_index4(self.w_idx, base_length)
+ start, _, _, _ = space.decode_index4_unsafe(self.w_idx, base_length)
return start, 0, 0, 0
@@ -52,7 +52,7 @@ class SliceChunk(BaseChunk):
self.w_slice = w_slice
def compute(self, space, base_length, base_stride):
- start, stop, step, length = space.decode_index4(self.w_slice, base_length)
+ start, stop, step, length = space.decode_index4_unsafe(self.w_slice, base_length)
stride = base_stride * step
backstride = base_stride * max(0, length - 1) * step
return start, length, stride, backstride
diff --git a/pypy/module/mmap/interp_mmap.py b/pypy/module/mmap/interp_mmap.py
index 975551f317..d6adeda268 100644
--- a/pypy/module/mmap/interp_mmap.py
+++ b/pypy/module/mmap/interp_mmap.py
@@ -144,6 +144,7 @@ class W_MMap(W_Root):
self.space.newtext(e.message))
def __len__(self):
+ self.check_valid()
return self.space.newint(self.mmap.size)
def check_valid(self):
@@ -165,10 +166,9 @@ class W_MMap(W_Root):
raise mmap_error(self.space, v)
def descr_getitem(self, w_index):
- self.check_valid()
-
space = self.space
- start, stop, step, length = space.decode_index4(w_index, self.mmap.size)
+ start, stop, step, length = space.decode_index4(w_index, self)
+ self.check_valid() # decode_index4 can have closed the mmap
if step == 0: # index only
return space.newbytes(self.mmap.getitem(start))
elif step == 1:
@@ -186,11 +186,10 @@ class W_MMap(W_Root):
def descr_setitem(self, w_index, w_value):
space = self.space
value = space.realtext_w(w_value)
+ start, stop, step, length = space.decode_index4(w_index, self)
self.check_valid()
-
self.check_writeable()
- start, stop, step, length = space.decode_index4(w_index, self.mmap.size)
if step == 0: # index only
if len(value) != 1:
raise oefmt(space.w_ValueError,
diff --git a/pypy/module/mmap/test/test_mmap.py b/pypy/module/mmap/test/test_mmap.py
index a949e16fd0..7e55c9e493 100644
--- a/pypy/module/mmap/test/test_mmap.py
+++ b/pypy/module/mmap/test/test_mmap.py
@@ -106,6 +106,7 @@ class AppTestMMap:
m = mmap(f.fileno(), 1)
m.close()
raises(ValueError, m.read, 1)
+ raises(ValueError, len, m)
def test_read_byte(self):
from mmap import mmap
@@ -903,3 +904,23 @@ class AppTestMMap:
raises(ValueError, m.write, 'abc')
assert m.tell() == 5000
m.close()
+
+ def test_close_while_indexing(self):
+ import mmap
+ with open(self.tmpname + "_crash", 'w+b') as f:
+ f.write(b"foobar")
+ f.flush()
+
+ class X(object):
+ def __index__(self):
+ m.close()
+ return 1
+
+ m = mmap.mmap(f.fileno(), 6, access=mmap.ACCESS_READ)
+ assert m[1] == b"o"
+ with raises(ValueError):
+ m[X()]
+
+ m = mmap.mmap(f.fileno(), 6, access=mmap.ACCESS_READ)
+ with raises(ValueError):
+ m[X()] = b"u"
diff --git a/pypy/objspace/fake/objspace.py b/pypy/objspace/fake/objspace.py
index 90baf658d0..7aba9d6559 100644
--- a/pypy/objspace/fake/objspace.py
+++ b/pypy/objspace/fake/objspace.py
@@ -338,11 +338,7 @@ class FakeObjSpace(ObjSpace):
is_root(w_subtype)
return instantiate(cls)
- def decode_index(self, w_index_or_slice, seqlength):
- is_root(w_index_or_slice)
- return (NonConstant(42), NonConstant(42), NonConstant(42))
-
- def decode_index4(self, w_index_or_slice, seqlength):
+ def decode_index4(self, w_index_or_slice, w_obj):
is_root(w_index_or_slice)
return (NonConstant(42), NonConstant(42),
NonConstant(42), NonConstant(42))
diff --git a/pypy/objspace/std/bufferobject.py b/pypy/objspace/std/bufferobject.py
index 62f65cfae9..6b10575db8 100644
--- a/pypy/objspace/std/bufferobject.py
+++ b/pypy/objspace/std/bufferobject.py
@@ -40,8 +40,7 @@ class W_AbstractBuffer(W_Root):
return space.newint(self.buf.getlength())
def descr_getitem(self, space, w_index):
- start, stop, step, size = space.decode_index4(w_index,
- self.buf.getlength())
+ start, stop, step, size = space.decode_index4(w_index, self)
if step == 0: # index only
return space.newbytes(self.buf.getitem(start))
res = self.buf.getslice(start, step, size)
@@ -50,8 +49,7 @@ class W_AbstractBuffer(W_Root):
def descr_setitem(self, space, w_index, w_obj):
if self.buf.readonly:
raise oefmt(space.w_TypeError, "buffer is read-only")
- start, stop, step, size = space.decode_index4(w_index,
- self.buf.getlength())
+ start, stop, step, size = space.decode_index4(w_index, self)
value = space.readbuf_w(w_obj)
if step == 0: # index only
if value.getlength() != 1:
diff --git a/pypy/objspace/std/bytearrayobject.py b/pypy/objspace/std/bytearrayobject.py
index e66af3f318..20a19e955a 100644
--- a/pypy/objspace/std/bytearrayobject.py
+++ b/pypy/objspace/std/bytearrayobject.py
@@ -400,8 +400,7 @@ class W_BytearrayObject(W_Root):
def descr_setitem(self, space, w_index, w_other):
if isinstance(w_index, W_SliceObject):
sequence2 = makebytearraydata_w(space, w_other)
- oldsize = self._len()
- start, stop, step, slicelength = w_index.indices4(space, oldsize)
+ start, stop, step, slicelength = self._unpack_slice(space, w_index)
if start == 0 and step == 1 and len(sequence2) <= slicelength:
self._delete_from_start(slicelength - len(sequence2))
slicelength = len(sequence2)
@@ -419,7 +418,7 @@ class W_BytearrayObject(W_Root):
def descr_delitem(self, space, w_idx):
if isinstance(w_idx, W_SliceObject):
- start, stop, step, slicelength = w_idx.indices4(space, self._len())
+ start, stop, step, slicelength = self._unpack_slice(space, w_idx)
if start == 0 and step == 1:
self._delete_from_start(slicelength)
else:
@@ -508,10 +507,17 @@ class W_BytearrayObject(W_Root):
ofs = self._offset
return (self._data, start + ofs, end + ofs, ofs)
+ def _unpack_slice(self, space, w_index):
+ # important: unpack the slice before computing the length. the
+ # __index__ methods can mutate the list and change its length.
+ start, stop, step = w_index.unpack(space)
+ length = self._len()
+ return w_index.adjust_indices(start, stop, step, length)
+
def descr_getitem(self, space, w_index):
# optimization: this version doesn't force getdata()
if isinstance(w_index, W_SliceObject):
- start, stop, step, sl = w_index.indices4(space, self._len())
+ start, stop, step, sl = self._unpack_slice(space, w_index)
if sl == 0:
return self._empty()
elif step == 1:
diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py
index d0d6276d3a..6a68c40d40 100644
--- a/pypy/objspace/std/listobject.py
+++ b/pypy/objspace/std/listobject.py
@@ -585,10 +585,16 @@ class W_ListObject(W_Root):
self.inplace_mul(times)
return self
+ def _unpack_slice(self, w_index):
+ # important: unpack the slice before computing the length. the
+ # __index__ methods can mutate the list and change its length.
+ start, stop, step = w_index.unpack(self.space)
+ length = self.length()
+ return w_index.adjust_indices(start, stop, step, length)
+
def descr_getitem(self, space, w_index):
if isinstance(w_index, W_SliceObject):
- length = self.length()
- start, stop, step, slicelength = w_index.indices4(space, length)
+ start, stop, step, slicelength = self._unpack_slice(w_index)
assert slicelength >= 0
if slicelength == 0:
return make_empty_list(space)
@@ -627,8 +633,7 @@ class W_ListObject(W_Root):
w_other.copy_into(self)
return
- oldsize = self.length()
- start, stop, step, slicelength = w_index.indices4(space, oldsize)
+ start, stop, step, slicelength = self._unpack_slice(w_index)
if isinstance(w_any, W_ListObject):
w_other = w_any
else:
@@ -656,8 +661,7 @@ class W_ListObject(W_Root):
def descr_delitem(self, space, w_idx):
if isinstance(w_idx, W_SliceObject):
- start, stop, step, slicelength = w_idx.indices4(
- space, self.length())
+ start, stop, step, slicelength = self._unpack_slice(w_idx)
self.deleteslice(start, step, slicelength)
return
diff --git a/pypy/objspace/std/memoryobject.py b/pypy/objspace/std/memoryobject.py
index 4d2a417bdd..657ca1e3ee 100644
--- a/pypy/objspace/std/memoryobject.py
+++ b/pypy/objspace/std/memoryobject.py
@@ -106,7 +106,9 @@ class W_MemoryView(W_Root):
count = 1
else:
count = shape[0]
- return space.decode_index4(w_index, count)
+ # it's ok to use 'unsafe' here, because the index error checking
+ # happens a level deeper on the view access
+ return space.decode_index4_unsafe(w_index, count)
def descr_getitem(self, space, w_index):
is_slice = space.isinstance_w(w_index, space.w_slice)
@@ -138,7 +140,7 @@ class W_MemoryView(W_Root):
self._check_released(space)
if self.view.readonly:
raise oefmt(space.w_TypeError, "cannot modify read-only memory")
- start, stop, step, size = space.decode_index4(w_index, self.getlength())
+ start, stop, step, size = space.decode_index4(w_index, self)
if step not in (0, 1):
raise oefmt(space.w_NotImplementedError, "")
is_slice = space.isinstance_w(w_index, space.w_slice)
diff --git a/pypy/objspace/std/sliceobject.py b/pypy/objspace/std/sliceobject.py
index 20faeaea15..9d91c0c8dd 100644
--- a/pypy/objspace/std/sliceobject.py
+++ b/pypy/objspace/std/sliceobject.py
@@ -23,7 +23,7 @@ class W_SliceObject(W_Root):
def unwrap(w_slice, space):
return slice(space.unwrap(w_slice.w_start), space.unwrap(w_slice.w_stop), space.unwrap(w_slice.w_step))
- def indices3(w_slice, space, length):
+ def unpack(w_slice, space):
if space.is_w(w_slice.w_step, space.w_None):
step = 1
else:
@@ -32,46 +32,47 @@ class W_SliceObject(W_Root):
raise oefmt(space.w_ValueError, "slice step cannot be zero")
if space.is_w(w_slice.w_start, space.w_None):
if step < 0:
- start = length - 1
+ start = sys.maxint
else:
start = 0
else:
start = _eval_slice_index(space, w_slice.w_start)
- if start < 0:
- start += length
- if start < 0:
- if step < 0:
- start = -1
- else:
- start = 0
- elif start >= length:
- if step < 0:
- start = length - 1
- else:
- start = length
if space.is_w(w_slice.w_stop, space.w_None):
if step < 0:
- stop = -1
+ stop = -sys.maxint-1
else:
- stop = length
+ stop = sys.maxint
else:
stop = _eval_slice_index(space, w_slice.w_stop)
- if stop < 0:
- stop += length
- if stop < 0:
- if step < 0:
- stop = -1
- else:
- stop = 0
- elif stop >= length:
+ return start, stop, step
+
+ @staticmethod
+ def adjust_indices(start, stop, step, length):
+ if start < 0:
+ start += length
+ if start < 0:
if step < 0:
- stop = length - 1
+ start = -1
else:
- stop = length
- return start, stop, step
+ start = 0
+ elif start >= length:
+ if step < 0:
+ start = length - 1
+ else:
+ start = length
- def indices4(w_slice, space, length):
- start, stop, step = w_slice.indices3(space, length)
+ if stop < 0:
+ stop += length
+ if stop < 0:
+ if step < 0:
+ stop = -1
+ else:
+ stop = 0
+ elif stop >= length:
+ if step < 0:
+ stop = length - 1
+ else:
+ stop = length
if (step < 0 and stop >= start) or (step > 0 and start >= stop):
slicelength = 0
elif step < 0:
@@ -80,6 +81,15 @@ class W_SliceObject(W_Root):
slicelength = (stop - start - 1) / step + 1
return start, stop, step, slicelength
+ def indices3(w_slice, space, length):
+ start, stop, step = w_slice.unpack(space)
+ start, stop, step, slicelength = w_slice.adjust_indices(start, stop, step, length)
+ return start, stop, step
+
+ def indices4(w_slice, space, length):
+ start, stop, step = w_slice.unpack(space)
+ return w_slice.adjust_indices(start, stop, step, length)
+
def __repr__(self):
return "<W_SliceObject(%r, %r, %r)>" % (
self.w_start, self.w_stop, self.w_step)
diff --git a/pypy/objspace/std/test/test_bytearrayobject.py b/pypy/objspace/std/test/test_bytearrayobject.py
index 5f689269e6..e1c7841cca 100644
--- a/pypy/objspace/std/test/test_bytearrayobject.py
+++ b/pypy/objspace/std/test/test_bytearrayobject.py
@@ -665,3 +665,21 @@ class AppTestBytesArray:
def __int__(self):
return 3
raises(TypeError, bytearray, WithInt())
+
+ def test_mutate_while_slice(self):
+ class X:
+ def __index__(self):
+ del a[:]
+ return 1
+
+ a = bytearray([0])
+ assert a[:X():2] == bytearray()
+ assert a == bytearray()
+
+ a = bytearray([0])
+ assert a[X():2] == bytearray()
+ assert a == bytearray()
+
+ a = bytearray([0])
+ assert a[0:2:X()] == bytearray()
+ assert a == bytearray()
diff --git a/pypy/objspace/std/test/test_listobject.py b/pypy/objspace/std/test/test_listobject.py
index 606a497716..cb8d7fb87a 100644
--- a/pypy/objspace/std/test/test_listobject.py
+++ b/pypy/objspace/std/test/test_listobject.py
@@ -1504,6 +1504,35 @@ class AppTestListObject(object):
while lst:
keepalive.append(lst[:])
+ def test_mutate_while_slice(self):
+ class X:
+ def __index__(self):
+ del a[:]
+ return 1
+
+ a = [0]
+ assert a[:X():2] == []
+ assert a == []
+
+ a = [0]
+ assert a[X():2] == []
+ assert a == []
+
+ a = [0]
+ assert a[0:2:X()] == []
+ assert a == []
+
+ def test_mutate_while_slice_delete(self):
+ class X(object):
+ def __index__(self):
+ l[:] = [1]
+ print(l)
+ return 10
+
+ l = [1] * 100
+ del l[1:X():2]
+ assert l == [1]
+
def test___getslice__(self):
l = [1,2,3,4]
res = l.__getslice__(0, 2)
diff --git a/pypy/objspace/std/test/test_memoryobject.py b/pypy/objspace/std/test/test_memoryobject.py
index 115b3d7c0a..623dae0933 100644
--- a/pypy/objspace/std/test/test_memoryobject.py
+++ b/pypy/objspace/std/test/test_memoryobject.py
@@ -63,4 +63,18 @@ class AppTestMemoryView:
a = memoryview(b"foobar")._pypy_raw_address()
assert a != 0
b = memoryview(bytearray(b"foobar"))._pypy_raw_address()
- assert b != 0
+
+ def test_mutate_memoryview_while_indexing(self):
+ class A(object):
+ def __index__(self):
+ del data[:]
+ return 1
+ data = bytearray(b'abcefg')
+ v = memoryview(data)
+ with raises(IndexError):
+ v[A()]
+
+ data = bytearray(b'abcefg')
+ v = memoryview(data)
+ with raises(IndexError):
+ v[A()] = b'z'
diff --git a/pypy/objspace/std/test/test_sliceobject.py b/pypy/objspace/std/test/test_sliceobject.py
index 945f99df66..4bc8aafe43 100644
--- a/pypy/objspace/std/test/test_sliceobject.py
+++ b/pypy/objspace/std/test/test_sliceobject.py
@@ -4,6 +4,17 @@ from pypy.objspace.std.sliceobject import normalize_simple_slice
class TestW_SliceObject:
+ def test_unpack(self):
+ space = self.space
+ w = space.wrap
+ w_None = space.w_None
+ w_slice = space.newslice(w_None, w_None, w_None)
+ assert w_slice.unpack(space) == (0, sys.maxint, 1)
+ w_slice = space.newslice(w(0), w(6), w(1))
+ assert w_slice.unpack(space) == (0, 6, 1)
+ w_slice = space.newslice(w_None, w_None, w(-1))
+ assert w_slice.unpack(space) == (sys.maxint, -sys.maxint-1, -1)
+
def test_indices(self):
space = self.space
w = space.wrap
@@ -57,9 +68,8 @@ class TestW_SliceObject:
sl = space.newslice(w(start), w(stop), w(step))
mystart, mystop, mystep, slicelength = sl.indices4(space, length)
assert len(range(length)[start:stop:step]) == slicelength
- if sys.version_info >= (2, 6): # doesn't work in 2.5
- assert slice(start, stop, step).indices(length) == (
- mystart, mystop, mystep)
+ assert slice(start, stop, step).indices(length) == (
+ mystart, mystop, mystep)
class AppTest_SliceObject:
def test_new(self):
diff --git a/pypy/tool/release/check_versions.py b/pypy/tool/release/check_versions.py
index bfbe48c0c4..db1592b308 100644
--- a/pypy/tool/release/check_versions.py
+++ b/pypy/tool/release/check_versions.py
@@ -9,7 +9,7 @@ Verify the versions.json file that describes the valid downloads.
By default will download https://buildbot.pypy.org/pypy/versions.json parse it, and
check against the files in https://downloads.python.org/pypy/
Can be run as check_versions.py <filename>, in which case it will check the files in
-https://buildbot.pypy.org/pypy/
+https://buildbot.pypy.org/mirror/
"""
import json
@@ -34,6 +34,9 @@ def assert_in(a, b):
pypy_versions = {
+ '7.3.11': {'python_version': ['3.9.16', '3.8.16', '2.7.18'],
+ 'date': '2022-12-29',
+ },
'7.3.10': {'python_version': ['3.9.15', '3.8.15', '2.7.18'],
'date': '2022-12-06',
},
@@ -97,7 +100,7 @@ pypy_versions = {
'7.3.2': {'python_version': ['3.7.9', '3.6.9', '2.7.13'],
'date': '2020-09-25',
},
- 'nightly': {'python_version': ['2.7', '3.6', '3.7', '3.8', '3.9']},
+ 'nightly': {'python_version': ['2.7', '3.6', '3.7', '3.8', '3.9', '3.10']},
}
@@ -176,6 +179,7 @@ def check_versions(data, url, verbose=0, check_times=True, nightly_only=False):
assert_in(arch_plat, download_url)
else:
assert_in(arch_plat, download_url)
+ py_ver_tuple = [int(s) for s in py_ver.split('.')]
if py_ver == "2.7":
py_ver = "trunk"
elif f['platform'] == "darwin":
@@ -195,7 +199,7 @@ def check_versions(data, url, verbose=0, check_times=True, nightly_only=False):
except error.HTTPError as e:
raise ValueError(f"could not open '{download_url}', got {e}") from None
assert_equal(r.getcode(), 200)
- if d['pypy_version'] == 'nightly' and py_ver >= '3.8':
+ if d['pypy_version'] == 'nightly' and (py_ver_tuple >= [3, 9] or py_ver == "trunk"):
print('time-check', end='')
# nightly builds do not have a date entry, use time.time()
target = time.strftime("%Y-%m-%d")
@@ -204,9 +208,11 @@ def check_versions(data, url, verbose=0, check_times=True, nightly_only=False):
modified_time_str = ' '.join(r.getheader("Last-Modified").split(' ')[1:4])
expected_time = time.mktime(time.strptime(target, "%Y-%m-%d"))
modified_time = time.mktime(time.strptime(modified_time_str, "%d %b %Y"))
- if abs(expected_time - modified_time) > 60 * 60 * 24 * 7:
- print()
- raise ValueError(f"expected {modified_time_str} to be within a week of {target}")
+ if abs(expected_time - modified_time) > 60 * 60 * 24 * 14 and 's390x' not in arch_plat:
+ raise ValueError(f"expected {modified_time_str} to be within 2 weeks of {target}")
+ else:
+ delta_days = abs(expected_time - modified_time) / (60 * 60 * 24)
+ print(f" {delta_days} days", end='')
if verbose > 0:
print(f' ok')
if verbose > 0:
diff --git a/pypy/tool/release/repackage.sh b/pypy/tool/release/repackage.sh
index c6918c9028..255b679fe0 100755
--- a/pypy/tool/release/repackage.sh
+++ b/pypy/tool/release/repackage.sh
@@ -5,7 +5,7 @@ pmaj=3 # python main version: 2 or 3
pmin=9 # python minor version
maj=7
min=3
-rev=10
+rev=11
#rc=rc3 # comment this line for actual release
function maybe_exit {
diff --git a/pypy/tool/release/versions.json b/pypy/tool/release/versions.json
index 0cc4abfa10..1d9d664645 100644
--- a/pypy/tool/release/versions.json
+++ b/pypy/tool/release/versions.json
@@ -1,5 +1,158 @@
[
{
+ "pypy_version": "7.3.11",
+ "python_version": "3.9.16",
+ "stable": true,
+ "latest_pypy": true,
+ "date": "2022-12-29",
+ "files": [
+ {
+ "filename": "pypy3.9-v7.3.11-aarch64.tar.bz2",
+ "arch": "aarch64",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-aarch64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.9-v7.3.11-linux32.tar.bz2",
+ "arch": "i686",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-linux32.tar.bz2"
+ },
+ {
+ "filename": "pypy3.9-v7.3.11-linux64.tar.bz2",
+ "arch": "x64",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-linux64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.9-v7.3.11-macos_x86_64.tar.bz2",
+ "arch": "x64",
+ "platform": "darwin",
+ "download_url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-macos_x86_64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.9-v7.3.11-macos_arm64.tar.bz2",
+ "arch": "arm64",
+ "platform": "darwin",
+ "download_url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-macos_arm64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.9-v7.3.11-win64.zip",
+ "arch": "x64",
+ "platform": "win64",
+ "download_url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-win64.zip"
+ },
+ {
+ "filename": "pypy3.9-v7.3.11-s390x.tar.bz2",
+ "arch": "s390x",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-s390x.tar.bz2"
+ }
+ ]
+ },
+ {
+ "pypy_version": "7.3.11",
+ "python_version": "3.8.16",
+ "stable": true,
+ "latest_pypy": true,
+ "date": "2022-12-29",
+ "files": [
+ {
+ "filename": "pypy3.8-v7.3.11-aarch64.tar.bz2",
+ "arch": "aarch64",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-aarch64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.8-v7.3.11-linux32.tar.bz2",
+ "arch": "i686",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-linux32.tar.bz2"
+ },
+ {
+ "filename": "pypy3.8-v7.3.11-linux64.tar.bz2",
+ "arch": "x64",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-linux64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.8-v7.3.11-macos_x86_64.tar.bz2",
+ "arch": "x64",
+ "platform": "darwin",
+ "download_url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.8-v7.3.11-macos_arm64.tar.bz2",
+ "arch": "arm64",
+ "platform": "darwin",
+ "download_url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2"
+ },
+ {
+ "filename": "pypy3.8-v7.3.11-win64.zip",
+ "arch": "x64",
+ "platform": "win64",
+ "download_url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip"
+ },
+ {
+ "filename": "pypy3.8-v7.3.11-s390x.tar.bz2",
+ "arch": "s390x",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-s390x.tar.bz2"
+ }
+ ]
+ },
+ {
+ "pypy_version": "7.3.11",
+ "python_version": "2.7.18",
+ "stable": true,
+ "latest_pypy": true,
+ "date": "2022-12-29",
+ "files": [
+ {
+ "filename": "pypy2.7-v7.3.11-aarch64.tar.bz2",
+ "arch": "aarch64",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy2.7-v7.3.11-aarch64.tar.bz2"
+ },
+ {
+ "filename": "pypy2.7-v7.3.11-linux32.tar.bz2",
+ "arch": "i686",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy2.7-v7.3.11-linux32.tar.bz2"
+ },
+ {
+ "filename": "pypy2.7-v7.3.11-linux64.tar.bz2",
+ "arch": "x64",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy2.7-v7.3.11-linux64.tar.bz2"
+ },
+ {
+ "filename": "pypy2.7-v7.3.11-macos_x86_64.tar.bz2",
+ "arch": "x64",
+ "platform": "darwin",
+ "download_url": "https://downloads.python.org/pypy/pypy2.7-v7.3.11-macos_x86_64.tar.bz2"
+ },
+ {
+ "filename": "pypy2.7-v7.3.11-macos_arm64.tar.bz2",
+ "arch": "arm64",
+ "platform": "darwin",
+ "download_url": "https://downloads.python.org/pypy/pypy2.7-v7.3.11-macos_arm64.tar.bz2"
+ },
+ {
+ "filename": "pypy2.7-v7.3.11-win64.zip",
+ "arch": "x64",
+ "platform": "win64",
+ "download_url": "https://downloads.python.org/pypy/pypy2.7-v7.3.11-win64.zip"
+ },
+ {
+ "filename": "pypy2.7-v7.3.11-s390x.tar.bz2",
+ "arch": "s390x",
+ "platform": "linux",
+ "download_url": "https://downloads.python.org/pypy/pypy2.7-v7.3.11-s390x.tar.bz2"
+ }
+ ]
+ },
+ {
"pypy_version": "7.3.10",
"python_version": "3.9.15",
"stable": true,
@@ -105,7 +258,7 @@
"pypy_version": "7.3.10",
"python_version": "2.7.18",
"stable": true,
- "latest_pypy": true,
+ "latest_pypy": false,
"date": "2022-12-06",
"files": [
{
@@ -2886,5 +3039,55 @@
"download_url": "https://buildbot.pypy.org/nightly/py3.9/pypy-c-jit-latest-s390x.tar.bz2"
}
]
+ },
+ {
+ "pypy_version": "nightly",
+ "python_version": "3.10",
+ "stable": false,
+ "latest_pypy": false,
+ "files": [
+ {
+ "filename": "pypy-c-jit-latest-aarch64.tar.bz2",
+ "arch": "aarch64",
+ "platform": "linux",
+ "download_url": "https://buildbot.pypy.org/nightly/py3.10/pypy-c-jit-latest-aarch64.tar.bz2"
+ },
+ {
+ "filename": "pypy-c-jit-latest-linux.tar.bz2",
+ "arch": "i686",
+ "platform": "linux",
+ "download_url": "https://buildbot.pypy.org/nightly/py3.10/pypy-c-jit-latest-linux.tar.bz2"
+ },
+ {
+ "filename": "pypy-c-jit-latest-linux64.tar.bz2",
+ "arch": "x64",
+ "platform": "linux",
+ "download_url": "https://buildbot.pypy.org/nightly/py3.10/pypy-c-jit-latest-linux64.tar.bz2"
+ },
+ {
+ "filename": "pypy-c-jit-latest-macos_x86_64.tar.bz2",
+ "arch": "x64",
+ "platform": "darwin",
+ "download_url": "https://buildbot.pypy.org/nightly/py3.10/pypy-c-jit-latest-macos_x86_64.tar.bz2"
+ },
+ {
+ "filename": "pypy-c-jit-latest-macos_arm64.tar.bz2",
+ "arch": "arm64",
+ "platform": "darwin",
+ "download_url": "https://buildbot.pypy.org/nightly/py3.10/pypy-c-jit-latest-macos_arm64.tar.bz2"
+ },
+ {
+ "filename": "pypy-c-jit-latest-win64.zip",
+ "arch": "x64",
+ "platform": "win64",
+ "download_url": "https://buildbot.pypy.org/nightly/py3.10/pypy-c-jit-latest-win64.zip"
+ },
+ {
+ "filename": "pypy-c-jit-latest-s390x.tar.bz2",
+ "arch": "s390x",
+ "platform": "linux",
+ "download_url": "https://buildbot.pypy.org/nightly/py3.10/pypy-c-jit-latest-s390x.tar.bz2"
+ }
+ ]
}
]
diff --git a/pypy/tool/traceconfig.py b/pypy/tool/traceconfig.py
deleted file mode 100644
index cd9ee2886e..0000000000
--- a/pypy/tool/traceconfig.py
+++ /dev/null
@@ -1,48 +0,0 @@
-""" Trace object space configuration options - set with __pytrace__=1
-in py.py """
-
-from pypy.tool.traceop import ResultPrinter, ResultPrinterVerbose
-
-def get_operations_all():
- from pypy.interpreter.baseobjspace import ObjSpace
- operations = dict([(r[0], r[0]) for r in ObjSpace.MethodTable])
- for name in ObjSpace.IrregularOpTable + ["get_and_call_function"]:
- operations[name] = name
-
- # Remove list
- for name in ["wrap", "unwrap"]:
- if name in operations:
- del operations[name]
-
- return operations
-
-config = {
- # An optional filename to use for trace output. None is stdout
- "output_filename" : None,
-
- # Use a simple wrapped repr (fast) or try to do something more intelligent (slow)
- "repr_type_simple" : True,
-
- # Some internal interpreter code is written at applevel - by default
- # it is a good idea to hide this.
- "show_hidden_applevel" : False,
-
- # Many operations call back into the object space
- "recursive_operations" : False,
-
- # Show the bytecode or just the operations
- "show_bytecode" : True,
-
- # Indentor string used for output
- "indentor" : ' ',
-
- # Show wrapped values in bytecode
- "show_wrapped_consts_bytecode" : True,
-
- # Used to show realtive position in tree
- "tree_pos_indicator" : "|-",
-
- "result_printer_clz" : ResultPrinter,
-
- "operations" : get_operations_all()
-}
diff --git a/rpython/doc/conf.py b/rpython/doc/conf.py
index bf1e9ec851..2037ba6d08 100644
--- a/rpython/doc/conf.py
+++ b/rpython/doc/conf.py
@@ -72,7 +72,7 @@ master_doc = 'index'
# General information about the project.
project = u'PyPy'
-copyright = u'2022, The PyPy Project'
+copyright = u'2023, The PyPy Project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -81,7 +81,7 @@ copyright = u'2022, The PyPy Project'
# The short X.Y version.
version = '7.3'
# The full version, including alpha/beta/rc tags.
-release = '7.3.11'
+release = '7.3.12'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py
index 03828566b2..6fcb2bfe48 100644
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -128,7 +128,6 @@ class X86_64_XMMRegisterManager(X86XMMRegisterManager):
class X86_64_WIN_XMMRegisterManager(X86_64_XMMRegisterManager):
# xmm5 reserved for scratch use
all_regs = [xmm0, xmm1, xmm2, xmm3, xmm4]
- save_around_call_regs = all_regs
class X86FrameManager(FrameManager):
def __init__(self, base_ofs):
diff --git a/rpython/jit/metainterp/optimizeopt/intutils.py b/rpython/jit/metainterp/optimizeopt/intutils.py
index 381d0a2098..e9ba7f755a 100644
--- a/rpython/jit/metainterp/optimizeopt/intutils.py
+++ b/rpython/jit/metainterp/optimizeopt/intutils.py
@@ -129,7 +129,13 @@ class IntBound(AbstractInfo):
return 0 <= self.lower
def intersect(self, other):
- assert not self.known_gt(other) and not self.known_lt(other)
+ from rpython.jit.metainterp.optimize import InvalidLoop
+ if self.known_gt(other) or self.known_lt(other):
+ # they don't overlap, which makes the loop invalid
+ # this never happens in regular linear traces, but it can happen in
+ # combination with unrolling/loop peeling
+ raise InvalidLoop("two integer ranges don't overlap")
+
r = False
if self.make_ge_const(other.lower):
r = True
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_intbound.py b/rpython/jit/metainterp/optimizeopt/test/test_intbound.py
index d4a0db4053..ea9b74ca5f 100644
--- a/rpython/jit/metainterp/optimizeopt/test/test_intbound.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_intbound.py
@@ -225,13 +225,12 @@ def test_intersect():
assert not b.contains(n)
def test_intersect_bug():
+ from rpython.jit.metainterp.optimize import InvalidLoop
b1 = bound(17, 17)
b2 = bound(1, 1)
- with pytest.raises(AssertionError):
+ with pytest.raises(InvalidLoop):
b1.intersect(b2)
-
-
def test_add_bound():
for _, _, b1 in some_bounds():
for _, _, b2 in some_bounds():
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeintbound.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeintbound.py
index b8671cb6ac..ca27f8f86a 100644
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeintbound.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeintbound.py
@@ -1980,17 +1980,6 @@ class TestOptimizeIntBounds(BaseTestBasic):
"""
self.optimize_loop(ops, ops)
- def test_pure_ovf_bug_with_replacement(self):
- ops = """
- [i1, i2]
- i3 = int_add(i2, i1)
- i4 = int_sub_ovf(i3, i2)
- guard_no_overflow() []
- jump(i4)
- """
- self.optimize_loop(ops, ops)
-
- @pytest.mark.xfail() # this test is wrong! it fails in Z3
def test_pure_ovf_bug_with_arithmetic_rewrites(self):
ops = """
[i1, i2]
@@ -2000,13 +1989,7 @@ class TestOptimizeIntBounds(BaseTestBasic):
guard_no_overflow() []
jump(i4)
"""
- result = """
- [i1, i2]
- i3 = int_add_ovf(i1, i2)
- guard_no_overflow() []
- jump(i1)
- """
- self.optimize_loop(ops, result)
+ self.optimize_loop(ops, ops)
@pytest.mark.xfail() # this test is wrong! it fails in Z3
def test_pure_ovf_bug_with_replacement(self):
diff --git a/rpython/jit/metainterp/test/test_ajit.py b/rpython/jit/metainterp/test/test_ajit.py
index 29a8bf8dbe..68e7d60262 100644
--- a/rpython/jit/metainterp/test/test_ajit.py
+++ b/rpython/jit/metainterp/test/test_ajit.py
@@ -3256,6 +3256,39 @@ class BasicTests:
res = self.interp_operations(f, [127 - 256 * 29])
assert res == 127
+ def test_bug_inline_short_preamble_can_be_inconsistent_in_optimizeopt(self):
+ myjitdriver = JitDriver(greens = [], reds = "auto")
+ class Str(object):
+ _immutable_fields_ = ['s']
+ def __init__(self, s):
+ self.s = s
+
+ empty = Str("")
+ space = Str(" ")
+
+ def f(a, b):
+ line = " " * a + " a" * b
+ token = ""
+ res = []
+ index = 0
+ while True:
+ myjitdriver.jit_merge_point()
+ if index >= len(line):
+ break
+ char = line[index]
+ index += 1
+ if char == space.s:
+ if token != empty.s:
+ res.append(token)
+ token = empty.s
+ else:
+ token += char
+ return len(res)
+ args = [50, 50]
+ res = self.meta_interp(f, args)
+ assert res == f(*args)
+
+
class BaseLLtypeTests(BasicTests):
def test_identityhash(self):
diff --git a/rpython/rlib/objectmodel.py b/rpython/rlib/objectmodel.py
index 98a81ea9cb..ec3b20349a 100644
--- a/rpython/rlib/objectmodel.py
+++ b/rpython/rlib/objectmodel.py
@@ -1046,11 +1046,15 @@ def move_to_end(d, key, last=True):
return
d.move_to_end(key, last)
+NO_DEFAULT = object()
+
@not_rpython
-def dict_to_switch(d, inline=True):
+def dict_to_switch(d, inline=True, default=NO_DEFAULT):
"""Convert dictionary with integer or char keys to a switch statement."""
from rpython.rlib.unroll import unrolling_iterable
+ have_default = default is not NO_DEFAULT
+
assert len(d) >= 1
firstkey = next(iter(d))
if isinstance(firstkey, int):
@@ -1059,6 +1063,7 @@ def dict_to_switch(d, inline=True):
assert isinstance(key, int)
else:
assert isinstance(firstkey, str) # only int and char allowed for now
+ assert not have_default
for key in d:
assert isinstance(key, str) and len(key) == 1
@@ -1079,10 +1084,15 @@ def dict_to_switch(d, inline=True):
if key == query:
return value
else:
+ if have_default:
+ return default
raise KeyError
else:
assert len(d) == cached_size, "dictionary size changed!"
- return d[query]
+ if have_default:
+ return d.get(query, default)
+ else:
+ return d[query]
if inline:
diff --git a/rpython/rlib/rmd5.py b/rpython/rlib/rmd5.py
index eabc3f37e3..7df161c75c 100644
--- a/rpython/rlib/rmd5.py
+++ b/rpython/rlib/rmd5.py
@@ -132,7 +132,7 @@ XX._annspecialcase_ = 'specialize:arg(0)' # performance hint
class RMD5(object):
"""RPython-level MD5 object.
"""
- def __init__(self, initialdata=''):
+ def __init__(self, initialdata='', usedforsecurity=True):
self._init()
self.update(initialdata)
diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py
index 3eaaef6a66..d5e59189f7 100644
--- a/rpython/rlib/rposix.py
+++ b/rpython/rlib/rposix.py
@@ -193,7 +193,7 @@ def _errno_after(save_err):
# ^^^ keep fork() up-to-date too, below
if _WIN32:
includes = ['io.h', 'sys/utime.h', 'sys/types.h', 'process.h', 'time.h',
- 'direct.h']
+ 'direct.h', 'Windows.h']
libraries = []
else:
if sys.platform.startswith(('darwin', 'netbsd', 'openbsd')):
@@ -1284,6 +1284,19 @@ def mkfifo(path, mode):
def mknod(path, mode, dev):
handle_posix_error('mknod', c_mknod(_as_bytes0(path), mode, dev))
+constants =[ # These are added to posix/nt
+ # windows
+ 'LOAD_LIBRARY_SEARCH_DEFAULT_DIRS',
+ 'LOAD_LIBRARY_SEARCH_APPLICATION_DIR',
+ 'LOAD_LIBRARY_SEARCH_SYSTEM32',
+ 'LOAD_LIBRARY_SEARCH_USER_DIRS',
+ 'LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR',
+ # darwin
+ 'COPYFILE_DATA',
+ # linux, darwin
+ 'O_CLOEXEC',
+ ]
+darwin_constants = ['COPYFILE_DATA']
if _WIN32:
CreatePipe = external('CreatePipe', [rwin32.LPHANDLE,
rwin32.LPHANDLE,
@@ -1295,7 +1308,13 @@ if _WIN32:
rffi.INT)
HAVE_PIPE2 = False
HAVE_DUP3 = False
- O_CLOEXEC = None
+ class CConfig:
+ _compilation_info_ = eci
+ for name in constants:
+ setattr(CConfig, name, rffi_platform.DefinedConstantInteger(name))
+ config = rffi_platform.configure(CConfig)
+ for name in constants:
+ locals()[name] = config[name]
else:
INT_ARRAY_P = rffi.CArrayPtr(rffi.INT)
c_pipe = external('pipe', [INT_ARRAY_P], rffi.INT,
@@ -1304,11 +1323,13 @@ else:
_compilation_info_ = eci
HAVE_PIPE2 = rffi_platform.Has('pipe2')
HAVE_DUP3 = rffi_platform.Has('dup3')
- O_CLOEXEC = rffi_platform.DefinedConstantInteger('O_CLOEXEC')
+ for name in constants:
+ setattr(CConfig, name, rffi_platform.DefinedConstantInteger(name))
config = rffi_platform.configure(CConfig)
+ for name in constants:
+ locals()[name] = config[name]
HAVE_PIPE2 = config['HAVE_PIPE2']
HAVE_DUP3 = config['HAVE_DUP3']
- O_CLOEXEC = config['O_CLOEXEC']
if HAVE_PIPE2:
c_pipe2 = external('pipe2', [INT_ARRAY_P, rffi.INT], rffi.INT,
save_err=rffi.RFFI_SAVE_ERRNO)
@@ -2123,12 +2144,297 @@ if not _WIN32:
TIMESPEC = rffi_platform.Struct('struct timespec', [
('tv_sec', rffi.TIME_T),
('tv_nsec', rffi.LONG)])
+ AT_EACCESS = rffi_platform.DefinedConstantInteger('AT_EACCESS')
cConfig = rffi_platform.configure(CConfig)
globals().update(cConfig)
TIMESPEC2P = rffi.CArrayPtr(TIMESPEC)
+ class ConfConfig:
+ _compilation_info_ = ExternalCompilationInfo(
+ includes=[ 'unistd.h', ],
+ )
+
+ # Taken from posixmodule.c. Note the avaialbility is determined at
+ # compile time by the host, but filled in by a runtime call to pathconf,
+ # sysconf, or confstr.
+ pathconf_consts_defs = {
+ "PC_ABI_AIO_XFER_MAX": "_PC_ABI_AIO_XFER_MAX",
+ "PC_ABI_ASYNC_IO": "_PC_ABI_ASYNC_IO",
+ "PC_ASYNC_IO": "_PC_ASYNC_IO",
+ "PC_CHOWN_RESTRICTED": "_PC_CHOWN_RESTRICTED",
+ "PC_FILESIZEBITS": "_PC_FILESIZEBITS",
+ "PC_LAST": "_PC_LAST",
+ "PC_LINK_MAX": "_PC_LINK_MAX",
+ "PC_MAX_CANON": "_PC_MAX_CANON",
+ "PC_MAX_INPUT": "_PC_MAX_INPUT",
+ "PC_NAME_MAX": "_PC_NAME_MAX",
+ "PC_NO_TRUNC": "_PC_NO_TRUNC",
+ "PC_PATH_MAX": "_PC_PATH_MAX",
+ "PC_PIPE_BUF": "_PC_PIPE_BUF",
+ "PC_PRIO_IO": "_PC_PRIO_IO",
+ "PC_SOCK_MAXBUF": "_PC_SOCK_MAXBUF",
+ "PC_SYNC_IO": "_PC_SYNC_IO",
+ "PC_VDISABLE": "_PC_VDISABLE",
+ "PC_ACL_ENABLED": "_PC_ACL_ENABLED",
+ "PC_MIN_HOLE_SIZE": "_PC_MIN_HOLE_SIZE",
+ "PC_ALLOC_SIZE_MIN": "_PC_ALLOC_SIZE_MIN",
+ "PC_REC_INCR_XFER_SIZE": "_PC_REC_INCR_XFER_SIZE",
+ "PC_REC_MAX_XFER_SIZE": "_PC_REC_MAX_XFER_SIZE",
+ "PC_REC_MIN_XFER_SIZE": "_PC_REC_MIN_XFER_SIZE",
+ "PC_REC_XFER_ALIGN": "_PC_REC_XFER_ALIGN",
+ "PC_SYMLINK_MAX": "_PC_SYMLINK_MAX",
+ "PC_XATTR_ENABLED": "_PC_XATTR_ENABLED",
+ "PC_XATTR_EXISTS": "_PC_XATTR_EXISTS",
+ "PC_TIMESTAMP_RESOLUTION": "_PC_TIMESTAMP_RESOLUTION",
+ }
+
+ confstr_consts_defs = {
+ "CS_ARCHITECTURE": "_CS_ARCHITECTURE",
+ "CS_GNU_LIBC_VERSION": "_CS_GNU_LIBC_VERSION",
+ "CS_GNU_LIBPTHREAD_VERSION": "_CS_GNU_LIBPTHREAD_VERSION",
+ "CS_HOSTNAME": "_CS_HOSTNAME",
+ "CS_HW_PROVIDER": "_CS_HW_PROVIDER",
+ "CS_HW_SERIAL": "_CS_HW_SERIAL",
+ "CS_INITTAB_NAME": "_CS_INITTAB_NAME",
+ "CS_LFS64_CFLAGS": "_CS_LFS64_CFLAGS",
+ "CS_LFS64_LDFLAGS": "_CS_LFS64_LDFLAGS",
+ "CS_LFS64_LIBS": "_CS_LFS64_LIBS",
+ "CS_LFS64_LINTFLAGS": "_CS_LFS64_LINTFLAGS",
+ "CS_LFS_CFLAGS": "_CS_LFS_CFLAGS",
+ "CS_LFS_LDFLAGS": "_CS_LFS_LDFLAGS",
+ "CS_LFS_LIBS": "_CS_LFS_LIBS",
+ "CS_LFS_LINTFLAGS": "_CS_LFS_LINTFLAGS",
+ "CS_MACHINE": "_CS_MACHINE",
+ "CS_PATH": "_CS_PATH",
+ "CS_RELEASE": "_CS_RELEASE",
+ "CS_SRPC_DOMAIN": "_CS_SRPC_DOMAIN",
+ "CS_SYSNAME": "_CS_SYSNAME",
+ "CS_VERSION": "_CS_VERSION",
+ "CS_XBS5_ILP32_OFF32_CFLAGS": "_CS_XBS5_ILP32_OFF32_CFLAGS",
+ "CS_XBS5_ILP32_OFF32_LDFLAGS": "_CS_XBS5_ILP32_OFF32_LDFLAGS",
+ "CS_XBS5_ILP32_OFF32_LIBS": "_CS_XBS5_ILP32_OFF32_LIBS",
+ "CS_XBS5_ILP32_OFF32_LINTFLAGS": "_CS_XBS5_ILP32_OFF32_LINTFLAGS",
+ "CS_XBS5_ILP32_OFFBIG_CFLAGS": "_CS_XBS5_ILP32_OFFBIG_CFLAGS",
+ "CS_XBS5_ILP32_OFFBIG_LDFLAGS": "_CS_XBS5_ILP32_OFFBIG_LDFLAGS",
+ "CS_XBS5_ILP32_OFFBIG_LIBS": "_CS_XBS5_ILP32_OFFBIG_LIBS",
+ "CS_XBS5_ILP32_OFFBIG_LINTFLAGS": "_CS_XBS5_ILP32_OFFBIG_LINTFLAGS",
+ "CS_XBS5_LP64_OFF64_CFLAGS": "_CS_XBS5_LP64_OFF64_CFLAGS",
+ "CS_XBS5_LP64_OFF64_LDFLAGS": "_CS_XBS5_LP64_OFF64_LDFLAGS",
+ "CS_XBS5_LP64_OFF64_LIBS": "_CS_XBS5_LP64_OFF64_LIBS",
+ "CS_XBS5_LP64_OFF64_LINTFLAGS": "_CS_XBS5_LP64_OFF64_LINTFLAGS",
+ "CS_XBS5_LPBIG_OFFBIG_CFLAGS": "_CS_XBS5_LPBIG_OFFBIG_CFLAGS",
+ "CS_XBS5_LPBIG_OFFBIG_LDFLAGS": "_CS_XBS5_LPBIG_OFFBIG_LDFLAGS",
+ "CS_XBS5_LPBIG_OFFBIG_LIBS": "_CS_XBS5_LPBIG_OFFBIG_LIBS",
+ "CS_XBS5_LPBIG_OFFBIG_LINTFLAGS": "_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS",
+ "MIPS_CS_AVAIL_PROCESSORS": "_MIPS_CS_AVAIL_PROCESSORS",
+ "MIPS_CS_BASE": "_MIPS_CS_BASE",
+ "MIPS_CS_HOSTID": "_MIPS_CS_HOSTID",
+ "MIPS_CS_HW_NAME": "_MIPS_CS_HW_NAME",
+ "MIPS_CS_NUM_PROCESSORS": "_MIPS_CS_NUM_PROCESSORS",
+ "MIPS_CS_OSREL_MAJ": "_MIPS_CS_OSREL_MAJ",
+ "MIPS_CS_OSREL_MIN": "_MIPS_CS_OSREL_MIN",
+ "MIPS_CS_OSREL_PATCH": "_MIPS_CS_OSREL_PATCH",
+ "MIPS_CS_OS_NAME": "_MIPS_CS_OS_NAME",
+ "MIPS_CS_OS_PROVIDER": "_MIPS_CS_OS_PROVIDER",
+ "MIPS_CS_PROCESSORS": "_MIPS_CS_PROCESSORS",
+ "MIPS_CS_SERIAL": "_MIPS_CS_SERIAL",
+ "MIPS_CS_VENDOR": "_MIPS_CS_VENDOR",
+ }
+
+ sysconf_consts_defs = {
+ "SC_2_CHAR_TERM": "_SC_2_CHAR_TERM",
+ "SC_2_C_BIND": "_SC_2_C_BIND",
+ "SC_2_C_DEV": "_SC_2_C_DEV",
+ "SC_2_C_VERSION": "_SC_2_C_VERSION",
+ "SC_2_FORT_DEV": "_SC_2_FORT_DEV",
+ "SC_2_FORT_RUN": "_SC_2_FORT_RUN",
+ "SC_2_LOCALEDEF": "_SC_2_LOCALEDEF",
+ "SC_2_SW_DEV": "_SC_2_SW_DEV",
+ "SC_2_UPE": "_SC_2_UPE",
+ "SC_2_VERSION": "_SC_2_VERSION",
+ "SC_ABI_ASYNCHRONOUS_IO": "_SC_ABI_ASYNCHRONOUS_IO",
+ "SC_ACL": "_SC_ACL",
+ "SC_AIO_LISTIO_MAX": "_SC_AIO_LISTIO_MAX",
+ "SC_AIO_MAX": "_SC_AIO_MAX",
+ "SC_AIO_PRIO_DELTA_MAX": "_SC_AIO_PRIO_DELTA_MAX",
+ "SC_ARG_MAX": "_SC_ARG_MAX",
+ "SC_ASYNCHRONOUS_IO": "_SC_ASYNCHRONOUS_IO",
+ "SC_ATEXIT_MAX": "_SC_ATEXIT_MAX",
+ "SC_AUDIT": "_SC_AUDIT",
+ "SC_AVPHYS_PAGES": "_SC_AVPHYS_PAGES",
+ "SC_BC_BASE_MAX": "_SC_BC_BASE_MAX",
+ "SC_BC_DIM_MAX": "_SC_BC_DIM_MAX",
+ "SC_BC_SCALE_MAX": "_SC_BC_SCALE_MAX",
+ "SC_BC_STRING_MAX": "_SC_BC_STRING_MAX",
+ "SC_CAP": "_SC_CAP",
+ "SC_CHARCLASS_NAME_MAX": "_SC_CHARCLASS_NAME_MAX",
+ "SC_CHAR_BIT": "_SC_CHAR_BIT",
+ "SC_CHAR_MAX": "_SC_CHAR_MAX",
+ "SC_CHAR_MIN": "_SC_CHAR_MIN",
+ "SC_CHILD_MAX": "_SC_CHILD_MAX",
+ "SC_CLK_TCK": "_SC_CLK_TCK",
+ "SC_COHER_BLKSZ": "_SC_COHER_BLKSZ",
+ "SC_COLL_WEIGHTS_MAX": "_SC_COLL_WEIGHTS_MAX",
+ "SC_DCACHE_ASSOC": "_SC_DCACHE_ASSOC",
+ "SC_DCACHE_BLKSZ": "_SC_DCACHE_BLKSZ",
+ "SC_DCACHE_LINESZ": "_SC_DCACHE_LINESZ",
+ "SC_DCACHE_SZ": "_SC_DCACHE_SZ",
+ "SC_DCACHE_TBLKSZ": "_SC_DCACHE_TBLKSZ",
+ "SC_DELAYTIMER_MAX": "_SC_DELAYTIMER_MAX",
+ "SC_EQUIV_CLASS_MAX": "_SC_EQUIV_CLASS_MAX",
+ "SC_EXPR_NEST_MAX": "_SC_EXPR_NEST_MAX",
+ "SC_FSYNC": "_SC_FSYNC",
+ "SC_GETGR_R_SIZE_MAX": "_SC_GETGR_R_SIZE_MAX",
+ "SC_GETPW_R_SIZE_MAX": "_SC_GETPW_R_SIZE_MAX",
+ "SC_ICACHE_ASSOC": "_SC_ICACHE_ASSOC",
+ "SC_ICACHE_BLKSZ": "_SC_ICACHE_BLKSZ",
+ "SC_ICACHE_LINESZ": "_SC_ICACHE_LINESZ",
+ "SC_ICACHE_SZ": "_SC_ICACHE_SZ",
+ "SC_INF": "_SC_INF",
+ "SC_INT_MAX": "_SC_INT_MAX",
+ "SC_INT_MIN": "_SC_INT_MIN",
+ "SC_IOV_MAX": "_SC_IOV_MAX",
+ "SC_IP_SECOPTS": "_SC_IP_SECOPTS",
+ "SC_JOB_CONTROL": "_SC_JOB_CONTROL",
+ "SC_KERN_POINTERS": "_SC_KERN_POINTERS",
+ "SC_KERN_SIM": "_SC_KERN_SIM",
+ "SC_LINE_MAX": "_SC_LINE_MAX",
+ "SC_LOGIN_NAME_MAX": "_SC_LOGIN_NAME_MAX",
+ "SC_LOGNAME_MAX": "_SC_LOGNAME_MAX",
+ "SC_LONG_BIT": "_SC_LONG_BIT",
+ "SC_MAC": "_SC_MAC",
+ "SC_MAPPED_FILES": "_SC_MAPPED_FILES",
+ "SC_MAXPID": "_SC_MAXPID",
+ "SC_MB_LEN_MAX": "_SC_MB_LEN_MAX",
+ "SC_MEMLOCK": "_SC_MEMLOCK",
+ "SC_MEMLOCK_RANGE": "_SC_MEMLOCK_RANGE",
+ "SC_MEMORY_PROTECTION": "_SC_MEMORY_PROTECTION",
+ "SC_MESSAGE_PASSING": "_SC_MESSAGE_PASSING",
+ "SC_MMAP_FIXED_ALIGNMENT": "_SC_MMAP_FIXED_ALIGNMENT",
+ "SC_MQ_OPEN_MAX": "_SC_MQ_OPEN_MAX",
+ "SC_MQ_PRIO_MAX": "_SC_MQ_PRIO_MAX",
+ "SC_NACLS_MAX": "_SC_NACLS_MAX",
+ "SC_NGROUPS_MAX": "_SC_NGROUPS_MAX",
+ "SC_NL_ARGMAX": "_SC_NL_ARGMAX",
+ "SC_NL_LANGMAX": "_SC_NL_LANGMAX",
+ "SC_NL_MSGMAX": "_SC_NL_MSGMAX",
+ "SC_NL_NMAX": "_SC_NL_NMAX",
+ "SC_NL_SETMAX": "_SC_NL_SETMAX",
+ "SC_NL_TEXTMAX": "_SC_NL_TEXTMAX",
+ "SC_NPROCESSORS_CONF": "_SC_NPROCESSORS_CONF",
+ "SC_NPROCESSORS_ONLN": "_SC_NPROCESSORS_ONLN",
+ "SC_NPROC_CONF": "_SC_NPROC_CONF",
+ "SC_NPROC_ONLN": "_SC_NPROC_ONLN",
+ "SC_NZERO": "_SC_NZERO",
+ "SC_OPEN_MAX": "_SC_OPEN_MAX",
+ "SC_PAGESIZE": "_SC_PAGESIZE",
+ "SC_PAGE_SIZE": "_SC_PAGE_SIZE",
+ "SC_PASS_MAX": "_SC_PASS_MAX",
+ "SC_PHYS_PAGES": "_SC_PHYS_PAGES",
+ "SC_PII": "_SC_PII",
+ "SC_PII_INTERNET": "_SC_PII_INTERNET",
+ "SC_PII_INTERNET_DGRAM": "_SC_PII_INTERNET_DGRAM",
+ "SC_PII_INTERNET_STREAM": "_SC_PII_INTERNET_STREAM",
+ "SC_PII_OSI": "_SC_PII_OSI",
+ "SC_PII_OSI_CLTS": "_SC_PII_OSI_CLTS",
+ "SC_PII_OSI_COTS": "_SC_PII_OSI_COTS",
+ "SC_PII_OSI_M": "_SC_PII_OSI_M",
+ "SC_PII_SOCKET": "_SC_PII_SOCKET",
+ "SC_PII_XTI": "_SC_PII_XTI",
+ "SC_POLL": "_SC_POLL",
+ "SC_PRIORITIZED_IO": "_SC_PRIORITIZED_IO",
+ "SC_PRIORITY_SCHEDULING": "_SC_PRIORITY_SCHEDULING",
+ "SC_REALTIME_SIGNALS": "_SC_REALTIME_SIGNALS",
+ "SC_RE_DUP_MAX": "_SC_RE_DUP_MAX",
+ "SC_RTSIG_MAX": "_SC_RTSIG_MAX",
+ "SC_SAVED_IDS": "_SC_SAVED_IDS",
+ "SC_SCHAR_MAX": "_SC_SCHAR_MAX",
+ "SC_SCHAR_MIN": "_SC_SCHAR_MIN",
+ "SC_SELECT": "_SC_SELECT",
+ "SC_SEMAPHORES": "_SC_SEMAPHORES",
+ "SC_SEM_NSEMS_MAX": "_SC_SEM_NSEMS_MAX",
+ "SC_SEM_VALUE_MAX": "_SC_SEM_VALUE_MAX",
+ "SC_SHARED_MEMORY_OBJECTS": "_SC_SHARED_MEMORY_OBJECTS",
+ "SC_SHRT_MAX": "_SC_SHRT_MAX",
+ "SC_SHRT_MIN": "_SC_SHRT_MIN",
+ "SC_SIGQUEUE_MAX": "_SC_SIGQUEUE_MAX",
+ "SC_SIGRT_MAX": "_SC_SIGRT_MAX",
+ "SC_SIGRT_MIN": "_SC_SIGRT_MIN",
+ "SC_SOFTPOWER": "_SC_SOFTPOWER",
+ "SC_SPLIT_CACHE": "_SC_SPLIT_CACHE",
+ "SC_SSIZE_MAX": "_SC_SSIZE_MAX",
+ "SC_STACK_PROT": "_SC_STACK_PROT",
+ "SC_STREAM_MAX": "_SC_STREAM_MAX",
+ "SC_SYNCHRONIZED_IO": "_SC_SYNCHRONIZED_IO",
+ "SC_THREADS": "_SC_THREADS",
+ "SC_THREAD_ATTR_STACKADDR": "_SC_THREAD_ATTR_STACKADDR",
+ "SC_THREAD_ATTR_STACKSIZE": "_SC_THREAD_ATTR_STACKSIZE",
+ "SC_THREAD_DESTRUCTOR_ITERATIONS": "_SC_THREAD_DESTRUCTOR_ITERATIONS",
+ "SC_THREAD_KEYS_MAX": "_SC_THREAD_KEYS_MAX",
+ "SC_THREAD_PRIORITY_SCHEDULING": "_SC_THREAD_PRIORITY_SCHEDULING",
+ "SC_THREAD_PRIO_INHERIT": "_SC_THREAD_PRIO_INHERIT",
+ "SC_THREAD_PRIO_PROTECT": "_SC_THREAD_PRIO_PROTECT",
+ "SC_THREAD_PROCESS_SHARED": "_SC_THREAD_PROCESS_SHARED",
+ "SC_THREAD_SAFE_FUNCTIONS": "_SC_THREAD_SAFE_FUNCTIONS",
+ "SC_THREAD_STACK_MIN": "_SC_THREAD_STACK_MIN",
+ "SC_THREAD_THREADS_MAX": "_SC_THREAD_THREADS_MAX",
+ "SC_TIMERS": "_SC_TIMERS",
+ "SC_TIMER_MAX": "_SC_TIMER_MAX",
+ "SC_TTY_NAME_MAX": "_SC_TTY_NAME_MAX",
+ "SC_TZNAME_MAX": "_SC_TZNAME_MAX",
+ "SC_T_IOV_MAX": "_SC_T_IOV_MAX",
+ "SC_UCHAR_MAX": "_SC_UCHAR_MAX",
+ "SC_UINT_MAX": "_SC_UINT_MAX",
+ "SC_UIO_MAXIOV": "_SC_UIO_MAXIOV",
+ "SC_ULONG_MAX": "_SC_ULONG_MAX",
+ "SC_USHRT_MAX": "_SC_USHRT_MAX",
+ "SC_VERSION": "_SC_VERSION",
+ "SC_WORD_BIT": "_SC_WORD_BIT",
+ "SC_XBS5_ILP32_OFF32": "_SC_XBS5_ILP32_OFF32",
+ "SC_XBS5_ILP32_OFFBIG": "_SC_XBS5_ILP32_OFFBIG",
+ "SC_XBS5_LP64_OFF64": "_SC_XBS5_LP64_OFF64",
+ "SC_XBS5_LPBIG_OFFBIG": "_SC_XBS5_LPBIG_OFFBIG",
+ "SC_XOPEN_CRYPT": "_SC_XOPEN_CRYPT",
+ "SC_XOPEN_ENH_I18N": "_SC_XOPEN_ENH_I18N",
+ "SC_XOPEN_LEGACY": "_SC_XOPEN_LEGACY",
+ "SC_XOPEN_REALTIME": "_SC_XOPEN_REALTIME",
+ "SC_XOPEN_REALTIME_THREADS": "_SC_XOPEN_REALTIME_THREADS",
+ "SC_XOPEN_SHM": "_SC_XOPEN_SHM",
+ "SC_XOPEN_UNIX": "_SC_XOPEN_UNIX",
+ "SC_XOPEN_VERSION": "_SC_XOPEN_VERSION",
+ "SC_XOPEN_XCU_VERSION": "_SC_XOPEN_XCU_VERSION",
+ "SC_XOPEN_XPG2": "_SC_XOPEN_XPG2",
+ "SC_XOPEN_XPG3": "_SC_XOPEN_XPG3",
+ "SC_XOPEN_XPG4": "_SC_XOPEN_XPG4",
+ }
+ for k,v in pathconf_consts_defs.items():
+ setattr(ConfConfig, k, rffi_platform.DefinedConstantInteger(v))
+ for k,v in confstr_consts_defs.items():
+ setattr(ConfConfig, k, rffi_platform.DefinedConstantInteger(v))
+ for k,v in sysconf_consts_defs.items():
+ setattr(ConfConfig, k, rffi_platform.DefinedConstantInteger(v))
+
+ confConfig = rffi_platform.configure(ConfConfig)
+ pathconf_names = {}
+ confstr_names = {}
+ sysconf_names = {}
+ for k in pathconf_consts_defs:
+ v = confConfig.get(k, None)
+ if v is not None:
+ pathconf_names[k] = v
+ for k in confstr_consts_defs:
+ v = confConfig.get(k, None)
+ if v is not None:
+ confstr_names[k] = v
+ for k in sysconf_consts_defs:
+ v = confConfig.get(k, None)
+ if v is not None:
+ sysconf_names[k] = v
+
+
+
if HAVE_SCHED_GETPARAM:
class CConfig:
_compilation_info_ = ExternalCompilationInfo(
diff --git a/rpython/rlib/rwin32.py b/rpython/rlib/rwin32.py
index 56072c619e..af9de69aa6 100644
--- a/rpython/rlib/rwin32.py
+++ b/rpython/rlib/rwin32.py
@@ -10,6 +10,7 @@ from rpython.rtyper.tool import rffi_platform
from rpython.tool.udir import udir
from rpython.translator.tool.cbuild import ExternalCompilationInfo
from rpython.translator.platform import CompilationError
+from rpython.translator import cdir
from rpython.rtyper.lltypesystem import lltype, rffi
from rpython.rlib.rarithmetic import intmask, r_longlong, widen
from rpython.rlib import jit
@@ -17,12 +18,20 @@ from rpython.rlib import jit
# This module can be imported on any platform,
# but most symbols are not usable...
WIN32 = os.name == "nt"
+srcdir = os.path.join(os.path.dirname(__file__), 'src')
if WIN32:
eci = ExternalCompilationInfo(
- includes = ['windows.h', 'stdio.h', 'stdlib.h', 'io.h'],
+ includes = ['windows.h', 'stdio.h', 'stdlib.h', 'io.h', 'winreparse.h'],
+ include_dirs = [srcdir, cdir],
libraries = ['kernel32'],
+ separate_module_files = [os.path.join(srcdir, "winreparse.c")],
)
+
+ def external(name, args, result, compilation_info=eci, **kwds):
+ return rffi.llexternal(name, args, result,
+ compilation_info=compilation_info, **kwds)
+
else:
eci = ExternalCompilationInfo()
@@ -119,6 +128,7 @@ class CConfig:
CP_ACP CP_UTF8 CP_UTF7 CP_OEMCP MB_ERR_INVALID_CHARS
LOAD_LIBRARY_SEARCH_DEFAULT_DIRS SEM_FAILCRITICALERRORS
LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR
+ _Py_MAXIMUM_REPARSE_DATA_BUFFER_SIZE
"""
from rpython.translator.platform import host_factory
static_platform = host_factory()
@@ -629,3 +639,16 @@ if WIN32:
# Don't save the err since this is called before checking err in rdynload
SetErrorMode = winexternal('SetErrorMode', [rffi.UINT], rffi.UINT)
+
+ # int os_readlink_impl(wchar_t *path_to_check, char * reparse_data_buffer,
+ # wchar_t **result);
+ # returns the number of wchar_t chars in result, -1 if error, for a given
+ # path_to_check. The result pointer will be somewhere inside the pre-allocated
+ # reparse_data_buffer, which should be of length _Py_MAXIMUM_REPARSE_DATA_BUFFER_SIZE
+ os_readlink_impl = winexternal("os_readlink_impl",
+ [rffi.CWCHARP, rffi.VOIDP, rffi.CWCHARPP], rffi.INT,
+ save_err=rffi.RFFI_SAVE_LASTERROR)
+
+ os_symlink_impl = winexternal("os_symlink_impl",
+ [rffi.CWCHARP, rffi.CWCHARP, rffi.INT], rffi.INT,
+ save_err=rffi.RFFI_SAVE_LASTERROR)
diff --git a/rpython/rlib/src/winreparse.c b/rpython/rlib/src/winreparse.c
new file mode 100644
index 0000000000..fca0401aff
--- /dev/null
+++ b/rpython/rlib/src/winreparse.c
@@ -0,0 +1,202 @@
+// #define WIN32_LEAN_AND_MEAN // FSCTL_GET_REPARSE_POINT is not defined in LEAN_AND_MEAN
+#include <windows.h>
+#include <winreparse.h>
+#include <stdio.h>
+
+#ifndef RPY_EXPORTED
+#ifdef __GNUC__
+# define RPY_EXPORTED extern __attribute__((visibility("default")))
+#else
+# define RPY_EXPORTED extern __declspec(dllexport)
+#endif
+#endif
+
+static void __cdecl _silent_invalid_parameter_handler(
+ wchar_t const* expression,
+ wchar_t const* function,
+ wchar_t const* file,
+ unsigned int line,
+ uintptr_t pReserved) { }
+
+#define _BEGIN_SUPPRESS_IPH { _invalid_parameter_handler _old_handler = \
+ _set_thread_local_invalid_parameter_handler(_silent_invalid_parameter_handler);
+#define _END_SUPPRESS_IPH _set_thread_local_invalid_parameter_handler(_old_handler); }
+
+
+
+void* enter_suppress_iph();
+void exit_suppress_iph(void* handle);
+
+RPY_EXPORTED int
+os_readlink_impl(wchar_t *path_wide, void *target_buffer, wchar_t **result) {
+ DWORD n_bytes_returned;
+ DWORD io_result = 0;
+ HANDLE reparse_point_handle;
+ _Py_REPARSE_DATA_BUFFER *rdb = (_Py_REPARSE_DATA_BUFFER *)target_buffer;
+
+ /* First get a handle to the reparse point */
+ reparse_point_handle = CreateFileW(
+ path_wide,
+ 0,
+ 0,
+ 0,
+ OPEN_EXISTING,
+ FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS,
+ 0);
+ if (reparse_point_handle != INVALID_HANDLE_VALUE) {
+ /* New call DeviceIoControl to read the reparse point */
+ io_result = DeviceIoControl(
+ reparse_point_handle,
+ FSCTL_GET_REPARSE_POINT,
+ 0, 0, /* in buffer */
+ target_buffer, _Py_MAXIMUM_REPARSE_DATA_BUFFER_SIZE,
+ &n_bytes_returned,
+ 0 /* we're not using OVERLAPPED_IO */
+ );
+ CloseHandle(reparse_point_handle);
+ }
+
+ if (io_result == 0) {
+ return -1;
+ }
+
+ long nameLen = 0;
+ if (rdb->ReparseTag == IO_REPARSE_TAG_SYMLINK)
+ {
+ result[0] = (wchar_t *)((char*)rdb->SymbolicLinkReparseBuffer.PathBuffer +
+ rdb->SymbolicLinkReparseBuffer.SubstituteNameOffset);
+ nameLen = rdb->SymbolicLinkReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
+ }
+ else if (rdb->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT)
+ {
+ result[0] = (wchar_t*)((char*)rdb->MountPointReparseBuffer.PathBuffer +
+ rdb->MountPointReparseBuffer.SubstituteNameOffset);
+ nameLen = rdb->MountPointReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
+ }
+ else
+ {
+ result[0] = NULL;
+ return -2;
+ }
+ if (nameLen > 4 && wcsncmp(result[0], L"\\??\\", 4) == 0) {
+ result[0][1] = L'\\';
+ }
+ return (int)nameLen;
+}
+
+/* Remove the last portion of the path - return 0 on success */
+static int
+_dirnameW(WCHAR *path)
+{
+ WCHAR *ptr;
+ size_t length = wcsnlen_s(path, MAX_PATH);
+ if (length == MAX_PATH) {
+ return -1;
+ }
+
+ /* walk the path from the end until a backslash is encountered */
+ for(ptr = path + length; ptr != path; ptr--) {
+ if (*ptr == L'\\' || *ptr == L'/') {
+ break;
+ }
+ }
+ *ptr = 0;
+ return 0;
+}
+
+/* Is this path absolute? */
+static int
+_is_absW(const WCHAR *path)
+{
+ return path[0] == L'\\' || path[0] == L'/' ||
+ (path[0] && path[1] == L':');
+}
+
+/* join root and rest with a backslash - return 0 on success */
+static int
+_joinW(WCHAR *dest_path, const WCHAR *root, const WCHAR *rest)
+{
+ if (_is_absW(rest)) {
+ return wcscpy_s(dest_path, MAX_PATH, rest);
+ }
+
+ if (wcscpy_s(dest_path, MAX_PATH, root)) {
+ return -1;
+ }
+
+ if (dest_path[0] && wcscat_s(dest_path, MAX_PATH, L"\\")) {
+ return -1;
+ }
+
+ return wcscat_s(dest_path, MAX_PATH, rest);
+}
+
+/* Return True if the path at src relative to dest is a directory */
+static int
+_check_dirW(LPCWSTR src, LPCWSTR dest)
+{
+ WIN32_FILE_ATTRIBUTE_DATA src_info;
+ WCHAR dest_parent[MAX_PATH];
+ WCHAR src_resolved[MAX_PATH] = L"";
+
+ /* dest_parent = os.path.dirname(dest) */
+ if (wcscpy_s(dest_parent, MAX_PATH, dest) ||
+ _dirnameW(dest_parent)) {
+ return 0;
+ }
+ /* src_resolved = os.path.join(dest_parent, src) */
+ if (_joinW(src_resolved, dest_parent, src)) {
+ return 0;
+ }
+ return (
+ GetFileAttributesExW(src_resolved, GetFileExInfoStandard, &src_info)
+ && src_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
+ );
+}
+
+RPY_EXPORTED int
+os_symlink_impl(wchar_t *src, wchar_t *dst, int target_is_directory)
+{
+ DWORD result;
+ DWORD flags = 0;
+
+ /* Assumed true, set to false if detected to not be available. */
+ static int windows_has_symlink_unprivileged_flag = TRUE;
+ if (windows_has_symlink_unprivileged_flag) {
+ /* Allow non-admin symlinks if system allows it. */
+ flags |= SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
+ }
+
+ _BEGIN_SUPPRESS_IPH
+ /* if src is a directory, ensure flags==1 (target_is_directory bit) */
+ if (target_is_directory || _check_dirW(src, dst)) {
+ flags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
+ }
+
+ result = CreateSymbolicLinkW(dst, src, flags);
+ _END_SUPPRESS_IPH
+
+ if (windows_has_symlink_unprivileged_flag && !result &&
+ ERROR_INVALID_PARAMETER == GetLastError()) {
+
+ _BEGIN_SUPPRESS_IPH
+ /* This error might be caused by
+ SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE not being supported.
+ Try again, and update windows_has_symlink_unprivileged_flag if we
+ are successful this time.
+
+ NOTE: There is a risk of a race condition here if there are other
+ conditions than the flag causing ERROR_INVALID_PARAMETER, and
+ another process (or thread) changes that condition in between our
+ calls to CreateSymbolicLink.
+ */
+ flags &= ~(SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE);
+ result = CreateSymbolicLinkW(dst, src, flags);
+ _END_SUPPRESS_IPH
+
+ if (result || ERROR_INVALID_PARAMETER != GetLastError()) {
+ windows_has_symlink_unprivileged_flag = FALSE;
+ }
+ }
+ return (int)result;
+}
diff --git a/rpython/rlib/src/winreparse.h b/rpython/rlib/src/winreparse.h
new file mode 100644
index 0000000000..f23cf3aee7
--- /dev/null
+++ b/rpython/rlib/src/winreparse.h
@@ -0,0 +1,66 @@
+#ifndef Py_WINREPARSE_H
+#define Py_WINREPARSE_H
+
+#include <src/precommondefs.h>
+#ifdef _WIN64
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The following structure was copied from
+ http://msdn.microsoft.com/en-us/library/ff552012.aspx as the required
+ include km\ntifs.h isn't present in the Windows SDK (at least as included
+ with Visual Studio Express). Use unique names to avoid conflicting with
+ the structure as defined by Min GW. */
+typedef struct {
+ ULONG ReparseTag;
+ USHORT ReparseDataLength;
+ USHORT Reserved;
+ union {
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ ULONG Flags;
+ WCHAR PathBuffer[1];
+ } SymbolicLinkReparseBuffer;
+
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ WCHAR PathBuffer[1];
+ } MountPointReparseBuffer;
+
+ struct {
+ UCHAR DataBuffer[1];
+ } GenericReparseBuffer;
+ };
+} _Py_REPARSE_DATA_BUFFER, *_Py_PREPARSE_DATA_BUFFER;
+
+#define _Py_REPARSE_DATA_BUFFER_HEADER_SIZE \
+ FIELD_OFFSET(_Py_REPARSE_DATA_BUFFER, GenericReparseBuffer)
+#define _Py_MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 )
+
+// Defined in WinBase.h in 'recent' versions of Windows 10 SDK
+#ifndef SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
+#define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 0x2
+#endif
+
+RPY_EXPORTED int
+os_readlink_impl(wchar_t *path_wide, void *target_buffer, wchar_t *result);
+
+RPY_EXPORTED int
+os_symlink_impl(wchar_t *src, wchar_t *dst, int target_is_directory);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MS_WINDOWS */
+
+#endif /* !Py_WINREPARSE_H */
diff --git a/rpython/rlib/test/test_objectmodel.py b/rpython/rlib/test/test_objectmodel.py
index 7efcacd406..725143d952 100644
--- a/rpython/rlib/test/test_objectmodel.py
+++ b/rpython/rlib/test/test_objectmodel.py
@@ -959,3 +959,9 @@ def test_dict_to_switch_translate():
t, typer, g = gengraph(f, [int])
lookupg = t.graphs[1]
assert summary(lookupg)['direct_call'] == 1 # should be char based
+
+def test_dict_to_switch_default():
+ d = dict_to_switch({1: "one", 2: "two"}, default="three")
+ assert d(1) == "one"
+ assert d(2) == "two"
+ assert d(3) == "three"
diff --git a/rpython/rlib/test/test_rsocket.py b/rpython/rlib/test/test_rsocket.py
index 94cd19bda8..d547b6219d 100644
--- a/rpython/rlib/test/test_rsocket.py
+++ b/rpython/rlib/test/test_rsocket.py
@@ -422,7 +422,8 @@ def getaddrinfo_pydotorg(i, result):
found = False
for family, socktype, protocol, canonname, addr in lst:
if addr.get_host() in ('138.197.63.241', '104.130.43.121',
- '23.253.135.79', '45.55.99.72'):
+ '23.253.135.79', '45.55.99.72',
+ '151.101.129.168', '151.101.193.168'):
found = True
elif family == AF_INET:
print 'pydotorg changed to', addr.get_host()
diff --git a/rpython/rlib/unicodedata/generate_unicodedb.py b/rpython/rlib/unicodedata/generate_unicodedb.py
index 371f823ae9..a55bd343a1 100644
--- a/rpython/rlib/unicodedata/generate_unicodedb.py
+++ b/rpython/rlib/unicodedata/generate_unicodedb.py
@@ -798,9 +798,10 @@ def writeUnicodedata(version, version_tuple, table, outfile, base):
" 0x20000 <= code <= 0x2A6D6 or"
" 0x2A700 <= code <= 0x2B734 or"
" 0x2B740 <= code <= 0x2CEA1 or"
- " 0x2CEB0 <= code <= 0x2EBE0)")
+ " 0x2CEB0 <= code <= 0x2EBE0) or"
+ " 0x30000 <= code <= 0x3134A")
else:
- raise ValueError("please look up CJK ranges and fix the script, e.g. here: https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block)")
+ raise ValueError("please look up CJK ranges and fix the script, e.g. here: https://www.unicode.org/reports/tr38/tr38-29.html#BlockListing")
write_character_names(outfile, table, base_mod)
diff --git a/rpython/rlib/unicodedata/test/test_unicodedata.py b/rpython/rlib/unicodedata/test/test_unicodedata.py
index 0243379f6a..7a8ad886c1 100644
--- a/rpython/rlib/unicodedata/test/test_unicodedata.py
+++ b/rpython/rlib/unicodedata/test/test_unicodedata.py
@@ -248,3 +248,9 @@ def test_named_sequence():
code = unicodedb_13_0_0.lookup("KEYCAP DIGIT FIVE", with_named_sequence=True)
assert unicodedb_13_0_0.lookup_named_sequence(code) == b'5\xef\xb8\x8f\xe2\x83\xa3'
assert unicodedb_13_0_0.lookup_named_sequence_length(code) == 3
+
+def test_cjk_13_missing_range_bug():
+ assert unicodedb_13_0_0.name(0x30000) == 'CJK UNIFIED IDEOGRAPH-30000'
+ assert unicodedb_13_0_0.name(0x3134a) == 'CJK UNIFIED IDEOGRAPH-3134a'
+ assert unicodedb_13_0_0.name(0x3104f) == 'CJK UNIFIED IDEOGRAPH-3134a'
+
diff --git a/rpython/rlib/unicodedata/unicodedb_13_0_0.py b/rpython/rlib/unicodedata/unicodedb_13_0_0.py
index 0156c25f4e..dddbc2e518 100644
--- a/rpython/rlib/unicodedata/unicodedb_13_0_0.py
+++ b/rpython/rlib/unicodedata/unicodedb_13_0_0.py
@@ -32762,7 +32762,7 @@ def _lookup_cjk(cjk_code):
if not ('0' <= c <= '9' or 'A' <= c <= 'F'):
raise KeyError
code = int(cjk_code, 16)
- if (0x3400 <= code <= 0x4DB5 or 0x4E00 <= code <= 0x9FFC or 0x20000 <= code <= 0x2A6D6 or 0x2A700 <= code <= 0x2B734 or 0x2B740 <= code <= 0x2CEA1 or 0x2CEB0 <= code <= 0x2EBE0):
+ if (0x3400 <= code <= 0x4DB5 or 0x4E00 <= code <= 0x9FFC or 0x20000 <= code <= 0x2A6D6 or 0x2A700 <= code <= 0x2B734 or 0x2B740 <= code <= 0x2CEA1 or 0x2CEB0 <= code <= 0x2EBE0) or 0x30000 <= code <= 0x3134A:
return code
raise KeyError
@@ -32787,7 +32787,7 @@ def lookup(name, with_named_sequence=False, with_alias=False):
return code
def name(code):
- if (0x3400 <= code <= 0x4DB5 or 0x4E00 <= code <= 0x9FFC or 0x20000 <= code <= 0x2A6D6 or 0x2A700 <= code <= 0x2B734 or 0x2B740 <= code <= 0x2CEA1 or 0x2CEB0 <= code <= 0x2EBE0):
+ if (0x3400 <= code <= 0x4DB5 or 0x4E00 <= code <= 0x9FFC or 0x20000 <= code <= 0x2A6D6 or 0x2A700 <= code <= 0x2B734 or 0x2B740 <= code <= 0x2CEA1 or 0x2CEB0 <= code <= 0x2EBE0) or 0x30000 <= code <= 0x3134A:
return "CJK UNIFIED IDEOGRAPH-" + hex(code)[2:].upper()
if 0xAC00 <= code <= 0xD7A3:
# vl_code, t_code = divmod(code - 0xAC00, len(_hangul_T))
diff --git a/rpython/rtyper/lltypesystem/rffi.py b/rpython/rtyper/lltypesystem/rffi.py
index 7cbc3fefe3..84160071af 100644
--- a/rpython/rtyper/lltypesystem/rffi.py
+++ b/rpython/rtyper/lltypesystem/rffi.py
@@ -1067,11 +1067,11 @@ def constcharpsize2str(cp, size):
return charpsize2str(cp, size)
constcharpsize2str._annenforceargs_ = [lltype.SomePtr(CONST_CCHARP), int]
-def str2constcharp(s):
+def str2constcharp(s, track_allocation=True):
"""
Like str2charp, but returns a CONST_CCHARP instead
"""
- cp = str2charp(s)
+ cp = str2charp(s, track_allocation)
return cast(CONST_CCHARP, cp)
str2constcharp._annenforceargs_ = [str]
@@ -1145,6 +1145,32 @@ def utf82wcharp(utf8, utf8len, track_allocation=True):
return w
utf82wcharp._annenforceargs_ = [str, int, bool]
+def utf82wcharp_ex(utf8, unilen, track_allocation=True):
+ from rpython.rlib import rutf8
+ # slightly different than utf82wcharp for sizeof(wchar_t) == 2 and
+ # maxunicode==0x10ffff. Very similar to utf8_encode_utf_16_helper
+ # but allocates a buffer, and no error handler. Passes surrogates through.
+ wlen = 0
+ for ch in rutf8.Utf8StringIterator(utf8):
+ if ch > 0xffff:
+ wlen += 1
+ wlen += 1
+ w = lltype.malloc(CWCHARP.TO, wlen + 1, flavor='raw',
+ track_allocation=track_allocation)
+ index = 0
+ for ch in rutf8.Utf8StringIterator(utf8):
+ if ch > 0xffff:
+ w[index] = unichr(0xD800 | ((ch - 0x10000) >> 10))
+ index += 1
+ w[index] = unichr(0xDC00 | ((ch - 0x10000) & 0x3FF))
+ else:
+ w[index] = unichr(ch)
+ index += 1
+ w[index] = unichr(0)
+ assert wlen == index
+ return w
+utf82wcharp_ex._annenforceargs_ = [str, int, bool]
+
# char**
CCHARPP = lltype.Ptr(lltype.Array(CCHARP, hints={'nolength': True}))
CWCHARPP = lltype.Ptr(lltype.Array(CWCHARP, hints={'nolength': True}))
diff --git a/rpython/tool/cparser/cts.py b/rpython/tool/cparser/cts.py
index bcc5f2f1ac..f2e1d8070e 100644
--- a/rpython/tool/cparser/cts.py
+++ b/rpython/tool/cparser/cts.py
@@ -58,7 +58,7 @@ class DelayedStruct(object):
class CTypeSpace(object):
def __init__(self, parser=None, definitions=None, macros=None,
- headers=None, includes=None):
+ headers=None, includes=None, include_dirs=None):
self.definitions = definitions if definitions is not None else {}
self.macros = macros if macros is not None else {}
self.structs = {}
@@ -75,6 +75,10 @@ class CTypeSpace(object):
if includes is not None:
for header in includes:
self.include(header)
+ if include_dirs is not None:
+ self.include_dirs = include_dirs[:]
+ else:
+ self.include_dirs = []
def include(self, other):
self.ctx.include(other.ctx)
@@ -161,7 +165,8 @@ class CTypeSpace(object):
compile_extra = []
return ExternalCompilationInfo(
post_include_bits=all_sources, includes=all_headers,
- compile_extra=compile_extra)
+ compile_extra=compile_extra,
+ include_dirs=self.include_dirs)
def configure_types(self):
for name, (obj, quals) in self.ctx._declarations.iteritems():
diff --git a/rpython/translator/platform/__init__.py b/rpython/translator/platform/__init__.py
index 780710e74a..5b7444c767 100644
--- a/rpython/translator/platform/__init__.py
+++ b/rpython/translator/platform/__init__.py
@@ -275,6 +275,8 @@ class Platform(object):
def check___thread(self):
return True
+ def get_multiarch(self):
+ return ''
if sys.platform.startswith('linux'):
from rpython.translator.platform.linux import Linux
diff --git a/rpython/translator/platform/darwin.py b/rpython/translator/platform/darwin.py
index 29869504c4..7256fe70ac 100644
--- a/rpython/translator/platform/darwin.py
+++ b/rpython/translator/platform/darwin.py
@@ -11,6 +11,9 @@ import os
# Bumped to 10.9 2021-11-22 to match CPython,
# see https://github.com/python/cpython/blob/42205ee51
#
+# Keep in sync with MACOSX_DEPLOYMENT_TARGET, for pypy see
+# lib_pypy/_sysconfigdata.py
+#
DARWIN_VERSION_MIN = '-mmacosx-version-min=10.9'
class Darwin(posix.BasePosix):
diff --git a/rpython/translator/sandbox/test/test_sandlib.py b/rpython/translator/sandbox/test/test_sandlib.py
index 5dc7d65d99..83ff02d9c5 100644
--- a/rpython/translator/sandbox/test/test_sandlib.py
+++ b/rpython/translator/sandbox/test/test_sandlib.py
@@ -114,7 +114,7 @@ def test_socketio():
proc = SocketProc([exe])
output, error = proc.communicate("")
- assert output.startswith('HTTP/1.0 400 Bad request')
+ assert output.startswith('HTTP/1.1 400 Bad Request')
def test_oserror():
def entry_point(argv):