ó
    Ú°›jœÉ  ã                   óÚ  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSKJr  SSKJr  SSKJr  SSKJr  SSKJrJrJrJr  S	rS
rSr\R6                  " S5      rSrSr\\4rS\4S jr  " S S5      r! " S S\!5      r" " S S\"5      r# " S S\!5      r$ " S S\!5      r% " S S\!5      r& " S S\!5      r' " S S \&\$5      r( " S! S"\&5      r) " S# S$\'\%5      r*\#\"\$\(\)\*S%.r+g)&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                 ó„   • [         U    " US9nU(       a+  [        R                  " 5       n[        R                  " XC5      nU$ )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': 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        ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/serialize.pyÚcreate_serializerr   M   s?   € ô" ˜]Ò+Ø/ñ€Jö Ü×+Ò+Ó-ˆ	Ü×6Ò6°yÓMˆ
ØÐó    c                   óx   • \ rS rSrSr\rSr\4S jr	S r
S rS rS rS	 rSS jrS rS rS rS rS rS rSrg
)Ú
Serializerég   ÚPOSTúutf-8c                 ó@   • U[         ;  a  [        SU 35      eXl        g )Nz=Invalid timestamp precision found while creating serializer: )ÚTIMESTAMP_PRECISION_OPTIONSÚ
ValueErrorÚ_timestamp_precision)Úselfr   s     r   Ú__init__ÚSerializer.__init__p   s,   € ØÔ&AÓAÜØOÐPcÐOdÐeóð ð %8Õ!r   c                 ó   • [        S5      e)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(   ÚSerializer.serialize_to_requestw   s   € ôH "Ð"8Ó9Ð9r   c                 ó*   • SSU R                   0 SS.nU$ )NÚ/Ú r   )Úurl_pathÚquery_stringÚmethodÚheadersÚbody)ÚDEFAULT_METHOD)r$   Ú
serializeds     r   Ú_create_default_requestÚ"Serializer._create_default_request�   s(   € ð ØØ×)Ñ)Øàñ
ˆ
ð Ðr   c                 óÖ   • U R                   [        :X  a(  UR                  S-  nUR                  S5      SUS S3-   $ UR                  S:”  a  [        nO[
        nUR                  U5      $ )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_iso8601ÚSerializer._timestamp_iso8601¬   sr   € ð ×$Ñ$Ô(GÓGØ ×,Ñ,°Ñ4ˆLà—‘Ð2Ó3¸¸,ÀsÐ9KÈ1Ð6MÑMðð
 × Ñ  1Ó$Ü#0Ñ ä#*Ð Ø—>‘>Ð"2Ó3Ð3r   c                 óø   • U R                   [        :X  a:  [        R                  " UR	                  5       5      nUR
                  S-  S-  nX#-   $ [        [        R                  " UR	                  5       5      5      $ )zBReturn unix timestamp with precision based on timestamp_precision.r;   g     @�@)r#   r?   ÚcalendarÚtimegmÚ	timetupler@   Úint)r$   rD   Úbase_timestamprE   s       r   Ú_timestamp_unixtimestampÚ#Serializer._timestamp_unixtimestamp¼   sa   € ð ×$Ñ$Ô(GÓGÜ%Ÿ_š_¨U¯_©_Ó->Ó?ˆNØ!×-Ñ-°Ñ5¸Ñ?ˆLØ!Ñ0Ð0ä”x—’ u§¡Ó'8Ó9Ó:Ð:r   c                 ó®   • [        U[        R                  5      (       a-  [        [        R                  " UR                  5       5      5      n[        USS9$ )zSReturn RFC822 timestamp (always second precision - RFC doesn't support sub-second).T)Úusegmt)Ú
isinstanceÚdatetimerM   rJ   rK   rL   r   ©r$   rD   s     r   Ú_timestamp_rfc822ÚSerializer._timestamp_rfc822Æ   s>   € ô �eœX×.Ñ.×/Ñ/ÜœŸš¨¯©Ó(9Ó:Ó;ˆEÜ˜%¨Ñ-Ð-r   Nc                 óˆ   • Uc  U R                   nUR                  5       n[        U5      n[        U SU 35      nU" U5      nU$ )NÚ_timestamp_)ÚTIMESTAMP_FORMATÚlowerr
   Úgetattr)r$   rD   rF   Údatetime_objÚ	converterÚfinal_values         r   Ú_convert_timestamp_to_strÚ$Serializer._convert_timestamp_to_strÍ   sR   € ØÑ#Ø#×4Ñ4ÐØ+×1Ñ1Ó3ÐÜ.¨uÓ5ˆÜ˜D KÐ0@Ð/AÐ"BÓCˆ	Ù Ó-ˆØÐr   c                 ó:   • UR                   R                  SU5      $ ©NÚname©ÚserializationÚget)r$   ÚshapeÚdefault_names      r   Ú_get_serialized_nameÚSerializer._get_serialized_nameÖ   s   € ð ×"Ñ"×&Ñ& v¨|Ó<Ð<r   c                 óÜ   • [        U[        5      (       a  UR                  U R                  5      n[        R
                  " U5      R                  5       R                  U R                  5      $ ©N)rS   ÚstrÚencodeÚDEFAULT_ENCODINGÚbase64Ú	b64encodeÚstripÚdecoderU   s     r   Ú_get_base64ÚSerializer._get_base64Û   sP   € ô �eœS×!Ñ!Ø—L‘L ×!6Ñ!6Ó7ˆEÜ×Ò Ó&×,Ñ,Ó.×5Ñ5°d×6KÑ6KÓLÐLr   c                 ó  • UR                   nUb  SU;  a  g US   nUR                  c  U$ UR                  R                  nUR                  5        VVs/ s H)  u  pgUR                  R                  S5      (       d  M'  UPM+     nnn0 n	/ n
U H6  nX   n[        R                  U5      (       d  U
R                  U5        XÉU'   M8     U
(       a  [        SSR                  U
5       S3S9eUR                  " S0 U	D6$ s  snnf )NÚ
hostPrefixÚ	hostLabelz Invalid value for parameter(s): z, z?. Must contain only alphanumeric characters, hyphen, or period.)Úreport© )ÚendpointÚinput_shapeÚmembersÚitemsrf   rg   ÚHOST_PREFIX_REÚmatchÚappendr   ÚjoinÚformat)r$   r+   r,   Úoperation_endpointÚhost_prefix_expressionÚinput_membersÚmemberrh   Úhost_labelsÚformat_kwargsÚ
bad_labelsrd   Úparams                r   Ú_expand_host_prefixÚSerializer._expand_host_prefixã   s  € Ø,×5Ñ5ÐàÑ&ØÐ#5Ó5àà!3°LÑ!AÐØ×&Ñ&Ñ.Ø)Ð)Ø'×3Ñ3×;Ñ;ˆð "/×!4Ñ!4Ô!6ô
â!6‘�Ø×"Ñ"×&Ñ& {×3÷ Ù!6ð 	ñ 
ð
 ˆØˆ
ÛˆDØÑ$ˆEÜ!×'Ñ'¨×.Ñ.Ø×!Ñ! $Ô'Ø"'˜$Óñ	  ö
 Ü&à6°t·y±yÀÓ7LÐ6Mð N!ð !ñð ð &×,Ò,Ñ=¨}Ñ=Ð=ùó)
s   Á&C<Á>C<c                 ó8   • UR                   R                  S5      $ )NÚ	flattenedre   ©r$   rh   s     r   Ú_is_shape_flattenedÚSerializer._is_shape_flattened  s   € Ø×"Ñ"×&Ñ& {Ó3Ð3r   c                 óŒ   • U[        S5      :X  a  SnU$ U[        S5      :X  a  SnU$ [        R                  " U5      (       a  SnU$ )NÚInfinityz	-InfinityÚNaN)ÚfloatÚmathÚisnanrU   s     r   Ú_handle_floatÚSerializer._handle_float  sQ   € Ø”E˜*Ó%Ó%ØˆEð
 ˆð	 ”e˜KÓ(Ó(ØˆEð ˆô �ZŠZ˜×ÑØˆEØˆr   c                 óL   • UR                   R                  (       a	  SUS   S'   g g )NÚtruer4   zx-amzn-query-mode)Úservice_modelÚis_query_compatible)r$   r,   r7   s      r   Ú_handle_query_compatible_traitÚ)Serializer._handle_query_compatible_trait  s&   € Ø×(Ñ(×<×<Ø9?ˆJ�yÑ!Ð"5Ò6ð =r   )r#   rm   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r6   ÚdictÚMAP_TYPErp   ÚTIMESTAMP_PRECISION_DEFAULTr%   r(   r8   rG   rO   rV   r`   rj   ru   r�   r’   rš   r    Ú__static_attributes__r{   r   r   r   r   g   s\   † Ø€Nð
 €HØÐà+Fô 8ò$:òLò4ò ;ò.ôò=ò
Mò >òD4òõ@r   r   c                   ó‚   • \ rS rSrSrS rSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSrg)ÚQuerySerializeri  r   c                 ób  • UR                   nU R                  5       nUR                  R                  SU R                  5      US'   SS0US'   U R                  5       nUR                  US'   UR                  S   US'   Ub  U R                  XQU5        XTS'   U R                  X5      nUb  XdS	'   U$ )
Nr3   úContent-Typez0application/x-www-form-urlencoded; charset=utf-8r4   ÚActionÚ
apiVersionÚVersionr5   Úhost_prefix)
r}   r8   Úhttprg   r6   r§   rd   ÚmetadataÚ
_serializer�   )r$   r+   r,   rh   r7   Úbody_paramsr±   s          r   r(   Ú$QuerySerializer.serialize_to_request  sÇ   € Ø×+Ñ+ˆØ×1Ñ1Ó3ˆ
Ø.×3Ñ3×7Ñ7Ø�d×)Ñ)ó 
ˆ
�8Ñð ÐNð!
ˆ
�9Ñð
 —m‘m“oˆØ /× 4Ñ 4ˆ�HÑØ!0×!9Ñ!9¸,Ñ!Gˆ�IÑØÑØ�O‰O˜K°UÔ;Ø(�6Ñà×.Ñ.¨zÓKˆØÑ"Ø(3�}Ñ%àÐr   c                 óZ   • [        U SUR                   3U R                  5      nU" XX4S9  g )NÚ_serialize_type_)Úprefix©r\   Ú	type_nameÚ_default_serialize)r$   r7   rD   rh   r¹   r3   s         r   r´   ÚQuerySerializer._serialize1  s5   € ô ØØ˜uŸ™Ð/Ð0Ø×#Ñ#ó
ˆñ
 	ˆz %Ó7r   c                 ó¸   • UR                   nUR                  5        H:  u  pbXV   nU R                  Xv5      nU(       a  U SU 3nU R                  XXx5        M<     g )Nr<   )r~   r   rj   r´   )	r$   r7   rD   rh   r¹   r~   ÚkeyÚmember_shapeÚmember_prefixs	            r   Ú_serialize_type_structureÚ)QuerySerializer._serialize_type_structure@  sU   € Ø—-‘-ˆØŸ+™+ž-‰JˆCØ"™<ˆLØ ×5Ñ5°lÓHˆMÞØ#) (¨!¨M¨?Ð ;�Ø�O‰O˜J¨|ÖKò (r   c                 óò  • U(       d  SX'   g U R                  U5      (       an  UnUR                  R                  R                  S5      (       aA  U R	                  UR                  SS9nSR                  UR                  S5      S S U/-   5      nO-UR                  R                  R                  SS5      nU SU 3n[        US5       H*  u  p‰U SU 3n
UR                  nU R                  XXº5        M,     g )Nr0   rd   ©ri   r<   éÿÿÿÿrˆ   é   )	r’   rˆ   rf   rg   rj   rƒ   ÚsplitÚ	enumerater´   )r$   r7   rD   rh   r¹   Úlist_prefixrd   Ú	list_nameÚiÚelementÚelement_prefixÚelement_shapes               r   Ú_serialize_type_listÚ$QuerySerializer._serialize_type_listI  sæ   € Þà!#ˆJÑØØ×#Ñ# E×*Ñ*Ø ˆKØ�|‰|×)Ñ)×-Ñ-¨f×5Ñ5Ø×0Ñ0°·±ÈBÐ0ÐO�à!Ÿh™h v§|¡|°CÓ'8¸¸"Ð'=ÀÀÑ'FÓG�øàŸ™×2Ñ2×6Ñ6°v¸xÓHˆIØ#˜H A i [Ð1ˆKÜ# E¨1Ö-‰JˆAØ +˜}¨A¨a¨SÐ1ˆNØ!ŸL™LˆMØ�O‰O˜J°ÖOò .r   c                 ór  • U R                  U5      (       a  UnOU S3nUS-   nUR                  nUR                  nU R                  USS9n	U R                  US5      n
[	        US5       HJ  u  p¼UR                  X¹S9nUR                  XºS9nU R                  XX}5        U R                  XU   XŽ5        ML     g )Nz.entryz.{i}.{suffix}r¿   rÅ   rD   rÇ   )rÌ   Úsuffix)r’   r¿   rD   rj   rÉ   r„   r´   )r$   r7   rD   rh   r¹   Úfull_prefixÚtemplateÚ	key_shapeÚvalue_shapeÚ
key_suffixÚvalue_suffixrÌ   r¿   Ú
key_prefixÚvalue_prefixs                  r   Ú_serialize_type_mapÚ#QuerySerializer._serialize_type_map\  sº   € Ø×#Ñ# E×*Ñ*Ø ‰Kà#˜H FÐ+ˆKØ Ñ0ˆØ—I‘Iˆ	Ø—k‘kˆØ×.Ñ.¨yÀuÐ.ÐMˆ
Ø×0Ñ0°¸gÓFˆÜ  qÖ)‰FˆAØ!Ÿ™¨1˜Ð@ˆJØ#Ÿ?™?¨Q˜?ÐDˆLØ�O‰O˜J¨YÔCØ�O‰O˜J¨c©
°KÖNò	 *r   c                 ó*   • U R                  U5      X'   g rm   ©ru   ©r$   r7   rD   rh   r¹   s        r   Ú_serialize_type_blobÚ$QuerySerializer._serialize_type_blobl  s   € à!×-Ñ-¨eÓ4ˆ
Òr   c                 ó\   • U R                  X#R                  R                  S5      5      X'   g ©NÚtimestampFormat©r`   rf   rg   rà   s        r   Ú_serialize_type_timestampÚ)QuerySerializer._serialize_type_timestampp  s*   € Ø!×;Ñ;Ø×&Ñ&×*Ñ*Ð+<Ó=ó
ˆ
Òr   c                 ó$   • U(       a  SX'   g SX'   g ©Nr�   Úfalser{   rà   s        r   Ú_serialize_type_booleanÚ'QuerySerializer._serialize_type_booleanu  s   € ÞØ!'ˆJÒà!(ˆJÒr   c                 ó   • X!U'   g rm   r{   rà   s        r   r¼   Ú"QuerySerializer._default_serialize{  s
   € Ø"�6Òr   c                 ó*   • U R                  U5      X'   g rm   )rš   rà   s        r   Ú_serialize_type_floatÚ%QuerySerializer._serialize_type_float~  s   € Ø!×/Ñ/°Ó6ˆ
Òr   c                 ó(   • U R                  XX45        g rm   ©rñ   rà   s        r   Ú_serialize_type_doubleÚ&QuerySerializer._serialize_type_double�  ó   € Ø×"Ñ" :°eÕDr   r{   N©r0   )r¢   r£   r¤   r¥   rZ   r(   r´   rÂ   rÐ   rÜ   rá   rç   rì   r¼   rñ   rõ   r©   r{   r   r   r«   r«     sC   † Ø Ðòô08ôLôPô&Oô 5ô
ô
)ô#ô7÷Er   r«   c                   ó(   • \ rS rSrSrS rSS jrSrg)ÚEC2Serializeri…  aA  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                 ó´   • SUR                   ;   a  UR                   S   $ SUR                   ;   a(  UR                   S   nUS   R                  5       USS  -   $ U$ )NÚ	queryNamerd   r   rÇ   )rf   Úupper)r$   rh   ri   rd   s       r   rj   Ú"EC2Serializer._get_serialized_name�  sd   € ð ˜%×-Ñ-Ó-Ø×&Ñ& {Ñ3Ð3Ø�u×*Ñ*Ó*ð ×&Ñ& vÑ.ˆDØ˜‘7—=‘=“? T¨!¨" XÑ-Ð-àÐr   c                 óx   • [        US5       H*  u  pVU SU 3nUR                  nU R                  XX‡5        M,     g )NrÇ   r<   )rÉ   rˆ   r´   )	r$   r7   rD   rh   r¹   rÌ   rÍ   rÎ   rÏ   s	            r   rÐ   Ú"EC2Serializer._serialize_type_listœ  s;   € Ü# E¨1Ö-‰JˆAØ &˜x q¨¨˜_ˆNØ!ŸL™LˆMØ�O‰O˜J°ÖOò .r   r{   Nrø   )r¢   r£   r¤   r¥   Ú__doc__rj   rÐ   r©   r{   r   r   rú   rú   …  s   † ñò ÷Pr   rú   c                   ó`   • \ rS rSrSrS rSS jrS rS rS r	S	 r
S
 rS rSS jrSS jrSrg)ÚJSONSerializeri£  Úunixtimestampc                 ó  • SR                  UR                  S   UR                  5      nUR                  S   nU R                  5       nUR                  R                  SU R                  5      US'   USU 3S.US'   U R                  X%5        U R                  5       nUR                  nUb  U R                  XaU5        [        R                  " U5      R                  U R                  5      US'   U R                  X5      nUb  X…S	'   U$ )
Nz{}.{}ÚtargetPrefixÚjsonVersionr3   zapplication/x-amz-json-)zX-Amz-Targetr­   r4   r5   r±   )r„   r³   rd   r8   r²   rg   r6   r    r§   r}   r´   ÚjsonÚdumpsro   rp   r�   )	r$   r+   r,   ÚtargetÚjson_versionr7   r5   r}   r±   s	            r   r(   Ú#JSONSerializer.serialize_to_request¦  s
  € Ø—‘Ø×$Ñ$ ^Ñ4Ø× Ñ ó
ˆð '×/Ñ/°Ñ>ˆØ×1Ñ1Ó3ˆ
Ø.×3Ñ3×7Ñ7Ø�d×)Ñ)ó 
ˆ
�8Ñð #Ø5°l°^ÐDñ!
ˆ
�9Ñð 	×+Ñ+¨OÔHà�}‰}‹ˆØ%×1Ñ1ˆØÑ"Ø�O‰O˜D¨kÔ:Ü!ŸZšZ¨Ó-×4Ñ4°T×5JÑ5JÓKˆ
�6Ñà×.Ñ.¨zÓKˆØÑ"Ø(3�}Ñ%àÐr   Nc                 ó^   • [        U SUR                   3U R                  5      nU" XX45        g ©Nr¸   rº   ©r$   r7   rD   rh   r¿   r3   s         r   r´   ÚJSONSerializer._serializeÂ  s3   € ÜØØ˜uŸ™Ð/Ð0Ø×#Ñ#ó
ˆñ
 	ˆz %Õ-r   c                 ó  • UR                   (       a  X!U'   g Ub  U R                  5       nXQU'   UnUR                  nUR                  5        H:  u  pxXg   n	SU	R                  ;   a  U	R                  S   nU R                  XX—5        M<     g rc   )Úis_document_typer§   r~   r   rf   r´   )
