+
    Q�i;D  ã                  ót  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHtHtHtHtHt ]P*                  R,8  d   ^ RIHt M^ RIHt ^R	IHtHtHtHt ^R
IHt ]P>                  ! R. R-O4      t R t!R t"R t#]! RR7       ! R R]$4      4       t%R R lt&R t'R t(R R lt)R t*]! R4      t+]! R4      t,]! RR7       ! R R]$4      4       t-]! RR7       ! R  R!]$4      4       t.]]/.R3,          t0R"t1R#]2R$&   R% R& lt3]! RR7       ! R' R(]$4      4       t4]! 4       t5R) t6 ! R* R+]$4      t7R# ).é    )ÚannotationsN)Ú	dataclassÚfield©Úwraps)Úgetfullargspec)Úcount)ÚAnyÚCallableÚHashableÚIterableÚTypeVar)Ú	TypeAlias)Ú	AutomatonÚOutputTracerÚTracerÚTransitioner)ÚpreserveNameÚArgSpecc                ó˜  € \        V 4      p\        \        VP                  4      VP                  VP
                  VP                  '       d   VP                  MR\        VP                  4      VP                  '       d$   \        VP                  P                  4       4      MR\        VP                  P                  4       4      R7      # )z¹
Normalize inspect.ArgSpec across python versions
and convert mutable attributes to immutable types.

:param Callable func: A function.
:return: The function's ArgSpec.
:rtype: ArgSpec
©ÚargsÚvarargsÚvarkwÚdefaultsÚ
kwonlyargsÚkwonlydefaultsr   © )ÚgetArgsSpecr   Útupler   r   r   r   r   r   Úitemsr   )ÚfuncÚspecs   & Ú5/usr/lib/python3/dist-packages/automat/_methodical.pyÚ_getArgSpecr%   "   s�   € ô �tÓ€DÜÜ�4—9‘9ÓØ—‘Ø�j‰jØ"&§-§- -�—’°RÜ˜Ÿ™Ó)à26×2E×2EÐ2EŒE�$×%Ñ%×+Ñ+Ó-Ô.È2ä˜$×*Ñ*×0Ñ0Ó2Ó3ô
ð 
ó    c                óX  € \        V P                  V P                  ,           V P                  '       d   RMR,           V P                  '       d   RMR,           \
        ;QJ d(    . R V P                   4       F  NK  	  5,           4      # ! R V P                   4       4      ,           4      # )aÆ  
Get the name of all arguments defined in a function signature.

The name of * and ** arguments is normalized to "*args" and "**kwargs".

Return type annotations are omitted, since we don't constrain input methods
to have the same return type as output methods, nor output methods to have
the same output type.

:param ArgSpec spec: A function to interrogate for a signature.
:return: The set of all argument names in `func`s signature.
:rtype: Set[str]
c              3  óD   "  € T F  q^ ,          R8w  g   K  Vx € K  	  R# 5i)r   ÚreturnNr   )Ú.0Úas   & r$   Ú	<genexpr>Ú_getArgNames.<locals>.<genexpr>L   s   é € Ð@Ñ+�a°­t°xÑ/?—’Ó+ùs   ‚ –
 )z*argsr   )z**kwargs)Úsetr   r   r   r   r    r   )r#   s   &r$   Ú_getArgNamesr/   9   s�   € ô Ø�	‰	Ø
�/‰/õ	àŸŸ˜‰:¨2õ	/ð !ŸJŸJ˜J‰=¨Bõ	0÷ Œ%Ñ@˜4×+Ò+Ó@�%õ		Aóð ð
 Ñ@˜4×+Ò+Ó@Ó
@õ		Aóð r&   c                ó0   a € \        S 4      V 3R l4       pV# )zþ
Decorate a function so all its arguments must be passed by keyword.

A useful utility for decorators that take arguments so that they don't
accidentally get passed the thing they're decorating as their first
argument.

