+
    šÜi÷È  ã                   óæ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtHt RtR	tR
t]P6                  ! R4      tRtRt]]3tR]3R lt  ! R R4      t! ! R R]!4      t" ! R R]"4      t# ! R R]!4      t$ ! R R]!4      t% ! R R]!4      t& ! R R]!4      t' ! R R]&]$4      t( ! R  R!]&4      t) ! R" R#]']%4      t*R$]#R%]"R&]$R'](R(])R)]*/t+R# )*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                ó”   € \         V ,          ! VR7      pV'       d,   \        P                  ! 4       p\        P                  ! WC4      pV# )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   &&&  Ú4/usr/lib/python3/dist-packages/botocore/serialize.pyÚcreate_serializerr   M   s?   € ô" ˜]Ö+Ø/ô€J÷ Ü×+Ò+Ó-ˆ	Ü×6Ò6°yÓMˆ
ØÐó    c                   ó„   a € ] tR t^gt o Rt]tRt]3R lt	R t
R tR tR tR tRR
 ltR tR tR tR tR tR tRtV tR	# )Ú
SerializerÚPOSTúutf-8c                óD   € V\         9  d   \        R V 24      hWn        R# )z=Invalid timestamp precision found while creating serializer: N)ÚTIMESTAMP_PRECISION_OPTIONSÚ
ValueErrorÚ_timestamp_precision)Úselfr   s   &&r   Ú__init__ÚSerializer.__init__p   s,   € ØÔ&AÔAÜØOÐPcÐOdÐeóð ð %8Ö!r   c                ó   € \        R4      h)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           
     ó2   € R RRRRV P                   R/ RR/pV# )Úurl_pathÚ/Úquery_stringÚ ÚmethodÚheadersÚbodyr   )ÚDEFAULT_METHOD)r"   Ú
serializeds   & r   Ú_create_default_requestÚ"Serializer._create_default_request�   s2   € ð ˜Ø˜BØ�d×)Ñ)Ø�rà�Cð
ˆ
ð Ðr   c                óê   € V P                   \        8X  d1   VP                  R,          pVP                  R4      RVR R2,           # VP                  ^ 8”  d   \        pM\
        pVP                  V4      # )zEReturn ISO8601 timestamp with precision based on timestamp_precision.éè  z%Y-%m-%dT%H:%M:%SÚ.Ú03dÚZ)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                ó  € V P                   \        8X  dG   \        P                  ! VP	                  4       4      pVP
                  R,          R,          pW#,           # \        \        P                  ! VP	                  4       4      4      # )zBReturn unix timestamp with precision based on timestamp_precision.r9   g     @�@)r!   r=   ÚcalendarÚtimegmÚ	timetupler>   Úint)r"   rB   Úbase_timestamprC   s   &&  r   Ú_timestamp_unixtimestampÚ#Serializer._timestamp_unixtimestamp¼   sa   € ð ×$Ñ$Ô(GÔGÜ%Ÿ_š_¨U¯_©_Ó->Ó?ˆNØ!×-Ñ-°Õ5¸Õ?ˆLØ!Õ0Ð0ä”x—’ u§¡Ó'8Ó9Ó:Ð:r   c                ó¶   € \        V\        P                  4      '       d.   \        \        P                  ! VP                  4       4      4      p\        VRR7      # )zSReturn RFC822 timestamp (always second precision - RFC doesn't support sub-second).T)Úusegmt)Ú
isinstanceÚdatetimerK   rH   rI   rJ   r   ©r"   rB   s   &&r   Ú_timestamp_rfc822ÚSerializer._timestamp_rfc822Æ   s>   € ô �eœX×.Ñ.×/Ò/ÜœŸš¨¯©Ó(9Ó:Ó;ˆEÜ˜%¨Ô-Ð-r   Nc                óŠ   € Vf   V P                   pVP                  4       p\        V4      p\        V RV 24      pV! V4      pV# )NÚ_timestamp_)ÚTIMESTAMP_FORMATÚlowerr	   Úgetattr)r"   rB   rD   Ú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                ó:   € VP                   P                  R V4      # )Úname©ÚserializationÚget)r"   ÚshapeÚdefault_names   &&&r   Ú_get_serialized_nameÚSerializer._get_serialized_nameÖ   s   € ð ×"Ñ"×&Ñ& v¨|Ó<Ð<r   c                óÞ   € \        V\        4      '       d   VP                  V P                  4      p\        P
                  ! V4      P                  4       P                  V P                  4      # ©N)rQ   ÚstrÚencodeÚDEFAULT_ENCODINGÚbase64Ú	b64encodeÚstripÚdecoderS   s   &&r   Ú_get_base64ÚSerializer._get_base64Û   sP   € ô �eœS×!Ò!Ø—L‘L ×!6Ñ!6Ó7ˆEÜ×Ò Ó&×,Ñ,Ó.×5Ñ5°d×6KÑ6KÓLÐLr   c                ó&  € VP                   pVe   RV9  d   R # VR,          pVP                  f   V# VP                  P                  pVP                  4        UUu. uF*  w  rgVP                  P                  R4      '       g   K(  VNK,  	  ppp/ p	. p
V F;  pW,          p\        P                  V4      '       g   V
P                  V4       WÉV&   K=  	  V
'       d    \        RRP                  V
4       R2R7      hVP                  ! R/ V	B # u uppi )NÚ
hostPrefixÚ	hostLabelz Invalid value for parameter(s): z, z?. Must contain only alphanumeric characters, hyphen, or period.)Úreport© )ÚendpointÚinput_shapeÚmembersÚitemsrc   rd   ÚHOST_PREFIX_REÚmatchÚappendr   ÚjoinÚformat)r"   r)   r*   Úoperation_endpointÚhost_prefix_expressionÚinput_membersÚmemberre   Úhost_labelsÚformat_kwargsÚ
bad_labelsra   Úparams   &&&          r   Ú_expand_host_prefixÚSerializer._expand_host_prefixã   s  € Ø,×5Ñ5ÐàÒ&ØÐ#5Ô5áà!3°LÕ!AÐØ×&Ñ&Ò.Ø)Ð)Ø'×3Ñ3×;Ñ;ˆð "/×!4Ñ!4Ô!6ô
á!6‘�Ø×"Ñ"×&Ñ& {×3÷ ˆFÙ!6ð 	ñ 
ð
 ˆØˆ
ÛˆDØÕ$ˆEÜ!×'Ñ'¨×.Ò.Ø×!Ñ! $Ô'Ø"'˜$Óñ	  ÷
 Ü&à6°t·y±yÀÓ7LÐ6Mð N!ð !ôð ð &×,Ò,Ñ=¨}Ñ=Ð=ùó)
