§
    7xÅj/Ë  ã                   ó  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZ d	Zd
ZdZ ej        d¦  «        ZdZdZdZeeefZ defd„Z! G d„ d¦  «        Z" G d„ de"¦  «        Z# G d„ de#¦  «        Z$ G d„ de"¦  «        Z% G d„ de"¦  «        Z& G d„ de"¦  «        Z' G d„ de"¦  «        Z( G d „ d!e'e%¦  «        Z) G d"„ d#e'¦  «        Z* G d$„ d%e(e&¦  «        Z+e$e#e%e)e*e+d&œZ,dS )'aî  Protocol input serializes.

This module contains classes that implement input serialization
for the various AWS protocol types.

These classes essentially take user input, a model object that
represents what the expected input should look like, and it returns
a dictionary that contains the various parts of a request.  A few
high level design decisions:


* Each protocol type maps to a separate class, all inherit from
  ``Serializer``.
* The return value for ``serialize_to_request`` (the main entry
  point) returns a dictionary that represents a request.  This
  will have keys like ``url_path``, ``query_string``, etc.  This
  is done so that it's a) easy to test and b) not tied to a
  particular HTTP library.  See the ``serialize_to_request`` docstring
  for more details.

Unicode
-------

The input to the serializers should be text (str/unicode), not bytes,
with the exception of blob types.  Those are assumed to be binary,
and if a str/unicode type is passed in, it will be encoded as utf-8.
é    N)ÚElementTree)Úvalidate)Ú
formatdate)ÚParamValidationError)Úregister_feature_id)Ú
has_headerÚis_json_value_headerÚparse_to_aware_datetimeÚpercent_encodeÚiso8601z%Y-%m-%dT%H:%M:%SZz%Y-%m-%dT%H:%M:%S.%fZz^[A-Za-z0-9\.\-]+$ÚdefaultÚmillisecondÚlegacyTc                 ó†   — t          |          |¬¦  «        }|r(t          j        ¦   «         }t          j        ||¦  «        }|S )a÷  Create a serializer for the given protocol.
    :param protocol_name: The protocol name to create a serializer for.
    :type protocol_name: str
    :param include_validation: Whether to include parameter validation.
    :type include_validation: bool
    :param timestamp_precision: Timestamp precision level.
        - 'default': Full precision of the provided value (up to
          microseconds) for ISO and Unix timestamps, seconds for RFC
        - 'millisecond': Millisecond precision (ISO/Unix), seconds for RFC
        - 'legacy': Behavior prior to sub-second Unix timestamp support.
          Microseconds for ISO timestamps, seconds for Unix and RFC
    :type timestamp_precision: str
    :return: A serializer instance for the given protocol.
    )Útimestamp_precision)ÚSERIALIZERSr   ÚParamValidatorÚParamValidationDecorator)Úprotocol_nameÚinclude_validationr   Ú
serializerÚ	validators        úCC:\Projects\Historical\venv\Lib\site-packages\botocore/serialize.pyÚcreate_serializerr   O   sQ   € õ( ˜]Ô+Ø/ðñ ô €Jð ð NÝÔ+Ñ-Ô-ˆ	ÝÔ6°yÀ*ÑMÔMˆ
ØÐó    c                   ón   — e Zd ZdZeZdZefd„Zd„ Z	d„ Z
d„ Zd„ Zd„ Zdd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	S )Ú
SerializerÚPOSTúutf-8c                 óJ   — |t           vrt          d|› �¦  «        ‚|| _        d S )Nz=Invalid timestamp precision found while creating serializer: )ÚTIMESTAMP_PRECISION_OPTIONSÚ
ValueErrorÚ_timestamp_precision)Úselfr   s     r   Ú__init__zSerializer.__init__u   s<   € ØÕ&AÐAÐAÝØeÐPcÐeÐeñô ð ð %8ˆÔ!Ð!Ð!r   c                 ó    — t          d¦  «        ‚)aö  Serialize parameters into an HTTP request.

        This method takes user provided parameters and a shape
        model and serializes the parameters to an HTTP request.
        More specifically, this method returns information about
        parts of the HTTP request, it does not enforce a particular
        interface or standard for an HTTP request.  It instead returns
        a dictionary of:

            * 'url_path'
            * 'host_prefix'
            * 'query_string'
            * 'headers'
            * 'body'
            * 'method'

        It is then up to consumers to decide how to map this to a Request
        object of their HTTP library of choice.  Below is an example
        return value::

            {'body': {'Action': 'OperationName',
                      'Bar': 'val2',
                      'Foo': 'val1',
                      'Version': '2014-01-01'},
             'headers': {},
             'method': 'POST',
             'query_string': '',
             'host_prefix': 'value.',
             'url_path': '/'}

        :param parameters: The dictionary input parameters for the
            operation (i.e the user input).
        :param operation_model: The OperationModel object that describes
            the operation.
        Úserialize_to_request©ÚNotImplementedError)r$   Ú
parametersÚoperation_models      r   r'   zSerializer.serialize_to_request|   s   € õH "Ð"8Ñ9Ô9Ð9r   c                 ó    — dd| j         i ddœ}|S )Nú/Ú r   )Úurl_pathÚquery_stringÚmethodÚheadersÚbody)ÚDEFAULT_METHOD)r$   Ú
serializeds     r   Ú_create_default_requestz"Serializer._create_default_request¢   s*   € ð ØØÔ)Øàð
ð 
ˆ
ð Ðr   c                 óÎ   — | j         t          k    r'|j        dz  }|                     d¦  «        d|d›d�z   S |j        dk    rt          }nt
          }|                     |¦  «        S )zEReturn ISO8601 timestamp with precision based on timestamp_precision.éè  z%Y-%m-%dT%H:%M:%Sú.Ú03dÚZr   )r#   ÚTIMESTAMP_PRECISION_MILLISECONDÚmicrosecondÚstrftimeÚISO8601_MICROÚISO8601)r$   ÚvalueÚmillisecondsÚtimestamp_formats       r   Ú_timestamp_iso8601zSerializer._timestamp_iso8601±   s{   € ð Ô$Õ(GÒGÐGØ Ô,°Ñ4ˆLà—’Ð2Ñ3Ô3Ð6M¸,Ð6MÐ6MÐ6MÐ6MÑMðð
 Ô  1Ò$Ð$Ý#0Ð Ð å#*Ð Ø—>’>Ð"2Ñ3Ô3Ð3r   c                 óð   — t          j        |                     ¦   «         ¦  «        }| j        t          k    r|j        dz  dz  }||z   S | j        t          k    r|S |j        dk    r|dz  |j        z   dz  S |S )zBReturn unix timestamp with precision based on timestamp_precision.r8   g     @�@r   i@B )ÚcalendarÚtimegmÚ	timetupler#   r<   r=   ÚTIMESTAMP_PRECISION_LEGACY)r$   rA   Ú	timestamprB   s       r   Ú_timestamp_unixtimestampz#Serializer._timestamp_unixtimestampÁ   sŠ   € å”O E§O¢OÑ$5Ô$5Ñ6Ô6ˆ	ØÔ$Õ(GÒGÐGØ!Ô-°Ñ5¸Ñ?ˆLØ˜|Ñ+Ð+ØÔ&Õ*DÒDÐDØÐØÔ Ò"Ð"ð
  Ñ%¨Ô(9Ñ9¸UÑBÐBØÐr   c                 ó¾   — t          |t          j        ¦  «        r3t          t          j        |                     ¦   «         ¦  «        ¦  «        }t          |d¬¦  «        S )zSReturn RFC822 timestamp (always second precision - RFC doesn't support sub-second).T)Úusegmt)Ú
isinstanceÚdatetimeÚintrF   rG   rH   r   ©r$   rA   s     r   Ú_timestamp_rfc822zSerializer._timestamp_rfc822Ñ   sM   € õ �e�XÔ.Ñ/Ô/ð 	<Ý�œ¨¯ªÑ(9Ô(9Ñ:Ô:Ñ;Ô;ˆEÝ˜%¨Ð-Ñ-Ô-Ð-r   Nc                 óš   — |€| j         }|                     ¦   «         }t          |¦  «        }t          | d|› �¦  «        } ||¦  «        }|S )NÚ_timestamp_)ÚTIMESTAMP_FORMATÚlowerr
   Úgetattr)r$   rA   rC   Údatetime_objÚ	converterÚfinal_values         r   Ú_convert_timestamp_to_strz$Serializer._convert_timestamp_to_strØ   s^   € ØÐ#Ø#Ô4ÐØ+×1Ò1Ñ3Ô3ÐÝ.¨uÑ5Ô5ˆÝ˜DÐ"BÐ0@Ð"BÐ"BÑCÔCˆ	Ø�i Ñ-Ô-ˆØÐr   c                 ó8   — |j                              d|¦  «        S ©NÚname©ÚserializationÚget)r$   ÚshapeÚdefault_names      r   Ú_get_serialized_namezSerializer._get_serialized_nameá   s   € ð Ô"×&Ò& v¨|Ñ<Ô<Ð<r   c                 óÜ   — t          |t          ¦  «        r|                     | j        ¦  «        }t	          j        |¦  «                             ¦   «                              | j        ¦  «        S ©N)rN   ÚstrÚencodeÚDEFAULT_ENCODINGÚbase64Ú	b64encodeÚstripÚdecoderQ   s     r   Ú_get_base64zSerializer._get_base64æ   sX   € õ �e�SÑ!Ô!ð 	8Ø—L’L Ô!6Ñ7Ô7ˆEÝÔ Ñ&Ô&×,Ò,Ñ.Ô.×5Ò5°dÔ6KÑLÔLÐLr   c                 óŒ  — |j         }|�d|vrd S |d         }|j        €|S |j        j        }d„ |                     ¦   «         D ¦   «         }i }g }|D ]>}	||	         }