Only works for methods right now.
c                ó   <€ S! V 3/ VB # ©Nr   )ÚselfÚkwÚfs   &,€r$   ÚgÚ_keywords_only.<locals>.g[   s   ø€ á�‰}˜‰}Ðr&   r   )r5   r6   s   f r$   Ú_keywords_onlyr8   P   s"   ø€ ô ˆ1ƒXôó ðð €Hr&   T)Úfrozenc                  óŽ   € ] tR t^bt$ Rt]! RR7      tR]R&   ]! 4       tR]R&   ]! RR7      t	R]R	&   R
R
]
3R R lltR R ltRtR
# )ÚMethodicalStatez%
A state for a L{MethodicalMachine}.
F©ÚreprÚMethodicalMachineÚmachineúCallable[..., Any]ÚmethodÚboolÚ
serializedNc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )é   ÚinputÚMethodicalInputÚenterzMethodicalState | NoneÚoutputsz!Iterable[MethodicalOutput] | NoneÚ	collectorzCallable[[Iterable[T]], object]r)   ÚNoner   )Úformats   "r$   Ú__annotate__ÚMethodicalState.__annotate__l   sC   € ÷ .Lñ .Làð.Lð &ð.Lð 3ð	.Lð
 3ð.Lð 
ñ.Lr&   c                óÄ  € Vf   T pVf   . p\        VP                  4      pV F›  p\        VP                  4      pVP                  V4      '       d   K1  \        RP	                  VP
                  P                  VP
                  P                  \        VP
                  4      \        VP
                  4      R7      4      h	  V P                  P                  WW#V4       R# )a�  
Declare a state transition within the L{MethodicalMachine} associated
with this L{MethodicalState}: upon the receipt of the `input`, enter
the `state`, emitting each output in `outputs`.

@param input: The input triggering a state transition.

@param enter: The resulting state.

@param outputs: The outputs to be triggered as a result of the declared
    state transition.

@param collector: The function to be used when collecting output return
    values.

@raises TypeError: if any of the `outputs` signatures do not match the
    `inputs` signature.

@raises ValueError: if the state transition from `self` via `input` has
    already been defined.
