+
    4O|j`-  ã                  ó®  € R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHtHtH	t	H
t
Ht ^ RIHtHt ]P                  ! R4      P                   t]P                  ! R4      P$                  tRtRtRtR t^"tR	tR
tRtRt]],           ^ 3t]^ 3t]],           ^ 3t]^ 3t ]],           ^ 3t!]^ 3t"R]R]PF                  R]R]R^R. R]PH                  ]PJ                  ]PL                  .R^/t']PP                  ! R!/ ]'PS                  4       B t*]]P
                  ]+],]	]-]]-,          ]-3,          3,          t. ! R R]4      t/ ! R R]4      t0R R lt1R R lt2 ! R R4      t3R# )"zHTools for working with the BSON decimal128 type.

.. versionadded:: 3.4
)ÚannotationsN©ÚDecimal)ÚAnyÚSequenceÚTupleÚTypeÚUnion)ÚTypeDecoderÚTypeEncoderz<Qi   i   l          @ l          ` l          p l            ÚprecÚroundingÚEminÚEmaxÚcapitalsÚflagsÚtrapsÚclampc                  ó<   € ] tR t^@tRt]R R l4       tR R ltRtR# )ÚDecimalEncoderzøConverts Python :class:`decimal.Decimal` to BSON :class:`Decimal128`.

For example::
    opts = CodecOptions(type_registry=TypeRegistry([DecimalEncoder()]))
    bson.encode({"d": decimal.Decimal('1.0')}, codec_options=opts)

.. versionadded:: 4.15
c               ó   € V ^8„  d   QhRR/# )é   ÚreturnzType[Decimal]© )Úformats   "ÚHC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\bson/decimal128.pyÚ__annotate__ÚDecimalEncoder.__annotate__K   s   € ÷ ñ ˜]ñ ó    c                	ó   € \         # ©Nr   ©Úselfs   &r   Úpython_typeÚDecimalEncoder.python_typeJ   s   € äˆr   c               ó    € V ^8„  d   QhRRRR/# )r   Úvaluer   r   Ú
Decimal128r   )r   s   "r   r   r   N   s   € ÷ !ñ ! cð !¨jñ !r   c                	ó   € \        V4      # r    ©r'   ©r"   r&   s   &&r   Útransform_pythonÚDecimalEncoder.transform_pythonN   s   € Ü˜%Ó Ð r   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úpropertyr#   r+   Ú__static_attributes__r   r   r   r   r   @   s%   † ñð ôó ð÷!ñ !r   r   c                  ó<   € ] tR t^RtRt]R R l4       tR R ltRtR# )ÚDecimalDecoderzßConverts BSON :class:`Decimal128` to Python :class:`decimal.Decimal`.

For example::
    opts = CodecOptions(type_registry=TypeRegistry([DecimalDecoder()]))
    bson.decode(data, codec_options=opts)

.. versionadded:: 4.15
c               ó   € V ^8„  d   QhRR/# )r   r   úType[Decimal128]r   )r   s   "r   r   ÚDecimalDecoder.__annotate__]   s   € ÷ ñ Ð+ñ r   c                	ó   € \         # r    r)   r!   s   &r   Ú	bson_typeÚDecimalDecoder.bson_type\   s   € äÐr   c               ó    € V ^8„  d   QhRRRR/# )r   r&   r   r   údecimal.Decimalr   )r   s   "r   r   r8   `   s   € ÷ "ñ " Cð "¨Oñ "r   c                	ó"   € VP                  4       # r    )Ú
to_decimalr*   s   &&r   Útransform_bsonÚDecimalDecoder.transform_bson`   s   € Ø×ÑÓ!Ð!r   r   N)	r-   r.   r/   r0   r1   r2   r:   r@   r3   r   r   r   r5   r5   R   s%   † ñð ôó ð÷"ñ "r   r5   c               ó   € V ^8„  d   QhRR/# )r   r   zdecimal.Contextr   )r   s   "r   r   r   d   s   € ÷ #ñ # ?ñ #r   c                 ó`   € \         P                  4       p . V R&   \        P                  ! R/ V B # )z}Returns an instance of :class:`decimal.Context` appropriate
for working with IEEE-754 128-bit decimal floating point values.
r   r   )Ú_CTX_OPTIONSÚcopyÚdecimalÚContext)Úoptss    r   Úcreate_decimal128_contextrI   d   s-   € ô ×ÑÓ€DØ€Dˆ�MÜ�?Š?Ñ"˜TÑ"Ð"r   c               ó    € V ^8„  d   QhRRRR/# )r   r&   Ú_VALUE_OPTIONSr   úTuple[int, int]r   )r   s   "r   r   r   m   s   € ÷ -ñ -˜>ð -¨oñ -r   c           
     óÀ  € \         P                  ! \        4      ;_uu_ 4       pVP                  V 4      p RRR4       V P	                  4       '       d#   V P                  4       '       d   \        # \        # V P                  4       w  r#pV P                  4       '       dn   V'       d   \        R4      hV P                  4       '       d#   V P                  4       '       d   \        # \        # V P                  4       '       d   \        # \        # \!        RP#                  V Uu. uF  p\%        V4      NK  	  up4      4      pVP'                  4       p^ p^ p	\)        \+        ^@V4      4       F+  p
