§
     	Êj”j  ã                  ó>  — d dl mZ d dlZd dlmZ d dlmZmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZmZmZ ddlmZmZmZ d	d
lmZmZmZ g d¢ZdZd„  edd¦  «        D ¦   «         Z G d„ de¦  «        Zd,d„Zd-d „Z  G d!„ d"e¦  «        Z!d.d&„Z" G d'„ d(e¦  «        Z#d/d+„Z$dS )0é    )ÚannotationsN)ÚSequence)ÚAnyÚLiteralé   )ÚDuplicateParameterÚInvalidParameterNameÚInvalidParameterValueÚNegotiationErrorÚPayloadTooBigÚProtocolError)ÚCONTÚCTRL_OPCODESÚFrame)Ú	BytesLikeÚExtensionNameÚExtensionParameteré   )ÚClientExtensionFactoryÚ	ExtensionÚServerExtensionFactory)ÚPerMessageDeflateÚClientPerMessageDeflateFactoryÚ enable_client_permessage_deflateÚServerPerMessageDeflateFactoryÚ enable_server_permessage_deflates     ÿÿc                ó,   — g | ]}t          |¦  «        ‘ŒS © )Ústr)Ú.0Úbitss     úXC:\Projects\Muse2API\.venv\Lib\site-packages\websockets/extensions/permessage_deflate.pyú
<listcomp>r#      s   € Ð>Ð>Ð>¨�3˜t™9œ9Ð>Ð>Ð>ó    é   é   c                  óR   — e Zd ZdZ ed¦  «        Z	 ddd„Zdd„Zddœdd„Zdd„Z	dS )r   z)
    Per-Message Deflate extension.

    úpermessage-deflateNÚremote_no_context_takeoverÚboolÚlocal_no_context_takeoverÚremote_max_window_bitsÚintÚlocal_max_window_bitsÚcompress_settingsúdict[Any, Any] | NoneÚreturnÚNonec                ól  — |€i }|dv sJ ‚|dv sJ ‚d|cxk    rdk    sn J ‚d|cxk    rdk    sn J ‚d|vsJ ‚|| _         || _        || _        || _        || _        | j         s t          j        | j         ¬¦  «        | _        | j        s#t          j        d	d| j         i| j        ¤Ž| _	        d| _
        dS )
z?
        Configure the Per-Message Deflate extension.

        N)FTr%   é   é	   Úwbits©r6   Fr   )r)   r+   r,   r.   r/   ÚzlibÚdecompressobjÚdecoderÚcompressobjÚencoderÚdecode_cont_data)Úselfr)   r+   r,   r.   r/   s         r"   Ú__init__zPerMessageDeflate.__init__)   s.  € ð Ð$Ø "Ðà)¨]Ð:Ð:Ð:Ð:Ø(¨MÐ9Ð9Ð9Ð9ØÐ*Ð0Ð0Ò0Ð0¨bÒ0Ð0Ð0Ð0Ð0Ð0ð Ð)Ð/Ð/Ò/Ð/¨RÒ/Ð/Ð/Ð/Ð/Ð/ØÐ/Ð/Ð/Ð/Ð/à*DˆÔ'Ø)BˆÔ&Ø&<ˆÔ#Ø%:ˆÔ"Ø!2ˆÔàÔ.ð 	RÝÔ-°TÔ5PÐ4PÐQÑQÔQˆDŒLàÔ-ð 	ÝÔ+ð ð ØÔ1Ð1ðàÔ(ðð ˆDŒLð !&ˆÔÐÐr$   r   c           	     óH   — d| j         › d| j        › d| j        › d| j        › d�	S )Nz-PerMessageDeflate(remote_no_context_takeover=z, local_no_context_takeover=z, remote_max_window_bits=z, local_max_window_bits=ú))r)   r+   r,   r.   ©r>   s    r"   Ú__repr__zPerMessageDeflate.__repr__V   s_   € ðCØ*.Ô*IðCð Cà)-Ô)GðCð Cð '+Ô&AðCð Cð &*Ô%?ð	Cð Cð Cð	