r$   r7   rD   rh   r¿   Únew_serializedr~   Ú
member_keyÚmember_valuerÀ   s
             r   rÂ   Ú(JSONSerializer._serialize_type_structureÊ  sƒ   € Ø×!×!Ø#�sŠOà‰ð "&§¡£�Ø"0˜3‘Ø+�
Ø—m‘mˆGØ,1¯K©K®MÑ(�
Ø&Ñ2�Ø˜\×7Ñ7Ó7Ø!-×!;Ñ!;¸FÑ!C�JØ—‘Ø¨löò	 -:r   c                 ó˜   • U R                  5       nXQU'   UR                  5        H"  u  pgU R                  XWUR                  U5        M$     g rm   )r§   r   r´   rD   )r$   r7   rD   rh   r¿   Úmap_objÚsub_keyÚ	sub_values           r   rÜ   Ú"JSONSerializer._serialize_type_mapà  s;   € Ø—-‘-“/ˆØ!�3‰Ø"'§+¡+¦-ÑˆGØ�O‰O˜G°·±¸WÖEò #0r   c                 óˆ   • / nXQU'   U H6  n0 nU R                  XvUR                  S5        UR                  US   5        M8     g )NÚ__current__)r´   rˆ   r‚   )r$   r7   rD   rh   r¿   Úlist_objÚ	list_itemÚwrappers           r   rÐ   Ú#JSONSerializer._serialize_type_listæ  sD   € ØˆØ"�3‰ÛˆIØˆGð
 �O‰O˜G°·±¸mÔLØ�O‰O˜G MÑ2Ö3ò r   c                 ó   • X!U'   g rm   r{   ©r$   r7   rD   rh   r¿   s        r   r¼   Ú!JSONSerializer._default_serializeò  s	   € Ø�3Šr   c                 ó\   • U R                  X#R                  R                  S5      5      X'   g rä   ræ   r#  s        r   rç   Ú(JSONSerializer._serialize_type_timestampõ  s)   € Ø×8Ñ8Ø×&Ñ&×*Ñ*Ð+<Ó=ó
ˆ
Šr   c                 ó*   • U R                  U5      X'   g rm   rß   r#  s        r   rá   Ú#JSONSerializer._serialize_type_blobú  s   € Ø×*Ñ*¨5Ó1ˆ
Šr   c                 ó~   • [        U[        R                  5      (       a  [        U5      nU R	                  U5      X'   g rm   )rS   ÚdecimalÚDecimalr—   rš   rà   s        r   rñ   Ú$JSONSerializer._serialize_type_floatý  s/   € Ü�eœWŸ_™_×-Ñ-Ü˜%“LˆEØ!×/Ñ/°Ó6ˆ
Òr   c                 ó(   • U R                  XX45        g rm   rô   rà   s        r   rõ   Ú%JSONSerializer._serialize_type_double  r÷   r   r{   rm   rø   )r¢   r£   r¤   r¥   rZ   r(   r´   rÂ   rÜ   rÐ   r¼   rç   rá   rñ   rõ   r©   r{   r   r   r  r  £  s<   † Ø&Ðòô8.òò,Fò
4ò ò
ò
2ô7÷
Er   r  c                   ó˜   • \ rS rSrSrSrSrSrSrSr	Sr
S	rSS jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg
)ÚCBORSerializeri  r   rÇ   é   é   é   é   é   é   Nc                 ó€   • [        U SUR                   35      nUc  [        SUR                   S35      eU" XX45        g )Nr¸   zUnrecognized C2J type: z, unable to serialize request)r\   r»   r"   r  s         r   Ú_serialize_data_itemÚ#CBORSerializer._serialize_data_item  sO   € Ü˜Ð!1°%·/±/Ð1BÐCÓDˆØ‰>ÜØ)¨%¯/©/Ð):ð ;$ð %óð ñ 	ˆz %Õ-r   c                 ó
  • US:¼  a  U R                   nOU R                  nSU-
  nU R                  U5      u  pgU R                  XV5      nUS:X  a  UR	                  U5        g UR	                  X‚R                  US5      -   5        g )Nr   rÆ   Úbig)ÚUNSIGNED_INT_MAJOR_TYPEÚNEGATIVE_INT_MAJOR_TYPEÚ"_get_additional_info_and_num_bytesÚ_get_initial_byteÚextendÚto_bytes)	r$   r7   rD   rh   r¿   Ú
major_typeÚadditional_infoÚ	num_bytesÚinitial_bytes	            r   Ú_serialize_type_integerÚ&CBORSerializer._serialize_type_integer  sƒ   € Ø�A‹:Ø×5Ñ5‰Jà×5Ñ5ˆJð ˜‘JˆEØ%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-¨jÓJˆØ˜‹>Ø×Ñ˜lÕ+à×Ñ˜l¯^©^¸IÀuÓ-MÑMÕNr   c                 ó(   • U R                  XX45        g rm   )rF  r#  s        r   Ú_serialize_type_longÚ#CBORSerializer._serialize_type_long+  s   € Ø×$Ñ$ Z¸ÕCr   c                 ó´  • [        U[        5      (       a  UR                  S5      nO+[        U[        [        45      (       d  UR                  5       n[        U5      nU R                  U5      u  pgU R                  U R                  U5      nUS:X  a  UR                  U5        O#UR                  X…R                  US5      -   5        UR                  U5        g ©Nr   r   r;  )rS   rn   ro   ÚbytesÚ	bytearrayÚreadÚlenr>  r?  ÚBLOB_MAJOR_TYPEr@  rA  )	r$   r7   rD   rh   r¿   ÚlengthrC  rD  rE  s	            r   rá   Ú#CBORSerializer._serialize_type_blob.  s¹   € Ü�eœS×!Ñ!Ø—L‘L Ó)‰EÜ˜E¤E¬9Ð#5×6Ñ6ð —J‘J“LˆEÜ�U“ˆØ%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-Ø× Ñ  /ó
ˆð ˜‹>Ø×Ñ˜lÕ+à×Ñ˜l¯_©_¸YÈÓ-NÑNÔOØ×Ñ˜%Õ r   c                 ó  • UR                  S5      n[        U5      nU R                  U5      u  pxU R                  U R                  U5      n	US:X  a  UR                  X•-   5        g UR                  X–R                  US5      -   U-   5        g rL  )ro   rP  r>  r?  ÚSTRING_MAJOR_TYPEr@  rA  )
r$   r7   rD   rh   r¿   ÚencodedrR  rC  rD  rE  s
             r   Ú_serialize_type_stringÚ%CBORSerializer._serialize_type_stringB  sŠ   € Ø—,‘,˜wÓ'ˆÜ�W“ˆØ%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-Ø×"Ñ" Oó
ˆð ˜‹>Ø×Ñ˜lÑ4Õ5à×ÑØŸ™¨y¸%Ó@Ñ@À7ÑJõr   c                 ó8  • [        U5      nU R                  U5      u  pgU R                  U R                  U5      nUS:X  a  UR	                  U5        O#UR	                  X…R                  US5      -   5        U H  n	U R                  XUR                  5        M!     g ©Nr   r;  )rP  r>  r?  ÚLIST_MAJOR_TYPEr@  rA  r8  rˆ   )
r$   r7   rD   rh   r¿   rR  rC  rD  rE  Úitems
             r   rÐ   Ú#CBORSerializer._serialize_type_listR  s�   € Ü�U“ˆØ%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-Ø× Ñ  /ó
ˆð ˜‹>Ø×Ñ˜lÕ+à×Ñ˜l¯_©_¸YÈÓ-NÑNÔOÛˆDØ×%Ñ% j¸¿¹ÖEò r   c                 ó�  • [        U5      nU R                  U5      u  pgU R                  U R                  U5      nUS:X  a  UR	                  U5        O#UR	                  X…R                  US5      -   5        UR                  5        H=  u  pšU R                  XUR                  5        U R                  XUR                  5        M?     g rZ  )
rP  r>  r?  ÚMAP_MAJOR_TYPEr@  rA  r   r8  r¿   rD   )r$   r7   rD   rh   r¿   rR  rC  rD  rE  Úkey_itemr\  s              r   rÜ   Ú"CBORSerializer._serialize_type_mapa  s«   € Ü�U“ˆØ%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-Ø×Ñ ó
ˆð ˜‹>Ø×Ñ˜lÕ+à×Ñ˜l¯_©_¸YÈÓ-NÑNÔOØ#Ÿk™kžm‰NˆHØ×%Ñ% j¸E¿I¹IÔFØ×%Ñ% j¸¿¹ÖDò ,r   c                 ón  • Ub  U R                  XUR                  5        UR                  5        VVs0 s H  u  pVUc  M
  XV_M     nnn[        U5      nU R	                  U5      u  p‰U R                  U R                  U5      n
U	S:X  a  UR                  U
5        O#UR                  X§R                  U	S5      -   5        UR                  nUR                  5        HR  u  pÍX¼   nSUR                  ;   a  UR                  S   nUc  M-  U R                  XS S 5        U R                  XU5        MT     g s  snnf )Nr   r;  rd   )r8  rÖ   r   rP  r>  r?  r_  r@  rA  r~   rf   rW  )r$   r7   rD   rh   r¿   ÚkÚvÚ
map_lengthrC  rD  rE  r~   r  r  rÀ   s                  r   rÂ   Ú(CBORSerializer._serialize_type_structureq  s(  € Ø‰?à×%Ñ% j°u·±ÔGð #(§+¡+¤-ÔA¢-™$˜!°1“�’¡-ˆÑAä˜“Zˆ
Ø%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-Ø×Ñ ó
ˆð ˜‹>Ø×Ñ˜lÕ+à×ÑØ×2Ñ2°9¸eÓDÑDôð —-‘-ˆØ(-¯©®Ñ$ˆJØ"Ñ.ˆLØ˜×3Ñ3Ó3Ø)×7Ñ7¸Ñ?�
ØÓ'Ø×+Ñ+¨JÀDÈ$ÔOØ×)Ñ)Ø¨löò )6ùó# Bs   ³	D1Á D1c                 ó�  • U R                  U5      nSnU R                  U R                  U5      nUR                  U5        U R	                  U5      u  p‰U	S:X  a.  U R                  U R
                  U5      nUR                  U5        g U R                  U R
                  U5      nUR                  XuR                  U	S5      -   5        g )NrÇ   r   r;  )r`   r?  ÚTAG_MAJOR_TYPEr@  r>  r<  rA  )
r$   r7   rD   rh   r¿   Ú	timestampÚtagrE  rC  rD  s
             r   rç   Ú(CBORSerializer._serialize_type_timestamp’  sÅ   € Ø×2Ñ2°5Ó9ˆ	ØˆØ×-Ñ-¨d×.AÑ.AÀ3ÓGˆØ×Ñ˜,Ô'Ø%)×%LÑ%LØó&
Ñ"ˆð ˜‹>Ø×1Ñ1Ø×,Ñ,¨ióˆLð ×Ñ˜lÕ+à×1Ñ1Ø×,Ñ,¨oóˆLð ×ÑØ×1Ñ1°)¸UÓCÑCõr   c                 óü   • U R                  U5      (       a!  UR                  U R                  U5      5        g U R                  U R                  S5      nUR                  U[
        R                  " SU5      -   5        g )Né   z>f©Ú_is_special_numberr@  Ú_get_bytes_for_special_numbersr?  ÚFLOAT_AND_SIMPLE_MAJOR_TYPEÚstructÚpack©r$   r7   rD   rh   r¿   rE  s         r   rñ   Ú$CBORSerializer._serialize_type_float¨  ól   € Ø×"Ñ" 5×)Ñ)Ø×ÑØ×3Ñ3°EÓ:õð  ×1Ñ1Ø×0Ñ0°"óˆLð ×Ñ˜l¬V¯[ª[¸¸uÓ-EÑEÕFr   c                 óü   • U R                  U5      (       a!  UR                  U R                  U5      5        g U R                  U R                  S5      nUR                  U[
        R                  " SU5      -   5        g )Né   z>drn  rt  s         r   rõ   Ú%CBORSerializer._serialize_type_double³  rv  r   c                 óp   • U(       a  SOSnUR                  U R                  U R                  U5      5        g )Né   é   )r@  r?  rq  )r$   r7   rD   rh   r¿   rC  s         r   rì   Ú&CBORSerializer._serialize_type_boolean¾  s2   € Þ %™"¨2ˆØ×ÑØ×"Ñ"Ø×0Ñ0°/óõ	
r   c                 óB   • US:  a  US4$ US:  a  gUS:  a  gUS:  a  gg	)
Né   r   é   )r  rÇ   i   )é   r1  l        )rm  r3  )rx  é   r{   rU   s     r   r>  Ú1CBORSerializer._get_additional_info_and_num_bytesÆ  s>   € ð �2‹:Ø˜!�8ˆOð �S‹[Øð �U‹]Øð �ZÓØð r   c                 ó4   • US-  nX2-  R                  SS5      $ )Nr4  rÇ   r;  )rA  )r$   rB  rC  Úmajor_type_bytess       r   r?  Ú CBORSerializer._get_initial_byteÜ  s$   € ð &¨™?ÐØ Ñ2×<Ñ<¸QÀÓFÐFr   c                 óv   • [        U[        S5      :H  U[        S5      :H  [        R                  " U5      /5      $ )NÚinfú-inf)Úanyr—   r˜   r™   rU   s     r   ro  Ú!CBORSerializer._is_special_numberâ  s8   € Üàœ˜u›Ñ%Øœ˜v›Ñ&Ü—
’
˜5Ó!ðó
ð 	
r   c                 óN  • SnU R                  U R                  U5      nU[        S5      :X  a  U[        R                  " SS5      -   $ U[        S5      :X  a  U[        R                  " SS5      -   $ [
        R                  " U5      (       a  U[        R                  " SS5      -   $ g )Nr�  rˆ  z>Hi |  r‰  i ü  i ~  )r?  rq  r—   rr  rs  r˜   r™   )r$   rD   rC  rE  s       r   rp  Ú-CBORSerializer._get_bytes_for_special_numbersë  s’   € ØˆØ×-Ñ-Ø×,Ñ,¨oó
ˆð ”E˜%“LÓ Ø¤&§+¢+¨d°FÓ";Ñ;Ð;Ø”e˜F“mÓ#Ø¤&§+¢+¨d°FÓ";Ñ;Ð;Ü�ZŠZ˜×ÑØ¤&§+¢+¨d°FÓ";Ñ;Ð;ð r   r{   rm   )r¢   r£   r¤   r¥   r<  r=  rQ  rU  r[  r_  rh  rq  r8  rF  rI  rá   rW  rÐ   rÜ   rÂ   rç   rñ   rõ   rì   r>  r?  ro  rp  r©   r{   r   r   r0  r0    s†   † ØÐØÐØ€OØÐØ€OØ€NØ€NØ"#Ðô.òOò$Dò!ò(ò FòEò òBò,	Gò	Gò
òò,Gò
õ
<r   r0  c                   ó|   • \ rS rSrSrSrSr/ SQrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)ÚBaseRestSerializeriø  a)  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Úheaderr4   c                 ó  • U R                  5       nUR                  R                  SU R                  5      US'   UR                  nU R                  X5      nUb  XSS'   Uc  UR                  S   US'   U$ UR                  nU R                  5       U R                  5       U R                  5       U R                  5       S.nUR                  5        H  u  p‰U	c  M
  U R                  XxX–5        M     U R                  UR                  S   US   5      US'   SUR                  ;   a%  U R                  UR                  S   US   5      US'   US	   US
'   US   (       a  US   US'   U R                  XqX4U5        U R                  X4U5        U$ )Nr3   r±   Ú
requestUrir1   )Úuri_path_kwargsÚquery_string_kwargsÚbody_kwargsr4   r–  ÚauthPathÚ	auth_pathr—  r2   r4   )r8   r²   rg   r6   r}   r�   r~   r§   r   Ú_partition_parametersÚ_render_uri_templateÚ_serialize_payloadÚ_serialize_content_type)
r$   r+   r,   r7   rh   r±   Úshape_membersÚpartitionedÚ
param_nameÚparam_values
             r   r(   Ú'BaseRestSerializer.serialize_to_request
  sª  € Ø×1Ñ1Ó3ˆ
Ø.×3Ñ3×7Ñ7Ø�d×)Ñ)ó 
ˆ
�8Ñð  ×+Ñ+ˆà×.Ñ.¨zÓKˆØÑ"Ø(3�}Ñ%à‰=Ø%4×%9Ñ%9¸,Ñ%GˆJ�zÑ"ØÐØŸ™ˆð  $Ÿ}™}›Ø#'§=¡=£?ØŸ=™=›?Ø—}‘}“ñ	
ˆð (2×'7Ñ'7Ö'9Ñ#ˆJØÑ"áØ×&Ñ&Ø¨öñ	 (:ð "&×!:Ñ!:Ø× Ñ  Ñ.°Ð<MÑ0Nó"
ˆ
�:Ñð ˜×-Ñ-Ó-Ø&*×&?Ñ&?Ø×$Ñ$ ZÑ0ØÐ-Ñ.ó'ˆJ�{Ñ#ð &1Ð1FÑ%Gˆ
�>Ñ"Ø�y×!Ø$/°	Ñ$:ˆJ�yÑ!Ø×ÑØ Z¸ô	
ð 	×$Ñ$ Z¸ÔFàÐr   c                 óÖ   • 0 n[         R                  " SU5       H;  nUR                  S5      (       a  [        X$S S    SS9X4'   M,  [        X$   5      X4'   M=     UR                  " S0 UD6$ )Nz{(.*?)}Ú+rÆ   z/~)Úsafer{   )ÚreÚfindallÚendswithr   r„   )r$   Úuri_templateÚparamsÚencoded_paramsÚtemplate_params        r   rœ  Ú'BaseRestSerializer._render_uri_templateF  sx   € ð ˆÜ Ÿjšj¨°\ÖBˆNØ×&Ñ& s×+Ñ+Ü1?Ø¨#¨2Ð.Ñ/°dñ2�Ó.ô 2@ØÑ*ó2�Ó.ñ Cð ×"Ò"Ñ4 ^Ñ4Ð4r   c                 óÖ  • UR                   R                  S5      nU R                  Xe5      (       a(  UR                  US5      nU R                  U5      nXsS'   g Ub@  UR                  U5      nUb  U R	                  X…U   5      US'   g U R                  5       US'   g US   (       a  U R	                  US   U5      US'   g U R                  U5      (       a  U R                  5       US'   g g )NÚpayloadr   r5   r˜  )rf   rg   Ú_has_streaming_payloadÚ_encode_payloadÚ_serialize_body_paramsÚ_serialize_empty_bodyÚ_requires_empty_body)	r$   r   r+   r7   rh   rŸ  Úpayload_memberÚbody_payloadrµ   s	            r   r�  Ú%BaseRestSerializer._serialize_payloadY  sõ   € ð ×,Ñ,×0Ñ0°Ó;ˆØ×&Ñ& ~×EÑEð &Ÿ>™>¨.¸#Ó>ˆLØ×/Ñ/°Ó=ˆLØ!-�vÒØÑ'ð %Ÿ.™.¨Ó8ˆKØÑ&Ø%)×%@Ñ%@Ø¨~Ñ!>ó&�
˜6Ò"ð &*×%?Ñ%?Ó%A�
˜6Ò"Ø˜×'Ø!%×!<Ñ!<Ø˜MÑ*¨Eó"ˆJ�vÒð ×&Ñ& u×-Ñ-Ø!%×!;Ñ!;Ó!=ˆJ�vÒð .r   c                 ó   • g)Nr   r{   ©r$   s    r   r´  Ú(BaseRestSerializer._serialize_empty_bodyy  s   € Ør   c                 ó   • g)z�
Some protocols require varied Content-Type headers
depending on user input. This allows subclasses to apply
this conditionally.
Nr{   )r$   r7   rh   rŸ  s       r   rž  Ú*BaseRestSerializer._serialize_content_type|  s   € ð 	r   c                 ó   • g)z{
Some protocols require a specific body to represent an empty
payload. This allows subclasses to apply this conditionally.
Fr{   r‘   s     r   rµ  Ú'BaseRestSerializer._requires_empty_body„  s   € ð
 r   c                 ó:   • USL=(       a    X!   R                   S;   $ )z5Determine if payload is streaming (a blob or string).N)ÚblobÚstring)r»   )r$   r°  rŸ  s      r   r±  Ú)BaseRestSerializer._has_streaming_payload‹  s*   € à˜dÐ"÷ 
 }Ñ'=×'GÑ'Gð L
ñ (
ð 	
r   c                 óf   • [        U[        5      (       a  UR                  U R                  5      $ U$ rm   )rS   rn   ro   rp   )r$   r5   s     r   r²  Ú"BaseRestSerializer._encode_payload’  s)   € Ü�dœC× Ñ Ø—;‘;˜t×4Ñ4Ó5Ð5Øˆr   c                 ó˜  • XB   nUR                   R                  S5      nUR                   R                  SU5      nUS:X  a  U R                  X55      nX�S   U'   g US:X  a†  [        U[        5      (       a  US   R                  U5        g UR                  S:X  a3  U V	s/ s H  n	U R                  X•R                  5      PM      n
n	X¡S   U'   g U R                  X55      n
X¡S   U'   g US:X  a4  XB   nU(       d  UR                  S:X  a  g U R                  X³5      US	   U'   g US	:X  a  UnU R                  XÁS	   U5        g X1S
   U'   g s  sn	f )NÚlocationrd   r‘  r–  r’  r—  Úlistr“  r4   r˜  )
rf   rg   Ú_get_uri_and_query_string_valuerS   r¦   Úupdater»   rˆ   Ú_convert_header_valueÚ_do_serialize_header_map)r$   r   r¡  r¢  rŸ  rˆ   rÇ  Úkey_nameÚuri_path_valuerD   Ú	new_paramrh   Úheader_prefixs                r   r›  Ú(BaseRestSerializer._partition_parameters—  sƒ  € ð Ñ*ˆØ×'Ñ'×+Ñ+¨JÓ7ˆØ×'Ñ'×+Ñ+¨F°JÓ?ˆØ�uÓØ!×AÑAØóˆNð 8FÐ)Ñ*¨8Ò4Ø˜Ó&Ü˜+¤t×,Ñ,ØÐ1Ñ2×9Ñ9¸+ÕFØ×!Ñ! VÓ+ñ "-óâ!,˜ð ×8Ñ8¸ÇÁÖNÙ!,ð ð ð @IÐ1Ñ2°8Ò<à ×@Ñ@Øó�	ð @IÐ1Ñ2°8Ò<Ø˜Ó!Ø!Ñ-ˆEÞ 5§?¡?°fÓ#<àØ/3×/IÑ/IØó0ˆK˜	Ñ" 8Ò,ð ˜Ó"ð %ˆMð
 ×)Ñ)Ø¨9Ñ5°{õð 6A˜Ñ& zÒ2ùò=s   Â%Ec                 ó:  • UR                   S:X  a  [        U5      R                  5       $ UR                   S:X  a7  UR                  R	                  SU R
                  5      nU R                  X5      $ UR                   S;   a  [        U R                  U5      5      $ U$ )NÚbooleanri  rå   ©r—   Údouble)r»   rn   r[   rf   rg   ÚQUERY_STRING_TIMESTAMP_FORMATr`   rš   )r$   r¢  rˆ   rF   s       r   rÉ  Ú2BaseRestSerializer._get_uri_and_query_string_valueÊ  s™   € Ø×Ñ˜yÓ(Ü�{Ó#×)Ñ)Ó+Ð+Ø×Ñ Ó,Ø%×3Ñ3×7Ñ7Ø! 4×#EÑ#Eó Ðð ×1Ñ1Øóð ð ×ÑÐ!4Ó4Ü�t×)Ñ)¨+Ó6Ó7Ð7ØÐr   c                 óF   • UR                  5        H  u  pEX-   nXRU'   M     g rm   )r   )r$   rÐ  r4   Ú
user_inputr¿   ÚvalÚfull_keys          r   rÌ  Ú+BaseRestSerializer._do_serialize_header_mapØ  s'   € Ø"×(Ñ(Ö*‰HˆCØ$Ñ*ˆHØ #�HÓò +r   c                 ó   • [        S5      e©Nr³  r)   )r$   r«  rh   s      r   r³  Ú)BaseRestSerializer._serialize_body_paramsÝ  ó   € Ü!Ð":Ó;Ð;r   c                 ó^  • UR                   S:X  ao  [        U5      n[        R                  " UR	                  5       5      nUR
                  R                  SU R                  5      n[        U R                  XE5      5      $ UR                   S:X  aƒ  UR                  R                   S:X  a'  U Vs/ s H  nUc  M  U R                  U5      PM     nnO1U Vs/ s H$  nUc  M  U R                  UR                  U5      PM&     nnSR                  U5      $ [        U5      (       a$  U R                  [         R"                  " USS95      $ UR                   S:X  a  [        U5      R%                  5       $ UR                   S	;   a  [        U R'                  U5      5      $ [        U5      $ s  snf s  snf )
Nri  rå   rÈ  rÂ  Ú,)râ  Ú:)Ú
separatorsrÓ  rÔ  )r»   r
   rJ   rK   Úutctimetuplerf   rg   ÚHEADER_TIMESTAMP_FORMATrn   r`   rˆ   Ú_escape_header_list_stringrË  rƒ   r	   ru   r  r	  r[   rš   )r$   rh   rD   r]   ri  rF   rd  Úconverted_values           r   rË  Ú(BaseRestSerializer._convert_header_valueà  s‹  € Ø�?‰?˜kÓ)Ü2°5Ó9ˆLÜ Ÿš¨×(AÑ(AÓ(CÓDˆIØ$×2Ñ2×6Ñ6Ø! 4×#?Ñ#?ó Ðô Ø×.Ñ.¨yÓKóð ð �_‰_ Ó&Ø�|‰|×%Ñ%¨Ó1ñ #ó#â"˜Øó 7�D×3Ñ3°AÖ6Ù"ð  ð #�ñ #ó#â"˜Øó @�D×.Ñ.¨u¯|©|¸QÖ?Ù"ð  ð #ð
 —8‘8˜OÓ,Ð,Ü! %×(Ñ(ð ×#Ñ#¤D§J¢J¨uÀÑ$LÓMÐMØ�_‰_ 	Ó)Ü�u“:×#Ñ#Ó%Ð%Ø�_‰_Ð 3Ó3Ü�t×)Ñ)¨%Ó0Ó1Ð1ä�u“:Ðùò+#ùò#s   Â.F%Â9F%ÃF*Ã  F*c                 óN   • SU;   d  SU;   a  SUR                  SS5      -   S-   $ U$ )NÚ"râ  z\")ÚreplacerU   s     r   rç  Ú-BaseRestSerializer._escape_header_list_string  s1   € ð �%‹<˜3 %›<Ø˜Ÿ™ s¨EÓ2Ñ2°SÑ8Ð8àˆLr   r{   N)r¢   r£   r¤   r¥   r  rÖ  ræ  ÚKNOWN_LOCATIONSr(   rœ  r�  r´  rž  rµ  r±  r²  r›  rÉ  rÌ  r³  rË  rç  r©   r{   r   r   r�  r�  ø  sh   † ñð %.Ð!Ø&Ðò B€Oò:òx5ò&>ò@òòò
òò
1Aòfò$ò
<ò!õFr   r�  c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚBaseRpcV2Serializeri  aH  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                 ó  • U R                  5       nUR                  R                  S   nUR                  nSU SU 3US'   UR                  nUb  U R                  XU5        U R                  X5      nUb  XsS'   U R                  X25        U$ )Nr  z	/service/z/operation/r1   r±   )r8   rž   r³   rd   r}   r�  r�   Ú_serialize_headers)r$   r+   r,   r7   Úservice_nameÚoperation_namer}   r±   s           r   r(   Ú(BaseRpcV2Serializer.serialize_to_request  s¡   € Ø×1Ñ1Ó3ˆ
Ø&×4Ñ4×=Ñ=¸nÑMˆØ(×-Ñ-ˆà˜�~ [°Ð0@ÐAð 	�:Ñð &×1Ñ1ˆØÑ"Ø×#Ñ# J¸KÔHà×.Ñ.¨zÓKˆØÑ"Ø(3�}Ñ%à×Ñ 
Ô<àÐr   c                 ó.   • U R                  X5      nXBS'   g )Nr5   )r³  )r$   r+   r7   rh   r·  s        r   r�  Ú&BaseRpcV2Serializer._serialize_payload,  s   € Ø×2Ñ2°:ÓEˆØ)�6Òr   c                 ó   • [        S5      e)Nrò  r)   )r$   r7   r,   s      r   rò  Ú&BaseRpcV2Serializer._serialize_headers0  s   € Ü!Ð"6Ó7Ð7r   c                 ó   • [        S5      erÞ  r)   )r$   r+   rh   s      r   r³  Ú*BaseRpcV2Serializer._serialize_body_params3  rà  r   r{   N)
r¢   r£   r¤   r¥   r  r(   r�  rò  r³  r©   r{   r   r   rð  rð    s   † ñ	òò(*ò8õ<r   rð  c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚRestJSONSerializeri7  c                 ó   • g)Ns   {}r{   rº  s    r   r´  Ú(RestJSONSerializer._serialize_empty_body8  s   € Ør   c                 ón   • UR                   R                  5        H  u  p#SUR                  ;  d  M    g   g)zY
Serialize an empty JSON object whenever the shape has
members not targeting a location.
rÇ  TF)r~   r   rf   )r$   rh   rˆ   rÚ  s       r   rµ  Ú'RestJSONSerializer._requires_empty_body;  s3   € ð
 !Ÿ=™=×.Ñ.Ö0‰KˆFØ ×!2Ñ!2Õ2Ùñ 1ð r   c                 óÆ   • UR                   R                  S5      nU R                  XC5      (       a  gUS   S:g  n[        SUS   5      nU(       a  U(       d	  SUS   S'   ggg)z?Set Content-Type to application/json for all structured bodies.r°  Nr5   r   r­   r4   zapplication/json)rf   rg   r±  r   )r$   r7   rh   rŸ  r°  Úhas_bodyÚhas_content_types          r   rž  Ú*RestJSONSerializer._serialize_content_typeE  si   € à×%Ñ%×)Ñ)¨)Ó4ˆØ×&Ñ& w×>Ñ>àà˜fÑ%¨Ñ,ˆÜ% n°jÀÑ6KÓLÐÞÖ,Ø4FˆJ�yÑ! .Ò1ð -ˆ8r   c                 ó¤   • U R                  5       nU R                  X1U5        [        R                  " U5      R	                  U R
                  5      $ rm   )r§   r´   r  r	  ro   rp   )r$   r«  rh   Úserialized_bodys       r   r³  Ú)RestJSONSerializer._serialize_body_paramsQ  s;   € ØŸ-™-›/ˆØ�‰˜°Ô7Ü�zŠz˜/Ó*×1Ñ1°$×2GÑ2GÓHÐHr   r{   N)	r¢   r£   r¤   r¥   r´  rµ  rž  r³  r©   r{   r   r   rý  rý  7  s   † òòò
GõIr   rý  c                   ó`   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)ÚRestXMLSerializeriW  r   c                 óÈ   • UR                   S   n[        R                  " S5      nU R                  X!XC5        [	        U5      S   n[        R
                  " XPR                  S9$ )Nrd   r0   r   )Úencoding)rf   r   ÚElementr´   rÈ  Útostringrp   )r$   r«  rh   Ú	root_nameÚpseudo_rootÚ	real_roots         r   r³  Ú(RestXMLSerializer._serialize_body_paramsZ  sV   € Ø×'Ñ'¨Ñ/ˆ	Ü!×)Ò)¨"Ó-ˆØ�‰˜ {Ô>Ü˜Ó% aÑ(ˆ	Ü×#Ò# I×8MÑ8MÑNÐNr   c                 ó^   • [        U SUR                   3U R                  5      nU" X2X5        g r  rº   )r$   rh   r«  Úxmlnoderd   r3   s         r   r´   ÚRestXMLSerializer._serializea  s3   € ÜØØ˜uŸ™Ð/Ð0Ø×#Ñ#ó
ˆñ
 	ˆw Õ,r   c                 ó†  • [         R                  " X5      nU R                  X55        UR                  5        H†  u  pgUR                  U   nUR
                  R                  SU5      n	Uc    g UR
                  R                  S5      (       a  UR
                  S   n
XuR                  U
'   Mt  U R                  X‡XY5        Mˆ     g )Nrd   ÚxmlAttribute)	r   Ú
SubElementÚ_add_xml_namespacer   r~   rf   rg   Úattribr´   )r$   r  r«  rh   rd   Ústructure_noder¿   rD   rÀ   Úmember_nameÚxml_attribute_names              r   rÂ   Ú+RestXMLSerializer._serialize_type_structurei  sª   € Ü$×/Ò/°Ó>ˆà×Ñ Ô6Ø Ÿ,™,ž.‰JˆCØ Ÿ=™=¨Ñ-ˆLØ&×4Ñ4×8Ñ8¸ÀÓEˆKð
 ‰}áØ×)Ñ)×-Ñ-¨n×=Ñ=à%1×%?Ñ%?ÀÑ%GÐ"Ø<A×%Ñ%Ð&8Ñ9ÙØ�O‰O˜L°ÖMò )r   c                 ó"  • UR                   nUR                  R                  S5      (       a  UnUnO2UR                  R                  SS5      n[        R                  " X5      nU R                  X75        U H  nU R                  XXXv5        M     g )Nr�   rd   rˆ   )rˆ   rf   rg   r   r  r  r´   )	r$   r  r«  rh   rd   rÀ   Úelement_nameÚ	list_noder\  s	            r   rÐ   Ú&RestXMLSerializer._serialize_type_list~  sz   € Ø—|‘|ˆØ×Ñ×"Ñ" ;×/Ñ/ØˆLØ‰Ià'×5Ñ5×9Ñ9¸&À(ÓKˆLÜ#×.Ò.¨wÓ=ˆIØ×Ñ Ô1ÛˆDØ�O‰O˜L°	ÖHò r   c                 ó  • U R                  U5      (       d'  [        R                  " X5      nU R                  X55        UR	                  5        H¶  u  pgU R                  U5      (       a  [        R                  " X5      O[        R                  " WS5      nU R                  UR                  SS9n	U R                  UR                  SS9n
U R                  UR                  XhU	5        U R                  UR                  XxU
5        M¸     g )NÚentryr¿   rÅ   rD   )	r’   r   r  r  r   rj   r¿   rD   r´   )r$   r  r«  rh   rd   Únoder¿   rD   Úsub_noderÍ  Úval_names              r   rÜ   Ú%RestXMLSerializer._serialize_type_mapŠ  sà   € ð ×'Ñ'¨×.Ñ.Ü×)Ò)¨'Ó8ˆDØ×#Ñ# EÔ0à Ÿ,™,ž.‰JˆCð ×+Ñ+¨E×2Ñ2ô ×&Ò& wÔ5ä ×+Ò+¨D°'Ó:ð ð
 ×0Ñ0°·±ÈÐ0ÐOˆHØ×0Ñ0Ø—‘¨'ð 1ð ˆHð �O‰O˜EŸI™I s°hÔ?Ø�O‰O˜EŸK™K¨¸(ÖCò )r   c                 óv   • [         R                  " X5      nU(       a  SnOSnXel        U R                  X55        g rê   )r   r  Útextr  )r$   r  r«  rh   rd   r%  Ú	str_values          r   rì   Ú)RestXMLSerializer._serialize_type_boolean¤  s4   € ô ×%Ò% gÓ4ˆÞØ‰IàˆIØŒ	Ø×Ñ Õ,r   c                 ó~   • [         R                  " X5      nU R                  U5      Ul        U R	                  X55        g rm   )r   r  ru   r*  r  ©r$   r  r«  rh   rd   r%  s         r   rá   Ú&RestXMLSerializer._serialize_type_blob°  s2   € Ü×%Ò% gÓ4ˆØ×$Ñ$ VÓ,ˆŒ	Ø×Ñ Õ,r   c                 óÂ   • [         R                  " X5      n[        U R                  X#R                  R                  S5      5      5      Ul        U R                  X55        g rä   )r   r  rn   r`   rf   rg   r*  r  r.  s         r   rç   Ú+RestXMLSerializer._serialize_type_timestampµ  sQ   € Ü×%Ò% gÓ4ˆÜØ×*Ñ*Ø×+Ñ+×/Ñ/Ð0AÓBóó
ˆŒ	ð
 	×Ñ Õ,r   c                 ó�   • [         R                  " X5      n[        U R                  U5      5      Ul        U R                  X55        g rm   )r   r  rn   rš   r*  r  r.  s         r   rñ   Ú'RestXMLSerializer._serialize_type_float¾  s7   € Ü×%Ò% gÓ4ˆÜ˜×*Ñ*¨6Ó2Ó3ˆŒ	Ø×Ñ Õ,r   c                 ó(   • U R                  XX45        g rm   rô   )r$   r  r«  rh   rd   s        r   rõ   Ú(RestXMLSerializer._serialize_type_doubleÃ  s   € Ø×"Ñ" 7°EÕ@r   c                 ór   • [         R                  " X5      n[        U5      Ul        U R	                  X55        g rm   )r   r  rn   r*  r  r.  s         r   r¼   Ú$RestXMLSerializer._default_serializeÆ  s+   € Ü×%Ò% gÓ4ˆÜ˜“KˆŒ	Ø×Ñ Õ,r   c                 ó"  • SUR                   ;   a  UR                   S   nSn[        U[        5      (       a4  UR                  S5      (       a  USUS    3-  nUS   UR                  U'   g [        U[
        5      (       a  X2R                  U'   g g g )NÚxmlNamespaceÚxmlnsr¹   rã  r‘  )rf   rS   r¦   rg   r  rn   )r$   rh   r  Únamespace_metadataÚattribute_names        r   r  Ú$RestXMLSerializer._add_xml_namespaceË  s�   € Ø˜U×0Ñ0Ó0Ø!&×!4Ñ!4°^Ñ!DÐØ$ˆNÜÐ,¬d×3Ñ3Ø%×)Ñ)¨(×3Ñ3Ø"¨Ð*<¸XÑ*FÐ)GÐ&HÑH�NØ8JØñ9�×%Ñ% nÒ5ô Ð.´×4Ñ4Ø8J×%Ñ% nÒ5ð 5ð 1r   r{   N)r¢   r£   r¤   r¥   rZ   r³  r´   rÂ   rÐ   rÜ   rì   rá   rç   rñ   rõ   r¼   r  r©   r{   r   r   r
  r
  W  sJ   † Ø ÐòOò-òNò*
IòDò4
-ò-ò
-ò-ò
Aò-õ
Kr   r
  c                   ó8   ^ • \ rS rSrSrU 4S jrS rS rSrU =r	$ )ÚRpcV2CBORSerializeriÙ  r  c                 ó8   >• [        S5        [        TU ]	  X5      $ )NÚPROTOCOL_RPC_V2_CBOR)r   Úsuperr(   )r$   r+   r,   Ú	__class__s      €r   r(   Ú(RpcV2CBORSerializer.serialize_to_requestÜ  s   ø€ ÜÐ2Ô3Ü‰wÑ+¨JÓHÐHr   c                 óP   • [        5       nU R                  X1U5        [        U5      $ rm   )rN  r8  rM  )r$   r+   r}   r5   s       r   r³  Ú*RpcV2CBORSerializer._serialize_body_paramsà  s#   € Ü‹{ˆØ×!Ñ! $°KÔ@Ü�T‹{Ðr   c                 óÌ   • SUS   S'   UR                   (       a  SnOSnU R                  X!5        US   S:g  n[        SUS   5      nX1S   S	'   U(       d  U(       a  X1S   S'   g g g )
Nzrpc-v2-cborr4   zsmithy-protocolz"application/vnd.amazon.eventstreamzapplication/cborr5   r   r­   ÚAccept)Úhas_event_stream_outputr    r   )r$   r7   r,   Ú
header_valr  r  s         r   rò  Ú&RpcV2CBORSerializer._serialize_headerså  s{   € Ø3@ˆ
�9ÑÐ/Ñ0à×2×2Ø=‰Jà+ˆJØ×+Ñ+¨OÔHà˜fÑ%¨Ñ,ˆÜ% n°jÀÑ6KÓLÐà*4�9Ñ˜hÑ'Þ¦HØ4>�yÑ! .Ò1ð %-Ðr   r{   )
r¢   r£   r¤   r¥   rZ   r(   r³  rò  r©   Ú__classcell__)rC  s   @r   r?  r?  Ù  s   ø† Ø&ÐõIò÷
?ð ?r   r?  )Úec2Úqueryr  z	rest-jsonzrest-xmlzsmithy-rpc-v2-cbor),r  rq   rJ   rT   r*  r  r˜   r§  rr  Ú	xml.etreer   Úbotocorer   Úbotocore.compatr   Úbotocore.exceptionsr   Úbotocore.useragentr   Úbotocore.utilsr   r	   r
   r   ÚDEFAULT_TIMESTAMP_FORMATrC   rB   Úcompiler€   r¨   r?   r!   r   r   r«   rú   r  r0  r�  rð  rý  r
  r?  r   r{   r   r   Ú<module>rW     s=  ðñó8 Û Û Û Û Û Û 	Û Ý !å Ý &Ý 4Ý 2÷ó ð %Ð Ø
€à'€Ø—’Ð1Ó2€à'Ð Ø"/Ð àØ#ðÐ ð Ø3ô÷4l@ñ l@ô^lE�jô lEô^P�Oô Pô<`E�Zô `EôFo<�Zô o<ôdQ˜ô Qôh(<˜*ô (<ôVIÐ+¨^ô Iô@KÐ*ô KôD?Ð-¨~ô ?ð< ØØØ#Ø!Ø-ñ�r   