Browse Source

KIKIMR-19900 switch arcadia to python ydb sdk from contrib

Этот PR создан скриптом - для переключения зависимостей на python ydb sdk с версии внутри ydb на код, приезжающий через контриб.

Код в обеих версиях одинаковый, так что поломок/изменения функционала на ожидается.

На всякий случай посмотрите свои проекты и если будут возражения пишите сюда в issues или в тикет KIKIMR-19900.
Если всё ок -  шипните, для определённости.

При отсутствии блокеров PR будет перегенерирован и влит с force-мёрджем в четверг, 14 декабря.
rekby 1 year ago
parent
commit
b2b2bb5997

+ 255 - 0
contrib/python/aiohttp/.dist-info/METADATA

@@ -0,0 +1,255 @@
+Metadata-Version: 2.1
+Name: aiohttp
+Version: 3.8.1
+Summary: Async http client/server framework (asyncio)
+Home-page: https://github.com/aio-libs/aiohttp
+Maintainer: aiohttp team <team@aiohttp.org>
+Maintainer-email: team@aiohttp.org
+License: Apache 2
+Project-URL: Chat: Gitter, https://gitter.im/aio-libs/Lobby
+Project-URL: CI: GitHub Actions, https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
+Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/aiohttp
+Project-URL: Docs: Changelog, https://docs.aiohttp.org/en/stable/changes.html
+Project-URL: Docs: RTD, https://docs.aiohttp.org
+Project-URL: GitHub: issues, https://github.com/aio-libs/aiohttp/issues
+Project-URL: GitHub: repo, https://github.com/aio-libs/aiohttp
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Framework :: AsyncIO
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: POSIX
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Topic :: Internet :: WWW/HTTP
+Requires-Python: >=3.6
+Description-Content-Type: text/x-rst
+License-File: LICENSE.txt
+Requires-Dist: attrs (>=17.3.0)
+Requires-Dist: charset-normalizer (<3.0,>=2.0)
+Requires-Dist: multidict (<7.0,>=4.5)
+Requires-Dist: async-timeout (<5.0,>=4.0.0a3)
+Requires-Dist: yarl (<2.0,>=1.0)
+Requires-Dist: frozenlist (>=1.1.1)
+Requires-Dist: aiosignal (>=1.1.2)
+Requires-Dist: idna-ssl (>=1.0) ; python_version < "3.7"
+Requires-Dist: asynctest (==0.13.0) ; python_version < "3.8"
+Requires-Dist: typing-extensions (>=3.7.4) ; python_version < "3.8"
+Provides-Extra: speedups
+Requires-Dist: aiodns ; extra == 'speedups'
+Requires-Dist: Brotli ; extra == 'speedups'
+Requires-Dist: cchardet ; extra == 'speedups'
+
+==================================
+Async http client/server framework
+==================================
+
+.. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/aiohttp-plain.svg
+   :height: 64px
+   :width: 64px
+   :alt: aiohttp logo
+
+|
+
+.. image:: https://github.com/aio-libs/aiohttp/workflows/CI/badge.svg
+   :target: https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
+   :alt: GitHub Actions status for master branch
+
+.. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
+   :target: https://codecov.io/gh/aio-libs/aiohttp
+   :alt: codecov.io status for master branch
+
+.. image:: https://badge.fury.io/py/aiohttp.svg
+   :target: https://pypi.org/project/aiohttp
+   :alt: Latest PyPI package version
+
+.. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
+   :target: https://docs.aiohttp.org/
+   :alt: Latest Read The Docs
+
+.. image:: https://img.shields.io/discourse/status?server=https%3A%2F%2Faio-libs.discourse.group
+   :target: https://aio-libs.discourse.group
+   :alt: Discourse status
+
+.. image:: https://badges.gitter.im/Join%20Chat.svg
+   :target: https://gitter.im/aio-libs/Lobby
+   :alt: Chat on Gitter
+
+
+Key Features
+============
+
+- Supports both client and server side of HTTP protocol.
+- Supports both client and server Web-Sockets out-of-the-box and avoids
+  Callback Hell.
+- Provides Web-server with middlewares and plugable routing.
+
+
+Getting started
+===============
+
+Client
+------
+
+To get something from the web:
+
+.. code-block:: python
+
+  import aiohttp
+  import asyncio
+
+  async def main():
+
+      async with aiohttp.ClientSession() as session:
+          async with session.get('http://python.org') as response:
+
+              print("Status:", response.status)
+              print("Content-type:", response.headers['content-type'])
+
+              html = await response.text()
+              print("Body:", html[:15], "...")
+
+  loop = asyncio.get_event_loop()
+  loop.run_until_complete(main())
+
+This prints:
+
+.. code-block::
+
+    Status: 200
+    Content-type: text/html; charset=utf-8
+    Body: <!doctype html> ...
+
+Coming from `requests <https://requests.readthedocs.io/>`_ ? Read `why we need so many lines <https://aiohttp.readthedocs.io/en/latest/http_request_lifecycle.html>`_.
+
+Server
+------
+
+An example using a simple server:
+
+.. code-block:: python
+
+    # examples/server_simple.py
+    from aiohttp import web
+
+    async def handle(request):
+        name = request.match_info.get('name', "Anonymous")
+        text = "Hello, " + name
+        return web.Response(text=text)
+
+    async def wshandle(request):
+        ws = web.WebSocketResponse()
+        await ws.prepare(request)
+
+        async for msg in ws:
+            if msg.type == web.WSMsgType.text:
+                await ws.send_str("Hello, {}".format(msg.data))
+            elif msg.type == web.WSMsgType.binary:
+                await ws.send_bytes(msg.data)
+            elif msg.type == web.WSMsgType.close:
+                break
+
+        return ws
+
+
+    app = web.Application()
+    app.add_routes([web.get('/', handle),
+                    web.get('/echo', wshandle),
+                    web.get('/{name}', handle)])
+
+    if __name__ == '__main__':
+        web.run_app(app)
+
+
+Documentation
+=============
+
+https://aiohttp.readthedocs.io/
+
+
+Demos
+=====
+
+https://github.com/aio-libs/aiohttp-demos
+
+
+External links
+==============
+
+* `Third party libraries
+  <http://aiohttp.readthedocs.io/en/latest/third_party.html>`_
+* `Built with aiohttp
+  <http://aiohttp.readthedocs.io/en/latest/built_with.html>`_
+* `Powered by aiohttp
+  <http://aiohttp.readthedocs.io/en/latest/powered_by.html>`_
+
+Feel free to make a Pull Request for adding your link to these pages!
+
+
+Communication channels
+======================
+
+*aio-libs discourse group*: https://aio-libs.discourse.group
+
+*gitter chat* https://gitter.im/aio-libs/Lobby
+
+We support `Stack Overflow
+<https://stackoverflow.com/questions/tagged/aiohttp>`_.
+Please add *aiohttp* tag to your question there.
+
+Requirements
+============
+
+- Python >= 3.6
+- async-timeout_
+- attrs_
+- charset-normalizer_
+- multidict_
+- yarl_
+
+Optionally you may install the cChardet_ and aiodns_ libraries (highly
+recommended for sake of speed).
+
+.. _charset-normalizer: https://pypi.org/project/charset-normalizer
+.. _aiodns: https://pypi.python.org/pypi/aiodns
+.. _attrs: https://github.com/python-attrs/attrs
+.. _multidict: https://pypi.python.org/pypi/multidict
+.. _yarl: https://pypi.python.org/pypi/yarl
+.. _async-timeout: https://pypi.python.org/pypi/async_timeout
+.. _cChardet: https://pypi.python.org/pypi/cchardet
+
+License
+=======
+
+``aiohttp`` is offered under the Apache 2 license.
+
+
+Keepsafe
+========
+
+The aiohttp community would like to thank Keepsafe
+(https://www.getkeepsafe.com) for its support in the early days of
+the project.
+
+
+Source code
+===========
+
+The latest developer version is available in a GitHub repository:
+https://github.com/aio-libs/aiohttp
+
+Benchmarks
+==========
+
+If you are interested in efficiency, the AsyncIO community maintains a
+list of benchmarks on the official wiki:
+https://github.com/python/asyncio/wiki/Benchmarks
+
+

+ 1 - 0
contrib/python/aiohttp/.dist-info/top_level.txt

@@ -0,0 +1 @@
+aiohttp

+ 13 - 0
contrib/python/aiohttp/LICENSE.txt

@@ -0,0 +1,13 @@
+   Copyright 2013-2020 aio-libs collaboration.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 204 - 0
contrib/python/aiohttp/README.rst

@@ -0,0 +1,204 @@
+==================================
+Async http client/server framework
+==================================
+
+.. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/aiohttp-plain.svg
+   :height: 64px
+   :width: 64px
+   :alt: aiohttp logo
+
+|
+
+.. image:: https://github.com/aio-libs/aiohttp/workflows/CI/badge.svg
+   :target: https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
+   :alt: GitHub Actions status for master branch
+
+.. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
+   :target: https://codecov.io/gh/aio-libs/aiohttp
+   :alt: codecov.io status for master branch
+
+.. image:: https://badge.fury.io/py/aiohttp.svg
+   :target: https://pypi.org/project/aiohttp
+   :alt: Latest PyPI package version
+
+.. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
+   :target: https://docs.aiohttp.org/
+   :alt: Latest Read The Docs
+
+.. image:: https://img.shields.io/discourse/status?server=https%3A%2F%2Faio-libs.discourse.group
+   :target: https://aio-libs.discourse.group
+   :alt: Discourse status
+
+.. image:: https://badges.gitter.im/Join%20Chat.svg
+   :target: https://gitter.im/aio-libs/Lobby
+   :alt: Chat on Gitter
+
+
+Key Features
+============
+
+- Supports both client and server side of HTTP protocol.
+- Supports both client and server Web-Sockets out-of-the-box and avoids
+  Callback Hell.
+- Provides Web-server with middlewares and plugable routing.
+
+
+Getting started
+===============
+
+Client
+------
+
+To get something from the web:
+
+.. code-block:: python
+
+  import aiohttp
+  import asyncio
+
+  async def main():
+
+      async with aiohttp.ClientSession() as session:
+          async with session.get('http://python.org') as response:
+
+              print("Status:", response.status)
+              print("Content-type:", response.headers['content-type'])
+
+              html = await response.text()
+              print("Body:", html[:15], "...")
+
+  loop = asyncio.get_event_loop()
+  loop.run_until_complete(main())
+
+This prints:
+
+.. code-block::
+
+    Status: 200
+    Content-type: text/html; charset=utf-8
+    Body: <!doctype html> ...
+
+Coming from `requests <https://requests.readthedocs.io/>`_ ? Read `why we need so many lines <https://aiohttp.readthedocs.io/en/latest/http_request_lifecycle.html>`_.
+
+Server
+------
+
+An example using a simple server:
+
+.. code-block:: python
+
+    # examples/server_simple.py
+    from aiohttp import web
+
+    async def handle(request):
+        name = request.match_info.get('name', "Anonymous")
+        text = "Hello, " + name
+        return web.Response(text=text)
+
+    async def wshandle(request):
+        ws = web.WebSocketResponse()
+        await ws.prepare(request)
+
+        async for msg in ws:
+            if msg.type == web.WSMsgType.text:
+                await ws.send_str("Hello, {}".format(msg.data))
+            elif msg.type == web.WSMsgType.binary:
+                await ws.send_bytes(msg.data)
+            elif msg.type == web.WSMsgType.close:
+                break
+
+        return ws
+
+
+    app = web.Application()
+    app.add_routes([web.get('/', handle),
+                    web.get('/echo', wshandle),
+                    web.get('/{name}', handle)])
+
+    if __name__ == '__main__':
+        web.run_app(app)
+
+
+Documentation
+=============
+
+https://aiohttp.readthedocs.io/
+
+
+Demos
+=====
+
+https://github.com/aio-libs/aiohttp-demos
+
+
+External links
+==============
+
+* `Third party libraries
+  <http://aiohttp.readthedocs.io/en/latest/third_party.html>`_
+* `Built with aiohttp
+  <http://aiohttp.readthedocs.io/en/latest/built_with.html>`_
+* `Powered by aiohttp
+  <http://aiohttp.readthedocs.io/en/latest/powered_by.html>`_
+
+Feel free to make a Pull Request for adding your link to these pages!
+
+
+Communication channels
+======================
+
+*aio-libs discourse group*: https://aio-libs.discourse.group
+
+*gitter chat* https://gitter.im/aio-libs/Lobby
+
+We support `Stack Overflow
+<https://stackoverflow.com/questions/tagged/aiohttp>`_.
+Please add *aiohttp* tag to your question there.
+
+Requirements
+============
+
+- Python >= 3.6
+- async-timeout_
+- attrs_
+- charset-normalizer_
+- multidict_
+- yarl_
+
+Optionally you may install the cChardet_ and aiodns_ libraries (highly
+recommended for sake of speed).
+
+.. _charset-normalizer: https://pypi.org/project/charset-normalizer
+.. _aiodns: https://pypi.python.org/pypi/aiodns
+.. _attrs: https://github.com/python-attrs/attrs
+.. _multidict: https://pypi.python.org/pypi/multidict
+.. _yarl: https://pypi.python.org/pypi/yarl
+.. _async-timeout: https://pypi.python.org/pypi/async_timeout
+.. _cChardet: https://pypi.python.org/pypi/cchardet
+
+License
+=======
+
+``aiohttp`` is offered under the Apache 2 license.
+
+
+Keepsafe
+========
+
+The aiohttp community would like to thank Keepsafe
+(https://www.getkeepsafe.com) for its support in the early days of
+the project.
+
+
+Source code
+===========
+
+The latest developer version is available in a GitHub repository:
+https://github.com/aio-libs/aiohttp
+
+Benchmarks
+==========
+
+If you are interested in efficiency, the AsyncIO community maintains a
+list of benchmarks on the official wiki:
+https://github.com/python/asyncio/wiki/Benchmarks

+ 216 - 0
contrib/python/aiohttp/aiohttp/__init__.py

@@ -0,0 +1,216 @@
+__version__ = "3.8.1"
+
+from typing import Tuple
+
+from . import hdrs as hdrs
+from .client import (
+    BaseConnector as BaseConnector,
+    ClientConnectionError as ClientConnectionError,
+    ClientConnectorCertificateError as ClientConnectorCertificateError,
+    ClientConnectorError as ClientConnectorError,
+    ClientConnectorSSLError as ClientConnectorSSLError,
+    ClientError as ClientError,
+    ClientHttpProxyError as ClientHttpProxyError,
+    ClientOSError as ClientOSError,
+    ClientPayloadError as ClientPayloadError,
+    ClientProxyConnectionError as ClientProxyConnectionError,
+    ClientRequest as ClientRequest,
+    ClientResponse as ClientResponse,
+    ClientResponseError as ClientResponseError,
+    ClientSession as ClientSession,
+    ClientSSLError as ClientSSLError,
+    ClientTimeout as ClientTimeout,
+    ClientWebSocketResponse as ClientWebSocketResponse,
+    ContentTypeError as ContentTypeError,
+    Fingerprint as Fingerprint,
+    InvalidURL as InvalidURL,
+    NamedPipeConnector as NamedPipeConnector,
+    RequestInfo as RequestInfo,
+    ServerConnectionError as ServerConnectionError,
+    ServerDisconnectedError as ServerDisconnectedError,
+    ServerFingerprintMismatch as ServerFingerprintMismatch,
+    ServerTimeoutError as ServerTimeoutError,
+    TCPConnector as TCPConnector,
+    TooManyRedirects as TooManyRedirects,
+    UnixConnector as UnixConnector,
+    WSServerHandshakeError as WSServerHandshakeError,
+    request as request,
+)
+from .cookiejar import CookieJar as CookieJar, DummyCookieJar as DummyCookieJar
+from .formdata import FormData as FormData
+from .helpers import BasicAuth, ChainMapProxy, ETag
+from .http import (
+    HttpVersion as HttpVersion,
+    HttpVersion10 as HttpVersion10,
+    HttpVersion11 as HttpVersion11,
+    WebSocketError as WebSocketError,
+    WSCloseCode as WSCloseCode,
+    WSMessage as WSMessage,
+    WSMsgType as WSMsgType,
+)
+from .multipart import (
+    BadContentDispositionHeader as BadContentDispositionHeader,
+    BadContentDispositionParam as BadContentDispositionParam,
+    BodyPartReader as BodyPartReader,
+    MultipartReader as MultipartReader,
+    MultipartWriter as MultipartWriter,
+    content_disposition_filename as content_disposition_filename,
+    parse_content_disposition as parse_content_disposition,
+)
+from .payload import (
+    PAYLOAD_REGISTRY as PAYLOAD_REGISTRY,
+    AsyncIterablePayload as AsyncIterablePayload,
+    BufferedReaderPayload as BufferedReaderPayload,
+    BytesIOPayload as BytesIOPayload,
+    BytesPayload as BytesPayload,
+    IOBasePayload as IOBasePayload,
+    JsonPayload as JsonPayload,
+    Payload as Payload,
+    StringIOPayload as StringIOPayload,
+    StringPayload as StringPayload,
+    TextIOPayload as TextIOPayload,
+    get_payload as get_payload,
+    payload_type as payload_type,
+)
+from .payload_streamer import streamer as streamer
+from .resolver import (
+    AsyncResolver as AsyncResolver,
+    DefaultResolver as DefaultResolver,
+    ThreadedResolver as ThreadedResolver,
+)
+from .streams import (
+    EMPTY_PAYLOAD as EMPTY_PAYLOAD,
+    DataQueue as DataQueue,
+    EofStream as EofStream,
+    FlowControlDataQueue as FlowControlDataQueue,
+    StreamReader as StreamReader,
+)
+from .tracing import (
+    TraceConfig as TraceConfig,
+    TraceConnectionCreateEndParams as TraceConnectionCreateEndParams,
+    TraceConnectionCreateStartParams as TraceConnectionCreateStartParams,
+    TraceConnectionQueuedEndParams as TraceConnectionQueuedEndParams,
+    TraceConnectionQueuedStartParams as TraceConnectionQueuedStartParams,
+    TraceConnectionReuseconnParams as TraceConnectionReuseconnParams,
+    TraceDnsCacheHitParams as TraceDnsCacheHitParams,
+    TraceDnsCacheMissParams as TraceDnsCacheMissParams,
+    TraceDnsResolveHostEndParams as TraceDnsResolveHostEndParams,
+    TraceDnsResolveHostStartParams as TraceDnsResolveHostStartParams,
+    TraceRequestChunkSentParams as TraceRequestChunkSentParams,
+    TraceRequestEndParams as TraceRequestEndParams,
+    TraceRequestExceptionParams as TraceRequestExceptionParams,
+    TraceRequestRedirectParams as TraceRequestRedirectParams,
+    TraceRequestStartParams as TraceRequestStartParams,
+    TraceResponseChunkReceivedParams as TraceResponseChunkReceivedParams,
+)
+
+__all__: Tuple[str, ...] = (
+    "hdrs",
+    # client
+    "BaseConnector",
+    "ClientConnectionError",
+    "ClientConnectorCertificateError",
+    "ClientConnectorError",
+    "ClientConnectorSSLError",
+    "ClientError",
+    "ClientHttpProxyError",
+    "ClientOSError",
+    "ClientPayloadError",
+    "ClientProxyConnectionError",
+    "ClientResponse",
+    "ClientRequest",
+    "ClientResponseError",
+    "ClientSSLError",
+    "ClientSession",
+    "ClientTimeout",
+    "ClientWebSocketResponse",
+    "ContentTypeError",
+    "Fingerprint",
+    "InvalidURL",
+    "RequestInfo",
+    "ServerConnectionError",
+    "ServerDisconnectedError",
+    "ServerFingerprintMismatch",
+    "ServerTimeoutError",
+    "TCPConnector",
+    "TooManyRedirects",
+    "UnixConnector",
+    "NamedPipeConnector",
+    "WSServerHandshakeError",
+    "request",
+    # cookiejar
+    "CookieJar",
+    "DummyCookieJar",
+    # formdata
+    "FormData",
+    # helpers
+    "BasicAuth",
+    "ChainMapProxy",
+    "ETag",
+    # http
+    "HttpVersion",
+    "HttpVersion10",
+    "HttpVersion11",
+    "WSMsgType",
+    "WSCloseCode",
+    "WSMessage",
+    "WebSocketError",
+    # multipart
+    "BadContentDispositionHeader",
+    "BadContentDispositionParam",
+    "BodyPartReader",
+    "MultipartReader",
+    "MultipartWriter",
+    "content_disposition_filename",
+    "parse_content_disposition",
+    # payload
+    "AsyncIterablePayload",
+    "BufferedReaderPayload",
+    "BytesIOPayload",
+    "BytesPayload",
+    "IOBasePayload",
+    "JsonPayload",
+    "PAYLOAD_REGISTRY",
+    "Payload",
+    "StringIOPayload",
+    "StringPayload",
+    "TextIOPayload",
+    "get_payload",
+    "payload_type",
+    # payload_streamer
+    "streamer",
+    # resolver
+    "AsyncResolver",
+    "DefaultResolver",
+    "ThreadedResolver",
+    # streams
+    "DataQueue",
+    "EMPTY_PAYLOAD",
+    "EofStream",
+    "FlowControlDataQueue",
+    "StreamReader",
+    # tracing
+    "TraceConfig",
+    "TraceConnectionCreateEndParams",
+    "TraceConnectionCreateStartParams",
+    "TraceConnectionQueuedEndParams",
+    "TraceConnectionQueuedStartParams",
+    "TraceConnectionReuseconnParams",
+    "TraceDnsCacheHitParams",
+    "TraceDnsCacheMissParams",
+    "TraceDnsResolveHostEndParams",
+    "TraceDnsResolveHostStartParams",
+    "TraceRequestChunkSentParams",
+    "TraceRequestEndParams",
+    "TraceRequestExceptionParams",
+    "TraceRequestRedirectParams",
+    "TraceRequestStartParams",
+    "TraceResponseChunkReceivedParams",
+)
+
+try:
+    from .worker import GunicornUVLoopWebWorker, GunicornWebWorker
+
+    __all__ += ("GunicornWebWorker", "GunicornUVLoopWebWorker")
+except ImportError:  # pragma: no cover
+    pass

+ 190 - 0
contrib/python/aiohttp/aiohttp/_cparser.pxd

@@ -0,0 +1,190 @@
+from libc.stdint cimport (
+    int8_t,
+    int16_t,
+    int32_t,
+    int64_t,
+    uint8_t,
+    uint16_t,
+    uint32_t,
+    uint64_t,
+)
+
+
+cdef extern from "llhttp.h":
+
+    struct llhttp__internal_s:
+        int32_t _index
+        void* _span_pos0
+        void* _span_cb0
+        int32_t error
+        const char* reason
+        const char* error_pos
+        void* data
+        void* _current
+        uint64_t content_length
+        uint8_t type
+        uint8_t method
+        uint8_t http_major
+        uint8_t http_minor
+        uint8_t header_state
+        uint8_t lenient_flags
+        uint8_t upgrade
+        uint8_t finish
+        uint16_t flags
+        uint16_t status_code
+        void* settings
+
+    ctypedef llhttp__internal_s llhttp__internal_t
+    ctypedef llhttp__internal_t llhttp_t
+
+    ctypedef int (*llhttp_data_cb)(llhttp_t*, const char *at, size_t length) except -1
+    ctypedef int (*llhttp_cb)(llhttp_t*) except -1
+
+    struct llhttp_settings_s:
+        llhttp_cb      on_message_begin
+        llhttp_data_cb on_url
+        llhttp_data_cb on_status
+        llhttp_data_cb on_header_field
+        llhttp_data_cb on_header_value
+        llhttp_cb      on_headers_complete
+        llhttp_data_cb on_body
+        llhttp_cb      on_message_complete
+        llhttp_cb      on_chunk_header
+        llhttp_cb      on_chunk_complete
+
+        llhttp_cb      on_url_complete
+        llhttp_cb      on_status_complete
+        llhttp_cb      on_header_field_complete
+        llhttp_cb      on_header_value_complete
+
+    ctypedef llhttp_settings_s llhttp_settings_t
+
+    enum llhttp_errno:
+        HPE_OK,
+        HPE_INTERNAL,
+        HPE_STRICT,
+        HPE_LF_EXPECTED,
+        HPE_UNEXPECTED_CONTENT_LENGTH,
+        HPE_CLOSED_CONNECTION,
+        HPE_INVALID_METHOD,
+        HPE_INVALID_URL,
+        HPE_INVALID_CONSTANT,
+        HPE_INVALID_VERSION,
+        HPE_INVALID_HEADER_TOKEN,
+        HPE_INVALID_CONTENT_LENGTH,
+        HPE_INVALID_CHUNK_SIZE,
+        HPE_INVALID_STATUS,
+        HPE_INVALID_EOF_STATE,
+        HPE_INVALID_TRANSFER_ENCODING,
+        HPE_CB_MESSAGE_BEGIN,
+        HPE_CB_HEADERS_COMPLETE,
+        HPE_CB_MESSAGE_COMPLETE,
+        HPE_CB_CHUNK_HEADER,
+        HPE_CB_CHUNK_COMPLETE,
+        HPE_PAUSED,
+        HPE_PAUSED_UPGRADE,
+        HPE_USER
+
+    ctypedef llhttp_errno llhttp_errno_t
+
+    enum llhttp_flags:
+        F_CONNECTION_KEEP_ALIVE,
+        F_CONNECTION_CLOSE,
+        F_CONNECTION_UPGRADE,
+        F_CHUNKED,
+        F_UPGRADE,
+        F_CONTENT_LENGTH,
+        F_SKIPBODY,
+        F_TRAILING,
+        F_TRANSFER_ENCODING
+
+    enum llhttp_lenient_flags:
+        LENIENT_HEADERS,
+        LENIENT_CHUNKED_LENGTH
+
+    enum llhttp_type:
+        HTTP_REQUEST,
+        HTTP_RESPONSE,
+        HTTP_BOTH
+
+    enum llhttp_finish_t:
+        HTTP_FINISH_SAFE,
+        HTTP_FINISH_SAFE_WITH_CB,
+        HTTP_FINISH_UNSAFE
+
+    enum llhttp_method:
+        HTTP_DELETE,
+        HTTP_GET,
+        HTTP_HEAD,
+        HTTP_POST,
+        HTTP_PUT,
+        HTTP_CONNECT,
+        HTTP_OPTIONS,
+        HTTP_TRACE,
+        HTTP_COPY,
+        HTTP_LOCK,
+        HTTP_MKCOL,
+        HTTP_MOVE,
+        HTTP_PROPFIND,
+        HTTP_PROPPATCH,
+        HTTP_SEARCH,
+        HTTP_UNLOCK,
+        HTTP_BIND,
+        HTTP_REBIND,
+        HTTP_UNBIND,
+        HTTP_ACL,
+        HTTP_REPORT,
+        HTTP_MKACTIVITY,
+        HTTP_CHECKOUT,
+        HTTP_MERGE,
+        HTTP_MSEARCH,
+        HTTP_NOTIFY,
+        HTTP_SUBSCRIBE,
+        HTTP_UNSUBSCRIBE,
+        HTTP_PATCH,
+        HTTP_PURGE,
+        HTTP_MKCALENDAR,
+        HTTP_LINK,
+        HTTP_UNLINK,
+        HTTP_SOURCE,
+        HTTP_PRI,
+        HTTP_DESCRIBE,
+        HTTP_ANNOUNCE,
+        HTTP_SETUP,
+        HTTP_PLAY,
+        HTTP_PAUSE,
+        HTTP_TEARDOWN,
+        HTTP_GET_PARAMETER,
+        HTTP_SET_PARAMETER,
+        HTTP_REDIRECT,
+        HTTP_RECORD,
+        HTTP_FLUSH
+
+    ctypedef llhttp_method llhttp_method_t;
+
+    void llhttp_settings_init(llhttp_settings_t* settings)
+    void llhttp_init(llhttp_t* parser, llhttp_type type,
+                 const llhttp_settings_t* settings)
+
+    llhttp_errno_t llhttp_execute(llhttp_t* parser, const char* data, size_t len)
+    llhttp_errno_t llhttp_finish(llhttp_t* parser)
+
+    int llhttp_message_needs_eof(const llhttp_t* parser)
+
+    int llhttp_should_keep_alive(const llhttp_t* parser)
+
+    void llhttp_pause(llhttp_t* parser)
+    void llhttp_resume(llhttp_t* parser)
+
+    void llhttp_resume_after_upgrade(llhttp_t* parser)
+
+    llhttp_errno_t llhttp_get_errno(const llhttp_t* parser)
+    const char* llhttp_get_error_reason(const llhttp_t* parser)
+    void llhttp_set_error_reason(llhttp_t* parser, const char* reason)
+    const char* llhttp_get_error_pos(const llhttp_t* parser)
+    const char* llhttp_errno_name(llhttp_errno_t err)
+
+    const char* llhttp_method_name(llhttp_method_t method)
+
+    void llhttp_set_lenient_headers(llhttp_t* parser, int enabled)
+    void llhttp_set_lenient_chunked_length(llhttp_t* parser, int enabled)

+ 9870 - 0
contrib/python/aiohttp/aiohttp/_find_header.c

@@ -0,0 +1,9870 @@
+/*  The file is autogenerated from aiohttp/hdrs.py
+Run ./tools/gen.py to update it after the origin changing. */
+
+#include "_find_header.h"
+
+#define NEXT_CHAR() \
+{ \
+    count++; \
+    if (count == size) { \
+        /* end of search */ \
+        return -1; \
+    } \
+    pchar++; \
+    ch = *pchar; \
+    last = (count == size -1); \
+} while(0);
+
+int
+find_header(const char *str, int size)
+{
+    char *pchar = str;
+    int last;
+    char ch;
+    int count = -1;
+    pchar--;
+
+
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto A;
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto C;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto C;
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto D;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto D;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto E;
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto F;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto F;
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto H;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto H;
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto I;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto I;
+        case 'K':
+            if (last) {
+                return -1;
+            }
+            goto K;
+        case 'k':
+            if (last) {
+                return -1;
+            }
+            goto K;
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto L;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto L;
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto M;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto O;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto O;
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto P;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto P;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto R;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto R;
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto S;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto S;
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto T;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto T;
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto U;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto U;
+        case 'V':
+            if (last) {
+                return -1;
+            }
+            goto V;
+        case 'v':
+            if (last) {
+                return -1;
+            }
+            goto V;
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto W;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto W;
+        case 'X':
+            if (last) {
+                return -1;
+            }
+            goto X;
+        case 'x':
+            if (last) {
+                return -1;
+            }
+            goto X;
+        default:
+            return -1;
+    }
+
+A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto AC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto AC;
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto AG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto AG;
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto AL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto AL;
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto AU;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto AU;
+        default:
+            return -1;
+    }
+
+AC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto ACC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto ACC;
+        default:
+            return -1;
+    }
+
+ACC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCE;
+        default:
+            return -1;
+    }
+
+ACCE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto ACCEP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto ACCEP;
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto ACCES;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto ACCES;
+        default:
+            return -1;
+    }
+
+ACCEP:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 0;
+            }
+            goto ACCEPT;
+        case 't':
+            if (last) {
+                return 0;
+            }
+            goto ACCEPT;
+        default:
+            return -1;
+    }
+
+ACCEPT:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_;
+        default:
+            return -1;
+    }
+
+ACCEPT_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_C;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_C;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_E;
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_L;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_L;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_R;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_R;
+        default:
+            return -1;
+    }
+
+ACCEPT_C:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CH;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CH;
+        default:
+            return -1;
+    }
+
+ACCEPT_CH:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHA;
+        default:
+            return -1;
+    }
+
+ACCEPT_CHA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHAR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHAR;
+        default:
+            return -1;
+    }
+
+ACCEPT_CHAR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHARS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHARS;
+        default:
+            return -1;
+    }
+
+ACCEPT_CHARS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHARSE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_CHARSE;
+        default:
+            return -1;
+    }
+
+ACCEPT_CHARSE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 1;
+            }
+            goto ACCEPT_CHARSET;
+        case 't':
+            if (last) {
+                return 1;
+            }
+            goto ACCEPT_CHARSET;
+        default:
+            return -1;
+    }
+
+ACCEPT_E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_EN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_EN;
+        default:
+            return -1;
+    }
+
+ACCEPT_EN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENC;
+        default:
+            return -1;
+    }
+
+ACCEPT_ENC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCO;
+        default:
+            return -1;
+    }
+
+ACCEPT_ENCO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCOD;
+        default:
+            return -1;
+    }
+
+ACCEPT_ENCOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCODI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCODI;
+        default:
+            return -1;
+    }
+
+ACCEPT_ENCODI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCODIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_ENCODIN;
+        default:
+            return -1;
+    }
+
+ACCEPT_ENCODIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return 2;
+            }
+            goto ACCEPT_ENCODING;
+        case 'g':
+            if (last) {
+                return 2;
+            }
+            goto ACCEPT_ENCODING;
+        default:
+            return -1;
+    }
+
+ACCEPT_L:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LA;
+        default:
+            return -1;
+    }
+
+ACCEPT_LA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LAN;
+        default:
+            return -1;
+    }
+
+ACCEPT_LAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANG;
+        default:
+            return -1;
+    }
+
+ACCEPT_LANG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANGU;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANGU;
+        default:
+            return -1;
+    }
+
+ACCEPT_LANGU:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANGUA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANGUA;
+        default:
+            return -1;
+    }
+
+ACCEPT_LANGUA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANGUAG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_LANGUAG;
+        default:
+            return -1;
+    }
+
+ACCEPT_LANGUAG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 3;
+            }
+            goto ACCEPT_LANGUAGE;
+        case 'e':
+            if (last) {
+                return 3;
+            }
+            goto ACCEPT_LANGUAGE;
+        default:
+            return -1;
+    }
+
+ACCEPT_R:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RA;
+        default:
+            return -1;
+    }
+
+ACCEPT_RA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RAN;
+        default:
+            return -1;
+    }
+
+ACCEPT_RAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RANG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RANG;
+        default:
+            return -1;
+    }
+
+ACCEPT_RANG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RANGE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCEPT_RANGE;
+        default:
+            return -1;
+    }
+
+ACCEPT_RANGE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 4;
+            }
+            goto ACCEPT_RANGES;
+        case 's':
+            if (last) {
+                return 4;
+            }
+            goto ACCEPT_RANGES;
+        default:
+            return -1;
+    }
+
+ACCES:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS;
+        default:
+            return -1;
+    }
+
+ACCESS:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_;
+        default:
+            return -1;
+    }
+
+ACCESS_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_C;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_C;
+        default:
+            return -1;
+    }
+
+ACCESS_C:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CO;
+        default:
+            return -1;
+    }
+
+ACCESS_CO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CON;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CON;
+        default:
+            return -1;
+    }
+
+ACCESS_CON:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONT;
+        default:
+            return -1;
+    }
+
+ACCESS_CONT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTR;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTRO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTRO;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTRO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_A;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_E;
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_M;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_R;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_R;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_AL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_AL;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_AL:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALL;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALL:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLO;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_C;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_C;
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_H;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_H;
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_M;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_O;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_O;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_C:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CR;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CRE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CRE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CRE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CRED;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CRED;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CRED:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CREDE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDEN;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CREDEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENT;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CREDENT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTI;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CREDENTI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTIA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTIA;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CREDENTIA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTIAL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTIAL;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_CREDENTIAL:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 5;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTIALS;
+        case 's':
+            if (last) {
+                return 5;
+            }
+            goto ACCESS_CONTROL_ALLOW_CREDENTIALS;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_H:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_HE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEA;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_HEA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEAD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEAD;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_HEAD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEADE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEADE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_HEADE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEADER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEADER;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_HEADER:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 6;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEADERS;
+        case 's':
+            if (last) {
+                return 6;
+            }
+            goto ACCESS_CONTROL_ALLOW_HEADERS;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ME;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ME;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_ME:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_MET;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_MET;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_MET:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_METH;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_METH;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_METH:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_METHO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_METHO;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_METHO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_METHOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_METHOD;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_METHOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 7;
+            }
+            goto ACCESS_CONTROL_ALLOW_METHODS;
+        case 's':
+            if (last) {
+                return 7;
+            }
+            goto ACCESS_CONTROL_ALLOW_METHODS;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_O:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_OR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_OR;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_OR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORI;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_ORI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORIG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORIG;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_ORIG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORIGI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORIGI;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_ALLOW_ORIGI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 8;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORIGIN;
+        case 'n':
+            if (last) {
+                return 8;
+            }
+            goto ACCESS_CONTROL_ALLOW_ORIGIN;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'X':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EX;
+        case 'x':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EX;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EX:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXP;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXP:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPO;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOS;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_H;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_H;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE_H:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE_HE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEA;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE_HEA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEAD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEAD;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE_HEAD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEADE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEADE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE_HEADE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEADER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEADER;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_EXPOSE_HEADER:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 9;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEADERS;
+        case 's':
+            if (last) {
+                return 9;
+            }
+            goto ACCESS_CONTROL_EXPOSE_HEADERS;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MA;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_MA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'X':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MAX;
+        case 'x':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MAX;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_MAX:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MAX_;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_MAX_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MAX_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MAX_A;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_MAX_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MAX_AG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_MAX_AG;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_MAX_AG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 10;
+            }
+            goto ACCESS_CONTROL_MAX_AGE;
+        case 'e':
+            if (last) {
+                return 10;
+            }
+            goto ACCESS_CONTROL_MAX_AGE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_R:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_RE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_RE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_RE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'Q':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQ;
+        case 'q':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQ;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQ:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQU;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQU;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQU:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUES;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUES;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUES:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_H;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_H;
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_M;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_H:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_HE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEA;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_HEA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEAD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEAD;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_HEAD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEADE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEADE;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_HEADE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEADER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEADER;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_HEADER:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 11;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEADERS;
+        case 's':
+            if (last) {
+                return 11;
+            }
+            goto ACCESS_CONTROL_REQUEST_HEADERS;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_ME;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_ME;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_ME:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_MET;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_MET;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_MET:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_METH;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_METH;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_METH:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_METHO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ACCESS_CONTROL_REQUEST_METHO;
+        default:
+            return -1;
+    }
+
+ACCESS_CONTROL_REQUEST_METHO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return 12;
+            }
+            goto ACCESS_CONTROL_REQUEST_METHOD;
+        case 'd':
+            if (last) {
+                return 12;
+            }
+            goto ACCESS_CONTROL_REQUEST_METHOD;
+        default:
+            return -1;
+    }
+
+AG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 13;
+            }
+            goto AGE;
+        case 'e':
+            if (last) {
+                return 13;
+            }
+            goto AGE;
+        default:
+            return -1;
+    }
+
+AL:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto ALL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto ALL;
+        default:
+            return -1;
+    }
+
+ALL:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto ALLO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto ALLO;
+        default:
+            return -1;
+    }
+
+ALLO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return 14;
+            }
+            goto ALLOW;
+        case 'w':
+            if (last) {
+                return 14;
+            }
+            goto ALLOW;
+        default:
+            return -1;
+    }
+
+AU:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto AUT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto AUT;
+        default:
+            return -1;
+    }
+
+AUT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto AUTH;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto AUTH;
+        default:
+            return -1;
+    }
+
+AUTH:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto AUTHO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto AUTHO;
+        default:
+            return -1;
+    }
+
+AUTHO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto AUTHOR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto AUTHOR;
+        default:
+            return -1;
+    }
+
+AUTHOR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORI;
+        default:
+            return -1;
+    }
+
+AUTHORI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'Z':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZ;
+        case 'z':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZ;
+        default:
+            return -1;
+    }
+
+AUTHORIZ:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZA;
+        default:
+            return -1;
+    }
+
+AUTHORIZA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZAT;
+        default:
+            return -1;
+    }
+
+AUTHORIZAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZATI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZATI;
+        default:
+            return -1;
+    }
+
+AUTHORIZATI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZATIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto AUTHORIZATIO;
+        default:
+            return -1;
+    }
+
+AUTHORIZATIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 15;
+            }
+            goto AUTHORIZATION;
+        case 'n':
+            if (last) {
+                return 15;
+            }
+            goto AUTHORIZATION;
+        default:
+            return -1;
+    }
+
+C:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto CA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto CA;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CO;
+        default:
+            return -1;
+    }
+
+CA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto CAC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto CAC;
+        default:
+            return -1;
+    }
+
+CAC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto CACH;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto CACH;
+        default:
+            return -1;
+    }
+
+CACH:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto CACHE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto CACHE;
+        default:
+            return -1;
+    }
+
+CACHE:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_;
+        default:
+            return -1;
+    }
+
+CACHE_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_C;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_C;
+        default:
+            return -1;
+    }
+
+CACHE_C:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CO;
+        default:
+            return -1;
+    }
+
+CACHE_CO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CON;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CON;
+        default:
+            return -1;
+    }
+
+CACHE_CON:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CONT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CONT;
+        default:
+            return -1;
+    }
+
+CACHE_CONT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CONTR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CONTR;
+        default:
+            return -1;
+    }
+
+CACHE_CONTR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CONTRO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CACHE_CONTRO;
+        default:
+            return -1;
+    }
+
+CACHE_CONTRO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return 16;
+            }
+            goto CACHE_CONTROL;
+        case 'l':
+            if (last) {
+                return 16;
+            }
+            goto CACHE_CONTROL;
+        default:
+            return -1;
+    }
+
+CO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CON;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CON;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto COO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto COO;
+        default:
+            return -1;
+    }
+
+CON:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONN;
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CONT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CONT;
+        default:
+            return -1;
+    }
+
+CONN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto CONNE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto CONNE;
+        default:
+            return -1;
+    }
+
+CONNE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto CONNEC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto CONNEC;
+        default:
+            return -1;
+    }
+
+CONNEC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CONNECT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CONNECT;
+        default:
+            return -1;
+    }
+
+CONNECT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto CONNECTI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto CONNECTI;
+        default:
+            return -1;
+    }
+
+CONNECTI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CONNECTIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CONNECTIO;
+        default:
+            return -1;
+    }
+
+CONNECTIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 17;
+            }
+            goto CONNECTION;
+        case 'n':
+            if (last) {
+                return 17;
+            }
+            goto CONNECTION;
+        default:
+            return -1;
+    }
+
+CONT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto CONTE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto CONTE;
+        default:
+            return -1;
+    }
+
+CONTE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTEN;
+        default:
+            return -1;
+    }
+
+CONTEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT;
+        default:
+            return -1;
+    }
+
+CONTENT:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_;
+        default:
+            return -1;
+    }
+
+CONTENT_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_D;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_D;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_E;
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_L;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_L;
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_M;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_R;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_R;
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_T;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_T;
+        default:
+            return -1;
+    }
+
+CONTENT_D:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DI;
+        default:
+            return -1;
+    }
+
+CONTENT_DI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DIS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DIS;
+        default:
+            return -1;
+    }
+
+CONTENT_DIS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISP;
+        default:
+            return -1;
+    }
+
+CONTENT_DISP:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPO;
+        default:
+            return -1;
+    }
+
+CONTENT_DISPO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOS;
+        default:
+            return -1;
+    }
+
+CONTENT_DISPOS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSI;
+        default:
+            return -1;
+    }
+
+CONTENT_DISPOSI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSIT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSIT;
+        default:
+            return -1;
+    }
+
+CONTENT_DISPOSIT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSITI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSITI;
+        default:
+            return -1;
+    }
+
+CONTENT_DISPOSITI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSITIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_DISPOSITIO;
+        default:
+            return -1;
+    }
+
+CONTENT_DISPOSITIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 18;
+            }
+            goto CONTENT_DISPOSITION;
+        case 'n':
+            if (last) {
+                return 18;
+            }
+            goto CONTENT_DISPOSITION;
+        default:
+            return -1;
+    }
+
+CONTENT_E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_EN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_EN;
+        default:
+            return -1;
+    }
+
+CONTENT_EN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENC;
+        default:
+            return -1;
+    }
+
+CONTENT_ENC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCO;
+        default:
+            return -1;
+    }
+
+CONTENT_ENCO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCOD;
+        default:
+            return -1;
+    }
+
+CONTENT_ENCOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCODI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCODI;
+        default:
+            return -1;
+    }
+
+CONTENT_ENCODI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCODIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_ENCODIN;
+        default:
+            return -1;
+    }
+
+CONTENT_ENCODIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return 19;
+            }
+            goto CONTENT_ENCODING;
+        case 'g':
+            if (last) {
+                return 19;
+            }
+            goto CONTENT_ENCODING;
+        default:
+            return -1;
+    }
+
+CONTENT_L:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LA;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LE;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LO;
+        default:
+            return -1;
+    }
+
+CONTENT_LA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LAN;
+        default:
+            return -1;
+    }
+
+CONTENT_LAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANG;
+        default:
+            return -1;
+    }
+
+CONTENT_LANG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANGU;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANGU;
+        default:
+            return -1;
+    }
+
+CONTENT_LANGU:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANGUA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANGUA;
+        default:
+            return -1;
+    }
+
+CONTENT_LANGUA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANGUAG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LANGUAG;
+        default:
+            return -1;
+    }
+
+CONTENT_LANGUAG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 20;
+            }
+            goto CONTENT_LANGUAGE;
+        case 'e':
+            if (last) {
+                return 20;
+            }
+            goto CONTENT_LANGUAGE;
+        default:
+            return -1;
+    }
+
+CONTENT_LE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LEN;
+        default:
+            return -1;
+    }
+
+CONTENT_LEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LENG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LENG;
+        default:
+            return -1;
+    }
+
+CONTENT_LENG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LENGT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LENGT;
+        default:
+            return -1;
+    }
+
+CONTENT_LENGT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return 21;
+            }
+            goto CONTENT_LENGTH;
+        case 'h':
+            if (last) {
+                return 21;
+            }
+            goto CONTENT_LENGTH;
+        default:
+            return -1;
+    }
+
+CONTENT_LO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOC;
+        default:
+            return -1;
+    }
+
+CONTENT_LOC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCA;
+        default:
+            return -1;
+    }
+
+CONTENT_LOCA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCAT;
+        default:
+            return -1;
+    }
+
+CONTENT_LOCAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCATI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCATI;
+        default:
+            return -1;
+    }
+
+CONTENT_LOCATI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCATIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_LOCATIO;
+        default:
+            return -1;
+    }
+
+CONTENT_LOCATIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 22;
+            }
+            goto CONTENT_LOCATION;
+        case 'n':
+            if (last) {
+                return 22;
+            }
+            goto CONTENT_LOCATION;
+        default:
+            return -1;
+    }
+
+CONTENT_M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_MD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_MD;
+        default:
+            return -1;
+    }
+
+CONTENT_MD:
+    NEXT_CHAR();
+    switch (ch) {
+        case '5':
+            if (last) {
+                return 23;
+            }
+            goto CONTENT_MD5;
+        default:
+            return -1;
+    }
+
+CONTENT_R:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_RA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_RA;
+        default:
+            return -1;
+    }
+
+CONTENT_RA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_RAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_RAN;
+        default:
+            return -1;
+    }
+
+CONTENT_RAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_RANG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_RANG;
+        default:
+            return -1;
+    }
+
+CONTENT_RANG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 24;
+            }
+            goto CONTENT_RANGE;
+        case 'e':
+            if (last) {
+                return 24;
+            }
+            goto CONTENT_RANGE;
+        default:
+            return -1;
+    }
+
+CONTENT_T:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TR;
+        case 'Y':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TY;
+        case 'y':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TY;
+        default:
+            return -1;
+    }
+
+CONTENT_TR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRA;
+        default:
+            return -1;
+    }
+
+CONTENT_TRA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRAN;
+        default:
+            return -1;
+    }
+
+CONTENT_TRAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANS;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSF;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSF:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFE;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_E;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_EN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_EN;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_EN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENC;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_ENC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCO;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_ENCO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCOD;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_ENCOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCODI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCODI;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_ENCODI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCODIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TRANSFER_ENCODIN;
+        default:
+            return -1;
+    }
+
+CONTENT_TRANSFER_ENCODIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return 25;
+            }
+            goto CONTENT_TRANSFER_ENCODING;
+        case 'g':
+            if (last) {
+                return 25;
+            }
+            goto CONTENT_TRANSFER_ENCODING;
+        default:
+            return -1;
+    }
+
+CONTENT_TY:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TYP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto CONTENT_TYP;
+        default:
+            return -1;
+    }
+
+CONTENT_TYP:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 26;
+            }
+            goto CONTENT_TYPE;
+        case 'e':
+            if (last) {
+                return 26;
+            }
+            goto CONTENT_TYPE;
+        default:
+            return -1;
+    }
+
+COO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'K':
+            if (last) {
+                return -1;
+            }
+            goto COOK;
+        case 'k':
+            if (last) {
+                return -1;
+            }
+            goto COOK;
+        default:
+            return -1;
+    }
+
+COOK:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto COOKI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto COOKI;
+        default:
+            return -1;
+    }
+
+COOKI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 27;
+            }
+            goto COOKIE;
+        case 'e':
+            if (last) {
+                return 27;
+            }
+            goto COOKIE;
+        default:
+            return -1;
+    }
+
+D:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto DA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto DA;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto DE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto DE;
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto DI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto DI;
+        default:
+            return -1;
+    }
+
+DA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto DAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto DAT;
+        default:
+            return -1;
+    }
+
+DAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 28;
+            }
+            goto DATE;
+        case 'e':
+            if (last) {
+                return 28;
+            }
+            goto DATE;
+        default:
+            return -1;
+    }
+
+DE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto DES;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto DES;
+        default:
+            return -1;
+    }
+
+DES:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto DEST;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto DEST;
+        default:
+            return -1;
+    }
+
+DEST:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto DESTI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto DESTI;
+        default:
+            return -1;
+    }
+
+DESTI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto DESTIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto DESTIN;
+        default:
+            return -1;
+    }
+
+DESTIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto DESTINA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto DESTINA;
+        default:
+            return -1;
+    }
+
+DESTINA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto DESTINAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto DESTINAT;
+        default:
+            return -1;
+    }
+
+DESTINAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto DESTINATI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto DESTINATI;
+        default:
+            return -1;
+    }
+
+DESTINATI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto DESTINATIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto DESTINATIO;
+        default:
+            return -1;
+    }
+
+DESTINATIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 29;
+            }
+            goto DESTINATION;
+        case 'n':
+            if (last) {
+                return 29;
+            }
+            goto DESTINATION;
+        default:
+            return -1;
+    }
+
+DI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto DIG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto DIG;
+        default:
+            return -1;
+    }
+
+DIG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto DIGE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto DIGE;
+        default:
+            return -1;
+    }
+
+DIGE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto DIGES;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto DIGES;
+        default:
+            return -1;
+    }
+
+DIGES:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 30;
+            }
+            goto DIGEST;
+        case 't':
+            if (last) {
+                return 30;
+            }
+            goto DIGEST;
+        default:
+            return -1;
+    }
+
+E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto ET;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto ET;
+        case 'X':
+            if (last) {
+                return -1;
+            }
+            goto EX;
+        case 'x':
+            if (last) {
+                return -1;
+            }
+            goto EX;
+        default:
+            return -1;
+    }
+
+ET:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto ETA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto ETA;
+        default:
+            return -1;
+    }
+
+ETA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return 31;
+            }
+            goto ETAG;
+        case 'g':
+            if (last) {
+                return 31;
+            }
+            goto ETAG;
+        default:
+            return -1;
+    }
+
+EX:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto EXP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto EXP;
+        default:
+            return -1;
+    }
+
+EXP:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto EXPE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto EXPE;
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto EXPI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto EXPI;
+        default:
+            return -1;
+    }
+
+EXPE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto EXPEC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto EXPEC;
+        default:
+            return -1;
+    }
+
+EXPEC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 32;
+            }
+            goto EXPECT;
+        case 't':
+            if (last) {
+                return 32;
+            }
+            goto EXPECT;
+        default:
+            return -1;
+    }
+
+EXPI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto EXPIR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto EXPIR;
+        default:
+            return -1;
+    }
+
+EXPIR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto EXPIRE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto EXPIRE;
+        default:
+            return -1;
+    }
+
+EXPIRE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 33;
+            }
+            goto EXPIRES;
+        case 's':
+            if (last) {
+                return 33;
+            }
+            goto EXPIRES;
+        default:
+            return -1;
+    }
+
+F:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto FO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto FO;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto FR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto FR;
+        default:
+            return -1;
+    }
+
+FO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto FOR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto FOR;
+        default:
+            return -1;
+    }
+
+FOR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto FORW;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto FORW;
+        default:
+            return -1;
+    }
+
+FORW:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto FORWA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto FORWA;
+        default:
+            return -1;
+    }
+
+FORWA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto FORWAR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto FORWAR;
+        default:
+            return -1;
+    }
+
+FORWAR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto FORWARD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto FORWARD;
+        default:
+            return -1;
+    }
+
+FORWARD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto FORWARDE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto FORWARDE;
+        default:
+            return -1;
+    }
+
+FORWARDE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return 34;
+            }
+            goto FORWARDED;
+        case 'd':
+            if (last) {
+                return 34;
+            }
+            goto FORWARDED;
+        default:
+            return -1;
+    }
+
+FR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto FRO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto FRO;
+        default:
+            return -1;
+    }
+
+FRO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'M':
+            if (last) {
+                return 35;
+            }
+            goto FROM;
+        case 'm':
+            if (last) {
+                return 35;
+            }
+            goto FROM;
+        default:
+            return -1;
+    }
+
+H:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto HO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto HO;
+        default:
+            return -1;
+    }
+
+HO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto HOS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto HOS;
+        default:
+            return -1;
+    }
+
+HOS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 36;
+            }
+            goto HOST;
+        case 't':
+            if (last) {
+                return 36;
+            }
+            goto HOST;
+        default:
+            return -1;
+    }
+
+I:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto IF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto IF;
+        default:
+            return -1;
+    }
+
+IF:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto IF_;
+        default:
+            return -1;
+    }
+
+IF_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto IF_M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto IF_M;
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto IF_N;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto IF_N;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto IF_R;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto IF_R;
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto IF_U;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto IF_U;
+        default:
+            return -1;
+    }
+
+IF_M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto IF_MA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto IF_MA;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto IF_MO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto IF_MO;
+        default:
+            return -1;
+    }
+
+IF_MA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto IF_MAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto IF_MAT;
+        default:
+            return -1;
+    }
+
+IF_MAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto IF_MATC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto IF_MATC;
+        default:
+            return -1;
+    }
+
+IF_MATC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return 37;
+            }
+            goto IF_MATCH;
+        case 'h':
+            if (last) {
+                return 37;
+            }
+            goto IF_MATCH;
+        default:
+            return -1;
+    }
+
+IF_MO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto IF_MOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto IF_MOD;
+        default:
+            return -1;
+    }
+
+IF_MOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODI;
+        default:
+            return -1;
+    }
+
+IF_MODI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIF;
+        default:
+            return -1;
+    }
+
+IF_MODIF:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFI;
+        default:
+            return -1;
+    }
+
+IF_MODIFI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIE;
+        default:
+            return -1;
+    }
+
+IF_MODIFIE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED;
+        default:
+            return -1;
+    }
+
+IF_MODIFIED:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_;
+        default:
+            return -1;
+    }
+
+IF_MODIFIED_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_S;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_S;
+        default:
+            return -1;
+    }
+
+IF_MODIFIED_S:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_SI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_SI;
+        default:
+            return -1;
+    }
+
+IF_MODIFIED_SI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_SIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_SIN;
+        default:
+            return -1;
+    }
+
+IF_MODIFIED_SIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_SINC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto IF_MODIFIED_SINC;
+        default:
+            return -1;
+    }
+
+IF_MODIFIED_SINC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 38;
+            }
+            goto IF_MODIFIED_SINCE;
+        case 'e':
+            if (last) {
+                return 38;
+            }
+            goto IF_MODIFIED_SINCE;
+        default:
+            return -1;
+    }
+
+IF_N:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto IF_NO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto IF_NO;
+        default:
+            return -1;
+    }
+
+IF_NO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto IF_NON;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto IF_NON;
+        default:
+            return -1;
+    }
+
+IF_NON:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE;
+        default:
+            return -1;
+    }
+
+IF_NONE:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_;
+        default:
+            return -1;
+    }
+
+IF_NONE_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_M;
+        default:
+            return -1;
+    }
+
+IF_NONE_M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_MA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_MA;
+        default:
+            return -1;
+    }
+
+IF_NONE_MA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_MAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_MAT;
+        default:
+            return -1;
+    }
+
+IF_NONE_MAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_MATC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto IF_NONE_MATC;
+        default:
+            return -1;
+    }
+
+IF_NONE_MATC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return 39;
+            }
+            goto IF_NONE_MATCH;
+        case 'h':
+            if (last) {
+                return 39;
+            }
+            goto IF_NONE_MATCH;
+        default:
+            return -1;
+    }
+
+IF_R:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto IF_RA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto IF_RA;
+        default:
+            return -1;
+    }
+
+IF_RA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto IF_RAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto IF_RAN;
+        default:
+            return -1;
+    }
+
+IF_RAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto IF_RANG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto IF_RANG;
+        default:
+            return -1;
+    }
+
+IF_RANG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 40;
+            }
+            goto IF_RANGE;
+        case 'e':
+            if (last) {
+                return 40;
+            }
+            goto IF_RANGE;
+        default:
+            return -1;
+    }
+
+IF_U:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto IF_UN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto IF_UN;
+        default:
+            return -1;
+    }
+
+IF_UN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNM;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNM;
+        default:
+            return -1;
+    }
+
+IF_UNM:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMO;
+        default:
+            return -1;
+    }
+
+IF_UNMO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMOD;
+        default:
+            return -1;
+    }
+
+IF_UNMOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODI;
+        default:
+            return -1;
+    }
+
+IF_UNMODI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIF;
+        default:
+            return -1;
+    }
+
+IF_UNMODIF:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFI;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIE;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFIE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFIED:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFIED_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_S;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_S;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFIED_S:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_SI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_SI;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFIED_SI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_SIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_SIN;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFIED_SIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_SINC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto IF_UNMODIFIED_SINC;
+        default:
+            return -1;
+    }
+
+IF_UNMODIFIED_SINC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 41;
+            }
+            goto IF_UNMODIFIED_SINCE;
+        case 'e':
+            if (last) {
+                return 41;
+            }
+            goto IF_UNMODIFIED_SINCE;
+        default:
+            return -1;
+    }
+
+K:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto KE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto KE;
+        default:
+            return -1;
+    }
+
+KE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto KEE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto KEE;
+        default:
+            return -1;
+    }
+
+KEE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto KEEP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto KEEP;
+        default:
+            return -1;
+    }
+
+KEEP:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_;
+        default:
+            return -1;
+    }
+
+KEEP_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_A;
+        default:
+            return -1;
+    }
+
+KEEP_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_AL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_AL;
+        default:
+            return -1;
+    }
+
+KEEP_AL:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_ALI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_ALI;
+        default:
+            return -1;
+    }
+
+KEEP_ALI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'V':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_ALIV;
+        case 'v':
+            if (last) {
+                return -1;
+            }
+            goto KEEP_ALIV;
+        default:
+            return -1;
+    }
+
+KEEP_ALIV:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 42;
+            }
+            goto KEEP_ALIVE;
+        case 'e':
+            if (last) {
+                return 42;
+            }
+            goto KEEP_ALIVE;
+        default:
+            return -1;
+    }
+
+L:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto LA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto LA;
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto LI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto LI;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto LO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto LO;
+        default:
+            return -1;
+    }
+
+LA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto LAS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto LAS;
+        default:
+            return -1;
+    }
+
+LAS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto LAST;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto LAST;
+        default:
+            return -1;
+    }
+
+LAST:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto LAST_;
+        default:
+            return -1;
+    }
+
+LAST_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto LAST_E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto LAST_E;
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto LAST_M;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto LAST_M;
+        default:
+            return -1;
+    }
+
+LAST_E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'V':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EV;
+        case 'v':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EV;
+        default:
+            return -1;
+    }
+
+LAST_EV:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVE;
+        default:
+            return -1;
+    }
+
+LAST_EVE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVEN;
+        default:
+            return -1;
+    }
+
+LAST_EVEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVENT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVENT;
+        default:
+            return -1;
+    }
+
+LAST_EVENT:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVENT_;
+        default:
+            return -1;
+    }
+
+LAST_EVENT_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVENT_I;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto LAST_EVENT_I;
+        default:
+            return -1;
+    }
+
+LAST_EVENT_I:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return 43;
+            }
+            goto LAST_EVENT_ID;
+        case 'd':
+            if (last) {
+                return 43;
+            }
+            goto LAST_EVENT_ID;
+        default:
+            return -1;
+    }
+
+LAST_M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MO;
+        default:
+            return -1;
+    }
+
+LAST_MO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MOD;
+        default:
+            return -1;
+    }
+
+LAST_MOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODI;
+        default:
+            return -1;
+    }
+
+LAST_MODI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODIF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODIF;
+        default:
+            return -1;
+    }
+
+LAST_MODIF:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODIFI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODIFI;
+        default:
+            return -1;
+    }
+
+LAST_MODIFI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODIFIE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto LAST_MODIFIE;
+        default:
+            return -1;
+    }
+
+LAST_MODIFIE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return 44;
+            }
+            goto LAST_MODIFIED;
+        case 'd':
+            if (last) {
+                return 44;
+            }
+            goto LAST_MODIFIED;
+        default:
+            return -1;
+    }
+
+LI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto LIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto LIN;
+        default:
+            return -1;
+    }
+
+LIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'K':
+            if (last) {
+                return 45;
+            }
+            goto LINK;
+        case 'k':
+            if (last) {
+                return 45;
+            }
+            goto LINK;
+        default:
+            return -1;
+    }
+
+LO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto LOC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto LOC;
+        default:
+            return -1;
+    }
+
+LOC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto LOCA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto LOCA;
+        default:
+            return -1;
+    }
+
+LOCA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto LOCAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto LOCAT;
+        default:
+            return -1;
+    }
+
+LOCAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto LOCATI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto LOCATI;
+        default:
+            return -1;
+    }
+
+LOCATI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto LOCATIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto LOCATIO;
+        default:
+            return -1;
+    }
+
+LOCATIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 46;
+            }
+            goto LOCATION;
+        case 'n':
+            if (last) {
+                return 46;
+            }
+            goto LOCATION;
+        default:
+            return -1;
+    }
+
+M:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto MA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto MA;
+        default:
+            return -1;
+    }
+
+MA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'X':
+            if (last) {
+                return -1;
+            }
+            goto MAX;
+        case 'x':
+            if (last) {
+                return -1;
+            }
+            goto MAX;
+        default:
+            return -1;
+    }
+
+MAX:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto MAX_;
+        default:
+            return -1;
+    }
+
+MAX_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto MAX_F;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto MAX_F;
+        default:
+            return -1;
+    }
+
+MAX_F:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FO;
+        default:
+            return -1;
+    }
+
+MAX_FO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FOR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FOR;
+        default:
+            return -1;
+    }
+
+MAX_FOR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORW;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORW;
+        default:
+            return -1;
+    }
+
+MAX_FORW:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORWA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORWA;
+        default:
+            return -1;
+    }
+
+MAX_FORWA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORWAR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORWAR;
+        default:
+            return -1;
+    }
+
+MAX_FORWAR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORWARD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto MAX_FORWARD;
+        default:
+            return -1;
+    }
+
+MAX_FORWARD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 47;
+            }
+            goto MAX_FORWARDS;
+        case 's':
+            if (last) {
+                return 47;
+            }
+            goto MAX_FORWARDS;
+        default:
+            return -1;
+    }
+
+O:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto OR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto OR;
+        default:
+            return -1;
+    }
+
+OR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto ORI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto ORI;
+        default:
+            return -1;
+    }
+
+ORI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto ORIG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto ORIG;
+        default:
+            return -1;
+    }
+
+ORIG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto ORIGI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto ORIGI;
+        default:
+            return -1;
+    }
+
+ORIGI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 48;
+            }
+            goto ORIGIN;
+        case 'n':
+            if (last) {
+                return 48;
+            }
+            goto ORIGIN;
+        default:
+            return -1;
+    }
+
+P:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto PR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto PR;
+        default:
+            return -1;
+    }
+
+PR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto PRA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto PRA;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto PRO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto PRO;
+        default:
+            return -1;
+    }
+
+PRA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto PRAG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto PRAG;
+        default:
+            return -1;
+    }
+
+PRAG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'M':
+            if (last) {
+                return -1;
+            }
+            goto PRAGM;
+        case 'm':
+            if (last) {
+                return -1;
+            }
+            goto PRAGM;
+        default:
+            return -1;
+    }
+
+PRAGM:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return 49;
+            }
+            goto PRAGMA;
+        case 'a':
+            if (last) {
+                return 49;
+            }
+            goto PRAGMA;
+        default:
+            return -1;
+    }
+
+PRO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'X':
+            if (last) {
+                return -1;
+            }
+            goto PROX;
+        case 'x':
+            if (last) {
+                return -1;
+            }
+            goto PROX;
+        default:
+            return -1;
+    }
+
+PROX:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'Y':
+            if (last) {
+                return -1;
+            }
+            goto PROXY;
+        case 'y':
+            if (last) {
+                return -1;
+            }
+            goto PROXY;
+        default:
+            return -1;
+    }
+
+PROXY:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_;
+        default:
+            return -1;
+    }
+
+PROXY_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_A;
+        default:
+            return -1;
+    }
+
+PROXY_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AU;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AU;
+        default:
+            return -1;
+    }
+
+PROXY_AU:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUT;
+        default:
+            return -1;
+    }
+
+PROXY_AUT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTH;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTH;
+        default:
+            return -1;
+    }
+
+PROXY_AUTH:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHE;
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHO;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHEN;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENT;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHENT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTI;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHENTI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTIC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTIC;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHENTIC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTICA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTICA;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHENTICA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTICAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHENTICAT;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHENTICAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 50;
+            }
+            goto PROXY_AUTHENTICATE;
+        case 'e':
+            if (last) {
+                return 50;
+            }
+            goto PROXY_AUTHENTICATE;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHOR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHOR;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHOR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORI;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHORI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'Z':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZ;
+        case 'z':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZ;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHORIZ:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZA;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHORIZA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZAT;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHORIZAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZATI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZATI;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHORIZATI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZATIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto PROXY_AUTHORIZATIO;
+        default:
+            return -1;
+    }
+
+PROXY_AUTHORIZATIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 51;
+            }
+            goto PROXY_AUTHORIZATION;
+        case 'n':
+            if (last) {
+                return 51;
+            }
+            goto PROXY_AUTHORIZATION;
+        default:
+            return -1;
+    }
+
+R:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto RA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto RA;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto RE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto RE;
+        default:
+            return -1;
+    }
+
+RA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto RAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto RAN;
+        default:
+            return -1;
+    }
+
+RAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto RANG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto RANG;
+        default:
+            return -1;
+    }
+
+RANG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 52;
+            }
+            goto RANGE;
+        case 'e':
+            if (last) {
+                return 52;
+            }
+            goto RANGE;
+        default:
+            return -1;
+    }
+
+RE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto REF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto REF;
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto RET;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto RET;
+        default:
+            return -1;
+    }
+
+REF:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto REFE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto REFE;
+        default:
+            return -1;
+    }
+
+REFE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto REFER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto REFER;
+        default:
+            return -1;
+    }
+
+REFER:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto REFERE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto REFERE;
+        default:
+            return -1;
+    }
+
+REFERE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return 53;
+            }
+            goto REFERER;
+        case 'r':
+            if (last) {
+                return 53;
+            }
+            goto REFERER;
+        default:
+            return -1;
+    }
+
+RET:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto RETR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto RETR;
+        default:
+            return -1;
+    }
+
+RETR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'Y':
+            if (last) {
+                return -1;
+            }
+            goto RETRY;
+        case 'y':
+            if (last) {
+                return -1;
+            }
+            goto RETRY;
+        default:
+            return -1;
+    }
+
+RETRY:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_;
+        default:
+            return -1;
+    }
+
+RETRY_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_A;
+        default:
+            return -1;
+    }
+
+RETRY_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_AF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_AF;
+        default:
+            return -1;
+    }
+
+RETRY_AF:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_AFT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_AFT;
+        default:
+            return -1;
+    }
+
+RETRY_AFT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_AFTE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto RETRY_AFTE;
+        default:
+            return -1;
+    }
+
+RETRY_AFTE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return 54;
+            }
+            goto RETRY_AFTER;
+        case 'r':
+            if (last) {
+                return 54;
+            }
+            goto RETRY_AFTER;
+        default:
+            return -1;
+    }
+
+S:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SE;
+        default:
+            return -1;
+    }
+
+SE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto SEC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto SEC;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto SER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto SER;
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto SET;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto SET;
+        default:
+            return -1;
+    }
+
+SEC:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto SEC_;
+        default:
+            return -1;
+    }
+
+SEC_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto SEC_W;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto SEC_W;
+        default:
+            return -1;
+    }
+
+SEC_W:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WE;
+        default:
+            return -1;
+    }
+
+SEC_WE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'B':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEB;
+        case 'b':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEB;
+        default:
+            return -1;
+    }
+
+SEC_WEB:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBS;
+        default:
+            return -1;
+    }
+
+SEC_WEBS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSO;
+        default:
+            return -1;
+    }
+
+SEC_WEBSO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOC;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'K':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCK;
+        case 'k':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCK;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCK:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKE;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_A;
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_E;
+        case 'K':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_K;
+        case 'k':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_K;
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_P;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_P;
+        case 'V':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_V;
+        case 'v':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_V;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_AC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_AC;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_AC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_ACC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_ACC;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_ACC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_ACCE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_ACCE;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_ACCE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_ACCEP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_ACCEP;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_ACCEP:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 55;
+            }
+            goto SEC_WEBSOCKET_ACCEPT;
+        case 't':
+            if (last) {
+                return 55;
+            }
+            goto SEC_WEBSOCKET_ACCEPT;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'X':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EX;
+        case 'x':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EX;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EX:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXT;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EXT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTE;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EXTE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTEN;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EXTEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENS;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EXTENS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENSI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENSI;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EXTENSI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENSIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENSIO;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EXTENSIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENSION;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_EXTENSION;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_EXTENSION:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return 56;
+            }
+            goto SEC_WEBSOCKET_EXTENSIONS;
+        case 's':
+            if (last) {
+                return 56;
+            }
+            goto SEC_WEBSOCKET_EXTENSIONS;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_K:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_KE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_KE;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_KE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'Y':
+            if (last) {
+                return 57;
+            }
+            goto SEC_WEBSOCKET_KEY;
+        case 'y':
+            if (last) {
+                return 57;
+            }
+            goto SEC_WEBSOCKET_KEY;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_KEY:
+    NEXT_CHAR();
+    switch (ch) {
+        case '1':
+            if (last) {
+                return 58;
+            }
+            goto SEC_WEBSOCKET_KEY1;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_P:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PR;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_PR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PRO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PRO;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_PRO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROT;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_PROT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROTO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROTO;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_PROTO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROTOC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROTOC;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_PROTOC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROTOCO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_PROTOCO;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_PROTOCO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return 59;
+            }
+            goto SEC_WEBSOCKET_PROTOCOL;
+        case 'l':
+            if (last) {
+                return 59;
+            }
+            goto SEC_WEBSOCKET_PROTOCOL;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_V:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VE;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_VE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VER;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_VER:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VERS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VERS;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_VERS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VERSI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VERSI;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_VERSI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VERSIO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SEC_WEBSOCKET_VERSIO;
+        default:
+            return -1;
+    }
+
+SEC_WEBSOCKET_VERSIO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return 60;
+            }
+            goto SEC_WEBSOCKET_VERSION;
+        case 'n':
+            if (last) {
+                return 60;
+            }
+            goto SEC_WEBSOCKET_VERSION;
+        default:
+            return -1;
+    }
+
+SER:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'V':
+            if (last) {
+                return -1;
+            }
+            goto SERV;
+        case 'v':
+            if (last) {
+                return -1;
+            }
+            goto SERV;
+        default:
+            return -1;
+    }
+
+SERV:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto SERVE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto SERVE;
+        default:
+            return -1;
+    }
+
+SERVE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return 61;
+            }
+            goto SERVER;
+        case 'r':
+            if (last) {
+                return 61;
+            }
+            goto SERVER;
+        default:
+            return -1;
+    }
+
+SET:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto SET_;
+        default:
+            return -1;
+    }
+
+SET_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto SET_C;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto SET_C;
+        default:
+            return -1;
+    }
+
+SET_C:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SET_CO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SET_CO;
+        default:
+            return -1;
+    }
+
+SET_CO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto SET_COO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto SET_COO;
+        default:
+            return -1;
+    }
+
+SET_COO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'K':
+            if (last) {
+                return -1;
+            }
+            goto SET_COOK;
+        case 'k':
+            if (last) {
+                return -1;
+            }
+            goto SET_COOK;
+        default:
+            return -1;
+    }
+
+SET_COOK:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto SET_COOKI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto SET_COOKI;
+        default:
+            return -1;
+    }
+
+SET_COOKI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 62;
+            }
+            goto SET_COOKIE;
+        case 'e':
+            if (last) {
+                return 62;
+            }
+            goto SET_COOKIE;
+        default:
+            return -1;
+    }
+
+T:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 63;
+            }
+            goto TE;
+        case 'e':
+            if (last) {
+                return 63;
+            }
+            goto TE;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto TR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto TR;
+        default:
+            return -1;
+    }
+
+TR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto TRA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto TRA;
+        default:
+            return -1;
+    }
+
+TRA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto TRAI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto TRAI;
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto TRAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto TRAN;
+        default:
+            return -1;
+    }
+
+TRAI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'L':
+            if (last) {
+                return -1;
+            }
+            goto TRAIL;
+        case 'l':
+            if (last) {
+                return -1;
+            }
+            goto TRAIL;
+        default:
+            return -1;
+    }
+
+TRAIL:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto TRAILE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto TRAILE;
+        default:
+            return -1;
+    }
+
+TRAILE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return 64;
+            }
+            goto TRAILER;
+        case 'r':
+            if (last) {
+                return 64;
+            }
+            goto TRAILER;
+        default:
+            return -1;
+    }
+
+TRAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto TRANS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto TRANS;
+        default:
+            return -1;
+    }
+
+TRANS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto TRANSF;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto TRANSF;
+        default:
+            return -1;
+    }
+
+TRANSF:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFE;
+        default:
+            return -1;
+    }
+
+TRANSFE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER;
+        default:
+            return -1;
+    }
+
+TRANSFER:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_;
+        default:
+            return -1;
+    }
+
+TRANSFER_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_E;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_E;
+        default:
+            return -1;
+    }
+
+TRANSFER_E:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_EN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_EN;
+        default:
+            return -1;
+    }
+
+TRANSFER_EN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENC;
+        default:
+            return -1;
+    }
+
+TRANSFER_ENC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCO;
+        default:
+            return -1;
+    }
+
+TRANSFER_ENCO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCOD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCOD;
+        default:
+            return -1;
+    }
+
+TRANSFER_ENCOD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCODI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCODI;
+        default:
+            return -1;
+    }
+
+TRANSFER_ENCODI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCODIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto TRANSFER_ENCODIN;
+        default:
+            return -1;
+    }
+
+TRANSFER_ENCODIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return 65;
+            }
+            goto TRANSFER_ENCODING;
+        case 'g':
+            if (last) {
+                return 65;
+            }
+            goto TRANSFER_ENCODING;
+        default:
+            return -1;
+    }
+
+U:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto UR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto UR;
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto UP;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto UP;
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto US;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto US;
+        default:
+            return -1;
+    }
+
+UR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return 66;
+            }
+            goto URI;
+        case 'i':
+            if (last) {
+                return 66;
+            }
+            goto URI;
+        default:
+            return -1;
+    }
+
+UP:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto UPG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto UPG;
+        default:
+            return -1;
+    }
+
+UPG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto UPGR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto UPGR;
+        default:
+            return -1;
+    }
+
+UPGR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto UPGRA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto UPGRA;
+        default:
+            return -1;
+    }
+
+UPGRA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto UPGRAD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto UPGRAD;
+        default:
+            return -1;
+    }
+
+UPGRAD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 67;
+            }
+            goto UPGRADE;
+        case 'e':
+            if (last) {
+                return 67;
+            }
+            goto UPGRADE;
+        default:
+            return -1;
+    }
+
+US:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto USE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto USE;
+        default:
+            return -1;
+    }
+
+USE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto USER;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto USER;
+        default:
+            return -1;
+    }
+
+USER:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto USER_;
+        default:
+            return -1;
+    }
+
+USER_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto USER_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto USER_A;
+        default:
+            return -1;
+    }
+
+USER_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto USER_AG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto USER_AG;
+        default:
+            return -1;
+    }
+
+USER_AG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto USER_AGE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto USER_AGE;
+        default:
+            return -1;
+    }
+
+USER_AGE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto USER_AGEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto USER_AGEN;
+        default:
+            return -1;
+    }
+
+USER_AGEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 68;
+            }
+            goto USER_AGENT;
+        case 't':
+            if (last) {
+                return 68;
+            }
+            goto USER_AGENT;
+        default:
+            return -1;
+    }
+
+V:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto VA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto VA;
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto VI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto VI;
+        default:
+            return -1;
+    }
+
+VA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto VAR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto VAR;
+        default:
+            return -1;
+    }
+
+VAR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'Y':
+            if (last) {
+                return 69;
+            }
+            goto VARY;
+        case 'y':
+            if (last) {
+                return 69;
+            }
+            goto VARY;
+        default:
+            return -1;
+    }
+
+VI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return 70;
+            }
+            goto VIA;
+        case 'a':
+            if (last) {
+                return 70;
+            }
+            goto VIA;
+        default:
+            return -1;
+    }
+
+W:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto WW;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto WW;
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto WA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto WA;
+        default:
+            return -1;
+    }
+
+WW:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto WWW;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto WWW;
+        default:
+            return -1;
+    }
+
+WWW:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto WWW_;
+        default:
+            return -1;
+    }
+
+WWW_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto WWW_A;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto WWW_A;
+        default:
+            return -1;
+    }
+
+WWW_A:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'U':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AU;
+        case 'u':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AU;
+        default:
+            return -1;
+    }
+
+WWW_AU:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUT;
+        default:
+            return -1;
+    }
+
+WWW_AUT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTH;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTH;
+        default:
+            return -1;
+    }
+
+WWW_AUTH:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHE;
+        default:
+            return -1;
+    }
+
+WWW_AUTHE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHEN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHEN;
+        default:
+            return -1;
+    }
+
+WWW_AUTHEN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENT;
+        default:
+            return -1;
+    }
+
+WWW_AUTHENT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTI;
+        default:
+            return -1;
+    }
+
+WWW_AUTHENTI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'C':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTIC;
+        case 'c':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTIC;
+        default:
+            return -1;
+    }
+
+WWW_AUTHENTIC:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTICA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTICA;
+        default:
+            return -1;
+    }
+
+WWW_AUTHENTICA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTICAT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto WWW_AUTHENTICAT;
+        default:
+            return -1;
+    }
+
+WWW_AUTHENTICAT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return 71;
+            }
+            goto WWW_AUTHENTICATE;
+        case 'e':
+            if (last) {
+                return 71;
+            }
+            goto WWW_AUTHENTICATE;
+        default:
+            return -1;
+    }
+
+WA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto WAN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto WAN;
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto WAR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto WAR;
+        default:
+            return -1;
+    }
+
+WAN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto WANT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto WANT;
+        default:
+            return -1;
+    }
+
+WANT:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto WANT_;
+        default:
+            return -1;
+    }
+
+WANT_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto WANT_D;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto WANT_D;
+        default:
+            return -1;
+    }
+
+WANT_D:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DI;
+        default:
+            return -1;
+    }
+
+WANT_DI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DIG;
+        case 'g':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DIG;
+        default:
+            return -1;
+    }
+
+WANT_DIG:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DIGE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DIGE;
+        default:
+            return -1;
+    }
+
+WANT_DIGE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DIGES;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto WANT_DIGES;
+        default:
+            return -1;
+    }
+
+WANT_DIGES:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 72;
+            }
+            goto WANT_DIGEST;
+        case 't':
+            if (last) {
+                return 72;
+            }
+            goto WANT_DIGEST;
+        default:
+            return -1;
+    }
+
+WAR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto WARN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto WARN;
+        default:
+            return -1;
+    }
+
+WARN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'I':
+            if (last) {
+                return -1;
+            }
+            goto WARNI;
+        case 'i':
+            if (last) {
+                return -1;
+            }
+            goto WARNI;
+        default:
+            return -1;
+    }
+
+WARNI:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'N':
+            if (last) {
+                return -1;
+            }
+            goto WARNIN;
+        case 'n':
+            if (last) {
+                return -1;
+            }
+            goto WARNIN;
+        default:
+            return -1;
+    }
+
+WARNIN:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'G':
+            if (last) {
+                return 73;
+            }
+            goto WARNING;
+        case 'g':
+            if (last) {
+                return 73;
+            }
+            goto WARNING;
+        default:
+            return -1;
+    }
+
+X:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto X_;
+        default:
+            return -1;
+    }
+
+X_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto X_F;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto X_F;
+        default:
+            return -1;
+    }
+
+X_F:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto X_FO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto X_FO;
+        default:
+            return -1;
+    }
+
+X_FO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto X_FOR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto X_FOR;
+        default:
+            return -1;
+    }
+
+X_FOR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'W':
+            if (last) {
+                return -1;
+            }
+            goto X_FORW;
+        case 'w':
+            if (last) {
+                return -1;
+            }
+            goto X_FORW;
+        default:
+            return -1;
+    }
+
+X_FORW:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'A':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWA;
+        case 'a':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWA;
+        default:
+            return -1;
+    }
+
+X_FORWA:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWAR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWAR;
+        default:
+            return -1;
+    }
+
+X_FORWAR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARD;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARD;
+        default:
+            return -1;
+    }
+
+X_FORWARD:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'E':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDE;
+        case 'e':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDE;
+        default:
+            return -1;
+    }
+
+X_FORWARDE:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'D':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED;
+        case 'd':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED;
+        default:
+            return -1;
+    }
+
+X_FORWARDED:
+    NEXT_CHAR();
+    switch (ch) {
+        case '-':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'F':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_F;
+        case 'f':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_F;
+        case 'H':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_H;
+        case 'h':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_H;
+        case 'P':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_P;
+        case 'p':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_P;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_F:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_FO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_FO;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_FO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return 74;
+            }
+            goto X_FORWARDED_FOR;
+        case 'r':
+            if (last) {
+                return 74;
+            }
+            goto X_FORWARDED_FOR;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_H:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_HO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_HO;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_HO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'S':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_HOS;
+        case 's':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_HOS;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_HOS:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return 75;
+            }
+            goto X_FORWARDED_HOST;
+        case 't':
+            if (last) {
+                return 75;
+            }
+            goto X_FORWARDED_HOST;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_P:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'R':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_PR;
+        case 'r':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_PR;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_PR:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_PRO;
+        case 'o':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_PRO;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_PRO:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'T':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_PROT;
+        case 't':
+            if (last) {
+                return -1;
+            }
+            goto X_FORWARDED_PROT;
+        default:
+            return -1;
+    }
+
+X_FORWARDED_PROT:
+    NEXT_CHAR();
+    switch (ch) {
+        case 'O':
+            if (last) {
+                return 76;
+            }
+            goto X_FORWARDED_PROTO;
+        case 'o':
+            if (last) {
+                return 76;
+            }
+            goto X_FORWARDED_PROTO;
+        default:
+            return -1;
+    }
+
+ACCEPT_CHARSET:
+ACCEPT_ENCODING:
+ACCEPT_LANGUAGE:
+ACCEPT_RANGES:
+ACCESS_CONTROL_ALLOW_CREDENTIALS:
+ACCESS_CONTROL_ALLOW_HEADERS:
+ACCESS_CONTROL_ALLOW_METHODS:
+ACCESS_CONTROL_ALLOW_ORIGIN:
+ACCESS_CONTROL_EXPOSE_HEADERS:
+ACCESS_CONTROL_MAX_AGE:
+ACCESS_CONTROL_REQUEST_HEADERS:
+ACCESS_CONTROL_REQUEST_METHOD:
+AGE:
+ALLOW:
+AUTHORIZATION:
+CACHE_CONTROL:
+CONNECTION:
+CONTENT_DISPOSITION:
+CONTENT_ENCODING:
+CONTENT_LANGUAGE:
+CONTENT_LENGTH:
+CONTENT_LOCATION:
+CONTENT_MD5:
+CONTENT_RANGE:
+CONTENT_TRANSFER_ENCODING:
+CONTENT_TYPE:
+COOKIE:
+DATE:
+DESTINATION:
+DIGEST:
+ETAG:
+EXPECT:
+EXPIRES:
+FORWARDED:
+FROM:
+HOST:
+IF_MATCH:
+IF_MODIFIED_SINCE:
+IF_NONE_MATCH:
+IF_RANGE:
+IF_UNMODIFIED_SINCE:
+KEEP_ALIVE:
+LAST_EVENT_ID:
+LAST_MODIFIED:
+LINK:
+LOCATION:
+MAX_FORWARDS:
+ORIGIN:
+PRAGMA:
+PROXY_AUTHENTICATE:
+PROXY_AUTHORIZATION:
+RANGE:
+REFERER:
+RETRY_AFTER:
+SEC_WEBSOCKET_ACCEPT:
+SEC_WEBSOCKET_EXTENSIONS:
+SEC_WEBSOCKET_KEY1:
+SEC_WEBSOCKET_PROTOCOL:
+SEC_WEBSOCKET_VERSION:
+SERVER:
+SET_COOKIE:
+TE:
+TRAILER:
+TRANSFER_ENCODING:
+UPGRADE:
+URI:
+USER_AGENT:
+VARY:
+VIA:
+WANT_DIGEST:
+WARNING:
+WWW_AUTHENTICATE:
+X_FORWARDED_FOR:
+X_FORWARDED_HOST:
+X_FORWARDED_PROTO:
+missing:
+    /* nothing found */
+    return -1;
+}