r$   )Úmax_sizeÚframer   rD   ú
int | Nonec               óv  — |j         t          v r|S |j         t          u r.| j        s|S |j        rt          d¦  «        ‚|j        rd| _        n>|j        s|S |j        sd| _        | j        r t          j	        | j
         ¬¦  «        | _        |j        r5t          |j        ¦  «        dk     rt          |j        ¦  «        t          z   }n|j        }|€dn|}	 | j                             ||¦  «        }| j        j        rt%          d|¦  «        ‚|j        rHt          |j        ¦  «        dk    r0| j                             t          d¦  «        rt%          d|¦  «        ‚n'# t          j        $ r}t          d	¦  «        |‚d}~ww xY w|j        r	| j        r| `t)          |j         ||j        d|j        |j        ¦  «        S )
z,
        Decode an incoming frame.

        z"RSV1 bit set in continuation frameFTr7   iü  Nr   r   zdecompression failed)Úopcoder   r   r=   Úrsv1r   Úfinr)   r8   r9   r,   r:   ÚlenÚdataÚbytesÚ_EMPTY_UNCOMPRESSED_BLOCKÚ
decompressÚunconsumed_tailr   Úerrorr   Úrsv2Úrsv3)r>   rE   rD   rL   Ú
max_lengthÚexcs         r"   ÚdecodezPerMessageDeflate.decode_   sù  € ð Œ<�<Ð'Ð'ØˆLð
 Œ<�4ÐÐØÔ(ð Ø�ØŒzð JÝ#Ð$HÑIÔIÐIØŒyð .Ø(-�Ô%øð ”:ð Ø�Ø”9ð -Ø(,�Ô%ð Ô.ð VÝ#Ô1¸Ô9TÐ8TÐUÑUÔU�”ð Œ9ð 	�˜UœZ™œ¨4Ò/Ð/õ ˜œÑ$Ô$Õ'@Ñ@ˆDˆDà”:ˆDØ"Ð*�Q�Q°ˆ
ð		AØ”<×*Ò*¨4°Ñ<Ô<ˆDØŒ|Ô+ð 4Ý# D¨(Ñ3Ô3Ð3ØŒyð 8�S ¤™_œ_°Ò4Ð4à”<×*Ò*Õ+DÀaÑHÔHð 8Ý'¨¨hÑ7Ô7Ð7øøÝŒzð 	Að 	Að 	AÝÐ 6Ñ7Ô7¸SÐ@øøøøð	Aøøøð Œ9ð 	˜Ô8ð 	Ø�åØŒLØØŒIàØŒJØŒJñ
ô 
ð 	
s   ÃBE ÅF Å+E;Å;F c                óD  — |j         t          v r|S |j         t          ur*| j        r#t	          j        dd| j         i| j        ¤Ž| _        | j         	                    |j
        ¦  «        | j                             t          j        ¦  «        z   }|j        rJ|dd…         t          k    sJ ‚t          |¦  «        dk     r|dd…         }nt!          |¦  «        dd…         }|j        r	| j        r| `t#          |j         ||j        |j         t          u|j        |j        ¦  «        S )z,
        Encode an outgoing frame.

        r6   éüÿÿÿNi   r   )rH   r   r   r+   r8   r;   r.   r/   r<   ÚcompressrL   ÚflushÚZ_SYNC_FLUSHrJ   rN   rK   Ú
memoryviewr   rR   rS   )r>   rE   rL   s      r"   ÚencodezPerMessageDeflate.encodeª   s=  € ð Œ<�<Ð'Ð'ØˆLð
 Œ<�tÐ#Ð#àÔ-ð Ý#Ô/ð  ð  ØÔ5Ð5ð àÔ,ð ð  �”ð Œ|×$Ò$ U¤ZÑ0Ô0°4´<×3EÒ3EÅdÔFWÑ3XÔ3XÑXˆØŒ9ð 	-ð ˜˜˜”9Õ 9Ò9Ð9Ð9Ð9å�4‰yŒy˜4ÒÐØ˜C˜R˜C”y��å! $Ñ'Ô'¨¨¨Ô,�ð Œ9ð 	˜Ô7ð 	Ø�åØŒLØØŒIàŒL¥Ð$ØŒJØŒJñ
ô 
ð 	
r$   ©N)r)   r*   r+   r*   r,   r-   r.   r-   r/   r0   r1   r2   )r1   r   )rE   r   rD   rF   r1   r   )rE   r   r1   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Únamer?   rC   rV   r]   r   r$   r"   r   r   !   s¡   € € € € € ðð ð
 ˆ=Ð-Ñ.Ô.€Dð 48ð)&ð )&ð )&ð )&ð )&ðZ
ð 
ð 
ð 
ð  $ð	I
ð I
ð I
ð I
ð I
ð I
ðV-
ð -
ð -
ð -
ð -
ð -
r$   r   Úserver_no_context_takeoverr*   Úclient_no_context_takeoverÚserver_max_window_bitsrF   Úclient_max_window_bitsúint | Literal[True] | Noner1   úlist[ExtensionParameter]c                ó2  — g }| r|                      d¦  «         |r|                      d¦  «         |r$|                      dt          |¦  «        f¦  «         |du r|                      d¦  «         n&|r$|                      dt          |¦  «        f¦  «         |S )zS
    Build a list of ``(name, value)`` pairs for some compression parameters.

    )rd   N)re   Nrf   T)rg   Nrg   )Úappendr   )rd   re   rf   rg   Úparamss        r"   Ú_build_parametersrm   Ú   s¹   € ð (*€FØ!ð <Ø�ŠÐ:Ñ;Ô;Ð;Ø!ð <Ø�ŠÐ:Ñ;Ô;Ð;Øð OØ�ŠÐ/µÐ5KÑ1LÔ1LÐMÑNÔNÐNØ Ð%Ð%Ø�ŠÐ6Ñ7Ô7Ð7Ð7Ø	ð OØ�ŠÐ/µÐ5KÑ1LÔ1LÐMÑNÔNÐNØ€Mr$   rl   úSequence[ExtensionParameter]Ú	is_serverú9tuple[bool, bool, int | None, int | Literal[True] | None]c               ó  — d}d}d}d}| D ]ò\  }}|dk    r&|rt          |¦  «        ‚|€d}Œ!t          ||¦  «        ‚|dk    r&|rt          |¦  «        ‚|€d}ŒMt          ||¦  «        ‚|dk    r:|�t          |¦  «        ‚|t          v rt          |¦  «        }Œ�t          ||¦  «        ‚|dk    rA|�t          |¦  «        ‚|r|€d}Œ»|t          v rt          |¦  «        }ŒÔt          ||¦  «        ‚t	          |¦  «        ‚||||fS )zã
    Extract compression parameters from a list of ``(name, value)`` pairs.

    If ``is_server`` is :obj:`True`, ``client_max_window_bits`` may be
    provided without a value. This is only allowed in handshake requests.

    FNrd   Tre   rf   rg   )r   r
   Ú_MAX_WINDOW_BITS_VALUESr-   r	   )rl   ro   rd   re   rf   rg   rc   Úvalues           r"   Ú_extract_parametersrt   ò   s‚  € ð (-ÐØ',ÐØ)-ÐØ9=Ðàð $-ð $-‰ˆˆeØÐ/Ò/Ð/Ø)ð /Ý(¨Ñ.Ô.Ð.Øˆ}Ø-1Ð*Ð*å+¨D°%Ñ8Ô8Ð8àÐ1Ò1Ð1Ø)ð /Ý(¨Ñ.Ô.Ð.Øˆ}Ø-1Ð*Ð*å+¨D°%Ñ8Ô8Ð8àÐ-Ò-Ð-Ø%Ð1Ý(¨Ñ.Ô.Ð.ØÕ/Ð/Ð/Ý),¨U©¬Ð&Ð&å+¨D°%Ñ8Ô8Ð8àÐ-Ò-Ð-Ø%Ð1Ý(¨Ñ.Ô.Ð.Øð 9˜U˜]Ø)-Ð&Ð&ØÕ1Ð1Ð1Ý),¨U©¬Ð&Ð&å+¨D°%Ñ8Ô8Ð8õ ' tÑ,Ô,Ð,ð 	#Ø"ØØð	ð r$   c                  óL   — e Zd ZdZ ed¦  «        Z	 	 	 	 	 ddd„Zdd„Zdd„ZdS )r   aS  
    Client-side extension factory for the Per-Message Deflate extension.

    Parameters behave as described in `section 7.1 of RFC 7692`_.

    .. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

    Set them to :obj:`True` to include them in the negotiation offer without a
    value or to an integer value to include them with this value.

    Args:
        server_no_context_takeover: Prevent server from using context takeover.
        client_no_context_takeover: Prevent client from using context takeover.
        server_max_window_bits: Maximum size of the server's LZ77 sliding window
            in bits, between 8 and 15.
        client_max_window_bits: Maximum size of the client's LZ77 sliding window
            in bits, between 9 and 15, or :obj:`True` to indicate support without
            setting a limit. 8 isn't supported due to a `limitation of zlib`_.
        compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
            excluding ``wbits``.

    .. _limitation of zlib: https://github.com/madler/zlib/issues/171

    r(   FNTrd   r*   re   rf   rF   rg   rh   r/   údict[str, Any] | Noner1   r2   c                óþ   — |�d|cxk    rdk    sn t          d¦  «        ‚|�"|du sd|cxk    rdk    sn t          d¦  «        ‚|�d|v rt          d	¦  «        ‚|| _        || _        || _        || _        || _        dS )
úG
        Configure the Per-Message Deflate extension factory.

        Nr%   r4   z/server_max_window_bits must be between 8 and 15Tr5   z/client_max_window_bits must be between 9 and 15r6   zLcompress_settings must not include wbits, set client_max_window_bits instead)Ú
ValueErrorrd   re   rf   rg   r/   )r>   rd   re   rf   rg   r/   s         r"   r?   z'ClientPerMessageDeflateFactory.__init__K  sÒ   € ð 'Ð.°!Ð7MÐ2SÐ2SÒ2SÐ2SÐQSÒ2SÐ2SÐ2SÐ2SÝÐNÑOÔOÐOà"Ð*Ø%¨Ð-Ð-ØÐ*Ð0Ð0Ò0Ð0¨bÒ0Ð0Ð0Ð0åÐNÑOÔOÐOØÐ(¨WÐ8IÐ-IÐ-IÝð5ñô ð ð
 +EˆÔ'Ø*DˆÔ'Ø&<ˆÔ#Ø&<ˆÔ#Ø!2ˆÔÐÐr$   rn   c                óN   — t          | j        | j        | j        | j        ¦  «        S )z,
        Build request parameters.

        )rm   rd   re   rf   rg   rB   s    r"   Úget_request_paramsz1ClientPerMessageDeflateFactory.get_request_paramsk  s.   € õ
 !ØÔ+ØÔ+ØÔ'ØÔ'ñ	
ô 
ð 	
r$   rl   Úaccepted_extensionsúSequence[Extension]r   c                ó0  ‡ — t          ˆ fd„|D ¦   «         ¦  «        rt          d‰ j        › �¦  «        ‚t          |d¬¦  «        \  }}}}‰ j        r|st          d¦  «        ‚‰ j        r|sd}‰ j        €n+|€t          d¦  «        ‚|‰ j        k    rt          d	¦  «        ‚‰ j        €|�t          d
¦  «        ‚n.‰ j        du rn$|€‰ j        }n|‰ j        k    rt          d¦  «        ‚|dk    rt          d¦  «        ‚t          |||pd|pd‰ j	        ¦  «        S )zV
        Process response parameters.

        Return an extension instance.

        c              3  ó8   •K  — | ]}|j         ‰j         k    V — Œd S r^   ©rc   ©r    Úotherr>   s     €r"   ú	<genexpr>zIClientPerMessageDeflateFactory.process_response_params.<locals>.<genexpr>‚  ó,   øè è € ÐHÐH¨5ˆuŒz˜TœYÒ&ÐHÐHÐHÐHÐHÐHr$   zreceived duplicate F©ro   z#expected server_no_context_takeoverTNzexpected server_max_window_bitsz"unsupported server_max_window_bitsz!unexpected client_max_window_bitsz"unsupported client_max_window_bitsr%   z-unsupported client_max_window_bits = 8, use 9r4   )
Úanyr   rc   rt   rd   re   rf   rg   r   r/   ©r>   rl   r|   rd   re   rf   rg   s   `      r"   Úprocess_response_paramsz6ClientPerMessageDeflateFactory.process_response_paramsw  sœ  ø€ õ ÐHÐHÐHÐHÐ4GÐHÑHÔHÑHÔHð 	FÝ"Ð#D¸¼Ð#DÐ#DÑEÔEÐEõ   °%Ð8Ñ8Ô8ñ	
Ø&Ø&Ø"Ø"ð Ô*ð 	NØ-ð NÝ&Ð'LÑMÔMÐMð Ô*ð 	2Ø-ð 2Ø-1Ð*ð Ô&Ð.Øð &Ð-Ý&Ð'HÑIÔIÐIØ'¨$Ô*EÒEÐEÝ&Ð'KÑLÔLÐLð Ô&Ð.Ø%Ð1Ý&Ð'JÑKÔKÐKð 2ð Ô(¨DÐ0Ð0Øð &Ð-Ø)-Ô)DÐ&Ð&Ø'¨$Ô*EÒEÐEÝ&Ð'KÑLÔLÐLà! QÒ&Ð&Ý"Ð#RÑSÔSÐSå Ø&Ø&Ø"Ð( bØ"Ð( bØÔ"ñ
ô 
ð 	
r$   )FFNTN)rd   r*   re   r*   rf   rF   rg   rh   r/   rv   r1   r2   )r1   rn   )rl   rn   r|   r}   r1   r   )	r_   r`   ra   rb   r   rc   r?   r{   rˆ   r   r$   r"   r   r   /  s‰   € € € € € ðð ð2 ˆ=Ð-Ñ.Ô.€Dð ,1Ø+0Ø-1Ø=AØ37ð3ð 3ð 3ð 3ð 3ð@

ð 

ð 

ð 

ðj
ð j
ð j
ð j
ð j
ð j
r$   r   Ú
extensionsú'Sequence[ClientExtensionFactory] | Noneú Sequence[ClientExtensionFactory]c                ó†   — | €g } t          d„ | D ¦   «         ¦  «        s#t          | ¦  «        t          ddi¬¦  «        gz   } | S )zÃ
    Enable Per-Message Deflate with default settings in client extensions.

    If the extension is already present, perhaps with non-default settings,
    the configuration isn't changed.

    Nc              3  ó@   K  — | ]}|j         t          j         k    V — Œd S r^   )rc   r   )r    Úextension_factorys     r"   rƒ   z3enable_client_permessage_deflate.<locals>.<genexpr>ð  sB   è è € ð ð àð 	ÔÕ"@Ô"EÒEðð ð ð ð ð r$   ÚmemLevelé   )r/   )r†   Úlistr   ©r‰   s    r"   r   r   ä  sw   € ð ÐØˆ
Ýð ð à!+ðñ ô ñ ô ð 
õ ˜*Ñ%Ô%Ý*Ø#-¨q /ðñ ô ð)
ñ 
ˆ
ð
 Ðr$   c                  óF   — e Zd ZdZ ed¦  «        Z	 	 	 	 	 	 ddd„Zdd„ZdS )r   a$  
    Server-side extension factory for the Per-Message Deflate extension.

    Parameters behave as described in `section 7.1 of RFC 7692`_.

    .. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

    Set them to :obj:`True` to include them in the negotiation offer without a
    value or to an integer value to include them with this value.

    Args:
        server_no_context_takeover: Prevent server from using context takeover.
        client_no_context_takeover: Prevent client from using context takeover.
        server_max_window_bits: Maximum size of the server's LZ77 sliding window
            in bits, between 9 and 15. 8 isn't supported due to a `limitation of
            zlib`_.
        client_max_window_bits: Maximum size of the client's LZ77 sliding window
            in bits, between 8 and 15.
        compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
            excluding ``wbits``.
        require_client_max_window_bits: Do not enable compression at all if
            client doesn't advertise support for ``client_max_window_bits``;
            the default behavior is to enable compression without enforcing
            ``client_max_window_bits``.

    .. _limitation of zlib: https://github.com/madler/zlib/issues/171

    r(   FNrd   r*   re   rf   rF   rg   r/   rv   Úrequire_client_max_window_bitsr1   r2   c                ó*  — |�d|cxk    rdk    sn t          d¦  «        ‚|�d|cxk    rdk    sn t          d¦  «        ‚|�d|v rt          d¦  «        ‚|€|rt          d	¦  «        ‚|| _        || _        || _        || _        || _        || _        dS )
rx   Nr5   r4   z/server_max_window_bits must be between 9 and 15r%   z/client_max_window_bits must be between 8 and 15r6   zLcompress_settings must not include wbits, set server_max_window_bits insteadzVrequire_client_max_window_bits is enabled, but client_max_window_bits isn't configured)ry   rd   re   rf   rg   r/   r”   )r>   rd   re   rf   rg   r/   r”   s          r"   r?   z'ServerPerMessageDeflateFactory.__init__  sô   € ð 'Ð.°!Ð7MÐ2SÐ2SÒ2SÐ2SÐQSÒ2SÐ2SÐ2SÐ2SÝÐNÑOÔOÐOØ&Ð.°!Ð7MÐ2SÐ2SÒ2SÐ2SÐQSÒ2SÐ2SÐ2SÐ2SÝÐNÑOÔOÐOØÐ(¨WÐ8IÐ-IÐ-IÝð5ñô ð ð "Ð)Ð.LÐ)Ýð>ñô ð ð
 +EˆÔ'Ø*DˆÔ'Ø&<ˆÔ#Ø&<ˆÔ#Ø!2ˆÔØ.LˆÔ+Ð+Ð+r$   rl   rn   r|   r}   ú2tuple[list[ExtensionParameter], PerMessageDeflate]c                ó"  ‡ — t          ˆ fd„|D ¦   «         ¦  «        rt          d‰ j        › �¦  «        ‚t          |d¬¦  «        \  }}}}‰ j        r|sd}‰ j        r|sd}‰ j        €n|€‰ j        }n|‰ j        k    r‰ j        }|dk    rt          d¦  «        ‚‰ j        €|du r‰ j        }n7|€‰ j        rt          d¦  «        ‚n|du r‰ j        }n‰ j        |k     r‰ j        }t          ||||¦  «        t          |||pd	|pd	‰ j        ¦  «        fS )
zi
        Process request parameters.

        Return response params and an extension instance.

        c              3  ó8   •K  — | ]}|j         ‰j         k    V — Œd S r^   r€   r�   s     €r"   rƒ   zHServerPerMessageDeflateFactory.process_request_params.<locals>.<genexpr>J  r„   r$   zskipped duplicate Tr…   Nr%   z-unsupported server_max_window_bits = 8, use 9zrequired client_max_window_bitsr4   )r†   r   rc   rt   rd   re   rf   rg   r”   rm   r   r/   r‡   s   `      r"   Úprocess_request_paramsz5ServerPerMessageDeflateFactory.process_request_params?  s¹  ø€ õ ÐHÐHÐHÐHÐ4GÐHÑHÔHÑHÔHð 	EÝ"Ð#C¸¼	Ð#CÐ#CÑDÔDÐDõ   °$Ð7Ñ7Ô7ñ	
