� c��j%����dZddlZdd�Zdd�ZGd�dej�ZGd�dej �ZGd �d ej�ZGd �d ej�Zd �Z y)a Python 'utf-8-sig' Codec This work similar to UTF-8 with the following changes: * On encoding/writing a UTF-8 encoded BOM will be prepended/written as the first three bytes. * On decoding/reading if the first three bytes are a UTF-8 encoded BOM, these bytes will be skipped. �Nc�l�tjtj||�dzt|�fS�Nr)�codecs�BOM_UTF8� utf_8_encode�len)�input�errorss �,/usr/lib64/python3.12/encodings/utf_8_sig.py�encoder s1�� �O�O�f�1�1�%��@��C� C� ��J� ��c��d}|ddtjk(r|dd}d}tj||d�\}}|||zfS)Nr�T)rr� utf_8_decode)r r �prefix�output�consumeds r �decodersQ�� �F� �R�a�y�F�O�O�#��a�b� �����,�,�U�F�D�A��V�X� �H�V�O� $�$r c�.�eZdZdd�Zdd�Zd�Zd�Zd�Zy) �IncrementalEncoderc�R�tjj||�d|_y�N�)rr�__init__�first��selfr s r rzIncrementalEncoder.__init__s���!�!�*�*�4��8��� r c���|jr;d|_tjtj||j�dzStj||j�dSr)rrrrr )rr �finals r r zIncrementalEncoder.encodesX�� �:�:��D�J��?�?��&�&�u�d�k�k�:�1�=�>� >��&�&�u�d�k�k�:�1�=� =r c�P�tjj|�d|_yr)rr�resetr�rs r r!zIncrementalEncoder.reset's���!�!�'�'��-��� r c��|jS�N�rr"s r �getstatezIncrementalEncoder.getstate+s ���z�z�r c��||_yr$r%�r�states r �setstatezIncrementalEncoder.setstate.s ���� r N��strict)F)�__name__� __module__� __qualname__rr r!r&r*�r r rrs���>���r rc�,�eZdZdd�Zd�Zd�Zd�Zd�Zy)�IncrementalDecoderc�R�tjj||�d|_yr)r�BufferedIncrementalDecoderrrrs r rzIncrementalDecoder.__init__2s���)�)�2�2�4��@��� r c�6�|jrwt|�dkr(tjj |�ryd|_nAd|_|ddtjk(r$tj |dd||�\}}||dzfStj |||�S)Nr��rr)rrrr� startswithr)rr r rrrs r �_buffer_decodez!IncrementalDecoder._buffer_decode6s��� �:�:��5�z�A�~��?�?�-�-�e�4�#�!"�D�J��� ���!�9����/��*�*�5���9�f�e�D�'�V�X�"�H�Q�J�/�/��"�"�5�&�%�8�8r c�P�tjj|�d|_yr)rr4r!rr"s r r!zIncrementalDecoder.resetGs���)�)�/�/��5��� r c�b�tjj|�}|d|jfSr)rr4r&rr(s r r&zIncrementalDecoder.getstateKs+���1�1�:�:�4�@���a��$�*�*�%�%r c�X�tjj||�|d|_yr)rr4r*rr(s r r*zIncrementalDecoder.setstatePs#���)�)�2�2�4��?��1�X�� r Nr+)r-r.r/rr9r!r&r*r0r r r2r21s���9�"�&� r r2c��eZdZd�Zdd�Zy)� StreamWriterc�f�tjj|� |`y#t$rYywxYwr$)rr>r!r �AttributeErrorr"s r r!zStreamWriter.resetV�2�����!�!�$�'� �� ��� � � �� �$� 0�0c�D�tj|_t||�Sr$)rrr )rr r s r r zStreamWriter.encode]s���)�)�� ��e�V�$�$r Nr+)r-r.r/r!r r0r r r>r>Us ���%r r>c��eZdZd�Zdd�Zy)� StreamReaderc�f�tjj|� |`y#t$rYywxYwr$)rrEr!rr@r"s r r!zStreamReader.resetbrArBc�P�t|�dkr tjj|�rOy|ddtjk(r8tj|_tj|dd|�\}}||dzfStj|_tj||�S)Nrr6)rrrr8rr)rr r rrs r rzStreamReader.decodeis��� �u�:��>����)�)�%�0�� �2�A�Y�&�/�/� )� �-�-�D�K�!'�!4�!4�U�1�2�Y�v�!F� �V�X��H�Q�J�'� '��)�)�� ��"�"�5�&�1�1r Nr+)r-r.r/r!rr0r r rErEas ��� 2r rEc �j�tjdtttt t t��S)Nz utf-8-sig)�namer r�incrementalencoder�incrementaldecoder� streamreader� streamwriter)r� CodecInfor rrr2rEr>r0r r � getregentryrOys*�� � � � ���-�-�!�!� �r r+) �__doc__rr rrr4r2r>rErOr0r r �rQsg�����%���2�2��."��:�:�"�H %�6�&�&� %�2�6�&�&�2�0 r