§
    «eîiœÉ  ã                   ó  — 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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ÚmillisecondTc                 ó†   — t          |          |¬¦  «        }|r(t          j        ¦   «         }t          j        ||¦  «        }|S )a3  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': Microseconds for ISO timestamps, seconds for Unix and RFC
        - 'millisecond': Millisecond precision (ISO/Unix), seconds for RFC
    :type timestamp_precision: str
    :return: A serializer instance for the given protocol.
    )Útimestamp_precision)ÚSERIALIZERSr   ÚParamValidatorÚParamValidationDecorator)Úprotocol_nameÚinclude_validationr   Ú
serializerÚ	validators        úV/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/botocore/serialize.pyÚcreate_serializerr   M   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__p   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_requestw   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                 óø   — | j         t          k    r8t          j        |                     ¦   «         ¦  «        }|j        dz  dz  }||z   S t          t          j        |                     ¦   «         ¦  «        ¦  «        S )zBReturn unix timestamp with precision based on timestamp_precision.r7   g     @�@)r"   r;   ÚcalendarÚtimegmÚ	timetupler<   Úint)r#   r@   Úbase_timestamprA   s       r   Ú_timestamp_unixtimestampz#Serializer._timestamp_unixtimestamp¼   sk   € ð Ô$Õ(GÒGÐGÝ%œ_¨U¯_ª_Ñ->Ô->Ñ?Ô?ˆNØ!Ô-°Ñ5¸Ñ?ˆLØ! LÑ0Ð0å•x” u§¢Ñ'8Ô'8Ñ9Ô9Ñ:Ô:Ð: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ÚdatetimerH   rE   rF   rG   r   ©r#   r@   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#   r@   rB   Ú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)rM   ÚstrÚencodeÚDEFAULT_ENCODINGÚbase64Ú	b64encodeÚstripÚdecoderO   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Úmemberr`   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#   r`   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ÚisnanrO   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Útruer1   zx-amzn-query-mode)Úservice_modelÚis_query_compatible)r#   r*   r4   s      r   Ú_handle_query_compatible_traitz)Serializer._handle_query_compatible_trait  s3   € ØÔ(Ô<ð 	@Ø9?ˆJ�yÔ!Ð"5Ñ6Ð6Ð6ð	@ð 	@r   rd   )Ú__name__Ú
__module__Ú__qualname__r3   ÚdictÚMAP_TYPErg   ÚTIMESTAMP_PRECISION_DEFAULTr$   r&   r5   rC   rJ   rP   rY   rb   rl   r†   rŠ   r‘   r–   ru   r   r   r   r   g   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 )
Nr0   úContent-Typez0application/x-www-form-urlencoded; charset=utf-8r1   ÚActionÚ
apiVersionÚVersionr2   Úhost_prefix)
rw   r5   Úhttpr_   r3   r›   r\   ÚmetadataÚ
_serializer†   )r#   r)   r*   r`   r4   Ú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©rU   Ú	type_nameÚ_default_serialize)r#   r4   r@   r`   r«   r0   s         r   r§   zQuerySerializer._serialize1  sJ   € õ ØØ0˜uœÐ0Ð0ØÔ#ñ
ô 
ˆð
 	ˆˆz˜5 %°Ð7Ñ7Ô7Ð7Ð7Ð7r   c                 óÆ   — |j         }|                     ¦   «         D ]D\  }}||         }|                      ||¦  «        }|r|› d|› �}|                      ||||¦  «         ŒEd S )Nr8   )rx   ry   rb   r§   )	r#   r4   r@   r`   r«   rx   ÚkeyÚmember_shapeÚmember_prefixs	            r   Ú_serialize_type_structurez)QuerySerializer._serialize_type_structure@  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\   ©ra   r8   éÿÿÿÿrr   é   )	rŠ   rr   r^   r_   rb   r}   ÚsplitÚ	enumerater§   )r#   r4   r@   r`   r«   Úlist_prefixr\   Ú	list_nameÚiÚelementÚelement_prefixÚelement_shapes               r   Ú_serialize_type_listz$QuerySerializer._serialize_type_listI  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µ   r@   r·   )r¼   Úsuffix)rŠ   r°   r@   rb   r¹   r~   r§   )r#   r4   r@   r`   r«   Úfull_prefixÚtemplateÚ	key_shapeÚvalue_shapeÚ