Ø&Ø&Ø"Ø"ð" Ô*ð 	2Ø-ð 2Ø-1Ð*ð Ô*ð 	2Ø-ð 2Ø-1Ð*ð Ô&Ð.Øð &Ð-Ø)-Ô)DÐ&Ð&Ø'¨$Ô*EÒEÐEØ)-Ô)DÐ&à! QÒ&Ð&Ý"Ð#RÑSÔSÐSð Ô&Ð.Ø%¨Ð-Ð-Ø)-Ô)DÐ&øð &Ð-ØÔ6ð NÝ*Ð+LÑMÔMÐMðNà'¨4Ð/Ð/Ø)-Ô)DÐ&Ð&ØÔ,Ð/EÒEÐEØ)-Ô)DÐ&õ Ø*Ø*Ø&Ø&ñ	ô õ Ø*Ø*Ø&Ð,¨"Ø&Ð,¨"ØÔ&ñô ð
ð 	
r$   )FFNNNF)rd   r*   re   r*   rf   rF   rg   rF   r/   rv   r”   r*   r1   r2   )rl   rn   r|   r}   r1   r–   )r_   r`   ra   rb   r   rc   r?   r™   r   r$   r"   r   r   ü  s}   € € € € € ðð ð: ˆ=Ð-Ñ.Ô.€Dð ,1Ø+0Ø-1Ø-1Ø37Ø/4ð!Mð !Mð !Mð !Mð !MðFr
ð r
ð r
ð r
ð r
ð r
r$   r   ú'Sequence[ServerExtensionFactory] | Noneú Sequence[ServerExtensionFactory]c                óŠ   — | €g } t          d„ | D ¦   «         ¦  «        s%t          | ¦  «        t          ddddi¬¦  «        gz   } | S )zÃ
    Enable Per-Message Deflate with default settings in server extensions.

    If the extension is already present, perhaps with non-default settings,
    the configuration isn't changed.

    Nc              3  ó@   K  — | ]}|j         t          j         k    V — Œd S r^   )rc   r   )r    Úext_factorys     r"   rƒ   z3enable_server_permessage_deflate.<locals>.<genexpr>À  sB   è è € ð ð àð 	ÔÕ:Ô?Ò?ðð ð ð ð ð r$   é   r�   r�   )rf   rg   r/   )r†   r‘   r   r’   s    r"   r   r   ´  s}   € ð ÐØˆ
Ýð ð à%ðñ ô ñ ô ð 

õ ˜*Ñ%Ô%Ý*Ø')Ø')Ø#-¨q /ðñ ô ð)
ñ 
ˆ
ð Ðr$   )
rd   r*   re   r*   rf   rF   rg   rh   r1   ri   )rl   rn   ro   r*   r1   rp   )r‰   rŠ   r1   r‹   )r‰   rš   r1   r›   )%Ú
__future__r   r8   Úcollections.abcr   Útypingr   r   Ú
exceptionsr   r	   r
   r   r   r   Úframesr   r   r   r   r   r   Úbaser   r   r   Ú__all__rN   Úrangerr   r   rm   rt   r   r   r   r   r   r$   r"   ú<module>r¨      s#  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kðð ð €ð 0Ð à>Ð>°°°q¸"±´Ð>Ñ>Ô>Ð ðv
ð v
ð v
ð v
ð v
˜	ñ v
ô v
ð v
ðrð ð ð ð0:ð :ð :ð :ðzr
ð r
ð r
ð r
ð r
Ð%;ñ r
ô r
ð r
ðjð ð ð ð0u
ð u
ð u
ð u
ð u
Ð%;ñ u
ô u
ð u
ðpð ð ð ð ð r$   