Ë
    
V.j‘ž ã                  óì  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZmZ d dlmZ d dlmZmZmZ ddlmZmZmZ ddlmZmZmZmZmZmZ dd	l m!Z!m"Z"m#Z#m$Z$ e%jL                  Z'd
Z(dZ)dZ* e
jV                  i «      Z, e%«       Z- ej\                  ej^                  ej`                  «      Z1 G d„ dejd                  «      Z3e3jh                  Z4	  G d„ de5«      Z6e4ddddddddddddddfd„Z7	 	 dU	 	 	 	 	 	 	 	 	 dVd„Z8	 dW	 	 	 	 	 	 	 	 	 dXd„Z9dYd„Z: G d„ de«      Z;d„ Z<d„ Z=	 	 dZd„Z>d„ Z?	 	 d[d„Z@d„ ZAd„ ZBd„ ZCd „ ZD G d!„ d"«      ZEd#„ ZFd$„ ZG	 d\d%„ZH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d]d'„ZIeIZJ	 d(„ ZKd^d)„ZL	 	 	 	 	 	 	 	 	 	 d_d*„ZMd`d+„ZNd,„ ZOdad-„ZPd.„ ZQdWd/„ZRdbd0„ZSdcd1„ZTd2„ ZUd3„ ZVd4„ Z0d5„ ZW	 	 ddd6„ZXded7„ZY	 	 	 	 	 	 	 	 	 	 dfd9„ZZdgd:„Z[	 	 	 	 	 	 	 	 	 	 dfd;„Z\	 	 	 	 	 	 dhd<„Z]	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 did=„Z^djd>„Z_ G d?„ d@«      Z`e`jÂ                  D � cg c]!  }  e`| e4d| dAk7  ddd&| dBk7  dd& e_| «      ¬C«      ‘Œ# c} Zb eN eR eTe`eb¬D«      ebD �cg c]  }|jÆ                  dEk7  sŒ|‘Œ c}¬D«      ebD �cg c]!  }|jÈ                  sŒ|jÆ                  dEk7  sŒ |‘Œ# c}¬D«      Z` G dF„ dG«      Ze eR eTee«      «      Ze G dH„ dI«      ZfefjÂ                  D � cg c]  }  e`| e4ddddd&ddd& e_| «      ¬C«      ‘Œ c} Zg eR eTefeg¬D«      eg¬D«      Zf G dJ„ dK«      ZhehjÂ                  D � cg c]  }  e`| e4ddddd&ddd&¬L«
      ‘Œ c} Zi eN eR eTehei¬D«      ei¬D«      ei¬D«      Zh G dM„ d8«      ZjdND � cg c]  }  e`| e4ddddd&ddd&¬L«
      ‘Œ c} Zi eN eR eTejei¬D«      ei¬D«      ei¬D«      Zje%fdfdO„Zk eIdd¬P«       G dQ„ dR«      «       ZldS„ ZmdT„ Z.yc c} w c c}w c c}w c c} w c c} w c c} w )ké    )ÚannotationsN)ÚCallableÚMapping)Úcached_property)ÚAnyÚ
NamedTupleÚTypeVaré   )Ú_compatÚ_configÚsetters)ÚPY_3_10_PLUSÚPY_3_11_PLUSÚPY_3_13_PLUSÚ_AnnotationExtractorÚ_get_annotationsÚget_generic_base)ÚDefaultAlreadySetErrorÚFrozenInstanceErrorÚNotAnAttrsClassErrorÚUnannotatedAttributeErrorz__attr_factory_%s)ztyping.ClassVarz
t.ClassVarÚClassVarztyping_extensions.ClassVarÚ_attrs_cached_hashc                  ó>   — e Zd ZdZ ej
                  «       Zd„ Zd„ Zy)Ú_NothingaF  
    Sentinel to indicate the lack of a value when `None` is ambiguous.

    If extending attrs, you can use ``typing.Literal[NOTHING]`` to show
    that a value may be ``NOTHING``.

    .. versionchanged:: 21.1.0 ``bool(NOTHING)`` is now False.
    .. versionchanged:: 22.2.0 ``NOTHING`` is now an ``enum.Enum`` variant.
    c                 ó   — y)NÚNOTHING© ©Úselfs    úLC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\attr/_make.pyÚ__repr__z_Nothing.__repr__K   s   € Øó    c                 ó   — y)NFr   r   s    r!   Ú__bool__z_Nothing.__bool__N   s   € Ør#   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚenumÚautor   r"   r%   r   r#   r!   r   r   >   s    „ ñð ˆd�i‰i‹k€Gòór#   r   c                  ó(   — e Zd ZdZ ed«      dfd„Zy)Ú_CacheHashWrappera  
    An integer subclass that pickles / copies as None

    This is used for non-slots classes with ``cache_hash=True``, to avoid
    serializing a potentially (even likely) invalid hash value. Since `None`
    is the default value for uncalculated hashes, whenever this is copied,
    the copy's value for the hash should automatically reset.

    See GH #613 for more details.
    Nr   c                ó
   — ||fS ©Nr   )r    Ú_none_constructorÚ_argss      r!   Ú
__reduce__z_CacheHashWrapper.__reduce__f   s   € Ø  %Ð'Ð'r#   )r&   r'   r(   r)   Útyper2   r   r#   r!   r-   r-   Z   s   „ ñ	ñ ,0°«:¸Rô (r#   r-   Tc                ó  — t        |||d«      \  }}}}|�|dur|durd}t        |«      ‚|	�8| t        urd}t        |«      ‚t	        |	«      sd}t        |«      ‚t        |	«      } |€i }t        |t        t        f«      rt        j                  |Ž }|rt        |t        t        f«      rt        |Ž }|rt        |t        t        f«      rt        |Ž }t        di d| “d|“d	|“d
d“d|“d|“d|“d|“d|“d|
“d|“d|“d|“d|“d|“d|“ŽS )a;  
    Create a new field / attribute on a class.

    Identical to `attrs.field`, except it's not keyword-only.

    Consider using `attrs.field` in new code (``attr.ib`` will *never* go away,
    though).

    ..  warning::

        Does **nothing** unless the class is also decorated with
        `attr.s` (or similar)!


    .. versionadded:: 15.2.0 *convert*
    .. versionadded:: 16.3.0 *metadata*
    .. versionchanged:: 17.1.0 *validator* can be a ``list`` now.
    .. versionchanged:: 17.1.0
       *hash* is `None` and therefore mirrors *eq* by default.
    .. versionadded:: 17.3.0 *type*
    .. deprecated:: 17.4.0 *convert*
    .. versionadded:: 17.4.0
       *converter* as a replacement for the deprecated *convert* to achieve
       consistency with other noun-based arguments.
    .. versionadded:: 18.1.0
       ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``.
    .. versionadded:: 18.2.0 *kw_only*
    .. versionchanged:: 19.2.0 *convert* keyword argument removed.
    .. versionchanged:: 19.2.0 *repr* also accepts a custom callable.
    .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
    .. versionadded:: 19.2.0 *eq* and *order*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionchanged:: 20.3.0 *kw_only* backported to Python 2
    .. versionchanged:: 21.1.0
       *eq*, *order*, and *cmp* also accept a custom callable
    .. versionchanged:: 21.1.0 *cmp* undeprecated
    .. versionadded:: 22.2.0 *alias*
    .. versionchanged:: 25.4.0
       *kw_only* can now be None, and its default is also changed from False to
       None.
    TNFú6Invalid value for hash.  Must be True, False, or None.z=The `default` and `factory` arguments are mutually exclusive.z*The `factory` argument must be a callable.ÚdefaultÚ	validatorÚreprÚcmpÚhashÚinitÚ	converterÚmetadatar3   Úkw_onlyÚeqÚeq_keyÚorderÚ	order_keyÚ
on_setattrÚaliasr   )Ú_determine_attrib_eq_orderÚ	TypeErrorr   Ú
ValueErrorÚcallableÚFactoryÚ
isinstanceÚlistÚtupler   ÚpipeÚand_Ú_CountingAttr)r6   r7   r8   r9   r:   r;   r=   r3   r<   Úfactoryr>   r?   rA   rC   rD   r@   rB   Úmsgs                     r!   ÚattribrR   j   s�  € ôt $>ØˆR�˜ó$Ñ €Bˆ��yð Ð˜D¨Ñ,°¸UÑ1BØFˆÜ˜‹nÐàÐØœ'Ñ!àOð ô ˜S“/Ð!Ü˜Ô Ø>ˆCÜ˜S“/Ð!Ü˜'Ó"ˆàÐØˆô �*œt¤U˜mÔ,Ü—\‘\ :Ð.ˆ
á”Z 	¬D´%¨=Ô9Ü˜)Ð$ˆ	á”Z 	¬D´%¨=Ô9Ü˜)Ð$ˆ	äò Ùðáðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ  ð!ð r#   c                ó8   — t        | |d«      }t        |||«       y)z[
    Evaluate the script with the given global (globs) and local (locs)
    variables.
    ÚexecN)ÚcompileÚeval)ÚscriptÚglobsÚlocsÚfilenameÚbytecodes        r!   Ú_compile_and_evalr\   Ø   s   € ô �v˜x¨Ó0€HÜˆ�5˜$Õr#   c                óâ   — |€i n|}d}|}	 t        | «      d| j                  d«      |f}t        j                  j	                  ||«      }||k(  rn|dd › d|› d�}|dz  }ŒUt        | |||«       |S )zP
    Cache the script with _linecache_, compile it and return the _locals_.
    Nr
   TéÿÿÿÿÚ-Ú>)ÚlenÚ
splitlinesÚ	linecacheÚcacheÚ
setdefaultr\   )	rW   rZ   rX   ÚlocalsrY   ÚcountÚbase_filenameÚlinecache_tupleÚold_vals	            r!   Ú_linecache_and_compilerk   æ   s    € ð �‰2 V€Dð €EØ€MØ
ä�‹KØØ×Ñ˜dÓ#Øð	
ˆô —/‘/×,Ñ,¨X°ÓGˆØ�oÒ%Øà# C RÐ(Ð)¨¨5¨'°Ð3ˆØ�‰
ˆð ô �f˜e T¨8Ô4à€Kr#   c                ó€   — | › d�}i }t        |«      D ]  \  }}|fd„}t        |«      ||<   Œ t        |t        f|«      S )zé
    Create a tuple subclass to hold `Attribute`s for an `attrs` class.

    The subclass is a bare tuple with properties for names.

    class MyClassAttributes(tuple):
        __slots__ = ()
        x = property(itemgetter(0))
    Ú
Attributesc                ó   — | |   S r/   r   )r    Úis     r!   Úgetterz&_make_attr_tuple_class.<locals>.getter  s   € Ø˜‘7ˆNr#   )Ú	enumerateÚpropertyr3   rL   )Úcls_nameÚ
attr_namesÚattr_class_nameÚbodyro   Ú	attr_namerp   s          r!   Ú_make_attr_tuple_classrx   	  sS   € ð "˜
 *Ð-€OØ€DÜ! *Ö-‰ˆˆ9àó 	ô # 6Ó*ˆˆYŠð .ô �¤% ¨4Ó0Ð0r#   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_Attributesr3   Úattrsúlist[Attribute]Ú
base_attrsúdict[str, type]Úbase_attrs_mapN)r&   r'   r(   Ú__annotations__r   r#   r!   rz   rz      s   … ØƒKØÓØ#Ô#r#   rz   c                ó�   — t        | «      } | j                  d«      r| j                  d«      r| dd } | j                  t        «      S )zñ
    Check whether *annot* is a typing.ClassVar.

    The string comparison hack is used to avoid evaluating all string
    annotations which would put attrs-based classes at a performance
    disadvantage compared to plain old classes.
    )Ú'Ú"r
   r^   )ÚstrÚ
startswithÚendswithÚ_CLASSVAR_PREFIXES)Úannots    r!   Ú_is_class_varr‰   &  sE   € ô �‹J€Eð ×Ñ˜
Ô#¨¯©°zÔ(BØ�a˜�ˆà×ÑÔ.Ó/Ð/r#   c                ó   — || j                   v S )zR
    Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
    )Ú__dict__)ÚclsÚattrib_names     r!   Ú_has_own_attributerŽ   7  s   € ð ˜#Ÿ,™,Ð&Ð&r#   c                óº  — g }i }t        | j                  dd «      D ]a  }t        |dg «      D ]O  }|j                  s|j                  |v rŒ|j                  d¬«      }|j                  |«       |||j                  <   ŒQ Œc g }t        «       }t        |«      D ]>  }|j                  |v rŒ|j                  d|«       |j                  |j                  «       Œ@ ||fS )zQ
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
    r
   r^   Ú__attrs_attrs__T©Ú	inheritedr   )
ÚreversedÚ__mro__Úgetattrr’   ÚnameÚevolveÚappendÚsetÚinsertÚadd)rŒ   Útaken_attr_namesr}   Úbase_attr_mapÚbase_clsÚaÚfilteredÚseens           r!   Ú_collect_base_attrsr¢   >  sÖ   € ð €JØ€Mô ˜SŸ[™[¨¨2Ð.Ö/ˆÜ˜Ð#4°bÖ9ˆAØ�{Š{˜aŸf™fÐ(8Ñ8Øà—‘ 4�Ó(ˆAØ×Ñ˜aÔ Ø$,ˆM˜!Ÿ&™&Ò!ñ :ð 0ð €HÜ‹5€DÜ�jÖ!ˆØ�6‰6�T‰>ØØ�‰˜˜1ÔØ�‰�—‘Õð	 "ð �]Ð"Ð"r#   c                ó  — g }i }| j                   dd D ]p  }t        |dg «      D ]^  }|j                  |v rŒ|j                  d¬«      }|j	                  |j                  «       |j                  |«       |||j                  <   Œ` Œr ||fS )a-  
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.

    N.B. *taken_attr_names* will be mutated.

    Adhere to the old incorrect behavior.

    Notably it collects from the front and considers inherited attributes which
    leads to the buggy behavior reported in #428.
    r
   r^   r�   Tr‘   )r”   r•   r–   r—   r›   r˜   )rŒ   rœ   r}   r�   rž   rŸ   s         r!   Ú_collect_base_attrs_brokenr¤   _  s”   € ð €JØ€Mð —K‘K  "Ó%ˆÜ˜Ð#4°bÖ9ˆAØ�v‰vÐ)Ñ)Øà—‘ 4�Ó(ˆAØ× Ñ  §¡Ô(Ø×Ñ˜aÔ Ø$,ˆM˜!Ÿ&™&Ò!ñ :ð &ð �}Ð$Ð$r#   c                ó´  ‡— | j                   Št        | «      }|�t        |j                  «       «      }�n|du rð‰j                  «       D ��	ch c]  \  }}	|	j                  t
        u r|’Œ }
}}	g }t        «       }|j                  «       D ]h  \  }}t        |«      rŒ|j                  |«       ‰j                  |t        «      }|j                  t
        urt        |«      }|j                  ||f«       Œj |
|z
  }|rQt        ddj                  t        |ˆfd„¬«      «      z   dz   «      ‚t        d„ ‰j                  «       D «       d„ ¬«      }t         j"                  }t$        j&                  j(                  }|D ��cg c]!  \  }} |||||u|j                  |«      «      ‘Œ# }}}|r(t+        | |D �ch c]  }|j,                  ’Œ c}«      \  }}n't/        | |D �ch c]  }|j,                  ’Œ c}«      \  }}|t$        j&                  j0                  u r>|D �cg c]  }|j3                  d¬	«      ‘Œ }}|D �cg c]  }|j3                  d¬	«      ‘Œ }}||z   }|D ]X  }|j4                  rŒt7        j9                  |«      d