s   Á%DÂDc                ó8   € VP                   P                  R 4      # )Ú	flattenedrb   ©r"   re   s   &&r   Ú_is_shape_flattenedÚSerializer._is_shape_flattened  s   € Ø×"Ñ"×&Ñ& {Ó3Ð3r   c                ó’   € V\        R 4      8X  d   R pV# V\        R4      8X  d   RpV# \        P                  ! V4      '       d   RpV# )ÚInfinityz	-InfinityÚNaN)ÚfloatÚmathÚisnanrS   s   &&r   Ú_handle_floatÚSerializer._handle_float  sQ   € Ø”E˜*Ó%Ô%ØˆEð
 ˆð	 ”e˜KÓ(Ô(ØˆEð ˆô �ZŠZ˜×ÒØˆEØˆr   c                óZ   € VP                   P                  '       d   R VR,          R&   R# R# )Útruer2   zx-amzn-query-modeN)Úservice_modelÚis_query_compatible)r"   r*   r5   s   &&&r   Ú_handle_query_compatible_traitÚ)Serializer._handle_query_compatible_trait  s)   € Ø×(Ñ(×<×<Ð<Ø9?ˆJ�yÕ!Ð"5Ó6ñ =r   )r!   rj   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r4   ÚdictÚMAP_TYPErm   ÚTIMESTAMP_PRECISION_DEFAULTr#   r&   r6   rE   rM   rT   r^   rg   rr   rŠ   r�   r—   r�   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   g   se   ø‡ € Ø€Nð
 €HØÐà+Fô 8ò$:òLò4ò ;ò.ôò=ò
Mò >òD4ò÷@ð @r   r   c                   óŽ   a € ] tR tRt o RtR tRR ltRR ltRR ltRR lt	RR lt
RR	 ltRR
 ltRR ltRR ltRR ltRtV tR# )ÚQuerySerializeri  r   c                ón  € VP                   pV P                  4       pVP                  P                  R V P                  4      VR &   RR/VR&   V P                  4       pVP                  VR&   VP                  R,          VR&   Ve   V P                  WQV4       WTR&   V P                  W4      pVe   WdR&   V# )	r1   úContent-Typez0application/x-www-form-urlencoded; charset=utf-8r2   ÚActionÚ
apiVersionÚVersionr3   Úhost_prefix)
rz   r6   Úhttprd   r4   r¤   ra   ÚmetadataÚ
_serializerŠ   )r"   r)   r*   re   r5   Ú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                ób   € \        V R VP                   2V P                  4      pV! WW4R7       R# )Ú_serialize_type_)ÚprefixN©rZ   Ú	type_nameÚ_default_serialize)r"   r5   rB   re   r¹   r1   s   &&&&& r   r´   ÚQuerySerializer._serialize1  s5   € ô ØØ˜uŸ™Ð/Ð0Ø×#Ñ#ó
ˆñ
 	ˆz %×7r   c                óÄ   € VP                   pVP                  4        F?  w  rbWV,          pV P                  Wv4      pV'       d   V R V 2pV P                  WWx4       KA  	  R# )r:   N)r{   r|   rg   r´   )	r"   r5   rB   re   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                ó
  € V'       g   R W&   R# V P                  V4      '       dw   TpVP                  P                  P                  R4      '       dI   V P	                  VP                  R R7      pRP                  VP                  R4      RR V.,           4      pM-VP                  P                  P                  RR4      pV RV 2p\        V^4       F*  w  r‰V RV 2p
VP                  pV P                  WWº4       K,  	  R# )r0   Nra   ©rf   r:   r…   éÿÿÿÿ)	r�   r…   rc   rd   rg   r€   ÚsplitÚ	enumerater´   )r"   r5   rB   re   r¹   Úlist_prefixra   Ú	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                ó˜  € V P                  V4      '       d   TpMV R 2pVR,           pVP                  pVP                  pV P                  VRR7      p	V P                  VR4      p
\	        V^4       FT  w  r¼VP                  W¹R7      pVP                  WºR7      pV P                  WW}4       V P                  WV,          WŽ4       KV  	  R# )z.entryz.{i}.{suffix}r¿   rÅ   rB   )rË   ÚsuffixN)r�   r¿   rB   rg   rÈ   r�   r´   )r"   r5   rB   re   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                ó,   € V P                  V4      W&   R # rj   ©rr   ©r"   r5   rB   re   r¹   s   &&&&&r   Ú_serialize_type_blobÚ$QuerySerializer._serialize_type_blobl  s   € à!×-Ñ-¨eÓ4ˆ
Ór   c                ó^   € V P                  W#P                  P                  R 4      4      W&   R# ©ÚtimestampFormatN©r^   rc   rd   rß   s   &&&&&r   Ú_serialize_type_timestampÚ)QuerySerializer._serialize_type_timestampp  s*   € Ø!×;Ñ;Ø×&Ñ&×*Ñ*Ð+<Ó=ó
ˆ
Ór   c                ó*   € V'       d   R W&   R# RW&   R# ©rš   ÚfalseNrx   rß   s   &&&&&r   Ú_serialize_type_booleanÚ'QuerySerializer._serialize_type_booleanu  s   € ßØ!'ˆJÓà!(ˆJÓr   c                ó   € W!V&   R # rj   rx   rß   s   &&&&&r   r¼   Ú"QuerySerializer._default_serialize{  s
   € Ø"�6Ór   c                ó,   € V P                  V4      W&   R # rj   )r—   rß   s   &&&&&r   Ú_serialize_type_floatÚ%QuerySerializer._serialize_type_float~  s   € Ø!×/Ñ/°Ó6ˆ