Nzdmethod {input} signature {inputSignature} does not match output {output} signature {outputSignature})rF   ÚoutputÚinputSignatureÚoutputSignature)
r/   ÚargSpecÚissubsetÚ	TypeErrorrL   rA   Ú__name__r   r?   Ú_oneTransition)r3   rF   rH   rI   rJ   Ú	inputArgsrP   Ú
outputArgss   &&&&&   r$   ÚuponÚMethodicalState.uponl   sº   € ð8 Š=ØˆEØŠ?ØˆGÜ  §¡Ó/ˆ	ÛˆFÜ% f§n¡nÓ5ˆJØ×&Ñ& y×1Ô1Üð2ç28±&Ø#Ÿl™l×3Ñ3Ø%Ÿ}™}×5Ñ5Ü'2°5·<±<Ó'@Ü(3°F·M±MÓ(Bð	 39ó 3ó	ð 	ñ ð 	�‰×#Ñ# D°ÀÖKr&   c               ó   € V ^8„  d   QhRR/# ©rE   r)   Ústrr   )rL   s   "r$   rM   rN   œ   ó   € ÷ $ñ $�sñ $r&   c                	ó.   € V P                   P                  # r2   ©rA   rV   ©r3   s   &r$   Ú_nameÚMethodicalState._nameœ   ó   € Ø�{‰{×#Ñ#Ð#r&   r   )rV   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r?   Ú__annotations__rA   rC   ÚlistrZ   rc   Ú__static_attributes__r   r&   r$   r;   r;   b   sQ   ‡ ññ "'¨EÔ!2€GÐÓ2Ù!&£€FÐÓ(Ù %Ô(€J�Ó(ð
 )-Ø59Ø59÷.L÷`$ñ $r&   r;   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rE   ÚoselfÚobjectÚsymbolr^   Ú	automatonú=Automaton[MethodicalState, MethodicalInput, MethodicalOutput]r)   z@Transitioner[MethodicalState, MethodicalInput, MethodicalOutput]r   )rL   s   "r$   rM   rM       s2   € ÷ ñ Øðàðð Mðð Fñ	r&   c                ój   € \        WR4      pVf#   \        VVP                  4      p\        WV4       V# )z
Get a L{Transitioner}
N)Úgetattrr   ÚinitialStateÚsetattr)rn   rp   rq   Útransitioners   &&& r$   Ú_transitionerFromInstancerx       s>   € ô ˜5¨$Ó/€LØÒÜ#ØØ×"Ñ"ó
ˆô 	�˜|Ô,ØÐr&   c                 ó   € R # r2   r   r   r&   r$   Ú_emptyrz   ²   s   € Ùr&   c                 ó   € R# )Ú	docstringNr   r   r&   r$   Ú
_docstringr}   ¶   s   ‚ r&   c               ó    € V ^8„  d   QhRRRR/# )rE   r5   r@   r)   rK   r   )rL   s   "r$   rM   rM   º   s   € ÷ 8ñ 8Ð&ð 8¨4ñ 8r&   c                ó¶   € V P                   P                  \        P                   P                  \        P                   P                  39  d   \	        R 4      hR# )zfunction body must be emptyN)Ú__code__Úco_coderz   r}   Ú
ValueError)r5   s   &r$   ÚassertNoCoderƒ   º   sC   € ð 	‡z�z×Ñ¤&§/¡/×"9Ñ"9¼:×;NÑ;N×;VÑ;VÐ!WÔWÜÐ6Ó7Ð7ñ Xr&   c                óÀ  € \        \        VP                  R,          V 4      4      pVP                  '       d   T pM'V UUu. uF  w  rgWcP                  9   g   K  VNK  	  ppp\        V4      pV F  w  ršW‰V
3,          pK  	  \        VP                  RRR1,          VP                  RRR1,          4      pV UUu/ uF  w  rgWh9  g   K  WgbK  	  pppVP                  V4       VP                  '       d   TpW]3# VP                  R,          VP                  ,           pVP                  4        UUu/ uF  w  rgWn9   g   K  WgbK  	  pppW]3# u uppi u uppi u uppi )af  
Filter out arguments that were passed to input that output won't accept.

:param tuple args: The *args that input received.
:param dict kwargs: The **kwargs that input received.
:param ArgSpec inputSpec: The input's arg spec.
:param ArgSpec outputSpec: The output's arg spec.
:return: The args and kwargs that output will accept.
:rtype: Tuple[tuple, dict]
:é   NNNéÿÿÿÿ)	r    Úzipr   r   r   Úupdater   r   r!   )r   ÚkwargsÚ	inputSpecÚ
outputSpecÚ
named_argsÚreturn_argsÚnÚvÚpassed_arg_namesÚnameÚvaluer   Úfull_kwargsÚreturn_kwargsÚall_accepted_namess   &&&&           r$   Ú_filterArgsr–   Ê   sQ  € ô ”s˜9Ÿ>™>¨"Õ-¨tÓ4Ó5€JØ××Ðà‰ñ &0ÔH¡Z™T˜Q°1¿¹Ñ3G—q�q¡ZˆÑHô ˜V“}ÐÛ!‰ˆØ 5˜MÕ)Òñ "ä�9—>‘>¡$ B $Õ'¨×);Ñ);¹D¸b¸DÕ)AÓB€HÙ$,ÔJ¡H™D˜A°Ñ0I”4�1’4¡H€KÑJØ×Ñ�vÔà××Ðà#ˆð Ð%Ð%ð (Ÿ_™_¨RÕ0°:×3HÑ3HÕHÐà(×.Ñ.Ô0ô
Ù0‘T�Q°AÑ4KŒDˆAŠDÑ0ð 	ñ 
ð Ð%Ð%ùó) Iùó Kùó
s$   ÁEÁEÂ<
EÃEÄ3
EÅEÚTÚRF)Úeqc                  óÐ   € ] tR t^÷t$ Rt]! RR7      tR]R&   ]! 4       tR]R&   ]! RR7      t	R]R	&   ]! ]
RR
7      tR]R&   ]! RRR7      tR]R&   R R ltRR R lltR R ltRtR# )rG   z&
An input for a L{MethodicalMachine}.
Fr<   rr   rq   r@   rA   r^   rp   )Údefault_factoryr=   z1dict[MethodicalState, Callable[[Iterable[T]], R]]Ú
collectors)Úinitr=   r   rS   c               ó   € V ^8„  d   QhRR/# ©rE   r)   rK   r   )rL   s   "r$   rM   ÚMethodicalInput.__annotate__  s   € ÷ "ñ "˜tñ "r&   c                	ód   € \        V P                  4      V n        \        V P                  4       R # r2   )r%   rA   rS   rƒ   rb   s   &r$   Ú__post_init__ÚMethodicalInput.__post_init__  s   € Ü" 4§;¡;Ó/ˆŒÜ�T—[‘[Ö!r&   Nc               ó$   € V ^8„  d   QhRRRRRR/# )rE   rn   ro   ÚtyperK   r)   r   )rL   s   "r$   rM   r      s!   € ÷ ñ ˜Vð ¨4ð ¸6ñ r&   c                óÄ   a aa€ \        SS P                  S P                  4      o\        S P                  4      \        S P                  4      R VV V3R ll4       4       pV# )z¡
Return a function that takes no arguments and returns values returned
by output functions produced by the given L{MethodicalInput} in
C{oself}'s current state.
c               ó$   € V ^8„  d   QhRRRRRR/# )rE   r   ro   r‰   r)   r   )rL   s   "r$   rM   Ú-MethodicalInput.__get__.<locals>.__annotate__  s!   € ÷ 	%ñ 	%˜6ð 	%¨Vð 	%¸ñ 	%r&   c                 óR  <€ SP                   ! S.V O5/ VB  SP                  pSP                  S4      w  r4SP                  V,          p. pV FO  pVe	   V! V4       \	        WSP
                  VP
                  4      w  r‰V! S.VO5/ V	B p
VP                  V
4       KQ  	  V! V4      # r2   )rA   Ú_stateÚ
transitionrœ   r–   rS   Úappend)r   r‰   ÚpreviousStaterI   Ú	outTracerrJ   ÚvaluesrP   r+   Úkr’   rn   r3   rw   s   *,         €€€r$   ÚdoInputÚ(MethodicalInput.__get__.<locals>.doInput  s©   ø€ ð �KŠK˜Ð/ Ò/¨Ò/Ø(×/Ñ/ˆMØ#/×#:Ñ#:¸4Ó#@Ñ ˆWØŸ™¨Õ6ˆIØˆFÛ!�ØÒ(Ù˜fÔ%Ü" 4°·±¸v¿~¹~ÓN‘�Ù˜uÐ. qÒ.¨AÑ.�Ø—‘˜eÖ$ñ "ñ ˜VÓ$Ð$r&   )rx   rp   rq   r   rA   r   )r3   rn   r¥   r±   rw   s   ff& @r$   Ú__get__ÚMethodicalInput.__get__  sS   ú€ ô 1°¸¿¹ÀTÇ^Á^ÓTˆä	�d—k‘kÓ	"Ü	ˆt�{‰{Ó	÷	%ñ 	%ó 
ó 
#ð	%ð ˆr&   c               ó   € V ^8„  d   QhRR/# r]   r   )rL   s   "r$   rM   r    &  r_   r&   c                	ó.   € V P                   P                  # r2   ra   rb   s   &r$   rc   ÚMethodicalInput._name&  re   r&   )rS   r2   )rV   rf   rg   rh   ri   r   rq   rj   rA   rp   Údictrœ   rS   r¢   r³   rc   rl   r   r&   r$   rG   rG   ÷   s~   ‡ ññ PUØôP€IÐLó ñ "'£€FÐÓ(Ù˜UÔ#€FˆCÓ#ÙDIØ 5ôE€JÐAó ñ  %¨eÔ4€GˆWÓ4õ"÷÷4$ñ $r&   rG   c                  óŠ   € ] tR tRt$ Rt]! RR7      tR]R&   R]R&   ]! RRRR	7      tR
]R&   R R lt	RR lt
R tR R ltRtR# )ÚMethodicalOutputi*  z'
An output for a L{MethodicalMachine}.
Fr<   r>   r?   r@   rA   )r�   r=   Úcomparer   rS   c               ó   € V ^8„  d   QhRR/# rŸ   r   )rL   s   "r$   rM   ÚMethodicalOutput.__annotate__4  s   € ÷ <ñ <˜tñ <r&   c                	óJ   € \        V P                  4      V P                  R &   R# )rS   N)r%   rA   Ú__dict__rb   s   &r$   r¢   ÚMethodicalOutput.__post_init__4  s   € Ü#.¨t¯{©{Ó#;ˆ�‰�iÓ r&   Nc                óv   € \        RP                  VP                  V P                  P                  R7      4      h)zH
Outputs are private, so raise an exception when we attempt to get one.
zf{cls}.{method} is a state-machine output method; to produce this output, call an input method instead.)ÚclsrA   )ÚAttributeErrorrL   rV   rA   ©r3   rn   r¥   s   &&&r$   r³   ÚMethodicalOutput.__get__7  s<   € ô ðDßDJÁFØ—M‘M¨$¯+©+×*>Ñ*>ð EKó Eó
ð 	
r&   c                ó.   € V P                   ! V.VO5/ VB # )z
Call the underlying method.
)rA   )r3   rn   r   r‰   s   &&*,r$   Ú__call__ÚMethodicalOutput.__call__B  s   € ð �{Š{˜5Ð2 4Ò2¨6Ñ2Ð2r&   c               ó   € V ^8„  d   QhRR/# r]   r   )rL   s   "r$   rM   r½   H  r_   r&   c                	ó.   € V P                   P                  # r2   ra   rb   s   &r$   rc   ÚMethodicalOutput._nameH  re   r&   r   r2   )rV   rf   rg   rh   ri   r   r?   rj   rS   r¢   r³   rÇ   rc   rl   r   r&   r$   rº   rº   *  sK   ‡ ññ "'¨EÔ!2€GÐÓ2ØÓÙ %¨e¸UÔC€GˆWÓCõ<ô	
ò3÷$ñ $r&   rº   z4Callable[[str, str, str], StringOutputTracer | None]r   ÚStringTracerc               ó    € V ^8„  d   QhRRRR/# )rE   ÚwrappedúStringTracer | Noner)   zATracer[MethodicalState, MethodicalInput, MethodicalOutput] | Noner   )rL   s   "r$   rM   rM   P  s   € ÷ ñ Ø ðàFñr&   c                ó&   a € S f   R # R V 3R llpV# )Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )rE   Ústater;   rF   rG   rP   r)   z%OutputTracer[MethodicalOutput] | Noner   )rL   s   "r$   rM   Ú wrapTracer.<locals>.__annotate__V  s0   € ÷ ñ Øðàðð  ðð 
/ñ	r&   c                ó†   <a€ S! V P                  4       VP                  4       VP                  4       4      oSe   V3R l# R # )Nc                ó0   <€ S! V P                  4       4      # r2   ©rc   )ÚoutÚresults   &€r$   Ú<lambda>Ú,wrapTracer.<locals>.tracer.<locals>.<lambda>]  s   ø€ ™v c§i¡i£kÔ2r&   rÖ   )rÒ   rF   rP   rØ   rÎ   s   &&&@€r$   ÚtracerÚwrapTracer.<locals>.tracerV  s4   ù€ ñ
 ˜Ÿ™›¨¯©«°v·|±|³~ÓFˆØÒÜ2Ð2Ùr&   r   )rÎ   rÛ   s   f r$   Ú
wrapTracerrÝ   P  s   ø€ ð ‚Ù÷ð ð €Mr&   c                  ó`   € ] tR tRt$ ]! RR7      tR]R&   ]! RR7      tR]R&   RR	 R
 lltRt	R# )ÚMethodicalTraceric  Fr<   rr   rq   r^   rp   Nc               ó$   € V ^8„  d   QhRRRRRR/# )rE   rn   ro   r¥   r)   zCallable[[StringTracer], None]r   )rL   s   "r$   rM   ÚMethodicalTracer.__annotate__j  s$   € ÷ ñ ØðØ#)ðà	'ñr&   c                	óZ   a€ \        WP                  V P                  4      oR  V3R llpV# )c               ó    € V ^8„  d   QhRRRR/# )rE   rÛ   rÏ   r)   rK   r   )rL   s   "r$   rM   Ú.MethodicalTracer.__get__.<locals>.__annotate__o  s   € ÷ 	6ñ 	6Ð0ð 	6°Tñ 	6r&   c                ó<   <€ SP                  \        V 4      4       R # r2   )ÚsetTracerÝ   )rÛ   rw   s   &€r$   ræ   Ú*MethodicalTracer.__get__.<locals>.setTraceo  s   ø€ Ø×!Ñ!¤*¨VÓ"4Ö5r&   )rx   rp   rq   )r3   rn   r¥   ræ   rw   s   &&& @r$   r³   ÚMethodicalTracer.__get__j  s*   ø€ ô 1°¿¹ÀTÇ^Á^ÓTˆ÷	6ð 	6ð ˆr&   r   r2   )