t                               |
¦  «        s|                     |	¦  «         |
||	<   Œ?|r't          dd                     |¦  «        › d�¬¦  «        ‚ |j	        di |¤ŽS )NÚ
hostPrefixc                 óL   — g | ]!\  }}|j                              d ¦  «        ¯|‘Œ"S )Ú	hostLabelr_   )Ú.0Úmemberrb   s      r   ú
<listcomp>z2Serializer._expand_host_prefix.<locals>.<listcomp>ú   sC   € ð 
ð 
ð 
á�˜ØÔ"×&Ò& {Ñ3Ô3ð
Øð
ð 
ð 
r   z Invalid value for parameter(s): z, z?. Must contain only alphanumeric characters, hyphen, or period.)Úreport© )
ÚendpointÚinput_shapeÚmembersÚitemsÚHOST_PREFIX_REÚmatchÚappendr   ÚjoinÚformat)r$   r*   r+   Úoperation_endpointÚhost_prefix_expressionÚinput_membersÚhost_labelsÚformat_kwargsÚ
bad_labelsr^   Úparams              r   Ú_expand_host_prefixzSerializer._expand_host_prefixî   s*  € Ø,Ô5ÐàÐ&ØÐ#5Ð5Ð5à�4à!3°LÔ!AÐØÔ&Ð.Ø)Ð)Ø'Ô3Ô;ˆð
ð 
à!.×!4Ò!4Ñ!6Ô!6ð
ñ 
ô 
ˆð
 ˆØˆ
Øð 	(ð 	(ˆDØ˜tÔ$ˆEÝ!×'Ò'¨Ñ.Ô.ð (Ø×!Ò! $Ñ'Ô'Ð'Ø"'ˆM˜$ÑÐØð 	Ý&ð!°t·y²yÀÑ7LÔ7Lð !ð !ð !ðñ ô ð ð -Ð%Ô,Ð=Ð=¨}Ð=Ð=Ð=r   c                 ó6   — |j                              d¦  «        S )NÚ	flattenedr_   ©r$   rb   s     r   Ú_is_shape_flattenedzSerializer._is_shape_flattened  s   € ØÔ"×&Ò& {Ñ3Ô3Ð3r   c                 óŠ   — |t          d¦  «        k    rd}n,|t          d¦  «        k    rd}nt          j        |¦  «        rd}|S )NÚInfinityz	-InfinityÚNaN)ÚfloatÚmathÚisnanrQ   s     r   Ú_handle_floatzSerializer._handle_float  sR   € Ø•E˜*Ñ%Ô%Ò%Ð%ØˆEˆEØ•e˜KÑ(Ô(Ò(Ð(ØˆEˆEÝŒZ˜ÑÔð 	ØˆEØˆr   c                 ó8   — |j         j        rd|d         d<   d S d S )NÚtruer2   zx-amzn-query-mode)Úservice_modelÚis_query_compatible)r$   r+   r5   s      r   Ú_handle_query_compatible_traitz)Serializer._handle_query_compatible_trait  s3   € ØÔ(Ô<ð 	@Ø9?ˆJ�yÔ!Ð"5Ñ6Ð6Ð6ð	@ð 	@r   rf   )Ú__name__Ú
__module__Ú__qualname__r4   ÚdictÚMAP_TYPEri   ÚTIMESTAMP_PRECISION_DEFAULTr%   r'   r6   rD   rK   rR   r[   rd   rn   rˆ   rŒ   r“   r˜   rw   r   r   r   r   l   s   € € € € € Ø€Nð
 €HØÐà+Fð 8ð 8ð 8ð 8ð$:ð $:ð $:ðLð ð ð4ð 4ð 4ð ð ð ð .ð .ð .ðð ð ð ð=ð =ð =ð
Mð Mð Mð >ð  >ð  >ðD4ð 4ð 4ðð ð ð@ð @ð @ð @ð @r   r   c                   óh   — e Zd ZdZd„ Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd	„Z
dd
„Zdd„Zdd„Zdd„ZdS )ÚQuerySerializerr   c                 ób  — |j         }|                      ¦   «         }|j                             d| j        ¦  «        |d<   ddi|d<   |                      ¦   «         }|j        |d<   |j        d         |d<   |�|                      |||¦  «         ||d<   |  	                    ||¦  «        }|�||d	<   |S )
Nr1   úContent-Typez0application/x-www-form-urlencoded; charset=utf-8r2   ÚActionÚ
apiVersionÚVersionr3   Úhost_prefix)
ry   r6   Úhttpra   r4   r�   r^   ÚmetadataÚ
_serializerˆ   )r$   r*   r+   rb   r5   Úbody_paramsr¦   s          r   r'   z$QuerySerializer.serialize_to_request$  sÓ   € ØÔ+ˆØ×1Ò1Ñ3Ô3ˆ
Ø.Ô3×7Ò7Ø�dÔ)ñ 
ô  
ˆ
�8Ñð ÐNð!
ˆ
�9Ñð
 —m’m‘o”oˆØ /Ô 4ˆ�HÑØ!0Ô!9¸,Ô!Gˆ�IÑØÐØ�OŠO˜K¨°UÑ;Ô;Ð;Ø(ˆ
�6Ñà×.Ò.¨z¸?ÑKÔKˆØÐ"Ø(3ˆJ�}Ñ%àÐr   r.   c                 ó`   — t          | d|j        › �| j        ¦  «        } |||||¬¦  «         d S )NÚ_serialize_type_)Úprefix©rW   Ú	type_nameÚ_default_serialize)r$   r5   rA   rb   r­   r1   s         r   r©   zQuerySerializer._serialize<  sJ   € õ ØØ0˜uœÐ0Ð0ØÔ#ñ
ô 
ˆð
 	ˆˆz˜5 %°Ð7Ñ7Ô7Ð7Ð7Ð7r   c                 óÆ   — |j         }|                     ¦   «         D ]D\  }}||         }|                      ||¦  «        }|r|› d|› �}|                      ||||¦  «         ŒEd S )Nr9   )rz   r{   rd   r©   )	r$   r5   rA   rb   r­   rz   ÚkeyÚmember_shapeÚmember_prefixs	            r   Ú_serialize_type_structurez)QuerySerializer._serialize_type_structureK  s†   € Ø”-ˆØŸ+š+™-œ-ð 	Lð 	L‰JˆC�Ø" 3œ<ˆLØ ×5Ò5°lÀCÑHÔHˆMØð <Ø#)Ð ;Ð ;¨MÐ ;Ð ;�Ø�OŠO˜J¨¨|¸]ÑKÔKÐKÐKð	Lð 	Lr   c                 óì  — |sd||<   d S |                       |¦  «        rr|}|j        j                             d¦  «        rP|                      |j        d¬¦  «        }d                     |                     d¦  «        d d…         |gz   ¦  «        }n'|j        j                             dd¦  «        }|› d|› �}t          |d¦  «        D ]+\  }}	|› d|› �}