t;        |j,                  «      «       t7        j9                  |«      dd«       ŒZ |�t=         || |«      «      }d}d„ |D «       D ]B  }|du r"|j>                  t        u rd|›�}tA        |«      ‚|du sŒ.|j>                  t        usŒAd}ŒD |D ]X  }|j4                  rŒt7        j9                  |«      d
t;        |j,                  «      «       t7        j9                  |«      dd«       ŒZ |D �cg c]  }|j,                  ‘Œ }}tC        | jD                  |«      }tG         ||«      ||«      S c c}	}w c c}}w c c}w c c}w c c}w c c}w c c}w )a3  
    Transform all `_CountingAttr`s on a class into `Attribute`s.

    If *these* is passed, use that and don't look for them on the class.

    If *collect_by_mro* is True, collect them in the correct MRO order,
    otherwise use the old -- incorrect -- order.  See #428.

    Return an `_Attributes`.
    Tz1The following `attr.ib`s lack a type annotation: ú, c                ó:   •— ‰j                  | «      j                  S r/   )ÚgetÚcounter)ÚnÚcds    €r!   Ú<lambda>z"_transform_attrs.<locals>.<lambda>©  s   ø€ °b·f±f¸Q³i×6GÒ6Gr#   )ÚkeyÚ.c              3  óN   K  — | ]  \  }}|j                   t        u r||f–— Œ y ­wr/   )Ú	__class__rO   )Ú.0r–   Úattrs      r!   Ú	<genexpr>z#_transform_attrs.<locals>.<genexpr>¯  s,   è ø€ ð á",‘J�D˜$Ø—>‘>¤]Ñ2ð �t”Ù",ùs   ‚#%c                ó    — | d   j                   S ©Nr
   )r©   )Úes    r!   r¬   z"_transform_attrs.<locals>.<lambda>´  s   € ˜!˜A™$Ÿ,š,r#   )r>   rD   Úalias_is_defaultFc              3  ó\   K  — | ]$  }|j                   d usŒ|j                  d u sŒ!|–— Œ& y­w)FN)r;   r>   ©r±   rŸ   s     r!   r³   z#_transform_attrs.<locals>.<genexpr>ä  s'   è ø€ ÐM™�A !§&¡&°Ò"5¸!¿)¹)ÀuÒ:LŒa™ùs   ‚,–,¥,zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: )$r‹   r   rK   Úitemsr°   rO   r™   r‰   r›   r¨   r   rR   r˜   r   ÚjoinÚsortedÚ	AttributeÚfrom_counting_attrÚ
ClassPropsÚKeywordOnlyÚNOr¢   r–   r¤   ÚFORCEr—   rD   Ú_OBJ_SETATTRÚ__get__Ú_default_init_alias_forrL   r6   rG   rx   r&   rz   )rŒ   ÚtheseÚauto_attribsr>   Úcollect_by_mroÚfield_transformerÚannsÚca_listr–   r²   Úca_namesÚannot_namesrw   r3   rŸ   ÚunannotatedÚfcaÚnoÚcaÚ	own_attrsr}   r�   r{   Úhad_defaultrQ   rt   Ú
AttrsClassr«   s                              @r!   Ú_transform_attrsrÕ   {  sÔ  ø€ ð$ 
�‰€BÜ˜CÓ €DàÐÜ�u—{‘{“}Ó%ŠØ	˜Ñ	ð !Ÿh™hœjô
á(‘
��dØ�~‰~¤Ñ.ò Ø(ð 	ñ 
ð
 ˆÜ“eˆØ#Ÿz™zž|‰OˆI�tÜ˜TÔ"ØØ�O‰O˜IÔ&Ø—‘�y¤'Ó*ˆAà�{‰{¤-Ñ/Ü˜1“I�Ø�N‰N˜I q˜>Õ*ð  ,ð  Ñ,ˆÙÜ+ØCØ—)‘)Ü˜;Ó,GÔHóñð ñ	óð ô ñà"$§(¡(¤*óñ
 'ô
ˆô ×
&Ñ
&€CÜ	×	Ñ	×	"Ñ	"€Bñ %ôñ %‰MˆI�rñ 	ØØØ˜2ÐØ�H‰H�YÓõ		
ð %ð ñ ñ Ü$7Ø¡)Ó,¡)˜Q�!—&“& )Ñ,ó%
Ñ!ˆ
‘Mô %?Ø¡)Ó,¡)˜Q�!—&“& )Ñ,ó%
Ñ!ˆ
�Mð ”*×(Ñ(×.Ñ.Ñ.Ù5>Ó?±Y°�Q—X‘X d�XÕ+°Yˆ	Ð?Ù6@ÓA±j°�a—h‘h t�hÕ,°jˆ
ÐAà˜Ñ"€Eó
 ˆØ�w‹wä× Ñ  Ó# GÔ-DÀQÇVÁVÓ-LÔMÜ× Ñ  Ó#Ð$6¸Õ=ð	 ð Ð$ÜÑ'¨¨UÓ3Ó4ˆð €KÙM™ÖMˆØ˜$Ñ 1§9¡9´Ñ#7ð Að  BCð  AFð  GˆCÜ˜S“/Ð!à˜%Ò A§I¡I´WÒ$<Ø‰Kð Nó ˆØ�w‹wÜ× Ñ  Ó# GÔ-DÀQÇVÁVÓ-LÔMÜ× Ñ  Ó#Ð$6¸Õ=ð ñ #(Ó(¡%˜Q�!—&“& %€JÐ(Ü'¨¯©°jÓA€Jä‘z %Ó(¨*°mÓDÐDùóK
ùóLùò -ùò -ùò @ùÚAùòN )s*   ÁN5Å<&N;Æ1O
ÇO
ÈOÈ5OÍ7Oc                ó  — g d¢}|�|j                  d«       n|j                  g d¢«       |j                  ddg«       t        |d«      }| t        j                  |dœ}t        dj                  |«      ||d	|i¬
«      d   S )N)	zdef wrapper(_cls):z    __class__ = _clsz‘    def __getattr__(self, item, cached_properties=cached_properties, original_getattr=original_getattr, _cached_setattr_get=_cached_setattr_get):z+         func = cached_properties.get(item)z         if func is not None:z!              result = func(self)z1              _setter = _cached_setattr_get(self)z#              _setter(item, result)z              return resultz,         return original_getattr(self, item))z         try:z2             return super().__getattribute__(item)z         except AttributeError:z4             if not hasattr(super(), '__getattr__'):z                 raisez-             return super().__getattr__(item)zY         original_error = f"'{self.__class__.__name__}' object has no attribute '{item}'"z-         raise AttributeError(original_error)z    return __getattr__z__getattr__ = wrapper(_cls)r•   )Úcached_propertiesÚ_cached_setattr_getÚoriginal_getattrÚ
Ú_cls)rf   Ú__getattr__)r˜   ÚextendÚ_generate_unique_filenamerÃ   rÄ   rk   r»   )r×   rÙ   rŒ   ÚlinesÚunique_filenameÚglobs         r!   Ú_make_cached_property_getattrrâ   û  sŸ   € ò€Eð Ð#Ø�‰Ø:õ	
ð 	�‰ò	ô	
ð 
‡L�Là$Ø)ð	
ôô 0°°YÓ?€Oð /Ü+×3Ñ3Ø,ñ€Dô "Ø�	‰	�%Ó˜/¨4¸À¸ôàñð r#   c                óf   — t        | t        «      r|dv rt        j                  | ||«       yt        ‚)z4
    Attached to frozen classes as __setattr__.
    )Ú	__cause__Ú__context__Ú__traceback__Ú__suppress_context__Ú	__notes__N)rJ   ÚBaseExceptionÚ__setattr__r   ©r    r–   Úvalues      r!   Ú_frozen_setattrsrí   /  s7   € ô �$œÔ&¨4ð 4ñ ,ô 	×!Ñ! $¨¨eÔ4Øä
Ðr#   c                óf   — t        | t        «      r|dk(  rt        j                  | |«       yt        ‚)z4
    Attached to frozen classes as __delattr__.
    rè   N)rJ   ré   Ú__delattr__r   )r    r–   s     r!   Ú_frozen_delattrsrð   @  s.   € ô �$œÔ&¨4°;Ò+>Ü×!Ñ! $¨Ô-Øä
Ðr#   c                 ó  — 	 | \  }|j                  }t	        |«      }|D ];  }|j
                  sŒ|j                  }|j                  }||vsŒ-t        ||«      ||<   Œ=  |di |¤ŽS # t         $ r dt        | «      › d�}t        |«      d‚w xY w)a  
    Create a new instance, based on the first positional argument with
    *changes* applied.

    .. tip::

       On Python 3.13 and later, you can also use `copy.replace` instead.

    Args:

        inst:
            Instance of a class with *attrs* attributes. *inst* must be passed
            as a positional argument.

        changes:
            Keyword changes in the new copy.

    Returns:
        A copy of inst with *changes* incorporated.

    Raises:
        TypeError:
            If *attr_name* couldn't be found in the class ``__init__``.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    .. versionadded:: 17.1.0
    .. deprecated:: 23.1.0
       It is now deprecated to pass the instance using the keyword argument
       *inst*. It will raise a warning until at least April 2024, after which
       it will become an error. Always pass the instance as a positional
       argument.
    .. versionchanged:: 24.1.0
       *inst* can't be passed as a keyword argument anymore.
    z*evolve() takes 1 positional argument, but z were givenNr   )	rG   ra   rF   r°   Úfieldsr;   r–   rD   r•   )	ÚargsÚchangesÚinstrQ   rŒ   r{   rŸ   rw   Ú	init_names	            r!   r—   r—   K  s¤   € ðJ'Ø‰ˆð �.‰.€CÜ�3‹K€EÛˆØ�vŠvØØ—F‘Fˆ	Ø—G‘Gˆ	Ø˜GÒ#Ü!(¨¨yÓ!9ˆG�IÒð ñ ‰>�‰>Ðøô! ò 'à8¼¸T»¸À;ÐOð 	ô ˜‹n $Ð&ð	'ús   ‚A% Á%%B
c                  ó¤   — e Zd ZdZdZ	 	 	 	 	 	 	 	 dd„Zd„ Zdd„Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zy)Ú_ClassBuilderz(
    Iteratively build *one* class.
    )Ú_add_method_dundersÚ_attr_namesÚ_attrsÚ_base_attr_mapÚ_base_namesÚ_cache_hashrÛ   Ú	_cls_dictÚ_delete_attribsÚ_frozenÚ_has_custom_setattrÚ_has_post_initÚ_has_pre_initÚ_is_excÚ_on_setattrÚ_pre_init_has_argsÚ_repr_addedÚ_script_snippetsÚ_slotsÚ_weakref_slotÚ_wrote_own_setattrc                ó
  — t        ||||j                  |j                  |j                  «      \  }}}|| _        |j
                  rt        |j                  «      ni | _        || _	        |D �	ch c]  }	|	j                  ’Œ c}	| _        || _        t        d„ |D «       «      | _        |j
                  | _        |j                   | _        |j$                  | _        |j(                  t*        j,                  j.                  u | _        t3        t5        |dd«      «      | _        d| _        | j6                  r>|j:                  }
