� ��^ia~����ddlmZmZmZddlmZddlmZmZddl Z ddl Z ddl m Z m Z ddlmZddlmZmZmZmZdd lmZdd lmZed �eD����Zed �eD����Zed �eD����Zeeddg��zZdZejrOeddkre�d��dksJ�e j edd�e!d��zdz��Z"ne j e��Z"hd�Z#e j d��Z$iZ%Gd�de&��Z'd�Z(Gd�de&��Z)Gd�de)��Z*Gd�de+��Z,Gd�d e&��Z-Gd!�d"e&��Z.d#�Z/dS)$�)�absolute_import�division�unicode_literals)� text_type)� http_client�urllibN)�BytesIO�StringIO)� webencodings�)�EOF�spaceCharacters� asciiLetters�asciiUppercase)�_ReparseException)�_utilsc�8�g|]}|�d����S��ascii��encode��.0�items ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/html5lib/_inputstream.py� rs$��!S�!S�!S�4�$�+�+�g�"6�"6�!S�!S�!S�c�8�g|]}|�d����Srrrs rrrs$��M�M�M��t�{�{�7�3�3�M�M�Mrc�8�g|]}|�d����Srrrs rrrs$�� Q� Q� Q�$����W�!5�!5� Q� Q� Qr�>� ��������������������������� ��� ��� ��� ��� ������������������������������������ ��� ��� ��� ��� ���������z[ - -/:-@\[-`{-~]c�<�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d S) �BufferedStreamz�Buffering for streams that do not have buffering of their own The buffer is implemented as a list of chunks on the assumption that joining many strings will be slow since it is O(n**2) c�4�||_g|_ddg|_dS)Nr"r)�stream�buffer�position)�selfrGs r�__init__zBufferedStream.__init__:s���� ��� ��Q��� � � rc��d}|jd|jd�D]}|t|��z }�||jdz }|S�Nrr )rHrI�len)rJ�pos�chunks r�tellzBufferedStream.tell?sR�����[�!2�$�-��"2�!2�3� � �E� �3�u�:�:� �C�C� �t�}�Q����� rc��||���ksJ�|}d}t|j|��|kr@|t|j|��z}|dz }t|j|��|k�@||g|_dSrM)�_bufferedBytesrNrHrI)rJrO�offset�is r�seekzBufferedStream.seekFs����d�)�)�+�+�+�+�+�+��� ���$�+�a�.�!�!�F�*�*� �c�$�+�a�.�)�)� )�F� ��F�A��$�+�a�.�!�!�F�*�*��F� �� � � rc�&�|js|�|��S|jdt|j��kr>|jdt|jd��kr|�|��S|�|��S)Nrr r")rH� _readStreamrIrN�_readFromBuffer�rJ�bytess r�readzBufferedStream.readOs����{� /��#�#�E�*�*� *��m�A��#�d�k�"2�"2�2�2��m�A��#�d�k�"�o�"6�"6�6�6��#�#�E�*�*� *��'�'��.�.� .rc�>�td�|jD����S)Nc�,�g|]}t|����S�)rNrs rrz1BufferedStream._bufferedBytes..Ys��6�6�6�$�C��I�I�6�6�6r)�sumrH�rJs rrSzBufferedStream._bufferedBytesXs!���6�6�$�+�6�6�6�7�7�7rc���|j�|��}|j�|��|jdxxdz cc<t |��|jd<|SrM)rGr\rH�appendrIrN)rJr[�datas rrXzBufferedStream._readStream[sb���{����&�&�� � ���4� � � � � �a����A������t�9�9�� �a��� rc�P�|}g}|jd}|jd}|t|j��kr�|dkr�|dksJ�|j|}|t|��|z kr|}|||zg|_n-t|��|z }|t|��g|_|dz }|�||||z���||z}d}|t|j��kr|dk��|r(|�|�|����d�|��S)Nrr r)rIrNrHrcrX�join)rJr[�remainingBytes�rv� bufferIndex� bufferOffset� bufferedData� bytesToReads rrYzBufferedStream._readFromBufferbsK���� ���m�A�&� ��}�Q�'� ��C�� �,�,�,�,��1�1D�1D�!�A�%�%�%�%��;�{�3�L���\�!2�!2�\�!A�A�A�,� �!,�l�[�.H� I�� � �!�,�/�/�,�>� �!,�c�,�.?�.?� @�� ��q� � � �I�I�l�<� �{�0J�#J�K� L� L� L� �k� )�N��L��C�� �,�,�,�,��1�1D�1D� � 8� �I�I�d�&�&�~�6�6� 7� 7� 7��x�x��|�|�rN) �__name__� __module__� __qualname__�__doc__rKrQrVr\rSrXrYr_rrrErE3s���������  � � � ���$�$�$�/�/�/�8�8�8��������rrEc ���t|tj��s>t|tjj��r"t|jtj��rd}nNt|d��r)t|�d��t��}nt|t��}|r-d�|D��}|rtd|z���t|fi|��St|fi|��S)NFr\rc�<�g|]}|�d���|��S)� _encoding)�endswith)r�xs rrz#HTMLInputStream..�s)��B�B�B�1�!�*�*�[�*A�*A�B�Q�B�B�Brz3Cannot set an encoding with a unicode input, set %r) � isinstancer� HTTPResponser�response�addbase�fp�hasattrr\r� TypeError�HTMLUnicodeInputStream�HTMLBinaryInputStream)�source�kwargs� isUnicode� encodingss r�HTMLInputStreamr�}s��� �6�;�3�4�4�2� �F�F�O�3� 4� 4�2� �F�I�{�7� 8� 8�2�� � � ��� � �2��v�{�{�1�~�~�y�9�9� � ��v�y�1�1� ��7�B�B��B�B�B� � � _��Q�T]�]�^�^� ^�%�f�7�7��7�7�7�$�V�6�6�v�6�6�6rc�\�eZdZdZdZd�Zd�Zd�Zd�Zd�Z d�Z dd �Z d �Z d �Z dd�Zd�Zd S)r}��Provides a unicode stream of characters to the HTMLTokenizer. This class takes care of character encoding and removing or replacing incorrect byte-sequences and also provides column and line tracking. i(c��tjsd|_n,td��dkr |j|_n |j|_dg|_td��df|_|� |��|_ |� ��dS)�Initialises the HTMLInputStream. HTMLInputStream(source, [encoding]) -> Normalized stream from source for use by html5lib. source can be either a file-object, local filename or a string. The optional encoding parameter must be a string that indicates the encoding. If specified, that encoding will be used, regardless of any BOM or later declaration (such as in a meta element) Nu�r r�utf-8�certain) r�supports_lone_surrogates�reportCharacterErrorsrN�characterErrorsUCS4�characterErrorsUCS2�newLines�lookupEncoding� charEncoding� openStream� dataStream�reset)rJrs rrKzHTMLUnicodeInputStream.__init__�s����.� B�*.�D� &� &� �� � �!� #� #�)-�)A�D� &� &�)-�)A�D� &���� �+�G�4�4�i�@����/�/�&�1�1��� � � � � � � � rc�h�d|_d|_d|_g|_d|_d|_d|_dS)N�r)rP� chunkSize� chunkOffset�errors� prevNumLines� prevNumCols�_bufferedCharacterras rr�zHTMLUnicodeInputStream.reset�sA���� ��������� �������#'����rc�J�t|d��r|}nt|��}|S�zvProduces a file object from source. source can be either a file object, local filename or a string. r\)r{r �rJrrGs rr�z!HTMLUnicodeInputStream.openStream�s/�� �6�6� "� "� &��F�F��f�%�%�F�� rc��|j}|�dd|��}|j|z}|�dd|��}|dkr |j|z}n||dzz }||fS)N� rr"r )rP�countr��rfindr�)rJrTrP�nLines� positionLine� lastLinePos�positionColumns r� _positionz HTMLUnicodeInputStream._position�ss��� �����T�1�f�-�-���(�6�1� ��k�k�$��6�2�2� � �"� � �!�-��6�N�N�#�{�Q��7�N��n�-�-rc�J�|�|j��\}}|dz|fS)z:Returns (line, col) of the current position in the stream.r )r�r�)rJ�line�cols rrIzHTMLUnicodeInputStream.position�s(���N�N�4�#3�4�4� ��c��q��#��rc��|j|jkr|���stS|j}|j|}|dz|_|S)zo Read one character from the stream or queue if available. Return EOF when EOF is reached. r )r�r�� readChunkr rP)rJr��chars rr�zHTMLUnicodeInputStream.char�sP�� � �t�~� -� -��>�>�#�#� �� ��&� ��z�+�&��&��?���� rNc�n�|�|j}|�|j��\|_|_d|_d|_d|_|j�|��}|j r|j |z}d|_ n|sdSt|��dkrBt|d��}|dksd|cxkrdkrnn|d|_ |dd�}|j r|� |��|� d d ��}|� d d ��}||_t|��|_d S) Nr�rFr r"� ��i��z r�� T)�_defaultChunkSizer�r�r�r�rPr�r�r\r�rN�ordr��replace)rJr�rd�lastvs rr�z HTMLUnicodeInputStream.readChunk�sL�� � ��.�I�.2�n�n�T�^�.L�.L�+���4�+��� ���������#�#�I�.�.�� � "� ��*�T�1�D�&*�D� #� #�� ��5� �t�9�9�q�=�=���R��M�M�E���}�}��%� 9� 9� 9� 9�6� 9� 9� 9� 9� 9�*.�r�(��'��C�R�C�y�� � %� -� � &� &�t� ,� ,� ,��|�|�F�D�)�)���|�|�D�$�'�'���� ��T������trc��ttt�|������D]}|j�d���dS)N�invalid-codepoint)�rangerN�invalid_unicode_re�findallr�rc)rJrd�_s rr�z*HTMLUnicodeInputStream.characterErrorsUCS4sT���s�-�5�5�d�;�;�<�<�=�=� 4� 4�A� �K� � �2� 3� 3� 3� 3� 4� 4rc�.�d}t�|��D]�}|r�t|�����}|���}t j|||dz���rEt j|||dz���}|tvr|j � d��d}��|dkr7|dkr1|t|��dz kr|j � d����d}|j � d����dS)NF�r�Tr�i��r ) r��finditerr��group�startr�isSurrogatePair�surrogatePairToCodepoint�non_bmp_invalid_codepointsr�rcrN)rJrd�skip�match� codepointrO�char_vals rr�z*HTMLUnicodeInputStream.characterErrorsUCS2#s'����'�0�0��6�6� 8� 8�E�� ���E�K�K�M�M�*�*�I��+�+�-�-�C��%�d�3�s�Q�w�;�&7�8�8� 8�!�:�4��C�!�G� �;L�M�M���9�9�9��K�&�&�':�;�;�;�����v�%�%�)�v�*=�*=���T���Q��&�&�� �"�"�#6�7�7�7�7���� �"�"�#6�7�7�7�7�# 8� 8rFc�� t||f}nt#t$rg |D]}t|��dksJ��d�d�|D����}|sd|z}t jd|z��x}t||f<YnwxYwg} |�|j|j��}|�|j|j krn�nN|� ��}||j kr/|� |j|j|���||_n=|� |j|jd���|� ��sn��d�|��} | S)z� Returns a string of characters from the stream up to but not including any character in 'characters' or EOF. 'characters' must be a container that supports the 'in' method and iteration over its characters. T�r�c�2�g|]}dt|��z��S)z\x%02x)r�)r�cs rrz5HTMLUnicodeInputStream.charsUntil..Hs#��D�D�D�A�Y��Q���/�D�D�Drz^%sz[%s]+N) �charsUntilRegEx�KeyErrorr�rf�re�compiler�rPr�r��endrcr�) rJ� characters�opposite�charsr��regexrh�mr��rs r� charsUntilz!HTMLUnicodeInputStream.charsUntil:s��� Z�#�Z��$:�;�E�E��� Z� Z� Z� )�#�)�)�A��q�6�6�C�<�<�<�<�<��G�G�D�D��D�D�D�E�E�E�� &��� ��>@�j��SX��>Y�>Y� Y�E�O�Z��$:�;�;�;� Z������ �� � �D�J��(8�9�9�A��y��#�t�~�5�5��6��e�e�g�g���$�.�(�(��I�I�d�j��)9�#�)=�>�?�?�?�'*�D�$�� �I�I�d�j��!1�!2�!2�3� 4� 4� 4��>�>�#�#� ��+ �. �G�G�B�K�K���s��A.B�Bc���|turT|jdkr!||jz|_|xjdz c_dS|xjdzc_|j|j|ksJ�dSdSrM)r r�rPr�)rJr�s r�ungetzHTMLUnicodeInputStream.ungetis}�� �s�?�?���1�$�$� "�D�J�.�� ����!�#������ � �A�%� � ��z�$�"2�3�t�;�;�;�;� �?�<�;r�N)F)rmrnrorpr�rKr�r�r�rIr�r�r�r�r�r�r_rrr}r}�s��������������@ '� '� '� � � � .� .� .���� � � �$�$�$�$�L4�4�4�8�8�8�.-�-�-�-�^<�<�<�<��>���� ��#�/�/�/� � � � � � � � rc��|jdj�|jd��|_t �|��dS)Nrr�)r�� codec_info� streamreaderr�r�r}r�ras rr�zHTMLBinaryInputStream.reset�sA���+�A�.�9�F�F�t�~�W`�a�a����$�$�T�*�*�*�*�*rc���t|d��r|}nt|��} |�|�����n#t$rt |��}YnwxYw|Sr�)r{r rVrQ� ExceptionrEr�s rr�z HTMLBinaryInputStream.openStream�s}�� �6�6� "� "� %��F�F��V�_�_�F� ,� �K�K�� � � � � &� &� &� &��� ,� ,� ,�#�F�+�+�F�F�F� ,����� s�'A � A(�'A(c���|���df}|d�|St|j��df}|d�|St|j��df}|d�|S|���df}|d�|St|j��df}|d�"|dj�d��s|St|j��df}|d�|S|r� ddl m }g}|��}|j sj|j � |j��}t|t ��sJ�|sn1|�|��|�|��|j �j|���t|jd��}|j �d��|�|dfSn#t,$rYnwxYwt|j��df}|d�|Std��dfS)Nr�r� tentativezutf-16)�UniversalDetector�encodingr�)� detectBOMr�r�r��detectEncodingMetar��name� startswithr��%pip._vendor.chardet.universaldetectorr��doner�r\r�rvr[rc�feed�close�resultrV� ImportErrorr�)rJ�chardetr�r��buffers�detectorrHr�s rr�z'HTMLBinaryInputStream.determineEncoding�s_���~�~�'�'��2� � ��?� &�� �&�d�&<�=�=�y�H� � ��?� &�� �&�d�&=�>�>� �I� � ��?� &�� ��.�.�0�0�+�=� � ��?� &�� �&�d�&F�G�G��T� � ��?� &�|�A��/C�/N�/N�x�/X�/X� &�� �&�d�&:�;�;�[�H� � ��?� &�� � � 1� 1�S�S�S�S�S�S���,�,�.�.��"�-�*�!�^�0�0��1E�F�F�F�%�f�e�4�4�4�4�4�!����N�N�6�*�*�*��M�M�&�)�)�)� #�-�*���� � � �)�(�/�*�*E�F�F����#�#�A�&�&�&��'�#�[�0�0�(��� � � ��� ����&&�d�&;�<�<�k�I� � ��?� &�� ��n�-�-�{�:�:s�$F6�6 G�Gc��|jddksJ�t|��}|�dS|jdvrtd��}|�J�dS||jdkr|jddf|_dS|j�d��|df|_|���t d|jd�d|�����)Nr r���utf-16be�utf-16ler�rzEncoding changed from z to )r�r�r�r�rVr�r)rJ� newEncodings r�changeEncodingz$HTMLBinaryInputStream.changeEncodings���� ��#�y�0�0�0�0�$�[�1�1� � � � �F� � �7� 7� 7�(��1�1�K��*�*�*�*�*� �D�-�a�0� 0� 0�!%�!2�1�!5�y� A�D� � � � �N� � �� "� "� "�!,�i� 8�D� � �J�J�L�L�L�#�#��HY�Z[�H\�H\�H\�^i�^i�$j�k�k� krc � �tjdtjdtjdtjdtjdi}|j�d��}t|t��sJ�|� |dd���}d}|s8|� |��}d}|s|� |dd ���}d }|r)|j� |��t|��S|j� d ��dS) z�Attempts to detect at BOM at the start of the stream. If an encoding can be determined from the BOM return the name of the encoding otherwise return Noner�rrzutf-32lezutf-32be�N�r�r) �codecs�BOM_UTF8� BOM_UTF16_LE� BOM_UTF16_BE� BOM_UTF32_LE� BOM_UTF32_BEr�r\rvr[�getrVr�)rJ�bomDict�stringr�rVs rr�zHTMLBinaryInputStream.detectBOMs �� �O�W� � ��V�-@�*� � ��V�-@�*� ����$�$�Q�'�'���&�%�(�(�(�(�(��;�;�v�b�q�b�z�*�*����� ��{�{�6�*�*�H��D�� �"�;�;�v�b�q�b�z�2�2���� � � �N� � �� %� %� %�!�(�+�+� +� �N� � �� "� "� "��4rc� �|j�|j��}t|t��sJ�t |��}|j�d��|���}|�|jdvrtd��}|S)z9Report the encoding declared by the meta element rNrr�) r�r\r�rvr[�EncodingParserrV� getEncodingr�r�)rJrH�parserr�s rr�z(HTMLBinaryInputStream.detectEncodingMeta3s�����$�$�T�%6�7�7���&�%�(�(�(�(�(���'�'�� ����A�����%�%�'�'�� � �H�M�5M�$M�$M�%�g�.�.�H��r)NNNNr�T)T) rmrnrorprKr�r�r�rr�r�r_rrr~r~zs���������KO�CG�=A�(�(�(�(�T+�+�+����&<;�<;�<;�<;�|l�l�l� � � �D � � � � rr~c��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z e e e ��Z d �Ze e��Zefd �Zd �Zd �Zd�ZdS)� EncodingBytesz�String-like object with an associated position and various extra methods If the position is ever greater than the string length then an exception is raisedc��t|t��sJ�t�||�����Sr�)rvr[�__new__�lower�rJ�values rrzEncodingBytes.__new__Fs4���%��'�'�'�'�'��}�}�T�5�;�;�=�=�1�1�1rc��d|_dS)Nr")r�rs rrKzEncodingBytes.__init__Js ������rc��|Sr�r_ras r�__iter__zEncodingBytes.__iter__Ns��� rc��|jdzx}|_|t|��krt�|dkrt�|||dz�S)Nr r�r�rN� StopIterationr|�rJ�ps r�__next__zEncodingBytes.__next__QsJ��!�^�a�/�/��D�N� ��D� � �>�>�� � ��U�U��O��A�a�!�e�G�}�rc�*�|���Sr�)r$ras r�nextzEncodingBytes.nextYs���}�}���rc��|j}|t|��krt�|dkrt�|dz x|_}|||dz�SrMr r"s r�previouszEncodingBytes.previous]sN�� �N�� ��D� � �>�>�� � ��U�U��O���U�"�����A�a�!�e�G�}�rc�R�|jt|��krt�||_dSr��r�rNr!)rJrIs r� setPositionzEncodingBytes.setPositionfs&�� �>�S��Y�Y� &� &�� �!����rc�h�|jt|��krt�|jdkr|jSdS)Nrr*ras r� getPositionzEncodingBytes.getPositionks5�� �>�S��Y�Y� &� &�� � �>�Q� � ��>� !��4rc�0�||j|jdz�S�Nr )rIras r�getCurrentBytezEncodingBytes.getCurrentByteus���D�M�$�-�!�"3�3�4�4rc��|j}|t|��kr2|||dz�}||vr ||_|S|dz }|t|��k�2||_dS)zSkip past a list of charactersr N�rIrNr��rJr�r#r�s rr�zEncodingBytes.skipzsf�� �M���#�d�)�)�m�m��Q�q�1�u�W� �A���~�~�!"����� ��F�A� �#�d�)�)�m�m� ����trc��|j}|t|��kr2|||dz�}||vr ||_|S|dz }|t|��k�2||_dSr/r2r3s r� skipUntilzEncodingBytes.skipUntil�sf�� �M���#�d�)�)�m�m��Q�q�1�u�W� �A��E�z�z�!"����� ��F�A� �#�d�)�)�m�m� ����trc�z�|�||j��}|r|xjt|��z c_|S)z�Look for a sequence of bytes at the start of a string. If the bytes are found return True and advance the position to the byte after the match. Otherwise return False and leave the position alone)r�rIrN)rJr[rhs r� matchByteszEncodingBytes.matchBytes�s<���_�_�U�D�M� 2� 2�� � (� �M�M�S��Z�Z� '�M�M�� rc�� |�||j��t|��zdz |_n#t$rt �wxYwdS)z�Look for the next sequence of bytes matching a given sequence. If a match is found advance the position to the last byte of the matchr T)�indexrIrNr�� ValueErrorr!rZs r�jumpTozEncodingBytes.jumpTo�sV�� �!�Z�Z��t�}�=�=��E� � �J�Q�N�D�N�N��� � � �� � �����ts �36�AN)rmrnrorprrKrr$r&r(r+r-�propertyrIr0� currentByte�spaceCharactersBytesr�r5r7r;r_rrrrBs ��������2�2�2����������������"�"�"� ����x� �[�1�1�H�5�5�5��(�>�*�*�K�-� � � � � � � ��������rrc�H�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z d �Z d S) rz?Mini parser for detecting character encoding from meta elementsc�<�t|��|_d|_dS)z3string - the data to work on for encoding detectionN)rrdr��rJrds rrKzEncodingParser.__init__�s��!�$�'�'�� ��� � � rc��d|jvrdSd|jfd|jfd|jfd|jfd|jfd|jff}|jD]w}d} |j�d��n#t$rYnKwxYw|D]?\}}|j�|��r |��}n#t$rd}YnwxYw�@|sn�x|j S) Ns�rdr;ras rrCzEncodingParser.handleComment�s���y����'�'�'rc���|jjtvrdSd}d} |���}|�dS|ddkr|ddk}|r |� ||_dSn�|ddkr#|d}t |��}|� ||_dSnb|ddkrVt t|d����}|���}|�t |��}|� |r ||_dS|}��) NTFrs http-equivr s content-type�charsetscontent) rdr=r>� getAttributer�r��ContentAttrParserr�parse)rJ� hasPragma�pendingEncoding�attr�tentativeEncoding�codec� contentParsers rrDzEncodingParser.handleMeta�s+�� �9� �(<� <� <��4�� ��� 8��$�$�&�&�D��|��t���7�m�+�+� $�Q��?� :�I� �%�_�%@�(7�� �$�u���!�W� �*�*�(,�Q��%�*�+<�=�=�E��(�(-�� �$�u�)��!�W� �*�*�$5�m�D��G�6L�6L�$M�$M�M�(5�(;�(;�(=�(=�%�(�4� .�/@� A� A�� �,�(�8�05�� �',�u�27��7 8rc�,�|�d��S)NF)�handlePossibleTagras rrGz%EncodingParser.handlePossibleStartTag�s���%�%�e�,�,�,rc�T�t|j��|�d��S)NT)r&rdrZras rrEz#EncodingParser.handlePossibleEndTag�s#�� �T�Y�����%�%�d�+�+�+rc�J�|j}|jtvr,|r(|���|���dS|�t ��}|dkr|���n,|���}|�|���}|�dS)NTr!)rdr=�asciiLettersBytesr(rFr5�spacesAngleBracketsrP)rJ�endTagrdr�rUs rrZz EncodingParser.handlePossibleTag�s����y�� � �#4� 4� 4�� #�� � ����� � �"�"�"��4� �N�N�.� /� /�� ��9�9� �M�M�O�O�O�O��$�$�&�&�D��"��(�(�*�*���"��trc�6�|j�d��S)Nr rMras rrFzEncodingParser.handleOthers���y����%�%�%rc��|j}|�ttdg��z��}|�t |��dksJ�|dvrdSg}g} |dkr|rn�|tvr|���}nu|dvrd�|��dfS|t vr(|�|�����n|�dS|�|��t|��}��|dkr+|� ��d�|��dfSt|��|���}|d vr�|} t|��}||kr9t|��d�|��d�|��fS|t vr(|�|�����n|�|����|d krd�|��dfS|t vr(|�|�����n|�dS|�|�� t|��}|tvr*d�|��d�|��fS|t vr(|�|�����n|�dS|�|����) z_Return a name,value pair for the next attribute in the stream, if one is found, or None�/Nr )r NT�=)rbr r)�'�"r ) rdr�r>� frozensetrNrf�asciiUppercaseBytesrcrr&r(r^)rJrdr��attrName� attrValue� quoteChars rrPzEncodingParser.getAttributes����y�� �I�I�*�Y��v�->�->�>� ?� ?���y�C��F�F�a�K�K�K�'� � � � ��4���� � ��D�y�y�X�y���*�*�*��I�I�K�K����l�"�"��x�x��)�)�3�.�.��)�)�)������� � �*�*�*�*����t�����"�"�"��T� � �A�! �$ ��9�9� �M�M�O�O�O��8�8�H�%�%�s�*� *� �T� � � � �I�I�K�K�� � � � ��I� (���J�J��� �>�>���J�J�J��8�8�H�-�-�s�x�x� �/B�/B�B�B��-�-�-��$�$�Q�W�W�Y�Y�/�/�/�/��$�$�Q�'�'�'� (��$�Y�Y��8�8�H�%�%�s�*� *� �%� %� %� � � �Q�W�W�Y�Y� '� '� '� '� �Y��4� � � �Q� � � � $��T� � �A��'�'�'��x�x��)�)�3�8�8�I�+>�+>�>�>��)�)�)�� � ������+�+�+�+����t�� � ��#�#�#� $rN) rmrnrorprKrrCrDrGrErZrFrPr_rrrr�s�������I�I���� ���<(�(�(�"8�"8�"8�H-�-�-�,�,�,����.&�&�&�J$�J$�J$�J$�J$rrc��eZdZd�Zd�ZdS)rQc�B�t|t��sJ�||_dSr�)rvr[rdrAs rrKzContentAttrParser.__init__as#���$��&�&�&�&�&��� � � rc��� |j�d��|jxjdz c_|j���|jjdksdS|jxjdz c_|j���|jjdvrb|jj}|jxjdz c_|jj}|j�|��r|j||jj�SdS|jj} |j�t ��|j||jj�S#t$r|j|d�cYSwxYw#t$rYdSwxYw)NrOr rc)rerd)rdr;rIr�r=r5r>r!)rJ� quoteMark� oldPositions rrRzContentAttrParser.parsees��� � �I� � �Z� (� (� (� �I� � �!� #� � � �I�N�N� � � ��9�(�D�0�0��t� �I� � �!� #� � � �I�N�N� � � ��y�$� �4�4� �I�1� �� �"�"�a�'�"�"�"�i�0� ��9�#�#�I�.�.� ��9�[���1C�%C�D�D��4�#�i�0� �3��I�'�'�(<�=�=�=��9�[���1C�%C�D�D��$�3�3�3��9�[�\�\�2�2�2�2�3������ � � ��4�4� ���s=�AE�BE�: E�7D?�?E�E�E�E� E,�+E,N)rmrnrorKrRr_rrrQrQ`s2�������������rrQc���t|t��r( |�d��}n#t$rYdSwxYw|�& t j|��S#t $rYdSwxYwdS)z{Return the python codec name corresponding to an encoding or None if the string doesn't correspond to a valid encoding.rN)rvr[�decode�UnicodeDecodeErrorr �lookup�AttributeError)r�s rr�r��s����(�E�"�"�� ����w�/�/�H�H��!� � � ��4�4� ������ ��&�x�0�0� 0��� � � ��4�4� �����ts�-� ;�;�A� A#�"A#)0� __future__rrr�pip._vendor.sixr�pip._vendor.six.movesrrrr��ior r � pip._vendorr � constantsr rrrrr�rrfr>r]rgr^�invalid_unicode_no_surrogater�r�r��evalr�r��ascii_punctuation_rer��objectrEr�r}r~r[rrrQr�r_rr�rse��B�B�B�B�B�B�B�B�B�B�%�%�%�%�%�%�5�5�5�5�5�5�5�5� � � � � � � � � � � � � � � � �$�$�$�$�$�$�I�I�I�I�I�I�I�I�I�I�I�I�(�(�(�(�(�(�������!�y�!S�!S�?�!S�!S�!S�T�T���I�M�M� �M�M�M�N�N���i� Q� Q�.� Q� Q� Q�R�R��*�Y�Y��d�|�-D�-D�D�� j�� �"� B� (�� +�s� 2� 2�7S�7Y�7Y�Z]�7^�7^�bc�7c�7c�7c� c�#���$@��"��$E�$(�D�)<�$=�$=�%>�$'�%(�)�)���$���$@�A�A��2�2�2��"�r�z�"m�n�n����G�G�G�G�G�V�G�G�G�T7�7�7�.c<�c<�c<�c<�c<�V�c<�c<�c<�LE�E�E�E�E�2�E�E�E�P_�_�_�_�_�E�_�_�_�Dy$�y$�y$�y$�y$�V�y$�y$�y$�x$�$�$�$�$��$�$�$�N����r