|j        }|                      ||	||
¦  «         Œ,d S )Nr.   r^   ©rc   r9   éÿÿÿÿrt   é   )	rŒ   rt   r`   ra   rd   r   ÚsplitÚ	enumerater©   )r$   r5   rA   rb   r­   Úlist_prefixr^   Ú	list_nameÚiÚelementÚelement_prefixÚelement_shapes               r   Ú_serialize_type_listz$QuerySerializer._serialize_type_listT  s%  € Øð 	à!#ˆJ�vÑØˆFØ×#Ò# EÑ*Ô*ð 	2Ø ˆKØŒ|Ô)×-Ò-¨fÑ5Ô5ð HØ×0Ò0°´ÈBÐ0ÑOÔO�à!Ÿhšh v§|¢|°CÑ'8Ô'8¸¸"¸Ô'=ÀÀÑ'FÑGÔG�øàœÔ2×6Ò6°v¸xÑHÔHˆIØ#Ð1Ð1 iÐ1Ð1ˆKÝ# E¨1Ñ-Ô-ð 	Pð 	P‰JˆAˆwØ +Ð1Ð1¨aÐ1Ð1ˆNØ!œLˆMØ�OŠO˜J¨°ÀÑOÔOÐOÐOð	Pð 	Pr   c                 ó´  — |                       |¦  «        r|}n|› d�}|dz   }|j        }|j        }|                      |d¬¦  «        }	|                      |d¦  «        }
t	          |d¦  «        D ]i\  }}|                     ||	¬¦  «        }|                     ||
¬¦  «        }|                      ||||¦  «         |                      |||         ||¦  «         Œjd S )Nz.entryz.{i}.{suffix}r²   r·   rA   r¹   )r¾   Úsuffix)rŒ   r²   rA   rd   r»   r€   r©   )r$   r5   rA   rb   r­   Úfull_prefixÚtemplateÚ	key_shapeÚvalue_shapeÚ
key_suffixÚvalue_suffixr¾   r²   Ú
key_prefixÚvalue_prefixs                  r   Ú_serialize_type_mapz#QuerySerializer._serialize_type_mapg  sþ   € Ø×#Ò# EÑ*Ô*ð 	,Ø ˆKˆKà#Ð+Ð+Ð+ˆKØ Ñ0ˆØ”Iˆ	Ø”kˆØ×.Ò.¨yÀuÐ.ÑMÔMˆ
Ø×0Ò0°¸gÑFÔFˆÝ  qÑ)Ô)ð 	Oð 	O‰FˆAˆsØ!Ÿš¨1°Z˜Ñ@Ô@ˆJØ#Ÿ?š?¨Q°|˜?ÑDÔDˆLØ�OŠO˜J¨¨Y¸
ÑCÔCÐCØ�OŠO˜J¨¨c¬
°KÀÑNÔNÐNÐNð		Oð 	Or   c                 ó6   — |                       |¦  «        ||<   d S rf   ©rn   ©r$   r5   rA   rb   r­   s        r   Ú_serialize_type_blobz$QuerySerializer._serialize_type_blobw  s    € à!×-Ò-¨eÑ4Ô4ˆ
�6ÑÐÐr   c                 óh   — |                       ||j                             d¦  «        ¦  «        ||<   d S ©NÚtimestampFormat©r[   r`   ra   rÐ   s        r   Ú_serialize_type_timestampz)QuerySerializer._serialize_type_timestamp{  s9   € Ø!×;Ò;Ø�5Ô&×*Ò*Ð+<Ñ=Ô=ñ
ô 
ˆ
�6ÑÐÐr   c                 ó"   — |rd||<   d S d||<   d S ©Nr•   Úfalserw   rÐ   s        r   Ú_serialize_type_booleanz'QuerySerializer._serialize_type_boolean€  s*   € Øð 	)Ø!'ˆJ�vÑÐÐà!(ˆJ�vÑÐÐr   c                 ó   — |||<   d S rf   rw   rÐ   s        r   r°   z"QuerySerializer._default_serialize†  s   € Ø"ˆ
�6ÑÐÐr   c                 ó6   — |                       |¦  «        ||<   d S rf   )r“   rÐ   s        r   Ú_serialize_type_floatz%QuerySerializer._serialize_type_float‰  s    € Ø!×/Ò/°Ñ6Ô6ˆ
�6ÑÐÐr   c                 ó6   — |                       ||||¦  «         d S rf   ©rÝ   rÐ   s        r   Ú_serialize_type_doublez&QuerySerializer._serialize_type_doubleŒ  ó"   € Ø×"Ò" :¨u°e¸VÑDÔDÐDÐDÐDr   N©r.   )r™   rš   r›   rU   r'   r©   rµ   rÂ   rÍ   rÑ   rÖ   rÚ   r°   rÝ   rà   rw   r   r   r    r    !  s  € € € € € Ø Ððð ð ð08ð 8ð 8ð 8ðLð Lð Lð LðPð Pð Pð Pð&Oð Oð Oð Oð 5ð 5ð 5ð 5ð
ð 
ð 
ð 
ð
)ð )ð )ð )ð#ð #ð #ð #ð7ð 7ð 7ð 7ðEð Eð Eð Eð Eð Er   r    c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚEC2SerializeraU  EC2 specific customizations to the query protocol serializers.

    The EC2 model is almost, but not exactly, similar to the query protocol
    serializer.  This class encapsulates those differences.  The model
    will have be marked with a ``protocol`` of ``ec2``, so you don't need
    to worry about wiring this class up correctly.

    c                 ó¨   — d|j         v r|j         d         S d|j         v r2|j         d         }|d                              ¦   «         |dd …         z   S |S )NÚ	queryNamer^   r   r¹   )r`   Úupper)r$   rb   rc   r^   s       r   rd   z"EC2Serializer._get_serialized_nameš  sb   € ð ˜%Ô-Ð-Ð-ØÔ& {Ô3Ð3Ø�uÔ*Ð*Ð*ð Ô& vÔ.ˆDØ˜”7—=’=‘?”? T¨!¨"¨"¤XÑ-Ð-àÐr   r.   c                 ó~   — t          |d¦  «        D ]+\  }}|› d|› �}|j        }|                      ||||¦  «         Œ,d S )Nr¹   r9   )r»   rt   r©   )	r$   r5   rA   rb   r­   r¾   r¿   rÀ   rÁ   s	            r   rÂ   z"EC2Serializer._serialize_type_list§  s^   € Ý# E¨1Ñ-Ô-ð 	Pð 	P‰JˆAˆwØ &˜_˜_¨˜_˜_ˆNØ!œLˆMØ�OŠO˜J¨°ÀÑOÔOÐOÐOð	Pð 	Pr   Nrâ   )r™   rš   r›   Ú__doc__rd   rÂ   rw   r   r   rä   rä   �  sG   € € € € € ðð ð ð  ð  ðPð Pð Pð Pð Pð Pr   rä   c                   óT   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zdd„Zdd„ZdS )ÚJSONSerializerÚunixtimestampc                 ó  — d                      |j        d         |j        ¦  «        }|j        d         }|                      ¦   «         }|j                             d| j        ¦  «        |d<   |d|› �dœ|d<   |                      ||¦  «         |                      ¦   «         }|j	        }|�|  
                    |||¦  «         t          j        |¦  «                             | j        ¦  «        |d<   |                      ||¦  «        }|�||d	<   |S )
Nz{}.{}ÚtargetPrefixÚjsonVersionr1   zapplication/x-amz-json-)zX-Amz-Targetr¢   r2   r3   r¦   )r€   r¨   r^   r6   r§   ra   r4   r˜   r�   ry   r©   ÚjsonÚdumpsrh   ri   rˆ   )	r$   r*   r+   ÚtargetÚjson_versionr5   r3   ry   r¦   s	            r   r'   z#JSONSerializer.serialize_to_request±  s%  € Ø—’ØÔ$ ^Ô4ØÔ ñ
ô 
ˆð 'Ô/°Ô>ˆØ×1Ò1Ñ3Ô3ˆ
Ø.Ô3×7Ò7Ø�dÔ)ñ 
ô  
ˆ
�8Ñð #ØD°lÐDÐDð!
ð !
ˆ
�9Ñð 	×+Ò+¨O¸ZÑHÔHÐHà�}Š}‰ŒˆØ%Ô1ˆØÐ"Ø�OŠO˜D *¨kÑ:Ô:Ð:Ý!œZ¨Ñ-Ô-×4Ò4°TÔ5JÑKÔKˆ
�6Ñà×.Ò.¨z¸?ÑKÔKˆØÐ"Ø(3ˆJ�}Ñ%àÐr   Nc                 ó^   — t          | d|j        › �| j        ¦  «        } |||||¦  «         d S ©Nr¬   r®   ©r$   r5   rA   rb   r²   r1   s         r   r©   zJSONSerializer._serializeÍ  sE   € ÝØØ0˜uœÐ0Ð0ØÔ#ñ
ô 
ˆð
 	ˆˆz˜5 %¨Ñ-Ô-Ð-Ð-Ð-r   c                 ó
  — |j         r|||<   d S |�|                      ¦   «         }|||<   |}|j        }|                     ¦   «         D ];\  }}||         }	d|	j        v r|	j        d         }|                      |||	|¦  «         Œ<d S r]   )Úis_document_typer�   rz   r{   r`   r©   )
r$   r5   rA   rb   r²   Únew_serializedrz   Ú
member_keyÚmember_valuer³   s
             r   rµ   z(JSONSerializer._serialize_type_structureÕ  s²   € ØÔ!ð 	Ø#ˆJ�s‰OˆOˆOàˆð "&§¢¡¤�Ø"0�
˜3‘Ø+�
Ø”mˆGØ,1¯KªK©M¬Mð ð Ñ(�
˜LØ& zÔ2�Ø˜\Ô7Ð7Ð7Ø!-Ô!;¸FÔ!C�JØ—’Ø ¨l¸Jñô ð ð ð	ð r   c                 ó¦   — |                       ¦   «         }|||<   |                     ¦   «         D ]"\  }}|                      |||j        |¦  «         Œ#d S rf   )r�   r{   r©   rA   )r$   r5   rA   rb   r²   Úmap_objÚsub_keyÚ	sub_values           r   rÍ   z"JSONSerializer._serialize_type_mapë  s_   € Ø—-’-‘/”/ˆØ!ˆ
�3‰Ø"'§+¢+¡-¤-ð 	Fð 	FÑˆG�YØ�OŠO˜G Y°´¸WÑEÔEÐEÐEð	Fð 	Fr   c                 ó’   — g }|||<   |D ]<}i }|                       |||j        d¦  «         |                     |d         ¦  «         Œ=d S )NÚ__current__)r©   rt   r~   )r$   r5   rA   rb   r²   Úlist_objÚ	list_itemÚwrappers           r   rÂ   z#JSONSerializer._serialize_type_listñ  sd   € ØˆØ"ˆ
�3‰Øð 	4ð 	4ˆIØˆGð
 �OŠO˜G Y°´¸mÑLÔLÐLØ�OŠO˜G MÔ2Ñ3Ô3Ð3Ð3ð	4ð 	4r   c                 ó   — |||<   d S rf   rw   ©r$   r5   rA   rb   r²   s        r   r°   z!JSONSerializer._default_serializeý  s   € Øˆ