key_suffixÚvalue_suffixr¼   r°   Ú
key_prefixÚvalue_prefixs                  r   Ú_serialize_type_mapz#QuerySerializer._serialize_type_map\  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 rd   ©rl   ©r#   r4   r@   r`   r«   s        r   Ú_serialize_type_blobz$QuerySerializer._serialize_type_blobl  s    € à!×-Ò-¨eÑ4Ô4ˆ
�6ÑÐÐr   c                 óh   — |                       ||j                             d¦  «        ¦  «        ||<   d S ©NÚtimestampFormat©rY   r^   r_   rÎ   s        r   Ú_serialize_type_timestampz)QuerySerializer._serialize_type_timestampp  s9   € Ø!×;Ò;Ø�5Ô&×*Ò*Ð+<Ñ=Ô=ñ
ô 
ˆ
�6ÑÐÐr   c                 ó"   — |rd||<   d S d||<   d S ©Nr“   Úfalseru   rÎ   s        r   Ú_serialize_type_booleanz'QuerySerializer._serialize_type_booleanu  s*   € Øð 	)Ø!'ˆJ�vÑÐÐà!(ˆJ�vÑÐÐr   c                 ó   — |||<   d S rd   ru   rÎ   s        r   r®   z"QuerySerializer._default_serialize{  s   € Ø"ˆ
�6ÑÐÐr   c                 ó6   — |                       |¦  «        ||<   d S rd   )r‘   rÎ   s        r   Ú_serialize_type_floatz%QuerySerializer._serialize_type_float~  s    € Ø!×/Ò/°Ñ6Ô6ˆ
�6ÑÐÐr   c                 ó6   — |                       ||||¦  «         d S rd   ©rÛ   rÎ   s        r   Ú_serialize_type_doublez&QuerySerializer._serialize_type_double�  ó"   € Ø×"Ò" :¨u°e¸VÑDÔDÐDÐDÐDr   N©r-   )r—   r˜   r™   rS   r&   r§   r³   rÀ   rË   rÏ   rÔ   rØ   r®   rÛ   rÞ   ru   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#   r`   ra   r\   s       r   rb   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·   r8   )r¹   rr   r§   )	r#   r4   r@   r`   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__rb   rÀ   ru   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ÚjsonVersionr0   zapplication/x-amz-json-)zX-Amz-Targetr    r1   r2   r¤   )r~   r¦   r\   r5   r¥   r_   r3   r–   r›   rw   r§   ÚjsonÚdumpsrf   rg   r†   )	r#   r)   r*   ÚtargetÚjson_versionr4   r2   rw   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#   r4   r@   r`   r°   r0   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›   rx   ry   r^   r§   )
r#   r4   r@   r`   r°   Únew_serializedrx   Ú
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 rd   )r›   ry   r§   r@   )r#   r4   r@   r`   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§   rr   r|   )r#   r4   r@   r`   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 rd   ru   ©r#   r4   r@   r`   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 rd   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 rd   )rM   Ú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 rd   rÝ   rÎ   s        r   rÞ   z%JSONSerializer._serialize_type_double  rß   r   rd   rà   )r—   r˜   r™   rS   r&   r§   r³   rË   rÀ   r®   rÔ   rÏ   rÛ   rÞ   ru   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)rU   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#   r4   r@   r`   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 rd   )r!  r  s        r   Ú_serialize_type_longz#CBORSerializer._serialize_type_long+  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  )rM   re   rf   ÚbytesÚ	bytearrayÚreadÚlenr  r  ÚBLOB_MAJOR_TYPEr  r  )	r#   r4   r@   r`   r°   Úlengthr  r  r   s	            r   rÏ   z#CBORSerializer._serialize_type_blob.  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%  )rf   r)  r  r  ÚSTRING_MAJOR_TYPEr  r  )
r#   r4   r@   r`   r°   Úencodedr+  r  r  r   s
             r   Ú_serialize_type_stringz%CBORSerializer._serialize_type_stringB  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  rr   )
r#   r4   r@   r`   r°   r+  r  r  r   Úitems
             r   rÀ   z#CBORSerializer._serialize_type_listR  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 r1  )