rV   rf   rg   rh   r   rq   rj   rp   r³   rl   r   r&   r$   rß   rß   c  s3   ‡ áOTØôP€IÐLó ñ ˜UÔ#€FˆCÓ#÷ó r&   rß   c                 ó@   € R\        \        \        4      4      ,           # )z$
Create a unique Python identifier.
Ú_symbol_)r^   ÚnextÚcounterr   r&   r$   Úgensymrí   x  s   € ð œœD¤›MÓ*Õ*Ð*r&   c                  ó¦   € ] tR tRtRtR tRR lt]RR R ll4       t]R 4       t	]R	 4       t
R
 t]R 4       t]R 4       t]R R l4       tR tRtR# )r>   i  zY
A L{MethodicalMachine} is an interface to an L{Automaton} that uses methods
on a class.
c                	óP   € \        4       V n        / V n        \        4       V n        R # r2   )r   Ú
_automatonÚ	_reducersrí   Ú_symbolrb   s   &r$   Ú__init__ÚMethodicalMachine.__init__…  s   € Ü#›+ˆŒØˆŒÜ“xˆŽr&   Nc                ó$   € Ve   \        R4      hV # )z�
L{MethodicalMachine} is an implementation detail for setting up
class-level state; applications should never need to access it on an
instance.
z.MethodicalMachine is an implementation detail.)rÃ   rÄ   s   &&&r$   r³   ÚMethodicalMachine.__get__Š  s   € ð ÒÜ Ð!QÓRÐRØˆr&   c               ó$   € V ^8„  d   QhRRRRRR/# )rE   ÚinitialrB   ÚterminalrC   r   r   )rL   s   "r$   rM   ÚMethodicalMachine.__annotate__•  s$   € ÷ ñ ØðØ/3ðØIQñr&   c                ó   a aa€ VV V3R lpV# )a…  
Declare a state, possibly an initial state or a terminal state.