�3‰ˆˆr   c                 óh   — |                       ||j                             d¦  «        ¦  «        ||<   d S rÓ   rÕ   r  s        r   rÖ   z(JSONSerializer._serialize_type_timestamp   s6   € Ø×8Ò8Ø�5Ô&×*Ò*Ð+<Ñ=Ô=ñ
ô 
ˆ
�3‰ˆˆr   c                 ó6   — |                       |¦  «        ||<   d S rf   rÏ   r  s        r   rÑ   z#JSONSerializer._serialize_type_blob  s   € Ø×*Ò*¨5Ñ1Ô1ˆ
�3‰ˆˆr   r.   c                 óˆ   — t          |t          j        ¦  «        rt          |¦  «        }|                      |¦  «        ||<   d S rf   )rN   ÚdecimalÚDecimalr�   r“   rÐ   s        r   rÝ   z$JSONSerializer._serialize_type_float  s?   € Ý�e�Wœ_Ñ-Ô-ð 	!Ý˜%‘L”LˆEØ!×/Ò/°Ñ6Ô6ˆ
�6ÑÐÐr   c                 ó6   — |                       ||||¦  «         d S rf   rß   rÐ   s        r   rà   z%JSONSerializer._serialize_type_double  rá   r   rf   râ   )r™   rš   r›   rU   r'   r©   rµ   rÍ   rÂ   r°   rÖ   rÑ   rÝ   rà   rw   r   r   rë   rë   ®  sÈ   € € € € € Ø&Ððð ð ð8.ð .ð .ð .ðð ð ð,Fð Fð Fð
4ð 
4ð 
4ð ð  ð  ð
ð 
ð 
ð
2ð 2ð 2ð7ð 7ð 7ð 7ð
Eð Eð Eð Eð Eð Er   rë   c                   ó�   — e Zd ZdZdZdZdZdZdZdZ	dZ
dd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	S )ÚCBORSerializerr   r¹   é   é   é   é   é   é   Nc                 ó†   — t          | d|j        › �¦  «        }|€t          d|j        › d�¦  «        ‚ |||||¦  «         d S )Nr¬   zUnrecognized C2J type: z, unable to serialize request)rW   r¯   r"   rö   s         r   Ú_serialize_data_itemz#CBORSerializer._serialize_data_item  si   € Ý˜ÐC°%´/ÐCÐCÑDÔDˆØˆ>Ýð%¨%¬/ð %ð %ð %ñô ð ð 	ˆˆz˜5 %¨Ñ-Ô-Ð-Ð-Ð-r   c                 ó(  — |dk    r| j         }n| j        }d|z
  }|                      |¦  «        \  }}|                      ||¦  «        }|dk    r|                     |¦  «         d S |                     ||                     |d¦  «        z   ¦  «         d S )Nr   r¸   Úbig)ÚUNSIGNED_INT_MAJOR_TYPEÚNEGATIVE_INT_MAJOR_TYPEÚ"_get_additional_info_and_num_bytesÚ_get_initial_byteÚextendÚto_bytes)	r$   r5   rA   rb   r²   Ú
major_typeÚadditional_infoÚ	num_bytesÚinitial_bytes	            r   Ú_serialize_type_integerz&CBORSerializer._serialize_type_integer$  s¬   € Ø�AŠ:ˆ:ØÔ5ˆJˆJàÔ5ˆJð ˜‘JˆEØ%)×%LÒ%LØñ&
ô &
Ñ"ˆ˜ð ×-Ò-¨j¸/ÑJÔJˆØ˜Š>ˆ>Ø×Ò˜lÑ+Ô+Ð+Ð+Ð+à×Ò˜l¨U¯^ª^¸IÀuÑ-MÔ-MÑMÑNÔNÐNÐNÐNr   c                 ó6   — |                       ||||¦  «         d S rf   )r#  r  s        r   Ú_serialize_type_longz#CBORSerializer._serialize_type_long6  s"   € Ø×$Ò$ Z°¸¸sÑCÔCÐCÐCÐCr   c                 óú  — t          |t          ¦  «        r|                     d¦  «        }n0t          |t          t          f¦  «        s|                     ¦   «         }t          |¦  «        }|                      |¦  «        \  }}|                      | j	        |¦  «        }|dk    r| 
                    |¦  «         n,| 
                    ||                     |d¦  «        z   ¦  «         | 
                    |¦  «         d S ©Nr   r   r  )rN   rg   rh   ÚbytesÚ	bytearrayÚreadÚlenr  r  ÚBLOB_MAJOR_TYPEr  r  )	r$   r5   rA   rb   r²   Úlengthr   r!  r"  s	            r   rÑ   z#CBORSerializer._serialize_type_blob9  s÷   € Ý�e�SÑ!Ô!ð 	!Ø—L’L Ñ)Ô)ˆEˆEÝ˜E¥E­9Ð#5Ñ6Ô6ð 	!ð —J’J‘L”LˆEÝ�U‘”ˆØ%)×%LÒ%LØñ&
ô &
Ñ"ˆ˜ð ×-Ò-ØÔ  /ñ
ô 
ˆð ˜Š>ˆ>Ø×Ò˜lÑ+Ô+Ð+Ð+à×Ò˜l¨V¯_ª_¸YÈÑ-NÔ-NÑNÑOÔOÐOØ×Ò˜%Ñ Ô Ð Ð Ð r   c                 óR  — |                      d¦  «        }t          |¦  «        }|                      |¦  «        \  }}|                      | j        |¦  «        }	|dk    r|                     |	|z   ¦  «         d S |                     |	|                     |d¦  «        z   |z   ¦  «         d S r'  )rh   r+  r  r  ÚSTRING_MAJOR_TYPEr  r  )
r$   r5   rA   rb   r²   Úencodedr-  r   r!  r"  s
             r   Ú_serialize_type_stringz%CBORSerializer._serialize_type_stringM  sÁ   € Ø—,’,˜wÑ'Ô'ˆÝ�W‘”ˆØ%)×%LÒ%LØñ&
ô &
Ñ"ˆ˜ð ×-Ò-ØÔ" Oñ
ô 
ˆð ˜Š>ˆ>Ø×Ò˜l¨WÑ4Ñ5Ô5Ð5Ð5Ð5à×ÒØ˜vŸš¨y¸%Ñ@Ô@Ñ@À7ÑJñô ð ð ð r   c                 ó\  — t          |¦  «        }|                      |¦  «        \  }}|                      | j        |¦  «        }|dk    r|                     |¦  «         n,|                     ||                     |d¦  «        z   ¦  «         |D ]}	|                      ||	|j        ¦  «         Œd S ©Nr   r  )r+  r  r  ÚLIST_MAJOR_TYPEr  r  r  rt   )
r$   r5   rA   rb   r²   r-  r   r!  r"  Úitems
             r   rÂ   z#CBORSerializer._serialize_type_list]  sÌ   € Ý�U‘”ˆØ%)×%LÒ%LØñ&
ô &
Ñ"ˆ˜ð ×-Ò-ØÔ  /ñ
ô 
ˆð ˜Š>ˆ>Ø×Ò˜lÑ+Ô+Ð+Ð+à×Ò˜l¨V¯_ª_¸YÈÑ-NÔ-NÑNÑOÔOÐOØð 	Fð 	FˆDØ×%Ò% j°$¸¼ÑEÔEÐEÐEð	Fð 	Fr   c                 ó¾  — t          |¦  «        }|                      |¦  «        \  }}|                      | j        |¦  «        }|dk    r|                     |¦  «         n,|                     ||                     |d¦  «        z   ¦  «         |                     ¦   «         D ]=\  }	}
|                      ||	|j        ¦  «         |                      ||
|j	        ¦  «         Œ>d S r3  )
r+  r  r  ÚMAP_MAJOR_TYPEr  r  r{   r  r²   rA   )r$   r5   rA   rb   r²   r-  r   r!  r"  Úkey_itemr5  s              r   rÍ   z"CBORSerializer._serialize_type_mapl  sò   € Ý�U‘”ˆØ%)×%LÒ%LØñ&
ô &
Ñ"ˆ˜ð ×-Ò-ØÔ ñ
ô 
ˆð ˜Š>ˆ>Ø×Ò˜lÑ+Ô+Ð+Ð+à×Ò˜l¨V¯_ª_¸YÈÑ-NÔ-NÑNÑOÔOÐOØ#Ÿkšk™mœmð 	Eð 	E‰NˆH�dØ×%Ò% j°(¸E¼IÑFÔFÐFØ×%Ò% j°$¸¼ÑDÔDÐDÐDð	Eð 	Er   c                 ór  — |�|                       |||j        ¦  «         d„ |                     ¦   «         D ¦   «         }t          |¦  «        }|                      |¦  «        \  }}|                      | j        |¦  «        }|dk    r|                     |¦  «         n,|                     ||                     |d¦  «        z   ¦  «         |j	        }	|                     ¦   «         D ]T\  }
}|	|
         }d|j
        v r|j
        d         }