r)  r  r  ÚMAP_MAJOR_TYPEr  r  ry   r  r°   r@   )r#   r4   r@   r`   r°   r+  r  r  r   Úkey_itemr3  s              r   rË   z"CBORSerializer._serialize_type_mapa  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 rd   ru   )rq   ÚkÚvs      r   ú
<dictcomp>z<CBORSerializer._serialize_type_structure.<locals>.<dictcomp>w  s   € ÐAÐAÐA™$˜!˜Q°1°=��A°=°=°=r   r   r  r\   )r  rÅ   ry   r)  r  r  r5  r  r  rx   r^   r/  )r#   r4   r@   r`   r°   Ú
map_lengthr  r  r   rx   rø   rù   r±   s                r   r³   z(CBORSerializer._serialize_type_structureq  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        |¦  «        }|                     |¦  «         |                      |¦  «        \  }}	|	dk    r2|                      | j        |¦  «        }|                     |¦  «         d S |                      | j        |¦  «        }|                     ||                     |	d¦  «        z   ¦  «         d S )Nr·   r   r  )rY   r  ÚTAG_MAJOR_TYPEr  r  r  r  )
r#   r4   r@   r`   r°   Ú	timestampÚtagr   r  r  s
             r   rÔ   z(CBORSerializer._serialize_type_timestamp’  s   € Ø×2Ò2°5Ñ9Ô9ˆ	ØˆØ×-Ò-¨dÔ.AÀ3ÑGÔGˆØ×Ò˜,Ñ'Ô'Ð'Ø%)×%LÒ%LØñ&
ô &
Ñ"ˆ˜ð ˜Š>ˆ>Ø×1Ò1ØÔ,¨iñô ˆLð ×Ò˜lÑ+Ô+Ð+Ð+Ð+à×1Ò1ØÔ,¨oñô ˆLð ×ÒØ˜y×1Ò1°)¸UÑCÔCÑCñô ð ð ð r   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#   r4   r@   r`   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>drC  rI  s         r   rÞ   z%CBORSerializer._serialize_type_double³  rJ  r   c                 ón   — |rdnd}|                      |                      | j        |¦  «        ¦  «         d S )Né   é   )r  r  rF  )r#   r4   r@   r`   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   é   )rQ  r·   i   )é   r  l        )rB  r  )rL  é   ru   rO   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�   rO   s     r   rD  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 )NrS  rX  z>Hi |  rY  i ü  i ~  )r  rF  rŽ   rG  rH  r�   r�   )r#   r@   r  r   s       r   rE  z-CBORSerializer._get_bytes_for_special_numbersë  s©   € ØˆØ×-Ò-ØÔ,¨oñ
ô 
ˆð •E˜%‘L”LÒ Ð Ø¥&¤+¨d°FÑ";Ô";Ñ;Ð;Ø•e˜F‘m”mÒ#Ð#Ø¥&¤+¨d°FÑ";Ô";Ñ;Ð;ÝŒZ˜ÑÔð 	<Ø¥&¤+¨d°FÑ";Ô";Ñ;Ð;ð	<ð 	<r   rd   )r—   r˜   r™   r  r  r*  r-  r2  r5  r>  rF  r  r!  r#  rÏ   r/  rÀ   rË   r³   rÔ   rÛ   rÞ   rØ   r  r  rD  rE  ru   r   r   r  r    sK  € € € € € ØÐØÐØ€OØÐØ€OØ€NØ€NØ"#Ðð.ð .ð .ð .ðOð Oð Oð$Dð Dð Dð!ð !ð !ð(ð ð ð Fð Fð FðEð Eð Eð ð ð ðBð ð ð,	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Úheaderr1   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 )Nr0   r¤   Ú
requestUrir.   )Úuri_path_kwargsÚquery_string_kwargsÚbody_kwargsr1   rd  ÚauthPathÚ	auth_pathre  r/   r1   )r5   r¥   r_   r3   rw   r†   rx   r›   ry   Ú_partition_parametersÚ_render_uri_templateÚ_serialize_payloadÚ_serialize_content_type)
r#   r)   r*   r4   r`   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/~)Úsaferu   )ÚreÚfindallÚendswithr   r~   )r#   Úuri_templateÚparamsÚencoded_paramsÚtemplate_params        r   rj  z'BaseRestSerializer._render_uri_templateF  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   r2   rf  )r^   r_   Ú_has_streaming_payloadÚ_encode_payloadÚ_serialize_body_paramsÚ_serialize_empty_bodyÚ_requires_empty_body)	r#   rn  r)   r4   r`   rm  Úpayload_memberÚbody_payloadr¨   s	            r   rk  z%BaseRestSerializer._serialize_payloadY  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   ru   ©r#   s    r   r€  z(BaseRestSerializer._serialize_empty_bodyy  s   € Øˆsr   c                 ó   — dS )z¡
        Some protocols require varied Content-Type headers
        depending on user input. This allows subclasses to apply
        this conditionally.
        Nru   )r#   r4   r`   rm  s       r   rl  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.
        Fru   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|  rm  s      r   r}  z)BaseRestSerializer._has_streaming_payload‹  s)   € à˜dÐ"ð 
 }°WÔ'=Ô'Gð L