Ór   c                ó*   € V P                  WW44       R # rj   ©rð   rß   s   &&&&&r   Ú_serialize_type_doubleÚ&QuerySerializer._serialize_type_double�  ó   € Ø×"Ñ" :°eÖDr   rx   N©r0   )rŸ   r    r¡   r¢   rX   r&   r´   rÂ   rÏ   rÛ   rà   ræ   rë   r¼   rð   rô   r¦   r§   r¨   s   @r   r«   r«     sL   ø‡ € Ø Ðòô08ôLôPô&Oô 5ô
ô
)ô#ô7÷Eò Er   r«   c                   ó4   a € ] tR tRt o RtR tRR ltRtV tR# )Ú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                óà   € R VP                   9   d   VP                   R ,          # RVP                   9   d9   VP                   R,          pV^ ,          P                  4       VR,          ,           # V# )Ú	queryNamera   :é   NN)rc   Úupper)r"   re   rf   ra   s   &&& r   rg   Ú"EC2Serializer._get_serialized_name�  sb   € ð ˜%×-Ñ-Ô-Ø×&Ñ& {Õ3Ð3Ø�u×*Ñ*Ô*ð ×&Ñ& vÕ.ˆDØ˜•7—=‘=“? T¨"¥XÕ-Ð-àÐr   c                óz   € \        V^4       F*  w  rVV RV 2pVP                  pV P                  WW‡4       K,  	  R# )rü   r:   N)rÈ   r…   r´   )	r"   r5   rB   re   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   rx   Nr÷   )	rŸ   r    r¡   r¢   Ú__doc__rg   rÏ   r¦   r§   r¨   s   @r   rù   rù   …  s   ø‡ € ñò ÷Pò Pr   rù   c                   ól   a € ] tR tRt o RtR tRR ltR tR tR t	R	 t
R
 tR tRR ltRR ltRtV tR# )ÚJSONSerializeri£  Úunixtimestampc                ó,  € R P                  VP                  R,          VP                  4      pVP                  R,          pV P                  4       pVP                  P                  RV P                  4      VR&   RVRRV 2/VR&   V P                  W%4       V P                  4       pVP                  pVe   V P                  WaV4       \        P                  ! V4      P                  V P                  4      VR&   V P                  W4      pVe   W…R	&   V# )