t=        j>                  |
«      }tA        |jB                  «      dkD  | _        t3        t5        |dd«      «      | _"        t3        |«       | _#        |jH                  | _%        |jL                  | _'        || _(        d| _)        | j                  | j                  d<   || j                  d<   |j                   r.tT        | j                  d<   tV        | j                  d	<   d
| _)        n»| jN                  tX        tZ        j\                  tZ        j^                  fv rŠdx}}|D ]%  }	|	j`                  �d
}|	jb                  �d
}|sŒ"|sŒ% n | jN                  tX        k(  r|s|r>| jN                  tZ        j\                  k(  r|r| jN                  tZ        j^                  k(  r	|sd | _'        |jd                  r-| jg                  «       \  | j                  d<   | j                  d<   g | _4        d| _5        tm        | j                  d«      rtm        | j                  d«      s| jn                  | _8        y | jr                  | _8        y c c}	w )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr/   ©r–   r¹   s     r!   r³   z)_ClassBuilder.__init__.<locals>.<genexpr>¸  s   è ø€ Ð 7±¨A §¥±ùs   ‚Ú__attrs_pre_init__Fr
   Ú__attrs_post_init__r�   Ú__attrs_props__rê   rï   TÚ__getstate__Ú__setstate__r'   r(   ):rÕ   r>   Úcollected_fields_by_mrorÉ   rÛ   Ú
is_slottedÚdictr‹   rÿ   rû   r–   rý   rü   rL   rú   r
  Ú	is_frozenr  Úhas_weakref_slotr  Úhashabilityr¿   ÚHashabilityÚHASHABLE_CACHEDrþ   Úboolr•   r  r  r  ÚinspectÚ	signaturera   Ú
parametersr  r   Úis_exceptionr  Úon_setattr_hookr  r  r  rí   rð   Ú_DEFAULT_ON_SETATTRr   ÚvalidateÚconvertr7   r<   Úadded_picklingÚ_make_getstate_setstater	  r  ÚhasattrÚ_add_method_dunders_saferù   Ú_add_method_dunders_unsafe)r    rŒ   rÆ   rÇ   ÚpropsÚhas_custom_setattrr{   r}   Úbase_maprŸ   Úpre_init_funcÚpre_init_signatureÚhas_validatorÚhas_converters                 r!   Ú__init__z_ClassBuilder.__init__¢  s  € ô '7ØØØØ�M‰MØ×)Ñ)Ø×#Ñ#ó'
Ñ#ˆˆz˜8ð ˆŒ	Ø/4×/?Ò/?œ˜cŸl™lÔ+ÀRˆŒØˆŒÙ,6Ó7©J q˜AŸF›F¨JÑ7ˆÔØ&ˆÔÜ Ñ 7±Ó 7Ó7ˆÔØ×&Ñ&ˆŒØ—‘ˆŒØ"×3Ñ3ˆÔà×Ñ¤×!7Ñ!7×!GÑ!GÐGð 	Ôô "¤'¨#Ð/CÀUÓ"KÓLˆÔØ"'ˆÔØ×Òð  ×2Ñ2ˆMÜ!(×!2Ñ!2°=Ó!AÐÜ&)Ð*<×*GÑ*GÓ&HÈ1Ñ&LˆDÔ#Ü"¤7¨3Ð0EÀuÓ#MÓNˆÔÜ#'¨£;˜ˆÔØ×)Ñ)ˆŒØ ×0Ñ0ˆÔà#5ˆÔ Ø"'ˆÔà,0¯K©Kˆ�‰Ð(Ñ)Ø,1ˆ�‰Ð(Ñ)à�?Š?Ü,<ˆD�N‰N˜=Ñ)Ü,<ˆD�N‰N˜=Ñ)à&*ˆDÕ#Ø×ÑÜÜ×ÑÜ�O‰Oð"
ñ 
ð
 -2Ð1ˆM˜MÛ�Ø—;‘;Ð*Ø$(�MØ—;‘;Ð*Ø$(�Mâ ¢]Ùð ð ×$Ñ$Ô(;Ò;Ù*©mà×$Ñ$¬×(8Ñ(8Ò8ÁØ×$Ñ$¬¯©Ò7Áð
 $(�Ô à×Òð ×,Ñ,Ó.ñØ—‘˜~Ñ.Ø—‘˜~Ñ.ð ð 	Ôð !ˆÔô �t—y‘y ,Ô/´wØ�I‰I�~ô8
ð (,×'DÑ'DˆDÕ$à'+×'FÑ'FˆDÕ$ùò_ 8s   Á-N c                ó6   — d| j                   j                  › d�S )Nz<_ClassBuilder(cls=z)>)rÛ   r&   r   s    r!   r"   z_ClassBuilder.__repr__  s   € Ø$ T§Y¡Y×%7Ñ%7Ð$8¸Ð;Ð;r#   c                óH  — dj                  | j                  D �cg c]  }|d   ‘Œ	 c}«      }i }| j                  D ]  \  }}}|j                  |«       Œ t        |t	        | j
                  d«      |«      }| j                  D ]  \  }}} || j                  |«       Œ yc c}w )z=
        Evaluate any registered snippets in one go.
        rÚ   r   ÚmethodsN)r»   r	  Úupdaterk   rÞ   rÛ   rÿ   )r    ÚsnippetrW   rX   Ú_Úsnippet_globsrY   Úhooks           r!   Ú_eval_snippetsz_ClassBuilder._eval_snippets
  s¡   € ð —‘°d×6KÒ6KÓLÑ6K¨7˜G A›JÐ6KÑLÓMˆØˆØ#'×#8Ô#8ÑˆAˆ}˜aØ�L‰L˜Õ'ð $9ô &ØÜ% d§i¡i°Ó;Øó
ˆð ×/Ô/‰JˆAˆq�$Ù�—‘ Õ&ñ 0ùò Ms   šBc                óX  — | j                  «        | j                  du r5| j                  «       }t        j                  |«      | j
                  _        n+| j                  «       }t        rt        j                  |«      }t        |dd«      rd|j                  vr|j                  «        |S )zƒ
        Finalize class based on the accumulated configuration.

        Builder cannot be used after calling this method.
        TÚ__attrs_init_subclass__N)r;  r
  Ú_create_slots_classÚweakrefÚrefrÛ   Ú__attrs_base_of_slotted__Ú_patch_original_classr   ÚabcÚupdate_abstractmethodsr•   r‹   r=  )r    rŒ   s     r!   Úbuild_classz_ClassBuilder.build_class  sŒ   € ð 	×ÑÔØ�;‰;˜$ÑØ×*Ñ*Ó,ˆCÜ29·+±+¸cÓ2BˆD�I‰IÕ/à×,Ñ,Ó.ˆCÝÜ×0Ñ0°Ó5�ô
 �CÐ2°DÔ9Ø)°·±Ñ=à×'Ñ'Ô)àˆ
r#   c                óê  — | j                   }| j                  }| j                  r\| j                  D ]M  }||vsŒt	        ||t
        «      t
        usŒ t        j                  t        «      5  t        ||«       ddd«       ŒO | j                  j                  «       D ]  \  }}t        |||«       Œ | j                  s+t	        |dd«      rd|_        | j                  st         |_        |S # 1 sw Y   ŒÁxY w)zA
        Apply accumulated methods and return the class.
        NÚ__attrs_own_setattr__F)rÛ   rý   r   rú   r•   Ú	_SENTINELÚ
contextlibÚsuppressÚAttributeErrorÚdelattrrÿ   rº   Úsetattrr  rG  r  rÃ   rê   )r    rŒ   Ú
base_namesr–   rì   s        r!   rB  z#_ClassBuilder._patch_original_class5  sÙ   € ð �i‰iˆØ×%Ñ%ˆ
ð ×ÒØ×(Ô(�à 
Ò*Ü  T¬9Ó5¼YÒFô
 $×,Ñ,¬^Õ<Ü  TÔ*÷ =Ð<ð )ð  Ÿ>™>×/Ñ/Ö1‰KˆD�%Ü�C˜˜uÕ%ð 2ð
 ×&Ò&¬7ØÐ(¨%ô,
ð ).ˆCÔ%à×+Ò+Ü".�”àˆ
÷# =Ð<ús   Á*C)Ã)C2	c                ó	  — | j                   j                  «       D ��ci c]&  \  }}|g t        | j                  «      ¢d‘d‘­vr||“Œ( }}}t	        t
        d«      rt        j                  | j                  «       | j                  sSd|d<   | j                  sB| j                  j                  D ])  }|j                  j                  dd«      sŒ t        |d<    n i }d}| j                  j                  dd D ]U  }|j                  j                  dd	«      �d
}|j                  t!        |dg «      D �ci c]  }|t!        ||«      “Œ c}«       ŒW t#        | j$                  «      }| j                  }	| j&                  r$dt!        | j                  dd«      vrd|	vr|s|	dz  }	|j                  «       D ��
ci c]"  \  }}
t)        |
t*        «      r||
j,                  “Œ$ }}}
g }|rÆt/        | j                  «      }|j                  «       D ]`  \  }}|	|fz  }	||= |j1                  |«       t3        j4                  |«      j6                  }|t2        j8                  j:                  usŒ\|||<   Œb |j                  d«      }|�|j1                  |«       t=        ||| j                  «      |d<   |	D �cg c]	  }||vsŒ|‘Œ }}|j                  «       D ��ci c]  \  }}||v r||“Œ }}}|D �cg c]	  }||vsŒ|‘Œ }}|j                  |«       | j>                  r|j1                  t@        «       t        |«      |d<   | j                  jB                  |d<    tE        | j                  «      | j                  jF                  | j                  j                  |«      }tI        jJ                  |j                  jM                  «       |«      D ]’  }t)        |tN        tP        f«      rt!        |jR                  dd	«      }n5t)        |tT        «      rt!        |jV                  dd	«      }nt!        |dd	«      }|sŒi|D ]%  }	 |jX                  | j                  u }|sŒ||_,        Œ' Œ” |S c c}}w c c}w c c}
}w c c}w c c}}w c c}w # tZ        $ r Y ŒXw xY w)zL
        Build and return a new class with a `__slots__` attribute.
        r‹   Ú__weakref__Ú_clear_type_descriptorsFrG  rê   r
   r^   NTÚ	__slots__r   )rP  rÜ   r(   Ú__closure__).rÿ   rº   rL   rú   r(  ÚsysrQ  rÛ   r  r  Ú	__bases__r‹   r¨   rÃ   r”   r6  r•   r™   rý   r  rJ   r   Úfuncr   r˜   r  r  Úreturn_annotationÚ	ParameterÚemptyrâ   rþ   Ú_HASH_CACHE_FIELDr(   r3   r&   Ú	itertoolsÚchainÚvaluesÚclassmethodÚstaticmethodÚ__func__rr   ÚfgetÚcell_contentsrG   )r    ÚkÚvr«   rž   Úexisting_slotsÚweakref_inheritedr–   rN  ÚnamesÚcached_propr×   Ú&additional_closure_functions_to_updateÚclass_annotationsrV  Ú
annotationrÙ   Ú
slot_namesÚslotÚslot_descriptorÚreused_slotsrŒ   ÚitemÚclosure_cellsÚcellÚmatchs                             r!   r>  z!_ClassBuilder._create_slots_classY  sŒ  € ð Ÿ™×,Ñ,Ô.ô
á.‘��1ØÐMœ% × 0Ñ 0Ó1ÐM°:ÐM¸}ÑMÑMð ˆq‰DØ.ð 	ñ 
ô ”3Ð1Ô2Ü×'Ñ'¨¯	©	Ô2ð ×&Ò&Ø*/ˆBÐ&Ñ'à×+Ò+Ø $§	¡	× 3Ô 3�HØ×(Ñ(×,Ñ,Ð-DÀeÕLÜ,8˜˜=Ñ)Ùð !4ð ˆØ!ÐØŸ	™	×)Ñ)¨!¨BÓ/ˆHØ× Ñ ×$Ñ$ ]°DÓ9ÐEØ$(Ð!Ø×!Ñ!ô !(¨°+¸rÔ Bóá B˜ð œ' (¨DÓ1Ñ1Ø Bñõð 0ô ˜×)Ñ)Ó*ˆ
à× Ñ ˆà×ÒØ¤W¨T¯Y©Y¸ÀRÓ%HÑHØ UÑ*Ù%àÐ%Ñ%ˆEð &(§X¡X¤Zô
á%/Ñ!��kÜ˜+¤Ô7ð �+×"Ñ"Ñ"Ø%/ð 	ñ 
ð 24Ð.ÙÜ 0°·±Ó ;ÐØ/×5Ñ5Ö7‘
��dà˜$˜Ñ �à�t�HØ6×=Ñ=¸dÔCÜ$×.Ñ.¨tÓ4×FÑF�
Ø¤W×%6Ñ%6×%<Ñ%<Ò<Ø.8Ð% dÒ+ð 8ð  "Ÿv™v mÓ4ÐØÐ+Ø6×=Ñ=Ð>NÔOä =Ø!Ð#3°T·Y±Yó!ˆBˆ}Ññ (-ÓG¡u˜t°¸JÒ0F’d uˆ
ÐGð *8×)=Ñ)=Ô)?ô
á)?Ñ%��oØ�zÑ!ð �/Ñ!Ø)?ð 	ñ 
ñ
 (2ÓN¡z˜t°TÀÒ5M’d zˆ
ÐNØ
�	‰	�,ÔØ×ÒØ×ÑÔ/Ô0ä 
Ó+ˆˆ;‰à!ŸY™Y×3Ñ3ˆˆ>Ñð Œd�4—9‘9‹o˜dŸi™i×0Ñ0°$·)±)×2EÑ2EÀrÓJˆô —O‘OØ�L‰L×ÑÓ!Ð#Iö
ˆDô ˜$¤¬lÐ ;Ô<ô !(¨¯©°}ÀdÓ K‘Ü˜D¤(Ô+ô !(¨¯	©	°=À$Ó G‘ä '¨¨m¸TÓ B�á ØÛ%�ð1Ø ×.Ñ.°$·)±)Ð;�Eò
 Ø-0˜Õ*ñ &ð!
ð2 ˆ
ùóS
ùòFùó"
ùò> Hùó
ùò
 OøôJ "ò áðúsA   ž+QÄ2Q
Æ3'Q$Ê+	Q*Ê5Q*ËQ/Ë&	Q5Ë0Q5Ð1Q:Ñ:	RÒRc                óŽ   ‡ — t        ‰ j                  |«      \  }}ˆ fd„}‰ j                  j                  |||f«       d‰ _        ‰ S )Nc                ó4   •— ‰j                  |d   «      | d<   y )Nr"   ©rù   ©Úcls_dictrX   r    s     €r!   Ú_attach_reprz,_ClassBuilder.add_repr.<locals>._attach_reprë  s   ø€ Ø#'×#;Ñ#;¸EÀ*Ñ<MÓ#NˆH�ZÒ r#   T)Ú_make_repr_scriptrû   r	  r˜   r  )r    ÚnsrW   rX   ry  s   `    r!   Úadd_reprz_ClassBuilder.add_reprè  sG   ø€ Ü)¨$¯+©+°rÓ:‰ˆ�ô	Oð 	×Ñ×$Ñ$ f¨e°\Ð%BÔCØˆÔØˆr#   c                óz   — | j                   sd}t        |«      ‚d„ }| j                  |«      | j                  d<   | S )Nz3__str__ can only be generated if a __repr__ exists.c                ó"   — | j                  «       S r/   ©r"   r   s    r!   Ú__str__z&_ClassBuilder.add_str.<locals>.__str__÷  s   € Ø—=‘=“?Ð"r#   r€  )r  rG   rù   rÿ   )r    rQ   r€  s      r!   Úadd_strz_ClassBuilder.add_strò  s?   € Ø×ÒØGˆCÜ˜S“/Ð!ò	#ð %)×$<Ñ$<¸WÓ$Eˆ�‰�yÑ!Øˆr#   c                ót   ‡‡— t        d„ | j                  D «       «      Šˆfd„}| j                  Šˆˆfd„}||fS )zF
        Create custom __setstate__ and __getstate__ methods.
        c              3  ó,   K  — | ]  }|d k7  sŒ	|–— Œ y­w)rP  Nr   )r±   Úans     r!   r³   z8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>  s   è ø€ ð !
Ù)�2¨R°=Ó-@ŒBÑ)ùs   ‚
�c                óD   •— ‰D �ci c]  }|t        | |«      “Œ c}S c c}w )ú9
            Automatically created by attrs.
            ©r•   )r    r–   Ústate_attr_namess     €r!   Úslots_getstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate  s,   ø€ ñ ;KÓKÑ:J°$�Dœ' $¨Ó-Ñ-Ð:JÑKÐKùÒKs   †c                óÜ   •— t         j                  | «      }t        |t        «      rt	        ‰|«      D ]  \  }} |||«       Œ n‰D ]  }||v sŒ ||||   «       Œ ‰r |t
        d«       yy)r†  N)rÃ   rÄ   rJ   rL   ÚziprZ  )r    ÚstateÚ_ClassBuilder__bound_setattrr–   rì   Úhash_caching_enabledrˆ  s        €€r!   Úslots_setstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstate  sx   ø€ ô +×2Ñ2°4Ó8ˆOÜ˜%¤Ô'ô $'Ð'7¸Ö#?‘K�D˜%Ù# D¨%Õ0ñ $@ó -�DØ˜u’}Ù'¨¨e°D©kÕ:ð -ñ $ÙÔ 1°4Õ8ð $r#   )rL   rú   rþ   )r    r‰  r�  rŽ  rˆ  s      @@r!   r'  z%_ClassBuilder._make_getstate_setstateý  sI   ù€ ô
 !ñ !
Ø×)Ò)ó!
ó 
Ðô	Lð  $×/Ñ/Ðõ	9ð, ˜~Ð-Ð-r#   c                ó$   — d | j                   d<   | S ©NÚ__hash__)rÿ   r   s    r!   Úmake_unhashablez_ClassBuilder.make_unhashable&  s   € Ø%)ˆ�‰�zÑ"Øˆr#   c                óÄ   ‡ — t        ‰ j                  ‰ j                  ‰ j                  ‰ j                  ¬«      \  }}dˆ fd„}‰ j
                  j                  |||f«       ‰ S )N©ÚfrozenÚ
cache_hashc                ó4   •— ‰j                  |d   «      | d<   y r‘  rv  )rx  rY   r    s     €r!   Úattach_hashz+_ClassBuilder.add_hash.<locals>.attach_hash2  s   ø€ Ø#'×#;Ñ#;¸DÀÑ<LÓ#MˆH�ZÒ r#   )rx  r  rY   r  ÚreturnÚNone)Ú_make_hash_scriptrÛ   rû   r  rþ   r	  r˜   )r    rW   rX   r™  s   `   r!   Úadd_hashz_ClassBuilder.add_hash*  sW   ø€ Ü)Ø�I‰IØ�K‰KØ—<‘<Ø×'Ñ'ô	
‰ˆ�õ	Nð 	×Ñ×$Ñ$ f¨e°[Ð%AÔBàˆr#   c                ód  ‡ ‡— t        ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  d¬«      \  }}Šˆˆ fd„}‰ j                  j                  |||f«       ‰ S )NF©Ú
attrs_initc                óF   •— |d   }‰|_         ‰j                  |«      | d<   y )Nr2  ©r€   rù   ©rx  rX   r;   r   r    s      €€r!   Ú_attach_initz,_ClassBuilder.add_init.<locals>._attach_initI  s*   ø€ Ø˜Ñ$ˆDØ#.ˆDÔ Ø#'×#;Ñ#;¸DÓ#AˆH�ZÒ r#   ©Ú_make_init_scriptrÛ   rû   r  r  r  r  r
  rþ   rü   r  r  r	  r˜   )r    rW   rX   r¤  r   s   `   @r!   Úadd_initz_ClassBuilder.add_init9  s˜   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØô&
Ñ"ˆ��{õ	Bð
 	×Ñ×$Ñ$ f¨e°\Ð%BÔCàˆr#   c                óJ   — | j                  t        «      | j                  d<   | S )NÚ__replace__)rù   r—   rÿ   r   s    r!   Úadd_replacez_ClassBuilder.add_replaceR  s    € Ø(,×(@Ñ(@ÄÓ(Hˆ�‰�}Ñ%Øˆr#   c                óV   — t        d„ | j                  D «       «      | j                  d<   y )Nc              3  ód   K  — | ](  }|j                   r|j                  s|j                  –— Œ* y ­wr/   )r;   r>   r–   )r±   Úfields     r!   r³   z/_ClassBuilder.add_match_args.<locals>.<genexpr>W  s)   è ø€ ð 1
á$�Ø�zŠz %§-¢-ð �J�JÙ$ùs   ‚.0Ú__match_args__)rL   rû   rÿ   r   s    r!   Úadd_match_argsz_ClassBuilder.add_match_argsV  s'   € Ü+0ñ 1
àŸšó1
ó ,
ˆ�‰Ð'Ò(r#   c                ód  ‡ ‡— t        ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  d¬«      \  }}Šˆˆ fd„}‰ j                  j                  |||f«       ‰ S )NTrŸ  c                óF   •— |d   }‰|_         ‰j                  |«      | d<   y )NÚ__attrs_init__r¢  r£  s      €€r!   Ú_attach_attrs_initz8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initm  s,   ø€ ØÐ)Ñ*ˆDØ#.ˆDÔ Ø)-×)AÑ)AÀ$Ó)GˆHÐ%Ò&r#   r¥  )r    rW   rX   r³  r   s   `   @r!   Úadd_attrs_initz_ClassBuilder.add_attrs_init]  s™   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØô&
Ñ"ˆ��{õ	Hð
 	×Ñ×$Ñ$ f¨eÐ5GÐ%HÔIàˆr#   c                ó¨   ‡ — ‰ j                   }t        ‰ j                  «      \  }}ˆ fd„}‰ j                  j	                  |||f«       t
        |d<   ‰ S )Nc                ó4   •— ‰j                  |d   «      | d<   y )NÚ__eq__rv  rw  s     €r!   Ú