ð (
ð 	
r   c                 ód   — t          |t          ¦  «        r|                     | j        ¦  «        S |S rd   )rM   re   rf   rg   )r#   r2   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_  rd  r`  re  Úlistc                 óF   •— g | ]}‰                      |‰j        ¦  «        ‘ŒS ru   )Ú_get_uri_and_query_string_valuerr   )rq   r@   rr   r#   s     €€r   rs   z<BaseRestSerializer._partition_parameters.<locals>.<listcomp>ª  s;   ø€ ð ð ð àð ×8Ò8¸ÀÄÑNÔNðð ð r   ra  r1   rf  )	r^   r_   r�  rM   rš   Úupdater­   Ú_convert_header_valueÚ_do_serialize_header_map)r#   rn  ro  rp  rm  r�  Úkey_nameÚuri_path_valueÚ	new_paramr`   Úheader_prefixrr   s   `          @r   ri  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Úbooleanr?  rÒ   ©rŽ   Údouble)r­   re   rT   r^   r_   ÚQUERY_STRING_TIMESTAMP_FORMATrY   r‘   )r#   rp  rr   rB   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 rd   )ry   )r#   r—  r1   Ú
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#   rx  r`   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 )Nr?  rÒ   rŽ  rŠ  c                 ó>   •— g | ]}|®‰                      |¦  «        ‘ŒS rd   )Ú_escape_header_list_string)rq   r:  r#   s     €r   rs   z<BaseRestSerializer._convert_header_value.<locals>.<listcomp>ì  s4   ø€ ð #ð #ð #àØ�}ð ×3Ò3°AÑ6Ô6à$�}�}r   c                 óJ   •— g | ]}|®‰                      ‰j        |¦  «        ‘Œ S rd   )r’  rr   )rq   r:  r#   r`   s     €€r   rs   z<BaseRestSerializer._convert_header_value.<locals>.<listcomp>ò  s8   ø€ ð #ð #ð #àØ�}ð ×.Ò.¨u¬|¸QÑ?Ô?à$�}�}r   ú,)r¨  ú:)Ú
separatorsr™  rš  )r­   r
   rE   rF   Úutctimetupler^   r_   ÚHEADER_TIMESTAMP_FORMATre   rY   rr   r}   r	   rl   rî   rï   rT   r‘   )r#   r`   r@   rV   r?  rB   Ú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\")ÚreplacerO   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&   rj  rk  r€  rl  r�  r}  r~  ri  r�  r“  r  r’  r¦  ru   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¤   )r5   r”   r¦   r\   rw   rk  r†   Ú_serialize_headers)r#   r)   r*   r4   Úservice_nameÚoperation_namerw   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 )Nr2   )r  )r#   r)   r4   r`   rƒ  s        r   rk  z&BaseRpcV2Serializer._serialize_payload,  s'   € Ø×2Ò2°:¸uÑEÔEˆØ)ˆ