This is a decorator for methods, but it will modify the method so as
not to be callable any more.

@param initial: is this state the initial state?  Only one state on
    this L{automat.MethodicalMachine} may be an initial state; more
    than one is an error.

@param terminal: Is this state a terminal state?  i.e. a state that the
    machine can end up in?  (This is purely informational at this
    point.)

@param serialized: a serializable value to be used to represent this
    state to external systems.  This value should be hashable; L{str}
    is a good type to use.
c                óV   <€ \        SV SR 7      pS'       d   VSP                  n        V# ))r?   rA   rC   )r;   rð   ru   )ÚstateMethodrÒ   rø   r3   rC   s   & €€€r$   Ú	decoratorÚ*MethodicalMachine.state.<locals>.decorator«  s*   ø€ Ü#Ø [¸ZôˆE÷ Ø/4�—‘Ô,ØˆLr&   r   )r3   rø   rù   rC   rþ   s   ff&f r$   rÒ   ÚMethodicalMachine.state”  s   ú€ ÷.	ð Ðr&   c                ó   a € V 3R lpV# )z5
Declare an input.

This is a decorator for methods.
c                óH   <€ \        SP                  V SP                  R 7      # ))rq   rA   rp   )rG   rð   rò   )ÚinputMethodr3   s   &€r$   rþ   Ú*MethodicalMachine.input.<locals>.decorator½  s   ø€ Ü"ØŸ/™/°+ÀdÇlÁlôð r&   r   ©r3   rþ   s   f r$   rF   ÚMethodicalMachine.inputµ  s   ø€ õ	ð
 Ðr&   c                ó   a € V 3R lpV# )z²