_attach_eqz(_ClassBuilder.add_eq.<locals>._attach_eq{  s   ø€ Ø!%×!9Ñ!9¸%À¹/Ó!JˆH�XÒr#   Ú__ne__)rÿ   Ú_make_eq_scriptrû   r	  r˜   r¹  )r    r«   rW   rX   r¸  s   `    r!   Úadd_eqz_ClassBuilder.add_eqv  sO   ø€ Ø�^‰^ˆä'¨¯©Ó4‰ˆ�ô	Kð 	×Ñ×$Ñ$ f¨e°ZÐ%@ÔAäˆˆ8‰àˆr#   c                ó”   ‡ — ‰ j                   }ˆ fd„t        ‰ j                  ‰ j                  «      D «       \  |d<   |d<   |d<   |d<   ‰ S )Nc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr/   rv  )r±   Úmethr    s     €r!   r³   z*_ClassBuilder.add_order.<locals>.<genexpr>‡  s%   øè ø€ ð B
á;�ð ×$Ñ$ T×*Ù;ùs   ƒÚ__lt__Ú__le__Ú__gt__Ú__ge__)rÿ   Ú_make_orderrÛ   rû   )r    r«   s   ` r!   Ú	add_orderz_ClassBuilder.add_order„  sL   ø€ Ø�^‰^ˆóB
ä# D§I¡I¨t¯{©{Ô;óB
Ñ>ˆˆ8‰�b˜‘l B x¡L°"°X±,ð
 ˆr#   c                ó\  ‡— i Š| j                   D ]C  }|j                  xs | j                  }|sŒ |t        j                  usŒ3||f‰|j
                  <   ŒE ‰s| S | j                  rd}t        |«      ‚ˆfd„}d| j                  d<   | j                  |«      | j                  d<   d| _
        | S )Nz7Can't combine custom __setattr__ with on_setattr hooks.c                óh   •— 	 ‰|   \  }} || ||«      }t        | ||«       y # t         $ r |}Y Œw xY wr/   )ÚKeyErrorrÃ   )r    r–   ÚvalrŸ   r:  ÚnvalÚsa_attrss         €r!   rê   z._ClassBuilder.add_setattr.<locals>.__setattr__ž  sG   ø€ ð*Ø" 4™.‘��4ñ ˜D ! SÓ)�ä˜˜t TÕ*øô ò Ø’ðús   ƒ# £1°1TrG  rê   )rû   rC   r  r   ÚNO_OPr–   r  rG   rÿ   rù   r  )r    rŸ   rC   rQ   rê   rÊ  s        @r!   Úadd_setattrz_ClassBuilder.add_setattrŽ  s¨   ø€ ØˆØ—”ˆAØŸ™Ò9¨×)9Ñ)9ˆJÚ˜j´·±Ò=Ø#$ j =�˜Ÿ™Ò ð ñ
 ØˆKà×#Ò#àKˆCÜ˜S“/Ð!ô	+ð 37ˆ�‰Ð.Ñ/Ø(,×(@Ñ(@ÀÓ(Mˆ�‰�}Ñ%Ø"&ˆÔàˆr#   c                óÎ   — | j                   j                  |_        | j                   j                  › d|j                  › �|_        d| j                   j                  › d�|_        |S )z@
        Add __module__ and __qualname__ to a *method*.
        r®   ú$Method generated by attrs for class )rÛ   r'   r(   r&   r)   ©r    Úmethods     r!   r*  z(_ClassBuilder._add_method_dunders_unsafe®  s`   € ð !ŸI™I×0Ñ0ˆÔà!%§¡×!7Ñ!7Ð 8¸¸&¿/¹/Ð9JÐKˆÔð 3°4·9±9×3IÑ3IÐ2JÈ!ÐLð 	Œð ˆr#   c                óä  — t        j                  t        «      5  | j                  j                  |_        ddd«       t        j                  t        «      5  | j                  j
                  › d|j                  › �|_        ddd«       t        j                  t        «      5  d| j                  j
                  › d�|_        ddd«       |S # 1 sw Y   Œ˜xY w# 1 sw Y   ŒXxY w# 1 sw Y   |S xY w)zL
        Add __module__ and __qualname__ to a *method* if possible.
        Nr®   rÎ  )rI  rJ  rK  rÛ   r'   r(   r&   r)   rÏ  s     r!   r)  z&_ClassBuilder._add_method_dunders_safe¼  s¸   € ô × Ñ ¤Õ0Ø $§	¡	× 4Ñ 4ˆFÔ÷ 1ô × Ñ ¤Õ0Ø%)§Y¡Y×%;Ñ%;Ð$<¸A¸f¿o¹oÐ=NÐ"OˆFÔ÷ 1ô × Ñ ¤Õ0ØCÀDÇIÁI×DZÑDZÐC[Ð[\Ð]ˆFŒN÷ 1ð ˆ÷ 1Ð0ú÷ 1Ð0ú÷ 1ð ˆús#   šCÁ+CÂ# C%ÃCÃC"Ã%C/N)rŒ   r3   rÇ   r  r+  r¿   r,  r  )rš  r›  )rÐ  r   rš  r   )r&   r'   r(   r)   rR  r2  r"   r;  rE  rB  r>  r|  r�  r'  r“  r�  r§  rª  r¯  r´  r»  rÄ  rÌ  r*  r)  r   r#   r!   rø   rø   …  s¨   „ ñð€Ið0cGàðcGð ð	cGð
 ðcGð !ócGòJ<ó'ò$ò2"òHMò^ò	ò'.òRòòò2ò
òò2òòó@ôr#   rø   c                ó�   — | �t        |du|duf«      rd}t        |«      ‚| �| | fS |€|}|€|}|du r|du rd}t        |«      ‚||fS )úš
    Validate the combination of *cmp*, *eq*, and *order*. Derive the effective
    values of eq and order.  If *eq* is None, set it to *default_eq*.
    Nú&Don't mix `cmp` with `eq' and `order`.FTú-`order` can only be True if `eq` is True too.©ÚanyrG   )r9   r?   rA   Ú
default_eqrQ   s        r!   Ú_determine_attrs_eq_orderrÙ  Ì  sy   € ð
 €œ3 ¨$ °¸TÐ0AÐBÔCØ6ˆÜ˜‹oÐð €Ø�Cˆxˆð 
€zØˆà€}Øˆà	ˆU�{�u ‘}Ø=ˆÜ˜‹oÐàˆuˆ9Ðr#   c                óì   — | �t        |du|duf«      rd}t        |«      ‚d„ }| � || «      \  } }| || |fS |€|d}}n ||«      \  }}|€||}}n ||«      \  }}|du r|du rd}t        |«      ‚||||fS )rÓ  NrÔ  c                ó4   — t        | «      rd| }} | |fS d}| |fS )z8
        Decide whether a key function is used.
        TN)rH   )rì   r­   s     r!   Údecide_callable_or_booleanz>_determine_attrib_eq_order.<locals>.decide_callable_or_booleanñ  s1   € ô �EŒ?Ø˜u�3ˆEð �cˆzÐð ˆCØ�cˆzÐr#   FTrÕ  rÖ  )	r9   r?   rA   rØ  rQ   rÜ  Úcmp_keyr@   rB   s	            r!   rE   rE   è  s¼   € ð
 €œ3 ¨$ °¸TÐ0AÐBÔCØ6ˆÜ˜‹oÐòð €Ù1°#Ó6‰ˆˆWØ�G˜S 'Ð)Ð)ð 
€zØ ˆF‰á/°Ó3‰
ˆˆFà€}Ø˜vˆy‰á5°eÓ<Ñˆˆyà	ˆU�{�u ‘}Ø=ˆÜ˜‹oÐàˆv�u˜iÐ'Ð'r#   c                óT   — |du s|du r|S |€|du r|S |D ]  }t        | |«      sŒ y |S )ap  
    Check whether we should implement a set of methods for *cls*.

    *flag* is the argument passed into @attr.s like 'init', *auto_detect* the
    same as passed into @attr.s and *dunders* is a tuple of attribute names
    whose presence signal that the user has implemented it themselves.

    Return *default* if no reason for either for or against is found.
    TF)rŽ   )rŒ   ÚflagÚauto_detectÚdundersr6   Údunders         r!   Ú_determine_whether_to_implementrã    sG   € ð ˆt�|�t˜u‘}Øˆà€|˜ uÑ,Øˆó ˆÜ˜c 6Õ*Ùð ð €Nr#   Fc                ó8  ‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡‡‡— ‰� ddl }|j                  t        d«      d¬«       t        |||d«      \  ŠŠ|�|Št	        ‰t
        t        f«      rt        j                  ‰Ž Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ
ˆˆ	fd„}| €|S  || «      S )aÐ  
    A class decorator that adds :term:`dunder methods` according to the
    specified attributes using `attr.ib` or the *these* argument.

    Consider using `attrs.define` / `attrs.frozen` in new code (``attr.s`` will
    *never* go away, though).

    Args:
        repr_ns (str):
            When using nested classes, there was no way in Python 2 to
            automatically detect that.  This argument allows to set a custom
            name for a more meaningful ``repr`` output.  This argument is
            pointless in Python 3 and is therefore deprecated.

    .. caution::
        Refer to `attrs.define` for the rest of the parameters, but note that they
        can have different defaults.

        Notably, leaving *on_setattr* as `None` will **not** add any hooks.

    .. versionadded:: 16.0.0 *slots*
    .. versionadded:: 16.1.0 *frozen*
    .. versionadded:: 16.3.0 *str*
    .. versionadded:: 16.3.0 Support for ``__attrs_post_init__``.
    .. versionchanged:: 17.1.0
       *hash* supports `None` as value which is also the default now.
    .. versionadded:: 17.3.0 *auto_attribs*
    .. versionchanged:: 18.1.0
       If *these* is passed, no attributes are deleted from the class body.
    .. versionchanged:: 18.1.0 If *these* is ordered, the order is retained.
    .. versionadded:: 18.2.0 *weakref_slot*
    .. deprecated:: 18.2.0
       ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a
       `DeprecationWarning` if the classes compared are subclasses of
       each other. ``__eq`` and ``__ne__`` never tried to compared subclasses
       to each other.
    .. versionchanged:: 19.2.0
       ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now do not consider
       subclasses comparable anymore.
    .. versionadded:: 18.2.0 *kw_only*
    .. versionadded:: 18.2.0 *cache_hash*
    .. versionadded:: 19.1.0 *auto_exc*
    .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
    .. versionadded:: 19.2.0 *eq* and *order*
    .. versionadded:: 20.1.0 *auto_detect*
    .. versionadded:: 20.1.0 *collect_by_mro*
    .. versionadded:: 20.1.0 *getstate_setstate*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionadded:: 20.3.0 *field_transformer*
    .. versionchanged:: 21.1.0
       ``init=False`` injects ``__attrs_init__``
    .. versionchanged:: 21.1.0 Support for ``__attrs_pre_init__``
    .. versionchanged:: 21.1.0 *cmp* undeprecated
    .. versionadded:: 21.3.0 *match_args*
    .. versionadded:: 22.2.0
       *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance).
    .. deprecated:: 24.1.0 *repr_ns*
    .. versionchanged:: 24.1.0
       Instances are not compared as tuples of attributes anymore, but using a
       big ``and`` condition. This is faster and has more correct behavior for
       uncomparable values like `math.nan`.
    .. versionadded:: 24.1.0
       If a class has an *inherited* classmethod called
       ``__attrs_init_subclass__``, it is executed after the class is created.
    .. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*.
    .. versionchanged:: 25.4.0
       *kw_only* now only applies to attributes defined in the current class,
       and respects attribute-level ``kw_only=False`` settings.
    .. versionadded:: 25.4.0 *force_kw_only*
    Nr   zQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.é   )Ú
stacklevelc                óŠ  •— ‰xs t        | «      }‰du xr t        | t        «      }‰xr t        | d«      }|r|rd}t	        |«      ‚| xr t        | ‰‰d«      }t        j                  }|r|j                  }n�‰du r‰r|j                  n|j                  }n~‰du r|j                  }nm‰€^‰du rt        | d«      r|j                  }nN|du r|du r‰r|j                  n|j                  }n+|du r|j                  }n|j                  }nd}t        |«      ‚t        j                  }‰r‰r|j                  n|j                  }	n|j                   }	t        d"i d|“d	|“d
‰“d‰“dt        | ‰‰d«      “dt        | ‰‰d«      “d|“d| xr t        | ‰‰d«      “d|“d‰“d|	“d‰!“d‰“dt        | ‰‰d‰¬«      “d‰“d‰“Ž}
|
j"                  s‰rd}t        |«      ‚t%        | ‰ ‰|
|¬«      }|
j&                  r|j)                  ‰«       |
j*                  r|j-                  «        |
j.                  r|j1                  «        |
j2                  r|j5                  «        ‰s|j7                  «        |
j"                  r|j9                  «        n(|
j:                  |j                  u r|j=                  «        |
j>                  r|jA                  «        n|jC                  «        ‰rd}t        |«      ‚tD        rt        | d «      s|jG                  «        tH        r‰rt        | d!«      s|jK                  «        |jM                  «       S )#NTrê   z/Can't freeze a class with a custom __setattr__.)r·  r¹  Fr’  r5   r!  r  r  r  Ú
added_init©r2  Ú
added_reprr  Úadded_eqÚadded_ordering)r¿  rÀ  rÁ  rÂ  r  Úadded_match_argsr>   r  Ú	added_strr&  )r  r  )r6   r"  rÉ   zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.)rÇ   r+  r,  zFInvalid value for cache_hash.  To use hash caching, init must be True.r©  r®  r   )'Ú_has_frozen_base_classÚ
issubclassré   rŽ   rG   rã  r¿   r  ÚLEAVE_ALONEr  ÚHASHABLEÚ
UNHASHABLErF   rÀ   rÂ   ÚYESrÁ   Úis_hashablerø   rê  r|  rî  r�  rë  r»  rì  rÄ  rÌ  r�  r  r“  rè  r§  r´  r   rª  r   r¯  rE  )"rŒ   r  Úis_excÚhas_own_setattrrQ   r?   r  r  rÀ   Úkwor+  ÚbuilderrÇ   rà  Úauto_excr—  rÈ   Úeq_rÉ   Úforce_kw_onlyr–  Úgetstate_setstater:   r;   r>   Ú
match_argsrC   Úorder_r8   Úrepr_nsÚslotsr„   rÆ   Úweakref_slots"               €€€€€€€€€€€€€€€€€€€€€€r!   Úwrapzattrs.<locals>.wrap¡  s©  ø€ àÒ9Ô4°SÓ9ˆ	Ø˜TÐ!ÒD¤j°´mÓ&DˆØ%ò 
Ô*<Ø�ó+
ˆñ ™yØCˆCÜ˜S“/Ð!àˆZò 
Ô;Ø��kÐ#7ó
ˆô !×,Ñ,ˆáØ%×1Ñ1‰KØ�T‰\ñ ð ×+Ò+à ×)Ñ)ñ ð
 �U‰]Ø%×1Ñ1‰KØˆ\Ø˜dÑ"Ô'9¸#¸zÔ'JØ)×5Ñ5‘Ø�t‘ 	¨TÑ 1ñ "ð  ×/Ò/à$×-Ñ-ñ ð
 �u‘Ø)×5Ñ5‘à)×4Ñ4‘àJˆCÜ˜C“.Ð ä ×,Ñ,ˆÙÙ'4�+×#Ò#¸+¿/¹/‰Cà—.‘.ˆCäò !
Ùð!
áð!
ñ ð!
ñ %3ð	!
ô
 7Ø�T˜;¨ôð!