V^V
,          ,          '       g   K  V	^V
,          ,          p	K-  	  \)        ^@V4       F2  p
V^V
,          ,          '       g   K  V^V
^@,
          ,          ,          pK4  	  V\,        ,           pV^1,	          ^8X  d.   VR,          pV\.        ,          pW‹R,          ^/,          ,          pMW‹^1,          ,          pV'       d   V\0        ,          pW‰3#   + '       g   i     EL; iu upi )zgConverts a decimal.Decimal to BID (high bits, low bits).

:param value: An instance of decimal.Decimal
Nz'NaN with debug payload is not supportedÚ l   ÿÿÿ iÿ?  )rF   ÚlocalcontextÚ_DEC128_CTXÚcreate_decimalÚis_infiniteÚ	is_signedÚ_NINFÚ_PINFÚas_tupleÚis_nanÚ
ValueErrorÚis_snanÚ_NSNANÚ_PSNANÚ_NNANÚ_PNANÚintÚjoinÚstrÚ
bit_lengthÚrangeÚminÚ_EXPONENT_BIASÚ_EXPONENT_MASKÚ_SIGN)r&   ÚctxÚsignÚdigitsÚexponentÚdigitÚsignificandra   ÚhighÚlowÚiÚbiased_exponents   &           r   Ú_decimal_to_128rq   m   sË  € ô
 
×	Ò	œk×	*Ô	*¨cØ×"Ñ" 5Ó)ˆ÷ 
+ð ×Ñ×ÒØŸ™×)Ò)ŒuÐ4¬uÐ4à"Ÿ^™^Ó-Ñ€D�(à‡|�|‡~‚~ßÜÐFÓGÐGØ�=‰=�?Š?Ø"Ÿ_™_×.Ò.”6Ð:´FÐ:ØŸ™×)Ò)ŒuÐ4¬uÐ4ä�b—g‘g±vÓ>±v¨eœs 5žz±vÑ>Ó?Ó@€KØ×'Ñ'Ó)€Jà€DØ
€CÜ”3�r˜:Ó&Ö'ˆØ˜!˜q�&×!Ö!Ø�1˜•6�MŠCñ (ô �2�zÖ"ˆØ˜!˜q�&×!Ö!Ø�A˜!˜b�&•MÕ!ŠDñ #ð ¤Õ/€Oàˆr…z�Q„Ø�nÕ$ˆØ”ÕˆØ 6Õ)¨bÕ0Õ0‰à 2Õ%Õ%ˆçØ”�ˆàˆ9Ð÷Q 
+×	*Ð	*üò ?s   £IÄIÉI	c                  ó®   € ] tR t^�tRtRt^tR R ltR R lt]	R R l4       t
]R R	 l4       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R# )r'   a‡  BSON Decimal128 type::

  >>> Decimal128(Decimal("0.0005"))
  Decimal128('0.0005')
  >>> Decimal128("0.0005")
  Decimal128('0.0005')
  >>> Decimal128((3474527112516337664, 5))
  Decimal128('0.0005')

:param value: An instance of :class:`decimal.Decimal`, string, or tuple of
    (high bits, low bits) from Binary Integer Decimal (BID) format.