Declare an output.

This is a decorator for methods.

This method will be called when the state machine transitions to this
state as specified in the decorated `output` method.
c                ó   <€ \        SV R 7      # ))r?   rA   )rº   )ÚoutputMethodr3   s   &€r$   rþ   Ú+MethodicalMachine.output.<locals>.decoratorÏ  s   ø€ Ü#¨D¸ÔFÐFr&   r   r  s   f r$   rP   ÚMethodicalMachine.outputÄ  s   ø€ õ	Gð Ðr&   c                ón   € V P                   P                  WV\        V4      4       WRP                  V&   R# )z
See L{MethodicalState.upon}.
N)rð   ÚaddTransitionr    rœ   )r3   Ú
startStateÚ
inputTokenÚendStateÚoutputTokensrJ   s   &&&&&&r$   rW   Ú MethodicalMachine._oneTransitionÔ  s2   € ð$ 	�‰×%Ñ%Ø H¬e°LÓ.Aô	
ð -6×Ñ˜jÓ)r&   c                ó   a € V 3R lpV# )Ú c                ó4   <a € \        S 4      V V3R  l4       pV# )c                ó~   <€ \        V SP                  SP                  4      pS! WP                  P                  4      # r2   )rx   rò   rð   rª   rC   )rn   rw   Ú	decorateer3   s   & €€r$   Ú	serializeÚBMethodicalMachine.serializer.<locals>.decorator.<locals>.serializeð  s5   ø€ ä8Ø˜4Ÿ<™<¨¯©ó �ñ ! ×(;Ñ(;×(FÑ(FÓGÐGr&   r   )r  r  r3   s   f €r$   rþ   Ú/MethodicalMachine.serializer.<locals>.decoratorï  s$   ù€ Ü�9ÓõHó ðHð Ðr&   r   r  s   f r$   Ú
serializerÚMethodicalMachine.serializerë  s   ø€ õ	ð Ðr&   c                ó   a € V 3R lpV# )r  c                ó4   <a € \        S 4      V V3R  l4       pV# )c                óÞ   <€ S! V .VO5/ VB p/ pSP                   P                  4        F  pWTVP                  &   K  	  \        V SP                  SP                   4      pWC,          Vn        R # r2   )rð   ÚstatesrC   rx   rò   rª   )	rn   r   r‰   rÒ   ÚmappingÚ	eachStaterw   r  r3   s	   &*,    €€r$   ÚunserializeÚFMethodicalMachine.unserializer.<locals>.decorator.<locals>.unserialize   si   ø€ á! %Ð9¨$Ò9°&Ñ9�Ø�Ø!%§¡×!7Ñ!7Ö!9�IØ4=˜I×0Ñ0Ó1ñ ":ä8Ø˜4Ÿ<™<¨¯©ó �ð '.¥n�Ô#Ùr&   r   )r  r#  r3   s   f €r$   rþ   Ú1MethodicalMachine.unserializer.<locals>.decoratorÿ  s"   ù€ Ü�9Óõ	ó ð	ð Ðr&   r   r  s   f r$   ÚunserializerÚMethodicalMachine.unserializerû  s   ø€ õ	ð Ðr&   c               ó   € V ^8„  d   QhRR/# )rE   r)   rß   r   )rL   s   "r$   rM   rú     s   € ÷ ?ñ ?Ð+ñ ?r&   c                	óB   € \        V P                  V P                  4      # r2   )rß   rð   rò   rb   s   &r$   Ú	_setTraceÚMethodicalMachine._setTrace  s   € ä §¡°·±Ó>Ð>r&   c                ó@   € ^RI Hp V! V P                  R R R R7      # )zë
Generate a L{graphviz.Digraph} that represents this machine's
states and transitions.