ô 7Ø�T˜;¨ôð!
ñ ð!
ð  &˜:ò Ü/ØØØØ8ó	øð!
ñ& $ð'!
ñ( (ð)!
ñ* ð+!
ñ, *ð-!
ñ. ð/!
ô0 ;ØØ!ØØ0Øõð1!
ñ> 'ð?!
ñ@ 0ðA!
ˆðF × Ò ¡Zð AˆCÜ˜C“.Ð äØØØ%ØØ.ô
ˆð ×ÒØ×Ñ˜WÔ%à�?Š?Ø�O‰OÔà�>Š>Ø�N‰NÔØ×ÒØ×ÑÔáØ×ÑÔ!à×ÒØ×ÑÕØ×Ñ +×"8Ñ"8Ñ8Ø×#Ñ#Ô%à×ÒØ×ÑÕà×"Ñ"Ô$ÙØ^�Ü “nÐ$åÔ 2°3¸Ô FØ×ÑÔ!õ ÙÜ& sÐ,<Ô=à×"Ñ"Ô$à×"Ñ"Ó$Ð$r#   )	ÚwarningsÚwarnÚDeprecationWarningrÙ  rJ   rK   rL   r   rM   )Ú	maybe_clsrÆ   r   r8   r9   r:   r;   r  r–  r  r„   rÇ   r>   r—  rú  r?   rA   rà  rÈ   rý  rC   rÉ   rþ  Úunsafe_hashrü  r  r  rû  rÿ  s    ``` ``````````  `````` `  @@r!   r{   r{   -  s¡   ÿÿý€ ðB ÐÛà�‰ÜØcóð ð	 	ô 	
ô ,¨C°°U¸DÓA�K€Cˆð ÐØˆä�*œt¤U˜mÔ,Ü—\‘\ :Ð.ˆ
÷G%÷ G%÷ G%ñ G%ðV ÐØˆá�	‹?Ðr#   c                ó&   — | j                   t        u S )zV
    Check whether *cls* has a frozen ancestor by looking at its
    __setattr__.
    )rê   rí   )rŒ   s    r!   rï  rï  9  s   € ð
 �?‰?Ô.Ð.Ð.r#   c           
     óX   — d|› d| j                   › dt        | d| j                  «      › d�S )zF
    Create a "filename" suitable for a function being generated.
    z<attrs generated Ú r®   r(   r`   )r'   r•   r&   )rŒ   Ú	func_names     r!   rÞ   rÞ   A  s7   € ð
 ˜I˜; a¨¯©Ð'7°qÜ�3˜¨¯©Ó5Ð
6°að	9ðr#   c                óö  ‡‡‡	‡
‡‡— t        d„ ‰D «       «      Šd}t        t        | d«      «      Ši Š	d}dŠ
dŠ|s|dz  }n|dz  }|d	z  }d
‰
z   Š
‰dz  Š|gŠˆˆˆ	ˆ
ˆˆfd„}|rz‰j                  |dt        › d�z   «       |r, |dt        › d�|dz  «       ‰j                  |dz  dz   «       n |dt        › d�|dz  «       ‰j                  |dt        › �z   «       n	 |d|«       dj                  ‰«      }|‰	fS )Nc              3  ót   K  — | ]0  }|j                   d u s|j                   �Œ|j                  d u sŒ-|–— Œ2 y­w)TN)r:   r?   r¹   s     r!   r³   z$_make_hash_script.<locals>.<genexpr>N  s0   è ø€ ð Ùˆa˜AŸF™F d™N¨q¯v©v©~À!Ç$Á$È$Â,Œ‘5ùs   ‚8¢8±8ú        r:   zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(Ú)c           	     óh  •— ‰j                  || z   ‰z   |d‰	› d�z   g«       ‰D ]u  }|j                  rEd|j                  › d�}|j                  ‰|<   ‰j                  |d|› d|j                  › d�z   «       ŒT‰j                  |d|j                  › d�z   «       Œw ‰j                  |dz   ‰z   «       y	)
zÛ
        Generate the code for actually computing the hash code.
        Below this will either be returned directly or used to compute
        a value which is then cached, depending on the value of cache_hash
        r  Ú,r8  Ú_keyú(self.z),ú        self.ú    N)rÝ   r@   r–   r˜   )
ÚprefixÚindentrŸ   Úcmp_namer{   Úclosing_bracesrX   Ú	hash_funcÚmethod_linesÚ	type_hashs
       €€€€€€r!   Úappend_hash_computation_linesz8_make_hash_script.<locals>.append_hash_computation_linesf  sË   ø€ ð 	×Ñà˜‘ )Ñ+Ø˜8 I ;¨aÐ0Ñ0ðô	
ó ˆAØ�xŠxØ˜qŸv™v˜h dÐ+�Ø"#§(¡(��h‘Ø×#Ñ#Ø˜x¨ z°¸¿¹°x¸rÐBÑBõð ×#Ñ# F¨}¸Q¿V¹V¸HÀAÐ-FÑ$FÕGð ð 	×Ñ˜F V™O¨nÑ<Õ=r#   zif self.z	 is None:zobject.__setattr__(self, 'ú', rå  úself.ú = zreturn self.zreturn rÚ   )rL   r:   rÞ   r˜   rZ  r»   )rŒ   r{   r–  r—  ÚtabÚhash_defr  rW   r  rX   r  r  r  s    `      @@@@@r!   rœ  rœ  K  sF  ý€ ô ñ Ùóó €Eð €CäÔ.¨s°FÓ;Ó<€Ià€Eà"€HØ€IØ€NÙØ�DÑ‰à�EÑˆàÐYÑYˆØ%¨	Ñ1ˆ	Ø˜#Ñˆà�:€L÷>ñ >ñ4 Ø×Ñ˜C HÔ->Ð,?¸yÐ"IÑIÔJÙÙ)Ø,Ô->Ð,?¸sÐCÀSÈ1ÁWôð ×Ñ  a¡¨#¡Õ.á)ØÔ)Ð*¨#Ð.°°a±ôð 	×Ñ˜C LÔ1BÐ0CÐ"DÑDÕEá% i°Ô5à�Y‰Y�|Ó$€FØ�5ˆ=Ðr#   c                ón   — t        | |dd¬«      \  }}t        ||t        | d«      ¬«       |d   | _        | S )z%
    Add a hash method to *cls*.
    Fr•  r’  ©rZ   )rœ  r\   rÞ   r’  ©rŒ   r{   rW   rX   s       r!   Ú	_add_hashr'  “  sG   € ô &ØˆU˜5¨Uô�M€FˆEô Ø�Ô 9¸#¸zÓ Jõð ˜Ñ$€C„LØ€Jr#   c                óF   — | j                  |«      }|t        u rt        S | S )z^
    Check equality and either forward a NotImplemented or
    return the result negated.
    )r·  ÚNotImplemented)r    ÚotherÚresults      r!   r¹  r¹  ¡  s(   € ð
 �[‰[˜Ó€FØ”ÑÜÐàˆ:Ðr#   c                ó,  — | D �cg c]  }|j                   sŒ|‘Œ } }g d¢}i }| rÆ|j                  d«       | D ]ž  }|j                  rRd|j                  › d�}|j                  ||<   |j                  d|› d|j                  › d|› d|j                  › d	�	«       n+|j                  d
|j                  › d|j                  › �«       || d   usŒ”|d   › d�|d<   Œ  |j                  d«       n|j                  d«       dj	                  |«      }||fS c c}w )z6
    Create __eq__ method for *cls* with *attrs*.
    )zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz    return  (r8  r  r  r  z) == z(other.r  r  z
 == other.r^   z andz    )z    return TruerÚ   )r?   r˜   r@   r–   r»   )r{   rŸ   rß   rX   r  rW   s         r!   rº  rº  ­  s  € ñ Ó&™�1 §£ŠQ˜€EÐ&ò€Eð €EÙØ�‰�_Ô%ÛˆAØ�xŠxØ˜qŸv™v˜h dÐ+�ð #$§(¡(��h‘Ø—‘Ø˜x˜j¨¨q¯v©v¨h°e¸H¸:ÀWÈQÏVÉVÈHÐTUÐVõð —‘˜}¨Q¯V©V¨H°J¸q¿v¹v¸hÐGÔHØ˜˜b™	Ò!Ø$ R™y˜k¨Ð.��b’	ð ð 	�‰�WÕà�‰Ð&Ô'à�Y‰Y�uÓ€Fà�5ˆ=Ðùò= 's
   …D—Dc                óˆ   ‡‡— ‰D �cg c]  }|j                   sŒ|‘Œ c}Šˆfd„Šˆfd„}ˆfd„}ˆfd„}ˆfd„}||||fS c c}w )z9
    Create ordering methods for *cls* with *attrs*.
    c                ó<   •‡ — t        d„ ˆ fd„‰D «       D «       «      S )z&
        Save us some typing.
        c              3  ó:   K  — | ]  \  }}|r ||«      n|–— Œ y ­wr/   r   )r±   rì   r­   s      r!   r³   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>Ü  s+   è ø€ ð 
ñ‘
��sñ ‰C�ŒJ 5Ó(ñùs   ‚c              3  ób   •K  — | ]&  }t        ‰|j                  «      |j                  f–— Œ( y ­wr/   )r•   r–   rB   )r±   rŸ   Úobjs     €r!   r³   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>Þ  s)   øè ø€ ð Ù=B¸”˜˜aŸf™fÓ% q§{¡{Ô3¹Uùs   ƒ,/)rL   )r1  r{   s   `€r!   Úattrs_to_tuplez#_make_order.<locals>.attrs_to_tupleØ  s)   ù€ ô ñ 
óÙ=Bôó
ó 
ð 	
r#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      k  S t        S ©z1
        Automatically created by attrs.
        ©r°   r)  ©r    r*  r2  s     €r!   r¿  z_make_order.<locals>.__lt__ã  ó0   ø€ ð �?‰?˜dŸn™nÑ,Ù! $Ó'©.¸Ó*?Ñ?Ð?äÐr#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      k  S t        S r4  r5  r6  s     €r!   rÀ  z_make_order.<locals>.__le__ì  ó0   ø€ ð �?‰?˜dŸn™nÑ,Ù! $Ó'©>¸%Ó+@Ñ@Ð@äÐr#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      kD  S t        S r4  r5  r6  s     €r!   rÁ  z_make_order.<locals>.__gt__õ  r7  r#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      k\  S t        S r4  r5  r6  s     €r!   rÂ  z_make_order.<locals>.__ge__þ  r9  r#   )rA   )rŒ   r{   rŸ   r¿  rÀ  rÁ  rÂ  r2  s    `     @r!   rÃ  rÃ  Ò  sO   ù€ ñ Ó)™�1 §£ŠQ˜Ñ)€Eô	
ôôôôð �6˜6 6Ð)Ð)ùòc *s   ‡?™?c                ó˜   — |€| j                   }t        |«      \  }}t        ||t        | d«      ¬«       |d   | _        t
        | _        | S )z5
    Add equality methods to *cls* with *attrs*.
    r·  r%  )r�   rº  r\   rÞ   r·  r¹  r&  s       r!   Ú_add_eqr=  
  sR   € ð €}Ø×#Ñ#ˆä# EÓ*�M€FˆEÜØ�Ô 9¸#¸xÓ Hõð �x‘€C„JÜ€C„Jà€Jr#   c                óÒ  — t        d„ | D «       «      }|D ���ci c]  \  }}}|t        k7  sŒ|dz   |“Œ }}}}t        |d<   t        |d<   t        |d<   g }|D ]B  \  }}}|rd|z   nd|z   dz   }	|t        k(  r|›d	|	›d
�n
|›d	|›d|	›d�}
|j                  |
«       ŒD dj                  |«      }|€d}n|dz   }ddddddddddddd|› d|› d�ddg}d j                  |«      |fS c c}}}w )!zC
    Create the source and globs for a __repr__ and return it.
    c              3  ó¦   K  — | ]I  }|j                   d ur9|j                  |j                   du rt         n|j                   |j                  f–— ŒK y­w)FTN)r8   r–   r;   r¹   s     r!   r³   z$_make_repr_script.<locals>.<genexpr>"  sC   è ø€ ð "áˆAØ�6‰6˜Ñð 