�6ÑÐÐr   c                 ó    — t          d¦  «        ‚)Nrµ  r'   )r#   r4   r*   s      r   rµ  z&BaseRpcV2Serializer._serialize_headers0  s   € Ý!Ð"6Ñ7Ô7Ð7r   c                 ó    — t          d¦  «        ‚r¢  r'   )r#   r)   r`   s      r   r  z*BaseRpcV2Serializer._serialize_body_params3  r£  r   N)r—   r˜   r™   rç   r&   rk  rµ  r  ru   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   {}ru   r…  s    r   r€  z(RestJSONSerializer._serialize_empty_body8  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)rx   ry   r^   )r#   r`   rr   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|  Nr2   r   r    r1   zapplication/json)r^   r_   r}  r   )r#   r4   r`   rm  r|  Úhas_bodyÚhas_content_types          r   rl  z*RestJSONSerializer._serialize_content_typeE  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 rd   )r›   r§   rî   rï   rf   rg   )r#   rx  r`   Úserialized_bodys       r   r  z)RestJSONSerializer._serialize_body_paramsQ  sF   € ØŸ-š-™/œ/ˆØ�Š˜¨°Ñ7Ô7Ð7ÝŒz˜/Ñ*Ô*×1Ò1°$Ô2GÑHÔHÐHr   N)r—   r˜   r™   r€  r�  rl  r  ru   r   r   r¼  r¼  7  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Ž  Útostringrg   )r#   rx  r`   Ú	root_nameÚpseudo_rootÚ	real_roots         r   r  z(RestXMLSerializer._serialize_body_paramsZ  sb   € ØÔ'¨Ô/ˆ	Ý!Ô)¨"Ñ-Ô-ˆØ�Š˜˜v {°IÑ>Ô>Ð>Ý˜Ñ%Ô% aÔ(ˆ	ÝÔ# I¸Ô8MÐNÑNÔNÐNr   c                 ó^   — t          | d|j        › �| j        ¦  «        } |||||¦  «         d S ró   r¬   )r#   r`   rx  Úxmlnoder\   r0   s         r   r§   zRestXMLSerializer._serializea  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_namespacery   rx   r^   r_   Úattribr§   )r#   rÎ  rx  r`   r\   Ústructure_noder°   r@   r±   Úmember_nameÚxml_attribute_names              r   r³   z+RestXMLSerializer._serialize_type_structurei  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\   rr   )rr   r^   r_   r   rÑ  rÒ  r§   )	r#   rÎ  rx  r`   r\   r±   Úelement_nameÚ	list_noder3  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µ   r@   )	rŠ   r   rÑ  rÒ  ry   rb   r°   r@   r§   )r#   rÎ  rx  r`   r\   Únoder°   r@   Ú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Î  rx  r`   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 rd   )r   rÑ  rl   rà  rÒ  ©r#   rÎ  rx  r`   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Ñ  re   rY   r^   r_   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 rd   )r   rÑ  re   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 rd   rÝ   )r#   rÎ  rx  r`   r\   s        r   rÞ   z(RestXMLSerializer._serialize_type_doubleÃ  s"   € Ø×"Ò" 7¨F°E¸4Ñ@Ô@Ð@Ð@Ð@r   c                 ó„   — t          j        ||¦  «        }t          |¦  «        |_        |                      ||¦  «         d S rd   )r   rÑ  re   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^   rM   rš   r_   rÓ  re   )r#   r`   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™   rS   r  r§   r³   rÀ   rË   rØ   rÏ   rÔ   rÛ   rÞ   r®   rÒ  ru   r   r   rÅ  rÅ  W  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 rd   )r'  r  r&  )r#   r)   rw   r2   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-cborr1   zsmithy-protocolz"application/vnd.amazon.eventstreamzapplication/cborr2   r   r    ÚAccept)Úhas_event_stream_outputr–   r   )r#   r4   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™   rS   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ç   rh   rE   rN   r  rî   r�   rt  rG  Ú	xml.etreer   Úbotocorer   Úbotocore.compatr   Úbotocore.exceptionsr   Úbotocore.useragentr   Úbotocore.utilsr   r	   r
   r   ÚDEFAULT_TIMESTAMP_FORMATr?   r>   Úcompilerz   rœ   r;   r    r   r   rž   râ   ré   r  r]  r³  r¼  rÅ  rî  r   ru   r   r   ú<module>r     s~  ððð ð8 €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð ð ð %Ð Ø
€à'€Ø�”Ð1Ñ2Ô2€à'Ð Ø"/Ð àØ#ðÐ ð Ø3ðð ð ð ð4l@ð l@ð l@ð l@ð l@ñ l@ô l@ð l@ð^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o<ð o<ð o<ð o<ð o<�Zñ o<ô o<ð o<ðd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   