@return: L{graphviz.Digraph} object; for more information, please
    see the documentation for
    U{graphviz<https://graphviz.readthedocs.io/>}

)ÚmakeDigraphc                ó.   € V P                   P                  # r2   ra   )rÒ   s   &r$   rÙ   Ú-MethodicalMachine.asDigraph.<locals>.<lambda>"  ó   € ¨¯©×(=Ò(=r&   c                ó.   € V P                   P                  # r2   ra   )rF   s   &r$   rÙ   r/  #  r0  r&   c                ó.   € V P                   P                  # r2   ra   )rP   s   &r$   rÙ   r/  $  s   € ¨&¯-©-×*@Ò*@r&   )ÚstateAsStringÚinputAsStringÚoutputAsString)Ú
_visualizer-  rð   )r3   r-  s   & r$   Ú	asDigraphÚMethodicalMachine.asDigraph  s$   € õ 	,áØ�O‰OÙ=Ù=Ù@ô	
ð 	
r&   )rð   rñ   rò   r2   )FFN)rV   rf   rg   rh   ri   ró   r³   r8   rÒ   rF   rP   rW   r  r&  Úpropertyr*  r7  rl   r   r&   r$   r>   r>     s”   † ñò
 ô
ð öó ðð@ ñó ðð ñó ðò6ð. ñó ðð ñó ðð( ô?ó ð?ö
r&   r>   )é   é
   r   )8Ú__conditional_annotations__Ú
__future__r   ÚcollectionsÚsysÚdataclassesr   r   Ú	functoolsr   Úinspectr   r   Ú	itertoolsr	   Útypingr
   r   r   r   r   Úversion_infoÚtyping_extensionsr   Ú_corer   r   r   r   Ú_introspectionr   Ú
namedtupler   r%   r/   r8   ro   r;   rx   rz   r}   rƒ   r–   r—   r˜   rG   rº   r^   ÚStringOutputTracerrÌ   rj   rÝ   rß   rì   rí   r>   )r<  s   @r$   Ú<module>rK     sW  øðç "Ð "ã Û 
ß (Ý Ý 1Ý ß =Õ =à×Ñ�gÔÞ+å ç @Ó @Ý (à
×
 Ò
 Øòó€òò.ò.ñ$ �$Ôô:$�fó :$ó ð:$õzò$	òõ8ò &&ñR ˆCƒL€ÙˆCƒL€ñ ˆeÔô/$�fó /$ó ð/$ñd �$Ôô$�vó $ó ð$ðB ˜s˜e T˜kÕ*Ð ØP€ˆiÓ Põñ& ˆeÔô�vó ó ðñ" ‹'€ò+ôf
˜ö f
r&   