�‰˜!Ÿ&™& D™.•$¨a¯f©f°q·v±vÔ>Ùùs   ‚AAÚ_reprr   rK  r   r   zgetattr(self, "z", NOTHING)z={z!r}z_repr(z)}r¦   z1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __repr__(self):z  try:z:    already_repring = _compat.repr_context.already_repringz  except AttributeError:z!    already_repring = {id(self),}z:    _compat.repr_context.already_repring = already_repringz  else:z#    if id(self) in already_repring:z      return '...'z	    else:z#      already_repring.add(id(self))z    return f'Ú(z)'z
  finally:z$    already_repring.remove(id(self))rÚ   )rL   r8   r   rK  r   r˜   r»   )r{   r{  Úattr_names_with_reprsr–   Úrr8  rX   Úattribute_fragmentsro   ÚaccessorÚfragmentÚrepr_fragmentÚcls_name_fragmentrß   s                 r!   rz  rz    s`  € ô "ñ "áó"ó Ðñ -BõÙ,A™j˜d A qÀQÌ$ÃYˆˆw‰˜ÑÐ,Að 
ò ô €Eˆ)ÑÜ,€EÐ
ÑÜ€Eˆ)ÑØÐÛ+‰
ˆˆa�áˆG�dŠNÐ%6¸Ñ%=ÀÑ%Mð 	ð
 ”DŠyò  ¢Ñ*â'+ªT²8Ð<ð 	ð
 	×"Ñ" 8Õ,ð ,ð —I‘IÐ1Ó2€Mà	€zØOÑàÐ!=Ñ=Ðð 	ØØDØ"Ø+ØDØØ-ØØØ-ØØ
Ð)Ð*¨!¨M¨?¸"Ð=ØØ.ð€Eð$ �9‰9�UÓ˜UÐ"Ð"ùôUs
   ™C"¬C"c                ó„   — |€| j                   }t        ||«      \  }}t        ||t        | d«      ¬«       |d   | _        | S )z%
    Add a repr method to *cls*.
    r"   r%  )r�   rz  r\   rÞ   r"   )rŒ   r{  r{   rW   rX   s        r!   Ú	_add_reprrJ  T  sN   € ð €}Ø×#Ñ#ˆä% e¨RÓ0�M€FˆEÜØ�Ô 9¸#¸zÓ Jõð ˜Ñ$€C„LØ€Jr#   c                ó  — t        | «      }|€@t        | t        «      s0t        | «      }t        |dd«      €d}t	        |«      ‚t        |«      S t        | dd«      }|€*|�t        |dd«      }|�	|| _        |S | ›d�}t        |«      ‚|S )aµ  
    Return the tuple of *attrs* attributes for a class or instance.

    The tuple also allows accessing the fields by their names (see below for
    examples).

    Args:
        cls (type): Class or instance to introspect.

    Raises:
        TypeError: If *cls* is neither a class nor an *attrs* instance.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    Returns:
        tuple (with name accessors) of `attrs.Attribute`

    .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields
       by name.
    .. versionchanged:: 23.1.0 Add support for generic classes.
    .. versionchanged:: 26.1.0 Add support for instances.
    Nr�   z0Passed object must be a class or attrs instance.ú! is not an attrs-decorated class.)r   rJ   r3   r•   rF   rò   r�   r   )rŒ   Úgeneric_baseÚtype_rQ   r{   s        r!   rò   rò   c  sª   € ô0 $ CÓ(€LàÐ¤J¨s´DÔ$9Ü�S“	ˆÜ�5Ð+¨TÓ2Ð:ØDˆCÜ˜C“.Ð ä�e‹}Ðä�CÐ*¨DÓ1€Eà€}ØÐ#Ü˜LÐ*;¸TÓBˆEØÐ ð ',�Ô#Ø�Ø�Ð8Ð9ˆÜ" 3Ó'Ð'à€Lr#   c                óº   — t        | t        «      sd}t        |«      ‚t        | dd«      }|€| ›d�}t	        |«      ‚|D �ci c]  }|j
                  |“Œ c}S c c}w )a±  
    Return an ordered dictionary of *attrs* attributes for a class, whose keys
    are the attribute names.

    Args:
        cls (type): Class to introspect.

    Raises:
        TypeError: If *cls* is not a class.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    Returns:
        dict[str, attrs.Attribute]: Dict of attribute name to definition

    .. versionadded:: 18.1.0
    zPassed object must be a class.r�   NrL  )rJ   r3   rF   r•   r   r–   )rŒ   rQ   r{   rŸ   s       r!   Úfields_dictrP  –  si   € ô& �cœ4Ô Ø.ˆÜ˜‹nÐÜ�CÐ*¨DÓ1€EØ€}Ø�Ð8Ð9ˆÜ" 3Ó'Ð'Ù$Ó%™u˜!ˆA�F‰F�A‰I˜uÑ%Ð%ùÒ%s   ÁAc           	     ó¸   — t         j                  du ryt        | j                  «      D ]/  }|j                  }|€Œ || |t        | |j                  «      «       Œ1 y)z¬
    Validate all attributes on *inst* that have a validator.

    Leaves all exceptions through.

    Args:
        inst: Instance of a class with *attrs* attributes.
    FN)r   Ú_run_validatorsrò   r°   r7   r•   r–   )rõ   rŸ   rd  s      r!   r$  r$  ³  sM   € ô ×Ñ %Ñ'Øä�D—N‘NÖ#ˆØ�K‰KˆØ‰=Ùˆd�A”w˜t Q§V¡VÓ,Õ-ñ $r#   c                óH   — |j                  | «      }|xr d|j                  v S )z>
    Check if the attribute name comes from a slot class.
    rR  )r¨   r‹   )Úa_namer�   rŒ   s      r!   Ú_is_slot_attrrU  Å  s(   € ð ×
Ñ
˜FÓ
#€CØÒ.�; #§,¡,Ð.Ð.r#   c                óô  — |
d uxr |
t         j                  u}|r|rd}t        |«      ‚|xs |}g }i }|D ]Ÿ  }|j                  s|j                  t
        u rŒ"|j                  |«       |||j                  <   |j                  �0|du r)|j                  t         j                  urd}t        |«      ‚d}Œ~|sŒ�|j                  t         j                  usŒžd}Œ¡ t        |||||||||	|||rdnd«      \  }}}| j                  t        j                  v r6|j                  t        j                  | j                     j                  «       |j                  t
        |dœ«       |rt        j                   |d<   |||fS )Nz$Frozen classes can't use on_setattr.Tr²  r2  )r   Ú	attr_dictrØ   )r   rË  rG   r;   r6   r   r˜   r–   rC   Ú_attrs_to_init_scriptr'   rT  Úmodulesr6  r‹   rÃ   rÄ   )rŒ   r{   Úpre_initÚpre_init_has_argsÚ	post_initr–  r  r—  r�   rö  Úcls_on_setattrr   Úhas_cls_on_setattrrQ   Úneeds_cached_setattrÚfiltered_attrsrW  rŸ   rW   rX   r   s                        r!   r¦  r¦  Í  st  € ð 	˜dÐ"ÒJ ~¼W¿]¹]Ð'Jð ñ Ñ$Ø4ˆÜ˜‹oÐà%Ò/¨ÐØ€NØ€IÛˆØ�vŠv˜!Ÿ)™)¤wÑ.Øà×Ñ˜aÔ Øˆ	�!—&‘&Ñà�<‰<Ð#Ø˜‰~ !§,¡,´g·m±mÑ"CØ<�Ü  “oÐ%à#'Ñ Ú A§L¡L¼¿¹Ò$EØ#'Ñ ð ô  "7ØØØØØØØØØØØÙ&Ñ¨Jó"Ñ€FˆE�;ð ‡~�~œŸ™Ñ$à�‰”S—[‘[ §¡Ñ0×9Ñ9Ô:à	‡L�LœW°9Ñ=Ô>áô (4×';Ñ';ˆÐ#Ñ$à�5˜+Ð%Ð%r#   c                ó   — d| › d|› d�S )zJ
    Use the cached object.setattr to set *attr_name* to *value_var*.
    ú
_setattr('r  r  r   )rw   Ú	value_varÚhas_on_setattrs      r!   Ú_setattrre    s   € ð ˜	�{ # i [°Ð2Ð2r#   Ú	Converterc                ó4   — d| › d|j                  | |«      › d�S )zk
    Use the cached object.setattr to set *attr_name* to *value_var*, but run
    its converter first.
    rb  r  r  )Ú_fmt_converter_call©rw   rc  rd  r<   s       r!   Ú_setattr_with_converterrj    s(   € ð ˜	�{ # i×&CÑ&CÀIÈyÓ&YÐ%ZÐZ[Ð\Ð\r#   c                ó0   — |rt        | |d«      S d| › d|› �S )zo
    Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
    relegate to _setattr.
    Tr   r!  )re  )rw   rì   rd  s      r!   Ú_assignrl  #  s)   € ñ
 Ü˜	 5¨$Ó/Ð/à�9�+˜S  Ð(Ð(r#   c                óR   — |rt        | |d|«      S d| › d|j                  | |«      › �S )z�
    Unless *attr_name* has an on_setattr hook, use normal assignment after
    conversion. Otherwise relegate to _setattr_with_converter.
    Tr   r!  )rj  rh  ri  s       r!   Ú_assign_with_converterrn  .  s9   € ñ Ü& y°)¸TÀ9ÓMÐMà�9�+˜S ×!>Ñ!>¸yÈ)Ó!TÐ UÐVÐVr#   c                óŽ   ‡— | du r4|du rdt         t        fS 	 	 	 	 	 	 	 	 dˆfd„}	 	 	 	 	 	 	 	 	 	 dˆfd„}d||fS dt        t        fS )zg
    Determine the correct setter functions based on whether a class is frozen
    and/or slotted.
    Tr   c                óF   •— t        | ‰«      rt        | ||«      S d| › d|› �S ©Nú_inst_dict['z'] = )rU  re  )rw   rc  rd  r�   s      €r!   Ú
fmt_setterz&_determine_setters.<locals>.fmt_setterK  s1   ø€ ô ˜Y¨Ô6Ü 	¨9°nÓEÐEà! ) ¨E°)°Ð=Ð=r#   c                ól   •— |st        | ‰«      rt        | |||«      S d| › d|j                  | |«      › �S rq  )rU  rj  rh  )rw   rc  rd  r<   r�   s       €r!   Úfmt_setter_with_converterz5_determine_setters.<locals>.fmt_setter_with_converterS  sL   ø€ ñ ¤¨y¸-Ô!HÜ.Ø˜y¨.¸)óð ð " ) ¨E°)×2OÑ2OÐPYÐ[dÓ2eÐ1fÐgÐgr#   )z_inst_dict = self.__dict__©rw   r„   rc  r„   rd  r  rš  r„   ©
rw   r„   rc  r„   rd  r  r<   rf  rš  r„   )re  rj  rl  rn  )r–  r  r�   rs  ru  s     `  r!   Ú_determine_settersrx  ;  s¤   ø€ ð ��~Ø�D‰=Ø”xÔ!8Ð8Ð8ð	>Øð	>Ø'*ð	>Ø<@ð	>àõ	>ð	hØð	hàð	hð !ð	hð !ð		hð
 õ	hð ,ØØ%ð
ð 	
ð ŒwÔ.Ð.Ð.r#   c           
     óì  — |rdgng }|	r|j                  d«       t        |||«      \  }}}|j                  |«       g }g }g }g }i }ddi}| D �]  }|j                  r|j                  |«       |j                  }|j
                  duxs  |j
                  t        j                  uxr |
}|j                  }t        |j                  t        «      }|r|j                  j                  rdnd}|j                  �0t        |j                  t        «      st        |j                  «      }n|j                  }|j                  du �r|r›t         |j                  fz  }|�J|j                   |||d|› d	�z   ||«      «       |j                  ||j#                  |j                  «      <   n |j                   |||d|› d	�z   |«      «       |j                  j$                  ||<   �n |�H|j                   ||d
|› d�||«      «       |j                  ||j#                  |j                  «      <   �nÖ|j                   ||d
|› d�|«      «       �n·|j                  t&        ur«|s©|› d|› d�}|j(                  r|j                  |«       n"|j                  |«       |j                  |«       |�D|j                   |||||«      «       |j                  ||j#                  |j                  «      <   �n|j                   ||||«      «       �nú|�rY|› d�}|j(                  r|j                  |«       n"|j                  |«       |j                  |«       |j                  d|› d�«       t         |j                  fz  }|�}|j                  d |||||«      z   «       |j                  d«       |j                  d |||dz   |z   d	z   ||«      z   «       |j                  ||j#                  |j                  «      <   nR|j                  d ||||«      z   «       |j                  d«       |j                  d |||dz   |z   d	z   |«      z   «       |j                  j$                  ||<   nž|j(                  r|j                  |«       n"|j                  |«       |j                  |«       |�C|j                   |||||«      «       |j                  ||j#                  |j                  «      <   n|j                   ||||«      «       |j                  du s�ŒÃ|j*                  �|€|j*                  ||<   �Œâ|€�Œæ|j,                  s�Œô|j,                  ||<   �Œ |rxt.        |d<   |j                  d«       |D ]Y  }d|j                  z   }d|j                  z   }|j                  d|› d|› d|j                  › d	�«       |j                  ||<   |||<   Œ[ |r|j                  d«       |r5|r|rdt0        › d�} ndt0        › d�} n
dt0        › d�} |j                  | «       |r-d j3                  d!„ | D «       «      }!|j                  d"|!› d	�«       d#j3                  |«      }d#j3                  |«      }|rV||rd#nd› d$d#j3                  |«      › �z  }d#j3                  d%„ |D «       D �"cg c]	  }"|"› d&|"› �‘Œ c}"«      }#||rd#ndz  }||#z  }|r|r	d'|› d	�|d(<   d)}$d*|› d|› d+|r|$j3                  |«      nd,› d-�||fS c c}"w ).z«
    Return a script of an initializer for *attrs*, a dict of globals, and
    annotations for the initializer.

    The globals are required by the generated script.
    zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)rš  Nr    Ú FrA  r  zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:r  zelse:Tr   z#if _config._run_validators is True:Ú__attr_validator_Ú__attr_z(self, z, self.zself.__attrs_post_init__()rb  z', None)rr  z	'] = Noner   z = Noner  c              3  óT   K  — | ]   }|j                   sŒd |j                  › �–— Œ" y­w)r   N)r;   r–   r¹   s     r!   r³   z(_attrs_to_init_script.<locals>.<genexpr>P	  s"   è ø€ ÐB±%¨Q¸1¿6»6˜% §¡˜xÔ(±%ùs   ‚(”(zBaseException.__init__(self, r¦   z*, c              3  óD   K  — | ]  }|j                  d «      d   –— Œ y­w)Ú=r   N)Úsplit)r±   Úkwas     r!   r³   z(_attrs_to_init_script.<locals>.<genexpr>]	  s   è ø€ Ð#NÁ¸# C§I¡I¨c£N°1Õ$5Áùs   ‚ r  zself.__attrs_pre_init__(r   z
    zdef z):
    ÚpassrÚ   )r˜   rx  rÝ   r7   r–   rC   r   rË  rD   rJ   r6   rI   Ú
takes_selfr<   rf  r;   Ú_INIT_FACTORY_PATÚ_get_global_namerP   r   r>   r3   Ú_first_param_typer   rZ  r»   )%r{   r  r  Úcall_pre_initr[  Úcall_post_initÚdoes_cache_hashr�   rö  r_  r^  Úmethod_namerß   Úextra_linesrs  ru  ró   Úpre_init_argsÚkw_only_argsÚattrs_to_validateÚnames_for_globalsr   rŸ   rw   rd  Úarg_nameÚhas_factoryÚ
maybe_selfr<   Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚkw_arg_nameÚpre_init_kw_only_argsÚNLs%                                        r!   rX  rX  j  s`  € ñ( .;Ð(Ñ)À€EáØ�‰ð 3ô		
ô :LØ�:˜}ó:Ñ6€K�Ð6ð 
‡L�L�Ôà€DØ€MØ€LØÐð ÐØ˜TÐ"€KäˆØ�;Š;Ø×$Ñ$ QÔ'à—F‘Fˆ	ØŸ™¨TÐ1ò 
Ø�L‰L¤§¡Ð-ÒDÐ2Dð 	ð
 —7‘7ˆä  §¡¬GÓ4ˆÙ*¨q¯y©y×/CÒ/C‘VÈˆ
à�;‰;Ð"¬:°a·k±kÄ9Ô+MÜ! !§+¡+Ó.‰IàŸ™ˆIà�6‰6�UŠ?ÙÜ$5¸¿¹¸	Ñ$AÐ!ØÐ(Ø—L‘LÙ1Ø%Ø-°!°J°<¸qÐ0AÑAØ*Ø%ó	ôð "×+Ñ+ð & i×&@Ñ&@ÀÇÁÓ&HÒIð —L‘LÙ"Ø%Ø-°!°J°<¸qÐ0AÑAØ*óôð 89·y±y×7HÑ7HÐ!Ð"3Ó4ØÐ&Ø—‘Ù-Ø!Ø% i [°
Ð;Ø&Ø!ó	ôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÓEð —‘ÙØ!Ø% i [°
Ð;Ø&óöð �Y‰YœgÑ%©kØ�J˜l¨9¨+°ZÐ@ˆCØ�yŠyØ×#Ñ# CÕ(à—‘˜CÔ Ø×$Ñ$ XÔ.àÐ$Ø—‘Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÓEð —‘™Z¨	°8¸^ÓLÖMâØ�J˜hÐ'ˆCØ�yŠyØ×#Ñ# CÕ(à—‘˜CÔ Ø×$Ñ$ XÔ.Ø�L‰L˜3˜x˜jÐ(8Ð9Ô:ä 1°Q·V±V°IÑ =ÐØÐ$Ø—‘ØÙ/Ø! 8¨^¸Yóñôð —‘˜WÔ%Ø—‘ØÙ/Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&Ø!ó	ñôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÒEð —‘Ø™Z¨	°8¸^ÓLÑLôð —‘˜WÔ%Ø—‘ØÙ Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&óñôð 45·9±9×3DÑ3DÐÐ/Ò0à�yŠyØ×#Ñ# HÕ-à—‘˜HÔ%Ø×$Ñ$ XÔ.àÐ$Ø—‘Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÒEð —‘™Z¨	°8¸^ÓLÔMà�6‰6�T‹>Ø�v‰vÐ! iÐ&7Ø()¯©�˜HÓ%ØÒ&¨9×+FÔ+Fà(1×(CÑ(C�˜HÓ%ðq ñt Ü'.Ð˜)Ñ$Ø�‰Ð:Ô;Û"ˆAØ*¨Q¯V©VÑ3ˆHØ! A§F¡FÑ*ˆIØ�L‰L˜4 ˜z¨°°¸7À1Ç6Á6À(È!ÐLÔMØ*+¯+©+Ð˜hÑ'Ø+,Ð˜iÒ(ð #ñ Ø�‰Ð1Ô2ñ ÙÙØ$.Ô/@Ð.AÀÐ"J‘à$0Ô1BÐ0CÀ9Ð"M‘à %Ô&7Ð%8¸Ð@ˆOØ�‰�_Ô%ñ Ø�x‰xÑB±%ÓBÓBˆà�‰Ð4°T°F¸!Ð<Ô=à�9‰9�T‹?€DØ—I‘I˜mÓ,€MÙà™4‘4 RÐ(¨¨D¯I©I°lÓ,CÐ+DÐEÑEˆØ $§	¡	ñ $OÁÔ#Nóñ $O�Kð �-˜q  Ò.à#Nñó!
Ðð 	¡™°BÑ6ˆØÐ.Ñ.ˆáÑ*à-¨m¨_¸AÐ>ˆˆa‰ð 
€Bà��˜W T Fð +Ù€R‡W�WˆU„^ &Ð)ð *ð	ð 	Øðð ùòs   Ú[1c                ó$   — | j                  d«      S )zÅ
    The default __init__ parameter name for a field.

    This performs private-name adjustment via leading-unscore stripping,
    and is the default value of Attribute.alias if not provided.
    r8  )Úlstripr  s    r!   rÅ   rÅ   r	  s   € ð �;‰;�sÓÐr#   c                  óp   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 dd„Zd„ Ze	 d	 	 	 	 	 dd„«       Zd„ Z	d„ Z
d	„ Zd
„ Zy)r½   az  
    *Read-only* representation of an attribute.

    .. warning::

       You should never instantiate this class yourself.

    The class has *all* arguments of `attr.ib` (except for ``factory`` which is
    only syntactic sugar for ``default=Factory(...)`` plus the following:

    - ``name`` (`str`): The name of the attribute.
    - ``alias`` (`str`): The __init__ parameter name of the attribute, after
      any explicit overrides and default private-attribute-name handling.
    - ``alias_is_default`` (`bool`): Whether the ``alias`` was automatically
      generated (``True``) or explicitly provided by the user (``False``).
    - ``inherited`` (`bool`): Whether or not that attribute has been inherited
      from a base class.
    - ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The
      callables that are used for comparing and ordering objects by this
      attribute, respectively. These are set by passing a callable to
      `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also
      :ref:`comparison customization <custom-comparison>`.

    Instances of this class are frequently used for introspection purposes
    like:

    - `fields` returns a tuple of them.
    - Validators get them passed as the first argument.
    - The :ref:`field transformer <transform-fields>` hook receives a list of
      them.
    - The ``alias`` property exposes the __init__ parameter name of the field,
      with any overrides and default private-attribute handling applied.


    .. versionadded:: 20.1.0 *inherited*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionchanged:: 20.2.0 *inherited* is not taken into account for
        equality checks and hashing anymore.
    .. versionadded:: 21.1.0 *eq_key* and *order_key*
    .. versionadded:: 22.2.0 *alias*
    .. versionadded:: 26.1.0 *alias_is_default*

    For the full version history of the fields, see `attr.ib`.
    )r–   r6   r7   r8   r?   r@   rA   rB   r:   r;   r=   r3   r<   r>   r’   rC   rD   r·   Nc                ó  — t        ||xs ||xs |d«      \  }}}}t        j                  | «      } |d|«        |d|«        |d|«        |d|«        |d|«        |d|«        |d|«        |d	|«        |d