.. note:: :class:`~Decimal128` uses an instance of :class:`decimal.Context`
  configured for IEEE-754 Decimal128 when validating parameters.
  Signals like :class:`decimal.InvalidOperation`, :class:`decimal.Inexact`,
  and :class:`decimal.Overflow` are trapped and raised as exceptions::

    >>> Decimal128(".13.1")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ...
    decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]
    >>>
    >>> Decimal128("1E-6177")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ...
    decimal.Inexact: [<class 'decimal.Inexact'>]
    >>>
    >>> Decimal128("1E6145")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ...
    decimal.Overflow: [<class 'decimal.Overflow'>, <class 'decimal.Rounded'>]

  To ensure the result of a calculation can always be stored as BSON
  Decimal128 use the context returned by
  :func:`create_decimal128_context`::

    >>> import decimal
    >>> decimal128_ctx = create_decimal128_context()
    >>> with decimal.localcontext(decimal128_ctx) as ctx:
    ...     Decimal128(ctx.create_decimal(".13.3"))
    ...
    Decimal128('NaN')
    >>>
    >>> with decimal.localcontext(decimal128_ctx) as ctx:
    ...     Decimal128(ctx.create_decimal("1E-6177"))
    ...
    Decimal128('0E-6176')
    >>>
    >>> with decimal.localcontext(DECIMAL128_CTX) as ctx:
    ...     Decimal128(ctx.create_decimal("1E6145"))
    ...
    Decimal128('Infinity')

  To match the behavior of MongoDB's Decimal128 implementation
  str(Decimal(value)) may not match str(Decimal128(value)) for NaN values::

    >>> Decimal128(Decimal('NaN'))
    Decimal128('NaN')
    >>> Decimal128(Decimal('-NaN'))
    Decimal128('NaN')
    >>> Decimal128(Decimal('sNaN'))
    Decimal128('NaN')
    >>> Decimal128(Decimal('-sNaN'))
    Decimal128('NaN')

  However, :meth:`~Decimal128.to_decimal` will return the exact value::

    >>> Decimal128(Decimal('NaN')).to_decimal()
    Decimal('NaN')
    >>> Decimal128(Decimal('-NaN')).to_decimal()
    Decimal('-NaN')
    >>> Decimal128(Decimal('sNaN')).to_decimal()
    Decimal('sNaN')
    >>> Decimal128(Decimal('-sNaN')).to_decimal()
    Decimal('-sNaN')

  Two instances of :class:`Decimal128` compare equal if their Binary
  Integer Decimal encodings are equal::

    >>> Decimal128('NaN') == Decimal128('NaN')
    True
    >>> Decimal128('NaN').bid == Decimal128('NaN').bid
    True

  This differs from :class:`decimal.Decimal` comparisons for NaN::

    >>> Decimal('NaN') == Decimal('NaN')
    False
