File: //lib64/python3.6/site-packages/tornado/__pycache__/httputil.cpython-36.opt-1.pyc
3
��f � � @ s d Z ddlZddlZddlZddlZddlZddlmZ ddl Z
ddlZddlm
Z
ddlZddlZddlmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZmZ e ddlZdd lmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ej*�rdd
lm+Z+ ddl,m-Z- ddl.Z.ej/d�Z0G d
d� de1�Z2e2d�Z3G dd� dej4j5�Z6G dd� de7�Z8G dd� de9�Z:G dd� de9�Z;G dd� de7�Z<G dd� de7�Z=G dd� de7�Z>e?e%de$e?e?f e!ee?e?f eee?e?f df f e?d�d d!�Z@G d"d#� d#e�ZAe?e&ee&eB e&eB f d$�d%d&�ZCe&eB e&eB eBe?d'�d(d)�ZDe?e&eB d*�d+d,�ZEd]e?eFe$e?e!eF f e$e?e!eA f e6dd-�d.d/�ZGeFeFe$e?e!eF f e$e?e!eA f dd0�d1d2�ZHe%eBeIeJejKejf e?d3�d4d5�ZLejMd6d7d8d9g�ZNe?eNd:�d;d<�ZOejMd=d9d>d?g�ZPe?ePd:�d@dA�ZQe?e(e?ddf dB�dCdD�ZRe?ee?e$e?e?f f d:�dEdF�ZSe?e$e?e?f e?dG�dHdI�ZTe%e?eFf e%e?eFf eFdJ�dKdL�ZUdMdN� ZVe?ee?e&eB f dO�dPdQ�ZWe$e?e!e) f e ee?e)f dR�dSdT�ZXej/dU�ZYej/dV�ZZdWj[Z\e?e?dB�dXdY�Z]e?e$e?e?f dZ�d[d\�Z^dS )^z�HTTP utility code shared by clients and servers.
This module also defines the `HTTPServerRequest` class which is exposed
via `tornado.web.RequestHandler.request`.
� N)� responses)�SSLError)� urlencode�urlparse�
urlunparse� parse_qsl)�
native_str�parse_qs_bytes�utf8)�gen_log)�
ObjectDict�unicode_type)�Tuple�Iterable�List�Mapping�Iterator�Dict�Union�Optional� Awaitable� Generator�AnyStr)�Deque)�Futurez\r?\nc s8 e Zd ZdZedd�� fdd�Zeed�dd�Z� ZS ) �_NormalizedHeaderCacheaK Dynamic cached mapping of header names to Http-Header-Case.
Implemented as a dict subclass so that cache hits are as fast as a
normal dict lookup, without the overhead of a python function
call.
>>> normalized_headers = _NormalizedHeaderCache(10)
>>> normalized_headers["coNtent-TYPE"]
'Content-Type'
N)�size�returnc s"