|�/|                      ||
d d ¦  «         |                       |||¦  «         ŒUd S )Nc                 ó   — i | ]
\  }}|®||“ŒS rf   rw   )rs   ÚkÚvs      r   ú
<dictcomp>z<CBORSerializer._serialize_type_structure.<locals>.<dictcomp>‚  s   € ÐAÐAÐA™$˜!˜Q°1°=��A°=°=°=r   r   r  r^   )r  rÇ   r{   r+  r  r  r7  r  r  rz   r`   r1  )r$   r5   rA   rb   r²   Ú
map_lengthr   r!  r"  rz   rú   rû   r³   s                r   rµ   z(CBORSerializer._serialize_type_structure|  sl  € Øˆ?à×%Ò% j°#°u´ÑGÔGÐGð BÐA %§+¢+¡-¤-ÐAÑAÔAˆå˜‘Z”Zˆ
Ø%)×%LÒ%LØñ&
ô &
Ñ"ˆ˜ð ×-Ò-ØÔ ñ
ô 
ˆð ˜Š>ˆ>Ø×Ò˜lÑ+Ô+Ð+Ð+à×ÒØ˜z×2Ò2°9¸eÑDÔDÑDñô ð ð ”-ˆØ(-¯ª©¬ð 	ð 	Ñ$ˆJ˜Ø" :Ô.ˆLØ˜Ô3Ð3Ð3Ø)Ô7¸Ô?�
ØÐ'Ø×+Ò+¨J¸
ÀDÈ$ÑOÔOÐOØ×)Ò)Ø ¨lñô ð øð	ð 	r   c                 ó"  — |                       |¦  «        }d}|                      | j        |¦  «        }|                     |¦  «         t	          |t
          ¦  «        r|                      ||||¦  «         d S |                      ||||¦  «         d S )Nr¹   )r[   r  ÚTAG_MAJOR_TYPEr  rN   r�   rà   r#  )r$   r5   rA   rb   r²   rJ   Útagr"  s           r   rÖ   z(CBORSerializer._serialize_type_timestamp�  s›   € Ø×2Ò2°5Ñ9Ô9ˆ	ØˆØ×-Ò-¨dÔ.AÀ3ÑGÔGˆØ×Ò˜,Ñ'Ô'Ð'õ �i¥Ñ'Ô'ð 	LØ×'Ò'¨
°I¸uÀcÑJÔJÐJÐJÐJà×(Ò(¨°YÀÀsÑKÔKÐKÐKÐKr   c                 ó  — |                       |¦  «        r*|                     |                      |¦  «        ¦  «         d S |                      | j        d¦  «        }|                     |t          j        d|¦  «        z   ¦  «         d S )Né   z>f©Ú_is_special_numberr  Ú_get_bytes_for_special_numbersr  ÚFLOAT_AND_SIMPLE_MAJOR_TYPEÚstructÚpack©r$   r5   rA   rb   r²   r"  s         r   rÝ   z$CBORSerializer._serialize_type_float©  ó˜   € Ø×"Ò" 5Ñ)Ô)ð 	GØ×ÒØ×3Ò3°EÑ:Ô:ñô ð ð ð ð  ×1Ò1ØÔ0°"ñô ˆLð ×Ò˜l­V¬[¸¸uÑ-EÔ-EÑEÑFÔFÐFÐFÐFr   c                 ó  — |                       |¦  «        r*|                     |                      |¦  «        ¦  «         d S |                      | j        d¦  «        }|                     |t          j        d|¦  «        z   ¦  «         d S )Né   z>drD  rJ  s         r   rà   z%CBORSerializer._serialize_type_double´  rK  r   c                 ón   — |rdnd}|                      |                      | j        |¦  «        ¦  «         d S )Né   é   )r  r  rG  )r$   r5   rA   rb   r²   r   s         r   rÚ   z&CBORSerializer._serialize_type_boolean¿  sM   € Ø %Ð-˜"˜"¨2ˆØ×ÒØ×"Ò"ØÔ0°/ñô ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óJ   — |dk     r|dfS |dk     rdS |dk     rdS |dk     rdS d	S )
Né   r   é   )rR  r¹   i   )é   r  l        )rC  r  )rM  é   rw   rQ   s     r   r  z1CBORSerializer._get_additional_info_and_num_bytesÇ  sO   € ð �2Š:ˆ:Ø˜!�8ˆOð �SŠ[ˆ[Ø�5ð �UŠ]ˆ]Ø�5ð �ZÒÐØ�5ð �5r   c                 ó>   — |dz  }||z                        dd¦  «        S )Nr  r¹   r  )r  )r$   r  r   Úmajor_type_bytess       r   r  z CBORSerializer._get_initial_byteÝ  s)   € ð &¨™?ÐØ  ?Ñ2×<Ò<¸QÀÑFÔFÐFr   c                 óŽ   — t          |t          d¦  «        k    |t          d¦  «        k    t          j        |¦  «        g¦  «        S )NÚinfú-inf)Úanyr�   r‘   r’   rQ   s     r   rE  z!CBORSerializer._is_special_numberã  sB   € Ýà�˜u™œÒ%Ø�˜v™œÒ&Ý”
˜5Ñ!Ô!ðñ
ô 
ð 	
r   c                 óD  — d}|                       | j        |¦  «        }|t          d¦  «        k    r|t          j        dd¦  «        z   S |t          d¦  «        k    r|t          j        dd¦  «        z   S t          j        |¦  «        r|t          j        dd¦  «        z   S d S )NrT  rY  z>Hi |  rZ  i ü  i ~  )r  rG  r�   rH  rI  r‘   r’   )r$   rA   r   r"  s       r   rF  z-CBORSerializer._get_bytes_for_special_numbersì  s©   € ØˆØ×-Ò-ØÔ,¨oñ
ô 
ˆð •E˜%‘L”LÒ Ð Ø¥&¤+¨d°FÑ";Ô";Ñ;Ð;Ø•e˜F‘m”mÒ#Ð#Ø¥&¤+¨d°FÑ";Ô";Ñ;Ð;ÝŒZ˜ÑÔð 	<Ø¥&¤+¨d°FÑ";Ô";Ñ;Ð;ð	<ð 	<r   rf   )r™   rš   r›   r  r  r,  r/  r4  r7  r@  rG  r  r#  r%  rÑ   r1  rÂ   rÍ   rµ   rÖ   rÝ   rà   rÚ   r  r  rE  rF  rw   r   r   r  r    sN  € € € € € ØÐØÐØ€OØÐØ€OØ€NØ€NØ"#Ðð.ð .ð .ð .ðOð Oð Oð$Dð Dð Dð!ð !ð !ð(ð ð ð Fð Fð FðEð Eð Eð ð ð ðB
Lð 
Lð 
Lð	Gð 	Gð 	Gð	Gð 	Gð 	Gð
ð 
ð 
ðð ð ð,Gð Gð Gð
ð 
ð 
ð
<ð 
<ð 
<ð 
<ð 
<r   r  c                   óv   — e Zd ZdZdZdZg d¢Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚBaseRestSerializera=  Base class for rest protocols.

    The only variance between the various rest protocols is the
    way that the body is serialized.  All other aspects (headers, uri, etc.)
    are the same and logic for serializing those aspects lives here.

    Subclasses must implement the ``_serialize_body_params`` method.

    r   Úrfc822)ÚuriÚquerystringÚheaderr2   c                 óP  — |                       ¦   «         }|j                             d| j        ¦  «        |d<   |j        }|                      ||¦  «        }|�||d<   |€|j        d         |d<   |S |j        }|                      ¦   «         |                      ¦   «         |                      ¦   «         |                      ¦   «         dœ}|                     ¦   «         D ] \  }}	|	€Œ|  	                    |||	|¦  «         Œ!|  
                    |j        d         |d         ¦  «        |d<   d|j        v r*|  
                    |j        d         |d         ¦  «        |d<   |d	         |d
<   |d         r|d         |d<   |                      |||||¦  «         |                      |||¦  «         |S )Nr1   r¦   Ú
requestUrir/   )Úuri_path_kwargsÚquery_string_kwargsÚbody_kwargsr2   re  ÚauthPathÚ	auth_pathrf  r0   r2   )r6   r§   ra   r4   ry   rˆ   rz   r�   r{   Ú_partition_parametersÚ_render_uri_templateÚ_serialize_payloadÚ_serialize_content_type)
r$   r*   r+   r5   rb   r¦   Úshape_membersÚpartitionedÚ
param_nameÚparam_values
             r   r'   z'BaseRestSerializer.serialize_to_request  sô  € Ø×1Ò1Ñ3Ô3ˆ
Ø.Ô3×7Ò7Ø�dÔ)ñ 
ô  
ˆ
�8Ñð  Ô+ˆà×.Ò.¨z¸?ÑKÔKˆØÐ"Ø(3ˆJ�}Ñ%àˆ=Ø%4Ô%9¸,Ô%GˆJ�zÑ"ØÐØœˆð  $Ÿ}š}™œØ#'§=¢=¡?¤?ØŸ=š=™?œ?Ø—}’}‘”ð	
ð 
ˆð (2×'7Ò'7Ñ'9Ô'9ð 	ð 	Ñ#ˆJ˜ØÐ"àØ×&Ò&Ø˜Z¨°mñô ð ð ð "&×!:Ò!:ØÔ  Ô.°Ð<MÔ0Nñ"
ô "
ˆ
�:Ñð ˜Ô-Ð-Ð-Ø&*×&?Ò&?ØÔ$ ZÔ0ØÐ-Ô.ñ'ô 'ˆJ�{Ñ#ð &1Ð1FÔ%Gˆ
�>Ñ"Ø�yÔ!ð 	;Ø$/°	Ô$:ˆJ�yÑ!Ø×ÒØ˜ Z°¸ñ	
ô 	
ð 	
ð 	×$Ò$ Z°¸ÑFÔFÐFàÐr   c                 óð   — i }t          j        d|¦  «        D ]R}|                     d¦  «        r#t          ||d d…                  d¬¦  «        ||<   Œ:t          ||         ¦  «        ||<   ŒS |j        di |¤ŽS )Nz{(.*?)}ú+r¸   z/~)Úsaferw   )ÚreÚfindallÚendswithr   r€   )r$   Úuri_templateÚparamsÚencoded_paramsÚtemplate_params        r   rk  z'BaseRestSerializer._render_uri_templateG  s¦   € ð ˆÝ œj¨°\ÑBÔBð 	ð 	ˆNØ×&Ò& sÑ+Ô+ð Ý1?Ø˜>¨#¨2¨#Ô.Ô/°dð2ñ 2ô 2�˜~Ñ.Ð.õ 2@Ø˜>Ô*ñ2ô 2�˜~Ñ.Ð.ð #ˆ|Ô"Ð4Ð4 ^Ð4Ð4Ð4r   c                 ó  — |j                              d¦  «        }|                      ||¦  «        r2|                     |d¦  «        }|                      |¦  «        }||d<   d S |�Q|                     |¦  «        }|�!|                      |||         ¦  «        |d<   d S |                      ¦   «         |d<   d S |d         r!|                      |d         |¦  «        |d<   d S |                      |¦  «        r|                      ¦   «         |d<   d S d S )NÚpayloadr   r3   rg  )r`   ra   Ú_has_streaming_payloadÚ_encode_payloadÚ_serialize_body_paramsÚ_serialize_empty_bodyÚ_requires_empty_body)	r$   ro  r*   r5   rb   rn  Úpayload_memberÚbody_payloadrª   s	            r   rl  z%BaseRestSerializer._serialize_payloadZ  sF  € ð Ô,×0Ò0°Ñ;Ô;ˆØ×&Ò& ~°}ÑEÔEð 	>ð &Ÿ>š>¨.¸#Ñ>Ô>ˆLØ×/Ò/°Ñ=Ô=ˆLØ!-ˆJ�vÑÐÐØÐ'ð %Ÿ.š.¨Ñ8Ô8ˆKØÐ&Ø%)×%@Ò%@Ø ¨~Ô!>ñ&ô &�
˜6Ñ"Ð"Ð"ð &*×%?Ò%?Ñ%AÔ%A�
˜6Ñ"Ð"Ð"Ø˜Ô'ð 	>Ø!%×!<Ò!<Ø˜MÔ*¨Eñ"ô "ˆJ�vÑÐÐð ×&Ò& uÑ-Ô-ð 	>Ø!%×!;Ò!;Ñ!=Ô!=ˆJ�vÑÐÐð	>ð 	>r   c                 ó   — dS )Nr   rw   ©r$   s    r   r�  z(BaseRestSerializer._serialize_empty_bodyz  s   € Øˆsr   c                 ó   — dS )z¡
        Some protocols require varied Content-Type headers
        depending on user input. This allows subclasses to apply
        this conditionally.
        Nrw   )r$   r5   rb   rn  s       r   rm  z*BaseRestSerializer._serialize_content_type}  s	   € ð 	ˆr   c                 ó   — dS )z“
        Some protocols require a specific body to represent an empty
        payload. This allows subclasses to apply this conditionally.
        Frw   r‹   s     r   r‚  z'BaseRestSerializer._requires_empty_body…  s	   € ð
 ˆur   c                 ó(   — |duo||         j         dv S )z5Determine if payload is streaming (a blob or string).N)ÚblobÚstring)r¯   )r$   r}  rn  s      r   r~  z)BaseRestSerializer._has_streaming_payloadŒ  s)   € à˜dÐ"ð 
 }°WÔ'=Ô'Gð L