|«        |d|«        |d|«        |d|	rt        j                  t        |	«      «      nt        «        |d|
«        |d|«        |d|«        |d|«        |d|«        |d|€	|d u «       y |«       y )NTr–   r6   r7   r8   r?   r@   rA   rB   r:   r;   r<   r=   r3   r>   r’   rC   rD   r·   )rE   rÃ   rÄ   ÚtypesÚMappingProxyTyper  Ú_EMPTY_METADATA_SINGLETON)r    r–   r6   r7   r8   r9   r:   r;   r’   r=   r3   r<   r>   r?   r@   rA   rB   rC   rD   r·   Úbound_setattrs                        r!   r2  zAttribute.__init__Â	  s&  € ô, (BØ�’˜2˜yÒ1¨E°4ó(
Ñ$ˆˆF�E˜9ô
 %×,Ñ,¨TÓ2ˆñ 	�f˜dÔ#Ù�i Ô)Ù�k 9Ô-Ù�f˜dÔ#Ù�d˜BÔÙ�h Ô'Ù�g˜uÔ%Ù�k 9Ô-Ù�f˜dÔ#Ù�f˜dÔ#Ù�k 9Ô-ÙØñ ô ×&Ñ&¤t¨H£~Ô6ä.ô	
ñ 	�f˜dÔ#Ù�i Ô)Ù�k 9Ô-Ù�l JÔ/Ù�g˜uÔ%ÙØØ-Ð5ˆE�TˆMõ	
à;Kõ	
r#   c                ó   — t         ‚r/   )r   rë   s      r!   rê   zAttribute.__setattr__þ	  s   € Ü!Ð!r#   c                óÚ  — |€|j                   }n|j                   �d|› d�}t        |«      ‚ | ||j                  |j                  |j                  d |j
                  |j                  d|j                  ||j                  |j                  €|n|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d u «      S )Nz>Type annotation and type argument cannot both be present for 'z'.F)r3   rG   Ú_defaultÚ
_validatorr8   r:   r;   r=   r<   r>   r?   r@   rA   rB   rC   rD   )rŒ   r–   rÑ   r>   r3   rQ   s         r!   r¾   zAttribute.from_counting_attr
  sÉ   € ð ˆ<Ø—7‘7‰DØ�W‰WÐ ØRÐSWÐRXÐXZÐ[ˆCÜ˜S“/Ð!ÙØØ�K‰KØ�M‰MØ�G‰GØØ�G‰GØ�G‰GØØ�K‰KØØ�L‰LØ—z‘zÐ)‰G¨r¯z©zØ�E‰EØ�I‰IØ�H‰HØ�L‰LØ�M‰MØ�H‰HØ�H‰H˜Ðó'
ð 	
r#   c                ó<  — t        j                   | «      }|j                  |j                  «       «       d|v r!d|vrt        j	                  |«      dd«       |S d|v r>d|vr:| j
                  r.t        j	                  |«      dt        |j                  «      «       |S )a
  
        Copy *self* and apply *changes*.

        This works similarly to `attrs.evolve` but that function does not work
        with :class:`attrs.Attribute`.

        It is mainly meant to be used for `transform-fields`.

        .. versionadded:: 20.3.0
        rD   r·   Fr–   )ÚcopyÚ	_setattrsrº   rÃ   rÄ   r·   rÅ   r–   )r    rô   Únews      r!   r—   zAttribute.evolve$
  s–   € ô �i‰i˜‹oˆà�‰�g—m‘m“oÔ&à�gÑÐ"4¸GÑ"Cä× Ñ  Ó%Ð&8¸%Ô@ð ˆ
ð �gÑØ˜wÑ&à×%Ò%ô × Ñ  Ó%ØÔ0°·±Ó:ôð ˆ
r#   c                ó@   ‡ — t        ˆ fd„‰ j                  D «       «      S )ú(
        Play nice with pickle.
        c              3  ój   •K  — | ]*  }|d k7  rt        ‰|«      nt        ‰j                  «      –— Œ, y­w)r=   N)r•   r  r=   ©r±   r–   r    s     €r!   r³   z)Attribute.__getstate__.<locals>.<genexpr>H
  s5   øè ø€ ð 
á&�ð $(¨:Ò#5ŒG�D˜$Ô¼4ÀÇÁÓ;NÓNÙ&ùs   ƒ03©rL   rR  r   s   `r!   r  zAttribute.__getstate__D
  s#   ø€ ô ó 
àŸšó
ó 
ð 	
r#   c                óF  — t        |«      t        | j                  «      k  r[t        t        | j                  |«      «      }|j	                  d«      du xs  |j	                  d«      t        |d   «      k(  }g |¢|‘­}| j                  t        | j                  |«      «       y)r¬  rD   Nr–   )ra   rR  r  r‹  r¨   rÅ   r©  )r    rŒ  Ú
state_dictr·   s       r!   r  zAttribute.__setstate__M
  s›   € ô ˆu‹:œ˜DŸN™NÓ+Ò+ô œc $§.¡.°%Ó8Ó9ˆJØ)Ÿ~™~Øó àð ò  à#Ÿ™¨Ó0Ô4KØ˜6Ñ"ó5ñ ð ð
 /�eÐ.Ð-Ñ.ˆEà�‰”s˜4Ÿ>™>¨5Ó1Õ2r#   c           	     óº   — t         j                  | «      }|D ]A  \  }}|dk7  r
 |||«       Œ |||rt        j                  t	        |«      «      nt
        «       ŒC y )Nr=   )rÃ   rÄ   rŸ  r   r  r¡  )r    Úname_values_pairsr¢  r–   rì   s        r!   r©  zAttribute._setattrs^
  sY   € Ü$×,Ñ,¨TÓ2ˆÛ,‰KˆD�%Ø�zÒ!Ù˜d EÕ*áØñ !ô ×.Ñ.¬t°E«{Ô;ä6õñ	 -r#   )NNNFNNNNNNNr/   )r–   r„   rÑ   rO   r>   r  )r&   r'   r(   r)   rR  r2  rê   r^  r¾   r—   r  r  r©  r   r#   r!   r½   r½   }	  s‚   „ ñ+ð^€Ið> ØØØØØØØØØØó):
òx"ð à?Cð
Øð
Ø)ð
Ø48ò
ó ð
òDò@
ò3ó"r#   r½   r·   r=   )r–   r6   r7   r8   r9   r?   rA   r:   r;   r’   rD   )r{   r’   c                  ó|   — e Zd ZdZdZg  ed„ dD «       «      ¢ eddddddddddddddd¬	«      ‘­Zd
Zd„ Z	d„ Z
d„ Zy)rO   a  
    Intermediate representation of attributes that uses a counter to preserve
    the order in which the attributes have been defined.

    *Internal* data structure of the attrs library.  Running into is most
    likely the result of a bug like a forgotten `@attr.s` decorator.
    )r¥  r¦  rD   r<   r©   r?   r@   r:   r;   r>   r=   rC   rA   rB   r8   r3   c              #  ój   K  — | ]+  }t        |t        |«      t        d dd ddddd dd dd ¬«      –— Œ- y ­w)NTF©r–   rD   r6   r7   r8   r9   r:   r;   r>   r?   r@   rA   rB   r’   rC   )r½   rÅ   r   )r±   r–   s     r!   r³   z_CountingAttr.<genexpr>¤
  sX   è ø€ ð 
ñ$
�ô# ØÜ-¨dÓ3ÜØØØØØØØØØØØØ÷ð ñ"
ùs   ‚13)	r©   r¥  r8   r?   rA   r:   r;   rC   rD   r=   NTFr¶  r   c                ó2  — t         xj                  dz  c_        t         j                  | _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        y rµ   )rO   Úcls_counterr©   r¥  r¦  r<   r8   r?   r@   rA   rB   r:   r;   r=   r3   r>   rC   rD   )r    r6   r7   r8   r9   r:   r;   r<   r=   r3   r>   r?   r@   rA   rB   rC   rD   s                    r!   r2  z_CountingAttr.__init__Ö
  s‹   € ô& 	×!Ò! QÑ&Õ!Ü$×0Ñ0ˆŒØˆŒØ#ˆŒØ"ˆŒØˆŒ	ØˆŒØˆŒØˆŒ
Ø"ˆŒØˆŒ	ØˆŒ	Ø ˆŒØˆŒ	ØˆŒØ$ˆŒØˆ�
r#   c                óf   — | j                   €	|| _         |S t        | j                   |«      | _         |S )zŒ
        Decorator that adds *meth* to the list of validators.

        Returns *meth* unchanged.

        .. versionadded:: 17.1.0
        )r¦  rN   ©r    r¾  s     r!   r7   z_CountingAttr.validatorû
  s5   € ð �?‰?Ð"Ø"ˆDŒOð ˆô # 4§?¡?°DÓ9ˆDŒOØˆr#   c                óZ   — | j                   t        urt        ‚t        |d¬«      | _         |S )zæ
        Decorator that allows to set the default for an attribute.

        Returns *meth* unchanged.

        Raises:
            DefaultAlreadySetError: If default has been set before.

        .. versionadded:: 17.1.0
        T)rƒ  )r¥  r   r   rI   rº  s     r!   r6   z_CountingAttr.default	  s)   € ð �=‰=¤Ñ'Ü(Ð(ä °Ô6ˆŒàˆr#   )r&   r'   r(   r)   rR  rL   r½   r�   r¸  r2  r7   r6   r   r#   r!   rO   rO   ˆ
  s…   „ ñð€Ið$0Ù	ñ 
ñ$
ó%
ó 

ð0ñ> 	ØØØØØØØØØØØØØØØô	
ñ?0€Oðb €Kò#òJór#   rO   c                  ó~   — e Zd ZdZ G d„ dej
                  «      Z G d„ dej
                  «      ZdZd„ Z	e
d„ «       Zy	)
r¿   a¥  
    Effective class properties as derived from parameters to `attr.s()` or
    `define()` decorators.

    This is the same data structure that *attrs* uses internally to decide how
    to construct the final class.

    Warning:

        This feature is currently **experimental** and is not covered by our
        strict backwards-compatibility guarantees.


    Attributes:
        is_exception (bool):
            Whether the class is treated as an exception class.

        is_slotted (bool):
            Whether the class is `slotted <slotted classes>`.

        has_weakref_slot (bool):
            Whether the class has a slot for weak references.

        is_frozen (bool):
            Whether the class is frozen.

        kw_only (KeywordOnly):
            Whether / how the class enforces keyword-only arguments on the
            ``__init__`` method.

        collected_fields_by_mro (bool):
            Whether the class fields were collected by method resolution order.
            That is, correctly but unlike `dataclasses`.

        added_init (bool):
            Whether the class has an *attrs*-generated ``__init__`` method.

        added_repr (bool):
            Whether the class has an *attrs*-generated ``__repr__`` method.

        added_eq (bool):
            Whether the class has *attrs*-generated equality methods.

        added_ordering (bool):
            Whether the class has *attrs*-generated ordering methods.

        hashability (Hashability): How `hashable <hashing>` the class is.

        added_match_args (bool):
            Whether the class supports positional `match <match>` over its
            fields.

        added_str (bool):
            Whether the class has an *attrs*-generated ``__str__`` method.

        added_pickling (bool):
            Whether the class has *attrs*-generated ``__getstate__`` and
            ``__setstate__`` methods for `pickle`.

        on_setattr_hook (Callable[[Any, Attribute[Any], Any], Any] | None):
            The class's ``__setattr__`` hook.

        field_transformer (Callable[[Attribute[Any]], Attribute[Any]] | None):
            The class's `field transformers <transform-fields>`.

    .. versionadded:: 25.4.0
    c                  ó&   — e Zd ZdZdZ	 dZ	 dZ	 dZy)úClassProps.HashabilityzO
        The hashability of a class.

        .. versionadded:: 25.4.0
        ÚhashableÚhashable_cacheÚ
unhashableÚleave_aloneN)r&   r'   r(   r)   rò  r  ró  rñ  r   r#   r!   r  r¾  d  s)   „ ñ	ð ˆØ#Ø*ˆØ6Ø!ˆ
Ø+Ø#ˆØ'r#   r  c                  ó    — e Zd ZdZdZ	 dZ	 dZy)úClassProps.KeywordOnlyzw
        How attributes should be treated regarding keyword-only parameters.

        .. versionadded:: 25.4.0
        rÐ   ÚyesÚforceN)r&   r'   r(   r)   rÁ   rô  rÂ   r   r#   r!   rÀ   rÄ  t  s!   „ ñ	ð ˆØ.ØˆØQØˆØ.r#   rÀ   ©r!  r  r  r  r>   r  rè  rê  rë  rì  r  rí  rî  r&  r"  rÉ   c                óä   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        y r/   rÇ  )r    r!  r  r  r  r>   r  rè  rê  rë  rì  r  rí  rî  r&  r"  rÉ   s                    r!   r2  zClassProps.__init__•  s}   € ð& )ˆÔØ$ˆŒØ 0ˆÔØ"ˆŒØˆŒØ'>ˆÔ$Ø$ˆŒØ$ˆŒØ ˆŒØ,ˆÔØ&ˆÔØ 0ˆÔØ"ˆŒØ,ˆÔØ.ˆÔØ!2ˆÕr#   c                óž   — | j                   t        j                  j                  u xs& | j                   t        j                  j                  u S r/   )r  r¿   r  rò  r  r   s    r!   rõ  zClassProps.is_hashable¹  sC   € ð ×Ñ¤
× 6Ñ 6× ?Ñ ?Ð?ò JØ×Ñ¤:×#9Ñ#9×#IÑ#IÐIð	
r#   N)r&   r'   r(   r)   r*   ÚEnumr  rÀ   rR  r2  rr   rõ  r   r#   r!   r¿   r¿     sJ   „ ñBôH(�d—i‘iô (ô /�d—i‘iô /ð€Iò&"3ðH ñ
ó ñ
r#   r¿   c                  ó(   — e Zd ZdZdZdd„Zd„ Zd„ Zy)rI   a÷  
    Stores a factory callable.

    If passed as the default value to `attrs.field`, the factory is used to
    generate a new value.

    Args:
        factory (typing.Callable):
            A callable that takes either none or exactly one mandatory
            positional argument depending on *takes_self*.

        takes_self (bool):
            Pass the partially initialized instance that is being initialized
            as a positional argument.

    .. versionadded:: 17.1.0  *takes_self*
    ©rP   rƒ  c                ó    — || _         || _        y r/   rÌ  )r    rP   rƒ  s      r!   r2  zFactory.__init__ê  s   € ØˆŒØ$ˆ�r#   c                ó@   ‡ — t        ˆ fd„‰ j                  D «       «      S )r¬  c              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wr/   r‡  r®  s     €r!   r³   z'Factory.__getstate__.<locals>.<genexpr>ò  s   øè ø€ ÐD±^¨T”W˜T 4×(±^ùs   ƒr¯  r   s   `r!   r  zFactory.__getstate__î  s   ø€ ô ÓD°T·^²^ÓDÓDÐDr#   c                óZ   — t        | j                  |«      D ]  \  }}t        | ||«       Œ y)r¬  N)r‹  rR  rM  )r    rŒ  r–   rì   s       r!   r  zFactory.__setstate__ô  s)   € ô ˜tŸ~™~¨uÖ5‰KˆD�%Ü�D˜$ Õ&ñ 6r#   N)F)r&   r'   r(   r)   rR  r2  r  r  r   r#   r!   rI   rI   Õ  s   „ ñð$ *€Ió%òEó'r#   rI   )