z{}.{}ÚtargetPrefixÚjsonVersionr1   zX-Amz-Targetr­   zapplication/x-amz-json-r2   r3   r±   )r�   r³   ra   r6   r²   rd   r4   r�   r¤   rz   r´   ÚjsonÚdumpsrl   rm   rŠ   )	r"   r)   r*   ÚtargetÚjson_versionr5   r3   rz   r±   s	   &&&      r   r&   Ú#JSONSerializer.serialize_to_request¦  s  € Ø—‘Ø×$Ñ$ ^Õ4Ø× Ñ ó
ˆð '×/Ñ/°Õ>ˆØ×1Ñ1Ó3ˆ
Ø.×3Ñ3×7Ñ7Ø�d×)Ñ)ó 
ˆ
�8Ñð ˜FØÐ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                ó`   € \        V R VP                   2V P                  4      pV! WW44       R# ©r¸   Nrº   ©r"   r5   rB   re   r¿   r1   s   &&&&& r   r´   ÚJSONSerializer._serializeÂ  s3   € ÜØØ˜uŸ™Ð/Ð0Ø×#Ñ#ó
ˆñ
 	ˆz %Ö-r   c                ó0  € VP                   '       d   W!V&   R # Ve   V P                  4       pWQV&   TpVP                  pVP                  4        FC  w  rxWg,          p	RV	P                  9   d   V	P                  R,          pV P                  WW—4       KE  	  R # )Nra   )Úis_document_typer¤   r{   r|   rc   r´   )
r"   r5   rB   re   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                óš   € V P                  4       pWQV&   VP                  4        F"  w  rgV P                  WWVP                  V4       K$  	  R # rj   )r¤   r|   r´   rB   )r"   r5   rB   re   r¿   Úmap_objÚsub_keyÚ	sub_values   &&&&&   r   rÛ   Ú"JSONSerializer._serialize_type_mapà  s;   € Ø—-‘-“/ˆØ!�3‰Ø"'§+¡+¦-ÑˆGØ�O‰O˜G°·±¸WÖEó #0r   c                ó’   € . pWQV&   V F:  p/ pV P                  WvVP                  R 4       VP                  VR ,          4       K<  	  R# )Ú__current__N)r´   r…   r   )r"   r5   rB   re   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                ó   € W!V&   R # rj   rx   ©r"   r5   rB   re   r¿   s   &&&&&r   r¼   Ú!JSONSerializer._default_serializeò  s	   € Ø�3‹r   c                ó^   € V P                  W#P                  P                  R 4      4      W&   R# rã   rå   r#  s   &&&&&r   ræ   Ú(JSONSerializer._serialize_type_timestampõ  s)   € Ø×8Ñ8Ø×&Ñ&×*Ñ*Ð+<Ó=ó
ˆ
‹r   c                ó,   € V P                  V4      W&   R # rj   rÞ   r#  s   &&&&&r   rà   Ú#JSONSerializer._serialize_type_blobú  s   € Ø×*Ñ*¨5Ó1ˆ
‹r   c                ó‚   € \        V\        P                  4      '       d   \        V4      pV P	                  V4      W&   R # rj   )rQ   ÚdecimalÚDecimalr”   r—   rß   s   &&&&&r   rð   Ú$JSONSerializer._serialize_type_floatý  s/   € Ü�eœWŸ_™_×-Ò-Ü˜%“LˆEØ!×/Ñ/°Ó6ˆ
Ór   c                ó*   € V P                  WW44       R # rj   ró   rß   s   &&&&&r   rô   Ú%JSONSerializer._serialize_type_double  rö   r   rx   rj   r÷   )rŸ   r    r¡   r¢   rX   r&   r´   rÂ   rÛ   rÏ   r¼   ræ   rà   rð   rô   r¦   r§   r¨   s   @r   r  r  £  sE   ø‡ € Ø&Ðòô8.òò,Fò
4ò ò
ò
2ô7÷
Eò Er   r  c                   ó¤   a € ] tR tRt o ^ t^t^t^t^t^t	^t
^tRR ltR tR tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR tRtV tR# )ÚCBORSerializeri  Nc                ó„   € \        V R VP                   24      pVf   \        RVP                   R24      hV! WW44       R# )r¸   NzUnrecognized C2J type: z, unable to serialize request)rZ   r»   r    r  s   &&&&& r   Ú_serialize_data_itemÚ#CBORSerializer._serialize_data_item  sO   € Ü˜Ð!1°%·/±/Ð1BÐCÓDˆØŠ>ÜØ)¨%¯/©/Ð):ð ;$ð %óð ñ 	ˆz %Ö-r   c                ó"  € V^ 8¼  d   V P                   pMV P                  pRV,
          pV P                  V4      w  rgV P                  WV4      pV^ 8X  d   VP	                  V4       R# VP	                  W‚P                  VR4      ,           4       R# )é    ÚbigNrÆ   )ÚUNSIGNED_INT_MAJOR_TYPEÚNEGATIVE_INT_MAJOR_TYPEÚ"_get_additional_info_and_num_bytesÚ_get_initial_byteÚextendÚto_bytes)	r"   r5   rB   re   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                ó*   € V P                  WW44       R # rj   )rA  r#  s   &&&&&r   Ú_serialize_type_longÚ#CBORSerializer._serialize_type_long+  s   € Ø×$Ñ$ Z¸ÖCr   c                óÄ  € \        V\        4      '       d   VP                  R 4      pM,\        V\        \        34      '       g   VP                  4       p\        V4      pV P                  V4      w  rgV P                  V P                  V4      pV^ 8X  d   VP                  V4       M'VP                  W…P                  VR4      ,           4       VP                  V4       R# ©r   r6  N)rQ   rk   rl   ÚbytesÚ	bytearrayÚreadÚlenr9  r:  ÚBLOB_MAJOR_TYPEr;  r<  )	r"   r5   rB   re   r¿   Úlengthr>  r?  r@  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                ó8  € VP                  R 4      p\        V4      pV P                  V4      w  rxV P                  V P                  V4      p	V^ 8X  d   VP                  W•,           4       R# VP                  W–P                  VR4      ,           V,           4       R# rG  )rl   rK  r9  r:  ÚSTRING_MAJOR_TYPEr;  r<  )
r"   r5   rB   re   r¿   ÚencodedrM  r>  r?  r@  s
   &&&&&     r   Ú_serialize_type_stringÚ%CBORSerializer._serialize_type_stringB  sŠ   € Ø—,‘,˜wÓ'ˆÜ�W“ˆØ%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-Ø×"Ñ" Oó
ˆð ˜Œ>Ø×Ñ˜lÕ4Ö5à×ÑØŸ™¨y¸%Ó@Õ@À7ÕJör   c                óD  € \        V4      pV P                  V4      w  rgV P                  V P                  V4      pV^ 8X  d   VP	                  V4       M'VP	                  W…P                  VR4      ,           4       V F  p	V P                  WVP                  4       K!  	  R# ©r5  r6  N)rK  r9  r:  ÚLIST_MAJOR_TYPEr;  r<  r2  r…   )
r"   r5   rB   re   r¿   rM  r>  r?  r@  Úitems
   &&&&&     r   rÏ   Ú#CBORSerializer._serialize_type_listR  s�   € Ü�U“ˆØ%)×%LÑ%LØó&
Ñ"ˆð ×-Ñ-Ø× Ñ  /ó
ˆð ˜Œ>Ø×Ñ˜lÕ+à×Ñ˜l¯_©_¸YÈÓ-NÕNÔOÛˆDØ×%Ñ% j¸¿¹ÖEó r   c                óœ  € \        V4      pV P                  V4      w  rgV P                  V P                  V4      pV^ 8X  d   VP	                  V4       M'VP	                  W…P                  VR4      ,           4       VP                  4        F=  w  ršV P                  WVP                  4       V P                  WVP                  4       K?  	  R# rU  )
rK  r9  r:  ÚMAP_MAJOR_TYPEr;  r<  r|   r2  r¿   rB   )r"   r5   rB   re   r¿   rM  r>  r?  r@  Úkey_itemrW  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                ó�  € Ve   V P                  WVP                  4       VP                  4        UUu/ uF  w  rVVf   K  WVbK  	  ppp\        V4      pV P	                  V4      w  r‰V P                  V P                  V4      p
V	^ 8X  d   VP                  V
4       M'VP                  W§P                  V	R4      ,           4       VP                  pVP                  4        F\  w  rÍW¼,          pRVP                  9   d   VP                  R,          pVf   K7  V P                  WR R 4       V P                  WV4       K^  	  R # u uppi )Nr6  ra   )r2  rÕ   r|   rK  r9  r:  rZ  r;  r<  r{   rc   rR  )r"   r5   rB   re   r¿   ÚkÚvÚ
map_lengthr>  r?  r@  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   ´EÁEc                óž  € V P                  V4      p^pV P                  V P                  V4      pVP                  V4       V P	                  V4      w  r‰V	^ 8X  d0   V P                  V P
                  V4      pVP                  V4       R# V P                  V P
                  V4      pVP                  WuP                  V	R4      ,           4       R# )rü   r6  N)r^   r:  ÚTAG_MAJOR_TYPEr;  r9  r7  r<  )
r"   r5   rB   re   r¿   Ú	timestampÚtagr@  r>  r?  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                ó
  € V P                  V4      '       d#   VP                  V P                  V4      4       R# V P                  V P                  ^4      pVP                  V\
        P                  ! RV4      ,           4       R# )é   z>fN©Ú_is_special_numberr;  Ú_get_bytes_for_special_numbersr:  ÚFLOAT_AND_SIMPLE_MAJOR_TYPEÚstructÚpack©r"   r5   rB   re   r¿   r@  s   &&&&& r   rð   Ú$CBORSerializer._serialize_type_float¨  ól   € Ø×"Ñ" 5×)Ò)Ø×ÑØ×3Ñ3°EÓ:öð  ×1Ñ1Ø×0Ñ0°"óˆLð ×Ñ˜l¬V¯[ª[¸¸uÓ-EÕEÖFr   c                ó
  € V P                  V4      '       d#   VP                  V P                  V4      4       R# V P                  V P                  ^4      pVP                  V\
        P                  ! RV4      ,           4       R# )é   z>dNri  ro  s   &&&&& r   rô   Ú%CBORSerializer._serialize_type_double³  rq  r   c                ót   € V'       d   ^M^pVP                  V P                  V P                  V4      4       R# )é   N)r;  r:  rl  )r"   r5   rB   re   r¿   r>  s   &&&&& r   rë   Ú&CBORSerializer._serialize_type_boolean¾  s2   € ß %™"¨2ˆØ×ÑØ×"Ñ"Ø×0Ñ0°/óö	
r   c                óR   € V^8  d   V^ 3# VR8  d   R# VR8  d   R# VR8  d   R# R# )é   é   i   l        )ry  rü   )é   é   )rh  é   )rs  é   rx   rS   s   &&r   r9  Ú1CBORSerializer._get_additional_info_and_num_bytesÆ  sF   € ð �2Œ:Ø˜!�8ˆOð �SŒ[ØˆLð �UŒ]ØˆLð �ZÔØˆLð ˆLr   c                óD   € V^,          pW2,          P                  ^R4      # )é   r6  )r<  )r"   r=  r>  Úmajor_type_bytess   &&& r   r:  Ú CBORSerializer._get_initial_byteÜ  s$   € ð &¨�?ÐØ Õ2×<Ñ<¸QÀÓFÐFr   c                óv   € \        V\        R 4      8H  V\        R4      8H  \        P                  ! V4      .4      # )Úinfú-inf)Úanyr”   r•   r–   rS   s   &&r   rj  Ú!CBORSerializer._is_special_numberâ  s8   € Üàœ˜u›Ñ%Øœ˜v›Ñ&Ü—
’
˜5Ó!ðó
ð 	
r   c                ón  € ^pV P                  V P                  V4      pV\        R4      8X  d   V\        P                  ! RR4      ,           # V\        R4      8X  d   V\        P                  ! RR4      ,           # \
        P                  ! V4      '       d   V\        P                  ! RR4      ,           # R# )r{  r…  z>Hi |  r†  i ü  i ~  N)r:  rl  r”   rm  rn  r•   r–   )r"   rB   r>  r@  s   &&  r   rk  Ú-CBORSerializer._get_bytes_for_special_numbersë  s’   € ØˆØ×-Ñ-Ø×,Ñ,¨oó
ˆð ”E˜%“LÔ Ø¤&§+¢+¨d°FÓ";Õ;Ð;Ø”e˜F“mÔ#Ø¤&§+¢+¨d°FÓ";Õ;Ð;Ü�ZŠZ˜×ÒØ¤&§+¢+¨d°FÓ";Õ;Ð;ñ r   rx   rj   )rŸ   r    r¡   r¢   r7  r8  rL  rP  rV  rZ  rc  rl  r2  rA  rD  rà   rR  rÏ   rÛ   rÂ   ræ   rð   rô   rë   r9  r:  rj  rk  r¦   r§   r¨   s   @r   r0  r0    sŽ   ø‡ € ØÐØÐØ€OØÐØ€OØ€NØ€NØ"#Ðô.òOò$Dò!ò(ò FòEò òBò,	Gò	Gò
òò,Gò
÷
<ð 
<r   r0  c                   óˆ   a € ] tR tRt o RtRtRt. ROtR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tRtV tR# )Ú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   Úrfc822c           	     óf  € V P                  4       pVP                  P                  R V P                  4      VR &   VP                  pV P                  W4      pVe   WSR&   Vf   VP                  R,          VR&   V# VP                  pRV P                  4       RV P                  4       RV P                  4       RV P                  4       /pVP                  4        F  w  r‰V	f   K  V P                  WxW–4       K  	  V P                  VP                  R,          VR,          4      VR&   RVP                  9   d.   V P                  VP                  R,          VR,          4      VR	&   VR,          VR
&   VR,          '       d   VR,          VR&   V P                  WqW4V4       V P                  W4V4       V# )r1   r±   Ú
requestUrir-   Úuri_path_kwargsÚquery_string_kwargsÚbody_kwargsr2   ÚauthPathÚ	auth_pathr/   )r6   r²   rd   r4   rz   rŠ   r{   r¤   r|   Ú_partition_parametersÚ_render_uri_templateÚ_serialize_payloadÚ_serialize_content_type)
r"   r)   r*   r5   re   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Ñ"ØÐØŸ™ˆð ˜tŸ}™}›Ø! 4§=¡=£?Ø˜4Ÿ=™=›?Ø�t—}‘}“ð	
ˆð (2×'7Ñ'7Ö'9Ñ#ˆJØÒ"áØ×&Ñ&Ø¨öñ	 (:ð "&×!:Ñ!:Ø× Ñ  Õ.°Ð<MÕ0Nó"
ˆ
�:Ñð ˜×-Ñ-Ô-Ø&*×&?Ñ&?Ø×$Ñ$ ZÕ0ØÐ-Õ.ó'ˆJ�{Ñ#ð &1Ð1FÕ%Gˆ
�>Ñ"Ø�y×!Ô!Ø$/°	Õ$:ˆJ�yÑ!Ø×ÑØ Z¸ô	
ð 	×$Ñ$ Z¸ÔFàÐr   c                óî   € / p\         P                  ! R V4       FG  pVP                  R4      '       d   \        W$RR ,          RR7      W4&   K4  \        W$,          4      W4&   KI  	  VP                  ! R/ VB # )z{(.*?)}Ú+Nz/~)ÚsaferÆ   rx   )Ú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                ó  € VP                   P                  R 4      pV P                  We4      '       d*   VP                  VR4      pV P                  V4      pWsR&   R# VeH   VP                  V4      pVe   V P	                  W…V,          4      VR&   R# V P                  4       VR&   R# VR,          '       d   V P	                  VR,          V4      VR&   R# V P                  V4      '       d   V P                  4       VR&   R# R# )Úpayloadr   r3   Nr’  )rc   rd   Ú_has_streaming_payloadÚ_encode_payloadÚ_serialize_body_paramsÚ_serialize_empty_bodyÚ_requires_empty_body)	r"   rš  r)   r5   re   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                ó   € R # )r   rx   ©r"   s   &r   r®  Ú(BaseRestSerializer._serialize_empty_bodyy  s   € Ùr   c                ó   € R# )z�
Some protocols require varied Content-Type headers
depending on user input. This allows subclasses to apply
this conditionally.
Nrx   )r"   r5   re   r™  s   &&&&r   r˜  Ú*BaseRestSerializer._serialize_content_type|  s   € ñ 	r   c                ó   € R# )z{
Some protocols require a specific body to represent an empty
payload. This allows subclasses to apply this conditionally.
Frx   rŽ   s   &&r   r¯  Ú'BaseRestSerializer._requires_empty_body„  s   € ñ
 r   c                óD   € VRJ;'       d    W!,          P                   R9   # )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                óh   € \        V\        4      '       d   VP                  V P                  4      # V# rj   )rQ   rk   rl   rm   )r"   r3   s   &&r   r¬  Ú"BaseRestSerializer._encode_payload’  s)   € Ü�dœC× Ò Ø—;‘;˜t×4Ñ4Ó5Ð5Øˆr   c                óþ  € WB,          pVP                   P                  R 4      pVP                   P                  RV4      pVR8X  d   V P                  W54      pW�R,          V&   R# VR8X  d—   \        V\        4      '       d   VR,          P                  V4       R# VP                  R8X  d8   V U	u. uF  p	V P                  W•P                  4      NK   	  p
p	W¡R,          V&   R# V P                  W54      p
W¡R,          V&   R# VR8X  dA   WB,          pV'       g   VP                  R8X  d   R# V P                  W³4      VR	,          V&   R# VR	8X  d   TpV P                  WÁR	,          V4       R# W1R
,          V&   R# u up	i )Úlocationra   Úurir�  Úquerystringr‘  ÚlistÚheaderNr2   r’  )
rc   rd   Ú_get_uri_and_query_string_valuerQ   r£   Úupdater»   r…   Ú_convert_header_valueÚ_do_serialize_header_map)r"   rš  r›  rœ  r™  r…   rÁ  Úkey_nameÚuri_path_valuerB   Ú	new_paramre   Ú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   Â1$E:c                ó@  € VP                   R 8X  d   \        V4      P                  4       # VP                   R8X  d8   VP                  P	                  RV P
                  4      pV P                  W4      # VP                   R9   d   \        V P                  V4      4      # V# )Úbooleanrd  rä   ©r”   Údouble)r»   rk   rY   rc   rd   ÚQUERY_STRING_TIMESTAMP_FORMATr^   r—   )r"   rœ  r…   rD   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                óP   € VP                  4        F  w  rEW,           pWRV&   K  	  R # rj   )r|   )r"   rÍ  r2   Ú
user_inputr¿   ÚvalÚfull_keys   &&&&   r   rÉ  Ú+BaseRestSerializer._do_serialize_header_mapØ  s'   € Ø"×(Ñ(Ö*‰HˆCØ$Õ*ˆHØ #�HÓó +r   c                ó   € \        R 4      h©r­  r'   )r"   r¥  re   s   &&&r   r­  Ú)BaseRestSerializer._serialize_body_paramsÝ  ó   € Ü!Ð":Ó;Ð;r   c                óp  € VP                   R 8X  dp   \        V4      p\        P                  ! VP	                  4       4      pVP
                  P                  RV P                  4      p\        V P                  WE4      4      # VP                   R8X  d…   VP                  P                   R8X  d(   V Uu. uF  pVf   K	  V P                  V4      NK  	  ppM1V Uu. uF%  pVf   K	  V P                  VP                  V4      NK'  	  ppRP                  V4      # \        V4      '       d(   V P                  \         P"                  ! VRR7      4      # VP                   R8X  d   \        V4      P%                  4       # VP                   R9   d   \        V P'                  V4      4      # \        V4      # u upi u upi )	rd  rä   rÄ  r¼  Ú,)Ú
separatorsrÐ  )rß  Ú:rÑ  )r»   r	   rH   rI   Úutctimetuplerc   rd   ÚHEADER_TIMESTAMP_FORMATrk   r^   r…   Ú_escape_header_list_stringrÈ  r€   r   rr   r  r	  rY   r—   )r"   re   rB   r[   rd  rD   r_  Ú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   Â1F.Â<F.ÃF3Ã# F3c                ób   € R V9   g   RV9   d!   R VP                  R R4      ,           R ,           # V# )Ú"rß  z\")ÚreplacerS   s   &&r   rä  Ú-BaseRestSerializer._escape_header_list_string  s1   € ð �%Œ<˜3 %œ<Ø˜Ÿ™ s¨EÓ2Õ2°SÕ8Ð8àˆLr   rx   N)rÂ  rÃ  rÅ  r2   )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¨   s   @r   rŒ  rŒ  ø  sp   ø‡ € ñð %.Ð!Ø&Ðò B€Oò:òx5ò&>ò@òòò
òò
1Aòfò$ò
<ò!÷Fð r   rŒ  c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	Ú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                óô   € V P                  4       pVP                  P                  R ,          pVP                  pRV RV 2VR&   VP                  pVe   V P                  WV4       V P                  W24       V# )r  z	/service/z/operation/r-   )r6   r›   r³   ra   rz   r—  Ú_serialize_headers)r"   r)   r*   r5   Úservice_nameÚoperation_namerz   s   &&&    r   r&   Ú(BaseRpcV2Serializer.serialize_to_request  sƒ   € Ø×1Ñ1Ó3ˆ
Ø&×4Ñ4×=Ñ=¸nÕMˆØ(×-Ñ-ˆà˜�~ [°Ð0@ÐAð 	�:Ñð &×1Ñ1ˆØÒ"Ø×#Ñ# J¸KÔHà×Ñ 
Ô<àÐr   c                ó0   € V P                  W4      pWBR &   R# )r3   NrÛ  )r"   r)   r5   re   r±  s   &&&& r   r—  Ú&BaseRpcV2Serializer._serialize_payload(  s   € Ø×2Ñ2°:ÓEˆØ)�6Ór   c                ó   € \        R 4      h)rï  r'   )r"   r5   r*   s   &&&r   rï  Ú&BaseRpcV2Serializer._serialize_headers,  s   € Ü!Ð"6Ó7Ð7r   c                ó   € \        R 4      hrÛ  r'   )r"   r)   re   s   &&&r   r­  Ú*BaseRpcV2Serializer._serialize_body_params/  rÝ  r   rx   N)rŸ   r    r¡   r¢   r  r&   r—  rï  r­  r¦   r§   r¨   s   @r   rí  rí    s#   ø‡ € ñ	òò *ò8÷<ð <r   rí  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚRestJSONSerializeri3  c                ó   € R # )s   {}rx   r´  s   &r   r®  Ú(RestJSONSerializer._serialize_empty_body4  s   € Ùr   c                ót   € VP                   P                  4        F  w  r#RVP                  9  g   K   R# 	  R# )zY
Serialize an empty JSON object whenever the shape has
members not targeting a location.
rÁ  TF)r{   r|   rc   )r"   re   r…   r×  s   &&  r   r¯  Ú'RestJSONSerializer._requires_empty_body7  s3   € ð
 !Ÿ=™=×.Ñ.Ö0‰KˆFØ ×!2Ñ!2Ö2Úñ 1ñ r   c                óì   € VP                   P                  R4      pV P                  WC4      '       d   R# VR,          R8g  p\        RVR,          4      pV'       d   V'       g   RVR,          R&   R# R# R# )z?Set Content-Type to application/json for all structured bodies.rª  Nr3   r   r­   r2   zapplication/json)rc   rd   r«  r   )r"   r5   re   r™  rª  Úhas_bodyÚhas_content_types   &&&&   r   r˜  Ú*RestJSONSerializer._serialize_content_typeA  si   € à×%Ñ%×)Ñ)¨)Ó4ˆØ×&Ñ& w×>Ò>áà˜fÕ%¨Ñ,ˆÜ% n°jÀÕ6KÓLÐß×,Ø4FˆJ�yÕ! .Ó1ñ -‰8r   c                ó¤   € V P                  4       pV P                  W1V4       \        P                  ! V4      P	                  V P
                  4      # rj   )r¤   r´   r  r	  rl   rm   )r"   r¥  re   Úserialized_bodys   &&& r   r­  Ú)RestJSONSerializer._serialize_body_paramsM  s;   € ØŸ-™-›/ˆØ�‰˜°Ô7Ü�zŠz˜/Ó*×1Ñ1°$×2GÑ2GÓHÐHr   rx   N)
rŸ   r    r¡   r¢   r®  r¯  r˜  r­  r¦   r§   r¨   s   @r   rú  rú  3  s!   ø‡ € òòò
G÷Ið Ir   rú  c                   ól   a € ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tRtV tR# )ÚRestXMLSerializeriS  r   c                óÞ   € VP                   R ,          p\        P                  ! R4      pV P                  W!WC4       \	        V4      ^ ,          p\        P
                  ! WPP                  R7      # )ra   r0   )Úencoding)rc   r   ÚElementr´   rÄ  Útostringrm   )r"   r¥  re   Ú	root_nameÚpseudo_rootÚ	real_roots   &&&   r   r­  Ú(RestXMLSerializer._serialize_body_paramsV  sV   € Ø×'Ñ'¨Õ/ˆ	Ü!×)Ò)¨"Ó-ˆØ�‰˜ {Ô>Ü˜Ó% aÕ(ˆ	Ü×#Ò# I×8MÑ8MÔNÐNr   c                ó`   € \        V R VP                   2V P                  4      pV! W2W4       R# r  rº   )r"   re   r¥  Úxmlnodera   r1   s   &&&&& r   r´   ÚRestXMLSerializer._serialize]  s3   € ÜØØ˜uŸ™Ð/Ð0Ø×#Ñ#ó