+ 14 - 0
contrib/python/aiohttp/aiohttp/_find_header.h

@@ -0,0 +1,14 @@
+#ifndef _FIND_HEADERS_H
+#define _FIND_HEADERS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int find_header(const char *str, int size);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif

+ 2 - 0
contrib/python/aiohttp/aiohttp/_find_header.pxd

@@ -0,0 +1,2 @@
+cdef extern from "_find_header.h":
+    int find_header(char *, int)

+ 83 - 0
contrib/python/aiohttp/aiohttp/_headers.pxi

@@ -0,0 +1,83 @@
+# The file is autogenerated from aiohttp/hdrs.py
+# Run ./tools/gen.py to update it after the origin changing.
+
+from . import hdrs
+cdef tuple headers = (
+    hdrs.ACCEPT,
+    hdrs.ACCEPT_CHARSET,
+    hdrs.ACCEPT_ENCODING,
+    hdrs.ACCEPT_LANGUAGE,
+    hdrs.ACCEPT_RANGES,
+    hdrs.ACCESS_CONTROL_ALLOW_CREDENTIALS,
+    hdrs.ACCESS_CONTROL_ALLOW_HEADERS,
+    hdrs.ACCESS_CONTROL_ALLOW_METHODS,
+    hdrs.ACCESS_CONTROL_ALLOW_ORIGIN,
+    hdrs.ACCESS_CONTROL_EXPOSE_HEADERS,
+    hdrs.ACCESS_CONTROL_MAX_AGE,
+    hdrs.ACCESS_CONTROL_REQUEST_HEADERS,
+    hdrs.ACCESS_CONTROL_REQUEST_METHOD,
+    hdrs.AGE,
+    hdrs.ALLOW,
+    hdrs.AUTHORIZATION,
+    hdrs.CACHE_CONTROL,
+    hdrs.CONNECTION,
+    hdrs.CONTENT_DISPOSITION,
+    hdrs.CONTENT_ENCODING,
+    hdrs.CONTENT_LANGUAGE,
+    hdrs.CONTENT_LENGTH,
+    hdrs.CONTENT_LOCATION,
+    hdrs.CONTENT_MD5,
+    hdrs.CONTENT_RANGE,
+    hdrs.CONTENT_TRANSFER_ENCODING,
+    hdrs.CONTENT_TYPE,
+    hdrs.COOKIE,
+    hdrs.DATE,
+    hdrs.DESTINATION,
+    hdrs.DIGEST,
+    hdrs.ETAG,
+    hdrs.EXPECT,
+    hdrs.EXPIRES,
+    hdrs.FORWARDED,
+    hdrs.FROM,
+    hdrs.HOST,
+    hdrs.IF_MATCH,
+    hdrs.IF_MODIFIED_SINCE,
+    hdrs.IF_NONE_MATCH,
+    hdrs.IF_RANGE,
+    hdrs.IF_UNMODIFIED_SINCE,
+    hdrs.KEEP_ALIVE,
+    hdrs.LAST_EVENT_ID,
+    hdrs.LAST_MODIFIED,
+    hdrs.LINK,
+    hdrs.LOCATION,
+    hdrs.MAX_FORWARDS,
+    hdrs.ORIGIN,
+    hdrs.PRAGMA,
+    hdrs.PROXY_AUTHENTICATE,
+    hdrs.PROXY_AUTHORIZATION,
+    hdrs.RANGE,
+    hdrs.REFERER,
+    hdrs.RETRY_AFTER,
+    hdrs.SEC_WEBSOCKET_ACCEPT,
+    hdrs.SEC_WEBSOCKET_EXTENSIONS,
+    hdrs.SEC_WEBSOCKET_KEY,
+    hdrs.SEC_WEBSOCKET_KEY1,
+    hdrs.SEC_WEBSOCKET_PROTOCOL,
+    hdrs.SEC_WEBSOCKET_VERSION,
+    hdrs.SERVER,
+    hdrs.SET_COOKIE,
+    hdrs.TE,
+    hdrs.TRAILER,
+    hdrs.TRANSFER_ENCODING,
+    hdrs.URI,
+    hdrs.UPGRADE,
+    hdrs.USER_AGENT,
+    hdrs.VARY,
+    hdrs.VIA,
+    hdrs.WWW_AUTHENTICATE,
+    hdrs.WANT_DIGEST,
+    hdrs.WARNING,
+    hdrs.X_FORWARDED_FOR,
+    hdrs.X_FORWARDED_HOST,
+    hdrs.X_FORWARDED_PROTO,
+)

Some files were not shown because too many files changed in this diff