ð (
ð 	
r   c                 ód   — t          |t          ¦  «        r|                     | j        ¦  «        S |S rf   )rN   rg   rh   ri   )r$   r3   s     r   r  z"BaseRestSerializer._encode_payload“  s.   € Ý�d�CÑ Ô ð 	6Ø—;’;˜tÔ4Ñ5Ô5Ð5Øˆr   c                 óº  ‡ ‡— ||         Š‰j                              d¦  «        }‰j                              d|¦  «        }|dk    r#‰                      |‰¦  «        }||d         |<   d S |dk    r|t          |t          ¦  «        r|d                              |¦  «         d S ‰j        dk    rˆˆ fd„|D ¦   «         }||d         |<   d S ‰                      |‰¦  «        }||d         |<   d S |d	k    r8||         }	|s|	j        dk    rd S ‰                      |	|¦  «        |d
         |<   d S |d
k    r!|}
‰                      |
|d
         |¦  «         d S ||d         |<   d S )NÚlocationr^   r`  re  ra  rf  Úlistc                 óF   •— g | ]}‰                      |‰j        ¦  «        ‘ŒS rw   )Ú_get_uri_and_query_string_valuert   )rs   rA   rt   r$   s     €€r   ru   z<BaseRestSerializer._partition_parameters.<locals>.<listcomp>«  s;   ø€ ð ð ð àð ×8Ò8¸ÀÄÑNÔNðð ð r   rb  r2   rg  )	r`   ra   r‘  rN   rœ   Úupdater¯   Ú_convert_header_valueÚ_do_serialize_header_map)r$   ro  rp  rq  rn  rŽ  Úkey_nameÚuri_path_valueÚ	new_paramrb   Úheader_prefixrt   s   `          @r   rj  z(BaseRestSerializer._partition_parameters˜  s÷  øø€ ð ˜zÔ*ˆØÔ'×+Ò+¨JÑ7Ô7ˆØÔ'×+Ò+¨F°JÑ?Ô?ˆØ�uÒÐØ!×AÒAØ˜Vñô ˆNð 8FˆKÐ)Ô*¨8Ñ4Ð4Ð4Ø˜Ò&Ð&Ý˜+¥tÑ,Ô,ð IØÐ1Ô2×9Ò9¸+ÑFÔFÐFÐFÐFØÔ! VÒ+Ð+ðð ð ð ð à!,ðñ ô �	ð @I�Ð1Ô2°8Ñ<Ð<Ð<à ×@Ò@Ø ñô �	ð @I�Ð1Ô2°8Ñ<Ð<Ð<Ø˜Ò!Ð!Ø! *Ô-ˆEØð  5¤?°fÒ#<Ð#<à�Ø/3×/IÒ/IØ�{ñ0ô 0ˆK˜	Ô" 8Ñ,Ð,Ð,ð ˜Ò"Ð"ð %ˆMð
 ×)Ò)Ø˜{¨9Ô5°{ñô ð ð ð ð 6AˆK˜Ô& zÑ2Ð2Ð2r   c                 ó6  — |j         dk    r!t          |¦  «                             ¦   «         S |j         dk    r6|j                             d| j        ¦  «        }|                      ||¦  «        S |j         dv r"t          |                      |¦  «        ¦  «        S |S )NÚbooleanrJ   rÔ   ©r�   Údouble)r¯   rg   rV   r`   ra   ÚQUERY_STRING_TIMESTAMP_FORMATr[   r“   )r$   rq  rt   rC   s       r   r‘  z2BaseRestSerializer._get_uri_and_query_string_valueË  s¬   € ØÔ˜yÒ(Ð(Ý�{Ñ#Ô#×)Ò)Ñ+Ô+Ð+ØÔ Ò,Ð,Ø%Ô3×7Ò7Ø! 4Ô#Eñ ô  Ðð ×1Ò1ØÐ-ñô ð ð ÔÐ!4Ð4Ð4Ý�t×)Ò)¨+Ñ6Ô6Ñ7Ô7Ð7ØÐr   c                 óN   — |                      ¦   «         D ]\  }}||z   }|||<   Œd S rf   )r{   )r$   r˜  r2   Ú
user_inputr²   ÚvalÚfull_keys          r   r”  z+BaseRestSerializer._do_serialize_header_mapÙ  sB   € Ø"×(Ò(Ñ*Ô*ð 	$ð 	$‰HˆC�Ø$ sÑ*ˆHØ #ˆG�HÑÐð	$ð 	$r   c                 ó    — t          d¦  «        ‚©Nr€  r(   )r$   ry  rb   s      r   r€  z)BaseRestSerializer._serialize_body_paramsÞ  ó   € Ý!Ð":Ñ;Ô;Ð;r   c                 óä  ‡ ‡— ‰j         dk    rxt          |¦  «        }t          j        |                     ¦   «         ¦  «        }‰j                             d‰ j        ¦  «        }t          ‰  	                    ||¦  «        ¦  «        S ‰j         dk    rC‰j
        j         dk    rˆ fd„|D ¦   «         }nˆ ˆfd„|D ¦   «         }d                     |¦  «        S t          ‰¦  «        r)‰                      t          j        |d¬	¦  «        ¦  «        S ‰j         d