r–   r6   r7   r8   r9   r?   rA   r:   r;   r’   c                  óH   — e Zd ZdZdZdddœd„Zedd„«       Zdd„Zd„ Z	d	„ Z
y
)rf  ae  
    Stores a converter callable.

    Allows for the wrapped converter to take additional arguments. The
    arguments are passed in the order they are documented.

    Args:
        converter (Callable): A callable that converts the passed value.

        takes_self (bool):
            Pass the partially initialized instance that is being initialized
            as a positional argument. (default: `False`)

        takes_field (bool):
            Pass the field definition (an :class:`Attribute`) into the
            converter as a positional argument. (default: `False`)

    .. versionadded:: 24.1.0
    )Ú__call__r†  Ú_global_namer<   Útakes_fieldrƒ  F©rƒ  rÔ  c               ó¼  ‡ — |‰ _         |‰ _        |‰ _        t        |«      }|j	                  «       ‰ _        ‰ j                  s‰ j                  sˆ fd„‰ _        nW‰ j                  r‰ j                  sˆ fd„‰ _        n4‰ j                  s‰ j                  rˆ fd„‰ _        n‰ j                   ‰ _        |j                  «       }|�|‰ j                  j                  d<   y y )Nc                ó&   •— ‰j                  | «      S r/   ©r<   )rì   r8  Ú__r    s      €r!   r¬   z$Converter.__init__.<locals>.<lambda>6  s   ø€ °·±ÀÔ1Fr#   c                ó(   •— ‰j                  | |«      S r/   rØ  )rì   ÚinstancerÙ  r    s      €r!   r¬   z$Converter.__init__.<locals>.<lambda>8  s   ø€ ¸¿¹Ø�xô9r#   c                ó(   •— ‰j                  | |«      S r/   rØ  )rì   rÙ  r­  r    s      €r!   r¬   z$Converter.__init__.<locals>.<lambda><  s   ø€ °T·^±^Ø�uô6r#   rš  )	r<   rƒ  rÔ  r   Úget_first_param_typer†  rÒ  Úget_return_typer€   )r    r<   rƒ  rÔ  ÚexÚrts   `     r!   r2  zConverter.__init__-  sµ   ø€ Ø"ˆŒØ$ˆŒØ&ˆÔä! )Ó,ˆØ!#×!8Ñ!8Ó!:ˆÔà—’ 4×#3Ò#3ÛFˆD�MØ�_Š_ T×%5Ò%5óˆD�Mð —’ T×%5Ò%5óˆD�Mð !ŸN™NˆDŒMà×ÑÓ!ˆØˆ>Ø68ˆD�M‰M×)Ñ)¨(Ò3ð r#   c                ó   — d| › �S )zh
        Return the name that a converter for an attribute name *attr_name*
        would have.
        Ú__attr_converter_r   )rw   s    r!   r…  zConverter._get_global_nameF  s   € ð # 9 +Ð.Ð.r#   c                ó>  — | j                   s#| j                  s| j                  |«      › d|› d�S | j                   r&| j                  r| j                  |«      › d|› d|› d�S | j                   r| j                  |«      › d|› d�S | j                  |«      › d|› d|› d�S )zÏ
        Return a string that calls the converter for an attribute name
        *attr_name* and the value in variable named *value_var* according to
        `self.takes_self` and `self.takes_field`.
        rA  r  z, self, attr_dict['z'])z, self)z, attr_dict[')rƒ  rÔ  r…  )r    rw   rc  s      r!   rh  zConverter._fmt_converter_callN  s¶   € ð —’ 4×#3Ò#3Ø×+Ñ+¨IÓ6Ð7°q¸¸À1ÐEÐEà�?Š?˜t×/Ò/Ø×+Ñ+¨IÓ6Ð7°q¸¸ÐCVÐW`ÐVaÐadÐeÐeà�?Š?Ø×+Ñ+¨IÓ6Ð7°q¸¸À7ÐKÐKà×'Ñ'¨	Ó2Ð3°1°Y°K¸}ÈYÈKÐWZÐ[Ð[r#   c                óJ   — | j                   | j                  | j                  dœS )zx
        Return a dict containing only converter and takes_self -- the rest gets
        computed when loading.
        ©r<   rƒ  rÔ  rå  r   s    r!   r  zConverter.__getstate___  s%   € ð Ÿ™ØŸ/™/Ø×+Ñ+ñ
ð 	
r#   c                ó(   —  | j                   di |¤Ž y)z+
        Load instance from state.
        Nr   ré  )r    rŒ  s     r!   r  zConverter.__setstate__j  s   € ð 	ˆ�‰Ñ˜Ór#   N)rw   r„   rš  r„   )rw   r„   rc  r„   rš  r„   )r&   r'   r(   r)   rR  r2  r_  r…  rh  r  r  r   r#   r!   rf  rf    s>   „ ñð(€Ið 16À5ô 9ð2 ò/ó ð/ó\ò"	
ór#   rå  c                óà  ‡— t        j                  d| «      } t        |t        «      r|}n<t        |t        t
        f«      r|D �ci c]  }|t        «       “Œ }}nd}t        |«      ‚|j                  dd«      }|j                  dd«      }	|j                  dd«      }
i Š|�‰j                  |«       |�|‰d<   |	�|	‰d<   |
�|
‰d<   t        j                  | |i ˆfd„«      }t        j                  t        t        «      5  t!        j"                  d«      j$                  j'                  d	d
«      |_        ddd«       |j                  dd«      }t+        ||j'                  d«      |j'                  d«      d«      \  |d<   |d<    t-        dd|i|¤Ž|«      }|j/                  «       D ��ci c]  \  }}|j0                  €Œ||j0                  “Œ! c}}|_        |S c c}w # 1 sw Y   ŒªxY wc c}}w )a  
    A quick way to create a new class called *name* with *attrs*.

    .. note::

        ``make_class()`` is a thin wrapper around `attr.s`, not `attrs.define`
        which means that it doesn't come with some of the improved defaults.

        For example, if you want the same ``on_setattr`` behavior as in
        `attrs.define`, you have to pass the hooks yourself: ``make_class(...,
        on_setattr=setters.pipe(setters.convert, setters.validate)``

    .. warning::

        It is *your* duty to ensure that the class name and the attribute names
        are valid identifiers. ``make_class()`` will *not* validate them for
        you.

    Args:
        name (str): The name for the new class.

        attrs (list | dict):
            A list of names or a dictionary of mappings of names to `attr.ib`\
            s / `attrs.field`\ s.

            The order is deduced from the order of the names or attributes
            inside *attrs*.  Otherwise the order of the definition of the
            attributes is used.

        bases (tuple[type, ...]): Classes that the new class will subclass.

        class_body (dict):
            An optional dictionary of class attributes for the new class.

        attributes_arguments: Passed unmodified to `attr.s`.

    Returns:
        type: A new class with *attrs*.

    .. versionadded:: 17.1.0 *bases*
    .. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained.
    .. versionchanged:: 23.2.0 *class_body*
    .. versionchanged:: 25.2.0 Class names can now be unicode.
    ÚNFKCz(attrs argument must be a dict or a list.r  Nr  r2  c                ó&   •— | j                  ‰«      S r/   )r6  )r{  rv   s    €r!   r¬   zmake_class.<locals>.<lambda>Î  s   ø€ ¸¿	¹	À$¼r#   r
   r&   Ú__main__r9   r?   rA   TrÆ   r   )ÚunicodedataÚ	normalizerJ   r  rK   rL   rR   rF   Úpopr6  rŸ  Ú	new_classrI  rJ  rK  rG   rT  Ú	_getframeÚ	f_globalsr¨   r'   rÙ  rû   rº   r3   r€   )r–   r{   ÚbasesÚ
class_bodyÚattributes_argumentsrx  rŸ   rQ   rZ  r\  Ú	user_initrN  r9   rŒ   rc  rd  rv   s                   @r!   Ú
make_classrõ  †  sò  ø€ ô` × Ñ  ¨Ó.€Dä�%œÔØ‰Ü	�EœD¤%˜=Ô	)Ù).Ó/© A�A”v“x‘K¨ˆÑ/à8ˆÜ˜‹nÐà�|‰|Ð0°$Ó7€HØ—‘Ð2°DÓ9€IØ—‘˜Z¨Ó.€Ià€DØÐØ�‰�JÔØÐØ%-ˆÐ!Ñ"ØÐØ&/ˆÐ"Ñ#ØÐØ$ˆˆZÑä�O‰O˜D %¨Ó-GÓH€Eô 
×	Ñ	œ^¬ZÕ	8ÜŸ=™=¨Ó+×5Ñ5×9Ñ9Ø˜
ó
ˆÔ÷ 
9ð ×
"Ñ
" 5¨$Ó
/€Cô 	"ØØ× Ñ  Ó&Ø× Ñ  Ó)Øó		ñØ˜TÑ"Ø˜WÑ%ð 9Œ&Ñ
8�xÐ
8Ð#7Ñ
8¸Ó
?€Cð 'Ÿn™nÔ.ôÙ.‘d�a˜°!·&±&Ñ2Dˆˆ1�6‰6‰	Ð.ò€CÔð €Jùò_ 0÷2 
9Ð	8üó&s   ÁGÄ 5GÆ*G*Æ?G*ÇG')r  r  c                  ó$   — e Zd ZdZ e«       Zd„ Zy)Ú_AndValidatorz2
    Compose many validators to a single one.
    c                ó:   — | j                   D ]  } ||||«       Œ y r/   )Ú_validators)r    rõ   r²   rì   rd  s        r!   rÒ  z_AndValidator.__call__ù  s   € Ø×!Ô!ˆAÙˆd�D˜%Õ ñ "r#   N)r&   r'   r(   r)   rR   rù  rÒ  r   r#   r!   r÷  r÷  ñ  s   „ ññ “(€Kó!r#   r÷  c                 ó˜   — g }| D ]0  }|j                  t        |t        «      r|j                  n|g«       Œ2 t        t	        |«      «      S )a  
    A validator that composes multiple validators into one.

    When called on a value, it runs all wrapped validators.

    Args:
        validators (~collections.abc.Iterable[typing.Callable]):
            Arbitrary number of validators.

    .. versionadded:: 17.1.0
    )rÝ   rJ   r÷  rù  rL   )Ú
validatorsr—  r7   s      r!   rN   rN   þ  sJ   € ð €DÛˆ	Ø�‰ä˜)¤]Ô3ð ×!Ò!à�õ	
ð  ô œ˜t›Ó%Ð%r#   c                 óº  ‡ — t        d„ ‰ D «       «      }|rˆ fd„}nˆ fd„}‰ s*t        d«      }|j                  j                  ||dœ«       n~t	        ‰ d   «      j                  «       }|r||j                  d<   ‰ d   }t        st        |t        «      r|j                  }t	        |«      j                  «       }|r||j                  d	<   |rt        |d
d
¬«      S |S )a…  
    A converter that composes multiple converters into one.

    When called on a value, it runs all wrapped converters, returning the
    *last* value.

    Type annotations will be inferred from the wrapped converters', if they
    have any.

        converters (~collections.abc.Iterable[typing.Callable]):
            Arbitrary number of converters.

    .. versionadded:: 20.1.0
    c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr/   ©rJ   rf  )r±   Úcs     r!   r³   zpipe.<locals>.<genexpr>%  s   è ø€ ÐG¹J°qœ* Q¬	×2¹Jùs   ‚c                óZ   •— ‰D ]$  }t        |t        «      r
 || ||«      n || «      } Œ& | S r/   rþ  )rÈ  rõ   r­  rÿ  Ú
converterss       €r!   Úpipe_converterzpipe.<locals>.pipe_converter)  s4   ø€ Û�ä+5°a¼Ô+C‘A�c˜4 Ô'ÉÈ3Ëñ ð  ð
 ˆJr#   c                ó&   •— ‰D ]
  } || «      } Œ | S r/   r   )rÈ  rÿ  r  s     €r!   r  zpipe.<locals>.pipe_converter3  s   ø€ Û�Ù˜“f‘ð  ð ˆJr#   ÚA)rÈ  rš  r   rÈ  r^   rš  TrÕ  )r×  r	   r€   r6  r   rÝ  r   rJ   rf  rÒ  rÞ  )r  Úreturn_instancer  r  ÚtÚlastrà  s   `      r!   rM   rM     sÓ   ø€ ô  ÑG¹JÓGÓG€Oáõ	ô	ñ ä�C‹LˆØ×&Ñ&×-Ñ-°aÀ1Ñ.EÕFô ! ¨A¡Ó/×DÑDÓFˆÙØ45ˆN×*Ñ*¨5Ñ1à˜"‰~ˆÝ¤
¨4´Ô ;Ø—=‘=ˆDô " $Ó'×7Ñ7Ó9ˆÙØ79ˆN×*Ñ*¨8Ñ4áÜ˜°DÀdÔKÐKØÐr#   )Nrz  )
rW   r„   rX   údict[str, Any] | NonerY   úMapping[str, object] | NonerZ   r„   rš  r›  r/   )
rW   r„   rZ   r„   rX   r  rf   r	  rš  zdict[str, Any])rs   r„   rt   z	list[str]rš  r3   )rš  z'tuple[list[Attribute], dict[str, type]])rš  rz   )T)NNNNNNNFFTFFFFFNNFFNNNTNT)rŒ   r3   r  r„   rš  r„   )
rŒ   r3   r{   r|   r–  r  r—  r  rš  útuple[str, dict])rŒ   r3   r{   r|   )r{   rK   rš  r
  )rš  r
  )NN)rš  útuple[str, dict, dict]rv  rw  )rw   r„   rì   r„   rd  r  rš  r„   )r–  r  r  r  r�   r~   )r{   r|   r  r  r  r  r‡  r  r[  r  rˆ  r  r‰  r  r�   r~   rö  r  r_  r  r^  r  rŠ  r„   rš  r  )r–   r„   rš  r„   )nÚ
__future__r   rC  rI  r¨  r*   r  r[  rc   rT  rŸ  rë  r?  Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   r	   rz  r   r   r   r   r   r   r   r   r   Ú
exceptionsr   r   r   r   Úobjectrê   rÃ   r„  r‡   rZ  r   r¡  rH  rM   r%  r$  r#  rÊ  r   r   Úintr-   rR   r\   rk   rx   rz   r‰   rŽ   r¢   r¤   rÕ   râ   rí   rð   r—   rø   rÙ  rE   rã  r{   rû   rï  rÞ   rœ  r'  r¹  rº  rÃ  r=  rz  rJ  rò   rP  rU  r¦  re  rj  rl  rn  rx  rX  rÅ   r½   rR  Ú_ar–   r:   rO   r¿   Ú_casrI   Ú_frf  rõ  r÷  rN   )r–   rŸ   s   00r!   Ú<module>r     s°  ðõ #ã 
Û Û Û Û Û Û Û 
Û Û Û ç -Ý %ß +Ñ +÷ (Ñ '÷÷ ÷ó ð ×!Ñ!€Ø'Ð ðÐ ð )Ð à2˜E×2Ñ2°2Ó6Ð ñ ‹H€	à"�g—l‘l 7§?¡?°G×4DÑ4DÓEÐ ôˆt�y‰yô ð( ×
Ñ
€ðô(˜ô (ð" ØØ	ØØ	Ø	ØØ	ØØØØØ
ØØ
ókðb )-Øð	 Øð à ð ð &ð ð ð	 ð
 
ó ð$ +/ð	 Øð àð ð !ð ð (ð	 ð
 ó óF1ô.$�*ô $ò0ò"'ð#à,ó#òB%ð8}Eð ó}Eò@1òhò"ò7÷tD	ñ D	òNò8((ðX .2óð6 Ø
ØØ	ØØ	Ø	Ø
ØØØØØØØØØ
ØØØØØØØØó3BðJ 
€ðò/óðEØ	ðEØ%ðEØ/3ðEØAEðEàóEóPò	ó"òJ5*ópó"6#órò0òf&ò:.ò$/ðB&ð óB&óJ3ð]Øð]Ø"ð]Ø48ð]ØENð]àó]ó)ð
WØð
WØ"ð
WØ48ð
WØENð
Wàó
Wð,/Øð,/Øð,/Ø.=ó,/ð^EØðEàðEð ðEð ð	Eð
 ðEð ðEð ðEð #ðEð ðEð ðEð ðEð ðEð óEóP÷nñ nð~ ×#Ò#óñ $ˆñ ØØØØÐ(Ñ(ØØØØ�jÑ ØØÙ% dÓ+öð $ñ€ñ" ÙÙ�) 2Ô&ÙÓ6™"�Q §¡¨+Ó 5Šq˜"Ñ6ôñ Ó
=‘b�˜AŸF›F q§v¡v°Ó'<Š1�bÑ
=ô€	÷Qñ Qñh ™	 -Ó0Ó1€÷_
ñ _
ð` ×$Ò$óñ %ˆñ ØØØØØØØØØØÙ% dÓ+öð %ñ€ñ" ‘Y˜z°Ô6¸dÔC€
÷$'ñ $'ðh ×!Ò!óñ "ˆñ ØØØØØØØØØØöð "ñ€ñ  ‘G™I g°RÔ8ÀÔCÈ2Ô
N€÷_ñ _ñ^ ;óñ ;ˆñ ØØØØØØØØØØöð ;ñ€ñ  Ù‰I�i rÔ*°"Ô5¸Rô€	ð �y¨TódñV ˆT˜tÔ$÷	!ð 	!ó %ð	!ò&ó.9ùòOùò( 7ùâ
=ùòz	ùòvùòjs6   È0&OÉ*OÉ?OÊO"
Ê O"
Ê0O"
Ë, O'Ì9O,Í=O1