ˆñ
 	ˆw Ö,r   c                óž  € \         P                  ! W4      pV P                  W54       VP                  4        F‘  w  rgVP                  V,          pVP
                  P                  R V4      p	Vf    R# VP
                  P                  R4      '       d$   VP
                  R ,          p
WuP                  V
&   K  V P                  W‡WY4       K“  	  R# )ra   NÚxmlAttribute)	r   Ú
SubElementÚ_add_xml_namespacer|   r{   rc   rd   Úattribr´   )r"   r  r¥  re   ra   Ústructure_noder¿   rB   rÀ   Úmember_nameÚxml_attribute_names   &&&&&      r   rÂ   Ú+RestXMLSerializer._serialize_type_structuree  sª   € Ü$×/Ò/°Ó>ˆà×Ñ Ô6Ø Ÿ,™,ž.‰JˆCØ Ÿ=™=¨Õ-ˆLØ&×4Ñ4×8Ñ8¸ÀÓEˆKð
 Š}âØ×)Ñ)×-Ñ-¨n×=Ò=à%1×%?Ñ%?ÀÕ%GÐ"Ø<A×%Ñ%Ð&8Ñ9ÙØ�O‰O˜L°ÖMó )r   c                ó&  € VP                   pVP                  P                  R 4      '       d   TpTpM2VP                  P                  RR4      p\        P                  ! W4      pV P                  W74       V F  pV P                  WXWv4       K  	  R# )r�   ra   r…   N)r…   rc   rd   r   r  r  r´   )	r"   r  r¥  re   ra   rÀ   Úelement_nameÚ	list_noderW  s	   &&&&&    r   rÏ   Ú&RestXMLSerializer._serialize_type_listz  sz   € Ø—|‘|ˆØ×Ñ×"Ñ" ;×/Ò/ØˆLØ‰Ià'×5Ñ5×9Ñ9¸&À(ÓKˆLÜ#×.Ò.¨wÓ=ˆIØ×Ñ Ô1ÛˆDØ�O‰O˜L°	ÖHó r   c                ó$  € V P                  V4      '       g(   \        P                  ! W4      pV P                  W54       VP	                  4        F½  w  rgV P                  V4      '       d   \        P                  ! W4      M\        P                  ! XR 4      pV P                  VP                  RR7      p	V P                  VP                  RR7      p
V P                  VP                  WhV	4       V P                  VP                  WxV
4       K¿  	  R# )Úentryr¿   rÅ   rB   N)	r�   r   r  r  r|   rg   r¿   rB   r´   )r"   r  r¥  re   ra   Únoder¿   rB   Ú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                óz   € \         P                  ! W4      pV'       d   R pMRpWen        V P                  W54       R# ré   )r   r  Útextr  )r"   r  r¥  re   ra   r"  Ú	str_values   &&&&&  r   rë   Ú)RestXMLSerializer._serialize_type_boolean   s4   € ô ×%Ò% gÓ4ˆßØ‰IàˆIØŒ	Ø×Ñ Ö,r   c                ó€   € \         P                  ! W4      pV P                  V4      Vn        V P	                  W54       R # rj   )r   r  rr   r'  r  ©r"   r  r¥  re   ra   r"  s   &&&&& r   rà   Ú&RestXMLSerializer._serialize_type_blob¬  s2   € Ü×%Ò% gÓ4ˆØ×$Ñ$ VÓ,ˆŒ	Ø×Ñ Ö,r   c                óÄ   € \         P                  ! W4      p\        V P                  W#P                  P                  R 4      4      4      Vn        V P                  W54       R# rã   )r   r  rk   r^   rc   rd   r'  r  r+  s   &&&&& r   ræ   Ú+RestXMLSerializer._serialize_type_timestamp±  sQ   € Ü×%Ò% gÓ4ˆÜØ×*Ñ*Ø×+Ñ+×/Ñ/Ð0AÓBóó
ˆŒ	ð
 	×Ñ Ö,r   c                ó’   € \         P                  ! W4      p\        V P                  V4      4      Vn        V P                  W54       R # rj   )r   r  rk   r—   r'  r  r+  s   &&&&& r   rð   Ú'RestXMLSerializer._serialize_type_floatº  s7   € Ü×%Ò% gÓ4ˆÜ˜×*Ñ*¨6Ó2Ó3ˆŒ	Ø×Ñ Ö,r   c                ó*   € V P                  WW44       R # rj   ró   )r"   r  r¥  re   ra   s   &&&&&r   rô   Ú(RestXMLSerializer._serialize_type_double¿  s   € Ø×"Ñ" 7°EÖ@r   c                ót   € \         P                  ! W4      p\        V4      Vn        V P	                  W54       R # rj   )r   r  rk   r'  r  r+  s   &&&&& r   r¼   Ú$RestXMLSerializer._default_serializeÂ  s+   € Ü×%Ò% gÓ4ˆÜ˜“KˆŒ	Ø×Ñ Ö,r   c                óR  € R VP                   9   d–   VP                   R ,          pRp\        V\        4      '       dC   VP                  R4      '       d   VRVR,           2,          pVR,          VP                  V&   R# \        V\
        4      '       d   W2P                  V&   R# R# R# )ÚxmlNamespaceÚxmlnsr¹   rá  rÂ  N)rc   rQ   r£   rd   r  rk   )r"   re   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   rx   N)rŸ   r    r¡   r¢   rX   r­  r´   rÂ   rÏ   rÛ   rë   rà   ræ   rð   rô   r¼   r  r¦   r§   r¨   s   @r   r  r  S  sS   ø‡ € Ø ÐòOò-òNò*
IòDò4
-ò-ò
-ò-ò
Aò-÷
Kð Kr   r  c                   óB   a a€ ] tR tRt oRtV 3R ltR tR tRtVt	V ;t
# )ÚRpcV2CBORSerializeriÕ  r  c                ó8   <€ \        R 4       \        SV `	  W4      # )Ú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   € \        4       pV P                  W1V4       \        V4      # rj   )rI  r2  rH  )r"   r)   rz   r3   s   &&& r   r­  Ú*RpcV2CBORSerializer._serialize_body_paramsÜ  s#   € Ü‹{ˆØ×!Ñ! $°KÔ@Ü�T‹{Ðr   c                ó   € R VR,          R&   VP                   '       d   RpMRpV P                  W!4       VR,          R8g  p\        RVR,          4      pW1R,          R&   V'       g   V'       d   W1R,          R&   R	# R	# R	# )
zrpc-v2-cborr2   zsmithy-protocolz"application/vnd.amazon.eventstreamzapplication/cborr3   r   r­   ÚAcceptN)Úhas_event_stream_outputr�   r   )r"   r5   r*   Ú
header_valr   r  s   &&&   r   rï  Ú&RpcV2CBORSerializer._serialize_headersá  s~   € Ø3@ˆ
�9ÕÐ/Ñ0à×2×2Ð2Ø=‰Jà+ˆJØ×+Ñ+¨OÔHà˜fÕ%¨Ñ,ˆÜ% n°jÀÕ6KÓLÐà*4�9Õ˜hÑ'ß§HØ4>�yÕ! .Ó1ñ %-Ñr   rx   )rŸ   r    r¡   r¢   rX   r&   r­  rï  r¦   r§   Ú__classcell__)r@  r©   s   @@r   r<  r<  Õ  s    ù‡ € Ø&ÐõIò÷
?ò ?r   r<  Úec2Úqueryr  z	rest-jsonzrest-xmlzsmithy-rpc-v2-cbor),r  rn   rH   rR   r*  r  r•   r¡  rm  Ú	xml.etreer   Úbotocorer   Úbotocore.compatr   Úbotocore.exceptionsr   Úbotocore.useragentr   Úbotocore.utilsr   r   r	   r
   ÚDEFAULT_TIMESTAMP_FORMATrA   r@   Úcompiler}   r¥   r=   r   r   r   r«   rù   r  r0  rŒ  rí  rú  r  r<  r   rx   r   r   Ú<module>rT     sL  ðñó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$<˜*ô $<ôNIÐ+¨^ô Iô@KÐ*ô KôD?Ð-¨~ô ?ð< 
ˆ=Øˆ_Ø
ˆNØÐ#ØÐ!ØÐ-ð‚r   