k    r!t          |¦  «                             ¦   «         S ‰j         dv r"t          ‰                      |¦  «        ¦  «        S t          |¦  «        S )NrJ   rÔ   r�  r‹  c                 ó>   •— g | ]}|®‰                      |¦  «        ‘ŒS rf   )Ú_escape_header_list_string)rs   r<  r$   s     €r   ru   z<BaseRestSerializer._convert_header_value.<locals>.<listcomp>í  s4   ø€ ð #ð #ð #àØ�}ð ×3Ò3°AÑ6Ô6à$�}�}r   c                 óJ   •— g | ]}|®‰                      ‰j        |¦  «        ‘Œ S rf   )r“  rt   )rs   r<  r$   rb   s     €€r   ru   z<BaseRestSerializer._convert_header_value.<locals>.<listcomp>ó  s8   ø€ ð #ð #ð #àØ�}ð ×.Ò.¨u¬|¸QÑ?Ô?à$�}�}r   ú,)r©  ú:)Ú
separatorsrš  r›  )r¯   r
   rF   rG   Úutctimetupler`   ra   ÚHEADER_TIMESTAMP_FORMATrg   r[   rt   r   r	   rn   rð   rñ   rV   r“   )r$   rb   rA   rX   rJ   rC   Úconverted_values   ``     r   r“  z(BaseRestSerializer._convert_header_valueá  sœ  øø€ ØŒ?˜kÒ)Ð)Ý2°5Ñ9Ô9ˆLÝ œ¨×(AÒ(AÑ(CÔ(CÑDÔDˆIØ$Ô2×6Ò6Ø! 4Ô#?ñ ô  Ðõ Ø×.Ò.¨yÐ:JÑKÔKñô ð ð Œ_ Ò&Ð&ØŒ|Ô%¨Ò1Ð1ð#ð #ð #ð #à"ð#ñ #ô #��ð#ð #ð #ð #ð #à"ð#ñ #ô #�ð
 —8’8˜OÑ,Ô,Ð,Ý! %Ñ(Ô(ð 		ð ×#Ò#¥D¤J¨uÀÐ$LÑ$LÔ$LÑMÔMÐMØŒ_ 	Ò)Ð)Ý�u‘:”:×#Ò#Ñ%Ô%Ð%ØŒ_Ð 3Ð3Ð3Ý�t×)Ò)¨%Ñ0Ô0Ñ1Ô1Ð1å�u‘:”:Ðr   c                 óN   — d|v sd|v rd|                      dd¦  «        z   dz   S |S )Nú"r©  z\")ÚreplacerQ   s     r   r§  z-BaseRestSerializer._escape_header_list_string  s8   € ð �%ˆ<ˆ<˜3 %˜<˜<Ø˜Ÿš s¨EÑ2Ô2Ñ2°SÑ8Ð8àˆLr   N)r™   rš   r›   ré   r�  r­  ÚKNOWN_LOCATIONSr'   rk  rl  r�  rm  r‚  r~  r  rj  r‘  r”  r€  r“  r§  rw   r   r   r^  r^  ù  s  € € € € € ðð ð %.Ð!Ø&Ðð BÐAÐA€Oð:ð :ð :ðx5ð 5ð 5ð&>ð >ð >ð@ð ð ðð ð ðð ð ð
ð 
ð 
ðð ð ð
1Að 1Að 1Aðfð ð ð$ð $ð $ð
<ð <ð <ð!ð !ð !ðFð ð ð ð r   r^  c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚBaseRpcV2Serializera`  Base class for RPCv2 protocols.

    The only variance between the various RPCv2 protocols is the
    way that the body is serialized.  All other aspects (headers, uri, etc.)
    are the same and logic for serializing those aspects lives here.

    Subclasses must implement the ``_serialize_body_params``  and
    ``_serialize_headers`` methods.

    c                 ó  — |                       ¦   «         }|j        j        d         }|j        }d|› d|› �|d<   |j        }|�|                      |||¦  «         |                      ||¦  «        }|�||d<   |                      ||¦  «         |S )Nrî   z	/service/z/operation/r/   r¦   )r6   r–   r¨   r^   ry   rl  rˆ   Ú_serialize_headers)r$   r*   r+   r5   Úservice_nameÚoperation_namery   r¦   s           r   r'   z(BaseRpcV2Serializer.serialize_to_request  s±   € Ø×1Ò1Ñ3Ô3ˆ
Ø&Ô4Ô=¸nÔMˆØ(Ô-ˆàA˜ÐAÐA°ÐAÐAð 	�:Ñð &Ô1ˆØÐ"Ø×#Ò# J°
¸KÑHÔHÐHà×.Ò.¨z¸?ÑKÔKˆØÐ"Ø(3ˆJ�}Ñ%à×Ò 
¨OÑ<Ô<Ð<àÐr   c                 ó<   — |                       ||¦  «        }||d<   d S )Nr3   )r€  )r$   r*   r5   rb   r„  s        r   rl  z&BaseRpcV2Serializer._serialize_payload-  s'   € Ø×2Ò2°:¸uÑEÔEˆØ)ˆ
�6ÑÐÐr   c                 ó    — t          d¦  «        ‚)Nr¶  r(   )r$   r5   r+   s      r   r¶  z&BaseRpcV2Serializer._serialize_headers1  s   € Ý!Ð"6Ñ7Ô7Ð7r   c                 ó    — t          d¦  «        ‚r£  r(   )r$   r*   rb   s      r   r€  z*BaseRpcV2Serializer._serialize_body_params4  r¤  r   N)r™   rš   r›   ré   r'   rl  r¶  r€  rw   r   r   r´  r´    sZ   € € € € € ð	ð 	ðð ð ð(*ð *ð *ð8ð 8ð 8ð<ð <ð <ð <ð <r   r´  c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚRestJSONSerializerc                 ó   — dS )Ns   {}rw   r†  s    r   r�  z(RestJSONSerializer._serialize_empty_body9  s   € Øˆur   c                 ó\   — |j                              ¦   «         D ]\  }}d|j        vr dS ŒdS )zq
        Serialize an empty JSON object whenever the shape has
        members not targeting a location.
        rŽ  TF)rz   r{   r`   )r$   rb   rt   r   s       r   r‚  z'RestJSONSerializer._requires_empty_body<  sD   € ð
 !œ=×.Ò.Ñ0Ô0ð 	ð 	‰KˆF�CØ Ô!2Ð2Ð2Ø�t�tð 3àˆur   c                 óÔ   — |j                              d¦  «        }|                      ||¦  «        rdS |d         dk    }t          d|d         ¦  «        }|r|sd|d         d<   dS dS dS )z?Set Content-Type to application/json for all structured bodies.r}  Nr3   r   r¢   r2   zapplication/json)r`   ra   r~  r   )r$   r5   rb   rn  r}  Úhas_bodyÚhas_content_types          r   rm  z*RestJSONSerializer._serialize_content_typeF  s˜   € àÔ%×)Ò)¨)Ñ4Ô4ˆØ×&Ò& w°Ñ>Ô>ð 	àˆFà˜fÔ%¨Ò,ˆÝ% n°jÀÔ6KÑLÔLÐØð 	GÐ,ð 	GØ4FˆJ�yÔ! .Ñ1Ð1Ð1ð	Gð 	Gð 	Gð 	Gr   c                 ó°   — |                       ¦   «         }|                      |||¦  «         t          j        |¦  «                             | j        ¦  «        S rf   )r�   r©   rð   rñ   rh   ri   )r$   ry  rb   Úserialized_bodys       r   r€  z)RestJSONSerializer._serialize_body_paramsR  sF   € ØŸ-š-™/œ/ˆØ�Š˜¨°Ñ7Ô7Ð7ÝŒz˜/Ñ*Ô*×1Ò1°$Ô2GÑHÔHÐHr   N)r™   rš   r›   r�  r‚  rm  r€  rw   r   r   r½  r½  8  sX   € € € € € ðð ð ðð ð ð
Gð 
Gð 
GðIð Ið Ið Ið Ir   r½  c                   óZ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚRestXMLSerializerr   c                 óÔ   — |j         d         }t          j        d¦  «        }|                      ||||¦  «         t	          |¦  «        d         }t          j        || j        ¬¦  «        S )Nr^   r.   r   )Úencoding)r`   r   ÚElementr©   r�  Útostringri   )r$   ry  rb   Ú	root_nameÚpseudo_rootÚ	real_roots         r   r€  z(RestXMLSerializer._serialize_body_params[  sb   € ØÔ'¨Ô/ˆ	Ý!Ô)¨"Ñ-Ô-ˆØ�Š˜˜v {°IÑ>Ô>Ð>Ý˜Ñ%Ô% aÔ(ˆ	ÝÔ# I¸Ô8MÐNÑNÔNÐNr   c                 ó^   — t          | d|j        › �| j        ¦  «        } |||||¦  «         d S rõ   r®   )r$   rb   ry  Úxmlnoder^   r1   s         r   r©   zRestXMLSerializer._serializeb  sE   € ÝØØ0˜uœÐ0Ð0ØÔ#ñ
ô 
ˆð
 	ˆˆw˜  tÑ,Ô,Ð,Ð,Ð,r   c                 ó~  — t          j        ||¦  «        }|                      ||¦  «         |                     ¦   «         D ]|\  }}|j        |         }|j                             d|¦  «        }	|€ d S |j                             d¦  «        r|j        d         }
||j        |
<   Œd|                      ||||	¦  «         Œ}d S )Nr^   ÚxmlAttribute)	r   Ú
SubElementÚ_add_xml_namespacer{   rz   r`   ra   Úattribr©   )r$   rÏ  ry  rb   r^   Ústructure_noder²   rA   r³   Úmember_nameÚxml_attribute_names              r   rµ   z+RestXMLSerializer._serialize_type_structurej  sØ   € Ý$Ô/°¸Ñ>Ô>ˆà×Ò  ~Ñ6Ô6Ð6Ø Ÿ,š,™.œ.ð 	Nð 	N‰JˆC�Ø œ=¨Ô-ˆLØ&Ô4×8Ò8¸ÀÑEÔEˆKð
 ˆ}à��ØÔ)×-Ò-¨nÑ=Ô=ð à%1Ô%?ÀÔ%GÐ"Ø<A�Ô%Ð&8Ñ9ØØ�OŠO˜L¨%°ÀÑMÔMÐMÐMð	Nð 	Nr   c                 ó  — |j         }|j                             d¦  «        r|}|}n0|j                             dd¦  «        }t          j        ||¦  «        }|                      ||¦  «         |D ]}|                      ||||¦  «         Œd S )NrŠ   r^   rt   )rt   r`   ra   r   rÒ  rÓ  r©   )	r$   rÏ  ry  rb   r^   r³   Úelement_nameÚ	list_noder5  s	            r   rÂ   z&RestXMLSerializer._serialize_type_list  s¦   € Ø”|ˆØÔ×"Ò" ;Ñ/Ô/ð 	>ØˆLØˆIˆIà'Ô5×9Ò9¸&À(ÑKÔKˆLÝ#Ô.¨w¸Ñ=Ô=ˆIØ×Ò  yÑ1Ô1Ð1Øð 	Ið 	IˆDØ�OŠO˜L¨$°	¸<ÑHÔHÐHÐHð	Ið 	Ir   c                 ó  — |                       |¦  «        s+t          j        ||¦  «        }|                      ||¦  «         |                     ¦   «         D ]¶\  }}|                       |¦  «        rt          j        ||¦  «        nt          j        |d¦  «        }|                      |j        d¬¦  «        }	|                      |j        d¬¦  «        }