c               ó    € V ^8„  d   QhRRRR/# )r   r&   rK   r   ÚNoner   )r   s   "r   r   ÚDecimal128.__annotate__ÿ   s   € ÷ Gñ G˜nð G°ñ Gr   c                	ó2  € \        V\        \        P                  34      '       d   \	        V4      w  V n        V n        R# \        V\        \        34      '       d-   \        V4      ^8w  d   \        R4      hVw  V n        V n        R# \        RV: R24      h)r   zYInvalid size for creation of Decimal128 from list or tuple. Must have exactly 2 elements.zCannot convert z to Decimal128N)Ú
isinstancer`   rF   r   rq   Ú_Decimal128__highÚ_Decimal128__lowÚlistÚtupleÚlenrX   Ú	TypeErrorr*   s   &&r   Ú__init__ÚDecimal128.__init__ÿ   s}   € Ü�eœc¤7§?¡?Ð3×4Ò4Ü&5°eÓ&<Ñ#ˆDŒK˜žÜ˜¤¤e˜}×-Ò-Ü�5‹z˜QŒÜ ð óð ð
 ',Ñ#ˆDŒK˜žä˜o¨e©Y°nÐEÓFÐFr   c               ó   € V ^8„  d   QhRR/# )r   r   r=   r   )r   s   "r   r   ru     s   € ÷ '@ñ '@˜Oñ '@r   c           	     óî  € V P                   pV P                  pV\        ,          '       d   ^M^ pV\        ,          \        8X  d   \        P
                  ! VR
R34      # V\        ,          \        8X  d   \        P
                  ! VR
R34      # V\        ,          \        8X  d   \        P
                  ! VR
R34      # V\        ,          \        8X  d5   VR,          ^/,	          \        ,
          p\        P
                  ! VRV34      # VR,          ^1,	          \        ,
          p\        ^4      p^ÿp\        ^^R4       F+  pW&,          ^V,
          ^,          ,	          WW&   V^,          pK-  	  ^ÿp\        ^^ R4       F+  pW,          ^V,
          ^,          ,	          WW&   V^,          pK-  	  RpW,          ^0,	          V^ &   \        ;QJ d1    . R \        \        P                  VR4      4       4       F  NK  	  5M*! R \        \        P                  VR4      4       4       4      p\        P                   ! \"        4      ;_uu_ 4       p	V	P%                  W8V34      uuR	R	R	4       #   + '       g   i     R	# ; i)zNReturns an instance of :class:`decimal.Decimal` for this
:class:`Decimal128`.
ÚNÚnÚFl         ÿ l         ü l          c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir    )r^   )Ú.0rk   s   & r   Ú	<genexpr>Ú(Decimal128.to_decimal.<locals>.<genexpr>1  s   é € ÐOÑ/N e”s˜5—z�zÓ/Nùs   ‚ÚbigNr   )é    éÿÿÿÿ)rx   ry   rf   Ú_SNANrF   r   Ú_NANÚ_INFre   rd   Ú	bytearrayrb   r{   r`   r^   Ú
from_bytesrO   rP   rQ   )
r"   rm   rn   rh   rj   ÚarrÚmaskro   ri   rg   s
   &         r   r?   ÚDecimal128.to_decimal  sÙ  € ð �{‰{ˆØ�j‰jˆØœE—\”\‰q¨ˆà”5�LœUÔ"Ü—?’? D¨"¨c ?Ó3Ð3Ø”T�kœdÔ"Ü—?’? D¨"¨c ?Ó3Ð3Ø”T�kœdÔ"Ü—?’? D¨"¨c ?Ó3Ð3à”>Õ!¤nÔ4ØÐ 2Õ2°rÕ9¼^ÕKˆHÜ—?’? D¨$°Ð#9Ó:Ð:àÐ 2Õ2°rÕ9¼^ÕKˆHä˜‹mˆØ!ˆÜ�r˜1˜bÖ!ˆAØ•j r¨A¥v°!¥mÕ4ˆC‰FØ˜1•9ŠDñ "ð "ˆÜ�q˜!˜R–ˆAØ•k¨¨A­°!¥|Õ4ˆC‰FØ˜1•9ŠDñ !ð "ˆØ•+ "Õ$ˆˆA‰÷ ”ÑO¬s´3·>±>À#ÀuÓ3MÔ/NÓO—‘ÑO¬s´3·>±>À#ÀuÓ3MÔ/NÓOÓOˆä×!Ò!¤+×.Ô.°#Ø×%Ñ% t°XÐ&>Ó?÷ /×.×.Ó.ús   ÉI#É#I4	c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úclsr7   r&   Úbytesr   r'   r   )r   s   "r   r   ru   7  s'   € ÷ Iñ IÐ&ð I¨uð I¸ñ Ir   c                ó  € \        V\        4      '       g   \        R\        V4       24      h\	        V4      ^8w  d   \        R4      hV ! \        VR,          4      ^ ,          \        VR,          4      ^ ,          34      # )zÇCreate an instance of :class:`Decimal128` from Binary Integer
Decimal string.

:param value: 16 byte string (128-bit IEEE 754-2008 decimal floating
    point in Binary Integer Decimal (BID) format).
z(value must be an instance of bytes, not zvalue must be exactly 16 bytes:é   NN:Nr˜   N)rw   r–   r}   Útyper|   rX   Ú
_UNPACK_64)r•   r&   s   &&r   Úfrom_bidÚDecimal128.from_bid6  sl   € ô ˜%¤×'Ò'ÜÐFÄtÈEÃ{ÀmÐTÓUÐUÜˆu‹:˜ÔÜÐ=Ó>Ð>Ù”J˜u R�yÓ)¨!Õ,¬j¸¸r½Ó.CÀAÕ.FÐGÓHÐHr   c               ó   € V ^8„  d   QhRR/# )r   r   r–   r   )r   s   "r   r   ru   E  s   € ÷ <ñ <�Uñ <r   c                ó`   € \        V P                  4      \        V P                  4      ,           # )z;The Binary Integer Decimal (BID) encoding of this instance.)Ú_PACK_64ry   rx   r!   s   &r   ÚbidÚDecimal128.bidD  s!   € ô ˜Ÿ
™
Ó#¤h¨t¯{©{Ó&;Õ;Ð;r   c               ó   € V ^8„  d   QhRR/# ©r   r   r`   r   )r   s   "r   r   ru   I  s   € ÷ ñ ˜ñ r   c                	óh   € V P                  4       pVP                  4       '       d   R # \        V4      # )ÚNaN)r?   rW   r`   )r"   Údecs   & r   Ú__str__ÚDecimal128.__str__I  s%   € Ø�o‰oÓˆØ�:‰:�<Š<áÜ�3‹xˆr   c               ó   € V ^8„  d   QhRR/# r£   r   )r   s   "r   r   ru   P  s   € ÷ )ñ )˜#ñ )r   c                	ó   € R V : R2# )zDecimal128('z')r   r!   s   &r   Ú__repr__ÚDecimal128.__repr__P  s   € Ø˜d™X RÐ(Ð(r   c               ó    € V ^8„  d   QhRRRR/# )r   r&   rL   r   rt   r   )r   s   "r   r   ru   S  s   € ÷ (ñ ( /ð (°dñ (r   c                	ó$   € Vw  V n         V n        R # r    ©rx   ry   r*   s   &&r   Ú__setstate__ÚDecimal128.__setstate__S  s   € Ø"'ÑˆŒ�T–Zr   c               ó   € V ^8„  d   QhRR/# )r   r   rL   r   )r   s   "r   r   ru   V  s   € ÷ 'ñ '˜oñ 'r   c                	ó2   € V P                   V P                  3# r    r¯   r!   s   &r   Ú__getstate__ÚDecimal128.__getstate__V  s   € Ø�{‰{˜DŸJ™JÐ&Ð&r   c               ó    € V ^8„  d   QhRRRR/# ©r   Úotherr   r   Úboolr   )r   s   "r   r   ru   Y  s   € ÷ ñ ˜Cð  Dñ r   c                	ól   € \        V\        4      '       d   V P                  VP                  8H  # \        # r    )rw   r'   r    ÚNotImplemented©r"   r¸   s   &&r   Ú__eq__ÚDecimal128.__eq__Y  s(   € Ü�eœZ×(Ò(Ø—8‘8˜uŸy™yÑ(Ð(ÜÐr   c               ó    € V ^8„  d   QhRRRR/# r·   r   )r   s   "r   r   ru   ^  s   € ÷ !ñ !˜Cð ! Dñ !r   c                	ó   € W8X  * # r    r   r¼   s   &&r   Ú__ne__ÚDecimal128.__ne__^  s   € ØÒ Ð r   )Ú__highÚ__lowN)r-   r.   r/   r0   r1   Ú	__slots__Ú_type_markerr~   r?   Úclassmethodr›   r2   r    r§   r«   r°   r´   r½   rÁ   r3   r   r   r   r'   r'   �   so   † ñ[ðz $€Ià€LõGõ'@ðR ôIó ðIð ô<ó ð<õõ)õ(õ'õ÷
!ñ !r   r'   l            ièÿÿr   )4r1   Ú
__future__r   rF   Ústructr   Útypingr   r   r   r   r	   Úbson.codec_optionsr
   r   ÚStructÚpackrŸ   Úunpackrš   re   rd   Ú_EXPONENT_MAXÚ_EXPONENT_MINÚ_MAX_DIGITSrŽ   r�   rŒ   rf   rT   rU   r\   r]   rZ   r[   ÚROUND_HALF_EVENÚInvalidOperationÚOverflowÚInexactrD   rG   rE   rP   Úfloatr`   r^   rK   r   r5   rI   rq   r'   r   r   r   Ú<module>r×      s{  ðñõ #ã Û Ý ß 4Õ 4ç 7à�=Š=˜Ó×#Ñ#€Ø�]Š]˜4Ó ×'Ñ'€
à€Ø€Ø€Ø€Ø€à€Ø€Ø€Ø€à	���qÐ€Ø	ˆqˆ	€Ø	���qÐ€Ø	ˆqˆ	€Ø
�%�-˜Ð	€Ø
�ˆ€ð ˆKØ�×'Ñ'Ø
ˆMØ
ˆMØ�ØˆRØˆg×&Ñ&¨×(8Ñ(8¸'¿/¹/ÐJØˆQð	€ð �oŠoÑ4 × 1Ñ 1Ó 3Ñ4€Ø�w—‘¨¨s°E¸#¸xÈ½}ÈcÐ:QÕ4RÐRÕS€ô!�[ô !ô$"�[ô "õ$#õ-÷`B!ó B!r   