|                      |j        |||	¦  «         |                      |j        |||
¦  «         Œ·d S )NÚentryr²   r·   rA   )	rŒ   r   rÒ  rÓ  r{   rd   r²   rA   r©   )r$   rÏ  ry  rb   r^   Únoder²   rA   Úsub_noder•  Úval_names              r   rÍ   z%RestXMLSerializer._serialize_type_map‹  s   € ð ×'Ò'¨Ñ.Ô.ð 	1ÝÔ)¨'°4Ñ8Ô8ˆDØ×#Ò# E¨4Ñ0Ô0Ð0à Ÿ,š,™.œ.ð 	Dð 	D‰JˆC�ð ×+Ò+¨EÑ2Ô2ð;•Ô& w°Ñ5Ô5Ð5å Ô+¨D°'Ñ:Ô:ð ð
 ×0Ò0°´ÈÐ0ÑOÔOˆHØ×0Ò0Ø”¨'ð 1ñ ô ˆHð �OŠO˜EœI s¨H°hÑ?Ô?Ð?Ø�OŠO˜EœK¨°¸(ÑCÔCÐCÐCð	Dð 	Dr   c                 óx   — t          j        ||¦  «        }|rd}nd}||_        |                      ||¦  «         d S rØ   )r   rÒ  ÚtextrÓ  )r$   rÏ  ry  rb   r^   rÝ  Ú	str_values          r   rÚ   z)RestXMLSerializer._serialize_type_boolean¥  sM   € õ Ô% g¨tÑ4Ô4ˆØð 	 ØˆIˆIàˆIØˆŒ	Ø×Ò  tÑ,Ô,Ð,Ð,Ð,r   c                 ó�   — t          j        ||¦  «        }|                      |¦  «        |_        |                      ||¦  «         d S rf   )r   rÒ  rn   rá  rÓ  ©r$   rÏ  ry  rb   r^   rÝ  s         r   rÑ   z&RestXMLSerializer._serialize_type_blob±  sE   € ÝÔ% g¨tÑ4Ô4ˆØ×$Ò$ VÑ,Ô,ˆŒ	Ø×Ò  tÑ,Ô,Ð,Ð,Ð,r   c                 óÜ   — t          j        ||¦  «        }t          |                      ||j                             d¦  «        ¦  «        ¦  «        |_        |                      ||¦  «         d S rÓ   )r   rÒ  rg   r[   r`   ra   rá  rÓ  rä  s         r   rÖ   z+RestXMLSerializer._serialize_type_timestamp¶  sm   € ÝÔ% g¨tÑ4Ô4ˆÝØ×*Ò*Ø˜Ô+×/Ò/Ð0AÑBÔBñô ñ
ô 
ˆŒ	ð
 	×Ò  tÑ,Ô,Ð,Ð,Ð,r   c                 óª   — t          j        ||¦  «        }t          |                      |¦  «        ¦  «        |_        |                      ||¦  «         d S rf   )r   rÒ  rg   r“   rá  rÓ  rä  s         r   rÝ   z'RestXMLSerializer._serialize_type_float¿  sM   € ÝÔ% g¨tÑ4Ô4ˆÝ˜×*Ò*¨6Ñ2Ô2Ñ3Ô3ˆŒ	Ø×Ò  tÑ,Ô,Ð,Ð,Ð,r   c                 ó6   — |                       ||||¦  «         d S rf   rß   )r$   rÏ  ry  rb   r^   s        r   rà   z(RestXMLSerializer._serialize_type_doubleÄ  s"   € Ø×"Ò" 7¨F°E¸4Ñ@Ô@Ð@Ð@Ð@r   c                 ó„   — t          j        ||¦  «        }t          |¦  «        |_        |                      ||¦  «         d S rf   )r   rÒ  rg   rá  rÓ  rä  s         r   r°   z$RestXMLSerializer._default_serializeÇ  s=   € ÝÔ% g¨tÑ4Ô4ˆÝ˜‘K”KˆŒ	Ø×Ò  tÑ,Ô,Ð,Ð,Ð,r   c                 ó  — d|j         v rz|j         d         }d}t          |t          ¦  «        r5|                     d¦  «        r|d|d         › �z  }|d         |j        |<   d S t          |t
          ¦  «        r||j        |<   d S d S d S )NÚxmlNamespaceÚxmlnsr­   rª  r`  )r`   rN   rœ   ra   rÔ  rg   )r$   rb   rÕ  Únamespace_metadataÚattribute_names        r   rÓ  z$RestXMLSerializer._add_xml_namespaceÌ  s¿   € Ø˜UÔ0Ð0Ð0Ø!&Ô!4°^Ô!DÐØ$ˆNÝÐ,­dÑ3Ô3ð KØ%×)Ò)¨(Ñ3Ô3ð IØ"Ð&HÐ*<¸XÔ*FÐ&HÐ&HÑH�NØ8JØô9�Ô% nÑ5Ð5Ð5õ Ð.µÑ4Ô4ð KØ8J�Ô% nÑ5Ð5Ð5ð 1Ð0ðKð Kr   N)r™   rš   r›   rU   r€  r©   rµ   rÂ   rÍ   rÚ   rÑ   rÖ   rÝ   rà   r°   rÓ  rw   r   r   rÆ  rÆ  X  sâ   € € € € € Ø ÐðOð Oð Oð-ð -ð -ðNð Nð Nð*
Ið 
Ið 
IðDð Dð Dð4
-ð 
-ð 
-ð-ð -ð -ð
-ð -ð -ð-ð -ð -ð
Að Að Að-ð -ð -ð
Kð Kð Kð Kð Kr   rÆ  c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚRpcV2CBORSerializerrì   c                 óf   •— t          d¦  «         t          ¦   «                              ||¦  «        S )NÚPROTOCOL_RPC_V2_CBOR)r   Úsuperr'   )r$   r*   r+   Ú	__class__s      €r   r'   z(RpcV2CBORSerializer.serialize_to_requestÝ  s,   ø€ ÝÐ2Ñ3Ô3Ð3Ý‰wŒw×+Ò+¨J¸ÑHÔHÐHr   c                 ój   — t          ¦   «         }|                      |||¦  «         t          |¦  «        S rf   )r)  r  r(  )r$   r*   ry   r3   s       r   r€  z*RpcV2CBORSerializer._serialize_body_paramsá  s/   € Ý‰{Œ{ˆØ×!Ò! $¨
°KÑ@Ô@Ð@Ý�T‰{Œ{Ðr   c                 óà   — d|d         d<   |j         rd}nd}|                      ||¦  «         |d         dk    }t          d|d         ¦  «        }||d         d	<   |s|r||d         d<   d S d S d S )
Nzrpc-v2-cborr2   zsmithy-protocolz"application/vnd.amazon.eventstreamzapplication/cborr3   r   r¢   ÚAccept)Úhas_event_stream_outputr˜   r   )r$   r5   r+   Ú
header_valrÁ  rÂ  s         r   r¶  z&RpcV2CBORSerializer._serialize_headersæ  sª   € Ø3@ˆ
�9ÔÐ/Ñ0àÔ2ð 	,Ø=ˆJˆJà+ˆJØ×+Ò+¨O¸ZÑHÔHÐHà˜fÔ%¨Ò,ˆÝ% n°jÀÔ6KÑLÔLÐà*4ˆ
�9Ô˜hÑ'Øð 	? Hð 	?Ø4>ˆJ�yÔ! .Ñ1Ð1Ð1ð	?ð 	?ð 	?ð 	?r   )r™   rš   r›   rU   r'   r€  r¶  Ú__classcell__)ró  s   @r   rï  rï  Ú  sa   ø€ € € € € Ø&ÐðIð Ið Ið Ið Iðð ð ð
?ð ?ð ?ð ?ð ?ð ?ð ?r   rï  )Úec2Úqueryrð   z	rest-jsonzrest-xmlzsmithy-rpc-v2-cbor)-ré   rj   rF   rO   r
  rð   r‘   ru  rH  Ú	xml.etreer   Úbotocorer   Úbotocore.compatr   Úbotocore.exceptionsr   Úbotocore.useragentr   Úbotocore.utilsr   r	   r
   r   ÚDEFAULT_TIMESTAMP_FORMATr@   r?   Úcompiler|   rž   r<   rI   r!   r   r   r    rä   rë   r  r^  r´  r½  rÆ  rï  r   rw   r   r   ú<module>r     s‡  ððð ð8 €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð ð ð %Ð Ø
€à'€Ø�”Ð1Ñ2Ô2€à'Ð Ø"/Ð Ø%Ð àØ#ØðÐ ð Ø3ðð ð ð ð:r@ð r@ð r@ð r@ð r@ñ r@ô r@ð r@ðjlEð lEð lEð lEð lE�jñ lEô lEð lEð^Pð Pð Pð Pð P�Oñ Pô Pð Pð<`Eð `Eð `Eð `Eð `E�Zñ `Eô `Eð `EðFe<ð e<ð e<ð e<ð e<�Zñ e<ô e<ð e<ðPQð Qð Qð Qð Q˜ñ Qô Qð Qðh(<ð (<ð (<ð (<ð (<˜*ñ (<ô (<ð (<ðVIð Ið Ið Ið IÐ+¨^ñ Iô Ið Ið@Kð Kð Kð Kð KÐ*ñ Kô Kð KðD?ð ?ð ?ð ?ð ?Ð-¨~ñ ?ô ?ð ?ð< ØØØ#Ø!Ø-ðð €€€r   