python (3.12.0)

(root)/
lib/
python3.12/
__pycache__/
_pydecimal.cpython-312.opt-2.pyc

ˑed
	gdZeZdZdZdZddlZddlZddl	Z		ddl
mZeddd	Z
dZdZd
ZdZdZdZdZdZdZdZe	j2dk(rdZdZdZndZdZdZeedz
z
ZGddeZGddeZ GddeZ!Gd d!e!Z"Gd"d#ee#Z$Gd$d%e!Z%Gd&d'e!e#Z&Gd(d)eZ'Gd*d+e!Z(Gd,d-eZ)Gd.d/eZ*Gd0d1e'e)Z+Gd2d3e'e)e*Z,Gd4d5ee-Z.e e$e'e+e)e,e!e*e.g	Z/e"e!e%e!e&e!e(e!iZ0eeeeeeeefZ1ddl2Z2e2jfd6Z4e5gd7Z6d8Z7d9Z8[2dsd:Z9Gd;d<e:Z;dtd=Z<ejzj}e;Gd>d?e:Z?Gd@dAe:Z@GdBdCe:ZAdudDZBeCjZEdEZFdFZGdGZHdHZIdvdIZJdJZKdKZLGdLdMe:ZMeMjZOdvdNZPdOZQdPZRdQdRdSdTdUdVdWdXdYdZ	fd[ZSdwd\ZTdtd]ZUe@d^ee$e+e!ggd_d`ddaZVe@dbee$e+e!e e,ggcZWe@dbeggcZXddlYZYeYjddeYjeYjzjZ^eYjdejZ_eYjdfjZ`eYjdgeYjeYjzZb[Y	ddlcZddsdhZediZfdjZgdxdkZhdlZidmZje;dnZke;doZle;dpZme;dZne;dZoe;dqZpekelfZqe	jjZte	jjZve	jjZxeydXetdrz
etZz[	y#e$rd
Z
YDwxYw#e$rYwxYw)y)%DecimalContextDecimalTupleDefaultContextBasicContextExtendedContextDecimalExceptionClampedInvalidOperationDivisionByZeroInexactRounded	SubnormalOverflow	UnderflowFloatOperationDivisionImpossibleInvalidContextConversionSyntaxDivisionUndefined
ROUND_DOWN
ROUND_HALF_UPROUND_HALF_EVEN
ROUND_CEILINGROUND_FLOORROUND_UPROUND_HALF_DOWN
ROUND_05UP
setcontext
getcontextlocalcontextMAX_PRECMAX_EMAXMIN_EMIN	MIN_ETINYHAVE_THREADSHAVE_CONTEXTVARdecimalz1.70z2.4.2N)
namedtuplerzsign digits exponent)modulec|SN)argss >/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/_pydecimal.py<lambda>r0srrrrrrrrTllNZolNZoi@TiceZdZ	dZy)rcyr,r-selfcontextr.s   r/handlezDecimalException.handlesr1N__name__
__module____qualname__r8r-r1r/rrs$
r1rceZdZy)r	Nr:r;r<r-r1r/r	r		r1r	ceZdZ	dZy)r
c|r9t|dj|djdd}|j|StS)Nr(nT)_dec_from_triple_sign_int_fix_nan_NaN)r6r7r.anss    r/r8zInvalidOperation.handles9"47==$q',,TJC<<((r1Nr9r-r1r/r
r
s,r1r
ceZdZ	dZy)rctSr,rGr5s   r/r8zConversionSyntax.handler1Nr9r-r1r/rrsr1rceZdZ	dZy)rct|Sr,)_SignedInfinityr6r7signr.s    r/r8zDivisionByZero.handles
t$$r1Nr9r-r1r/rr
s
%r1rceZdZ	dZy)rctSr,rKr5s   r/r8zDivisionImpossible.handle"rLr1Nr9r-r1r/rrr1rceZdZ	dZy)rctSr,rKr5s   r/r8zDivisionUndefined.handle-rLr1Nr9r-r1r/rr%rTr1rceZdZy)rNr>r-r1r/rr0r?r1rceZdZ	dZy)rctSr,rKr5s   r/r8zInvalidContext.handleGrLr1Nr9r-r1r/rr<sr1rceZdZy)r
Nr>r-r1r/r
r
Jr?r1r
ceZdZy)rNr>r-r1r/rrVsr1rceZdZ	dZy)rc|jttttfvr	t
|S|dk(rP|jtk(r	t
|St|d|jz|j|jz
dzS|dk(rP|jtk(r	t
|St|d|jz|j|jz
dzSy)Nr(9r2)roundingrrrrrOrrCprecEmaxrrPs    r/r8zOverflow.handlews
 / ;;"4((19=0&t,,#D#gll*:#LL5a79
919;.&t,,#D#gll*:$\\',,6q8:
:r1Nr9r-r1r/rras*
:r1rceZdZy)rNr>r-r1r/rrr1rceZdZy)rNr>r-r1r/rrrcr1rdecimal_context)r`Eminracapitalsclampr_flagstrapsc		tjS#t$r$t}tj	||cYSwxYwr,)_current_context_vargetLookupErrorrsetr7s r/rrsD#'')))  )s*AAc	|tttfvr |j}|j	t
j
|yr,)rrrcopyclear_flagsrlrorps r/rrs9/><AA,,.W%r1c	|
t}t|}|jD]3\}}|tvrt	d|dt|j||5|S)N'z2' is an invalid keyword argument for this function)r_ContextManageritems_context_attributes	TypeErrorsetattrnew_context)ctxkwargsctx_managerkeyvalues     r/r r sq"F{l!#&Klln5
U))au$VWXX''e45r1c
eZdZ	dZdydZedZdZdZdzdZ	dZ
d	Zd
Zd{dZ
d{dZd{d
Zd{dZd{dZd{dZdZdZdZdZd|dZd{dZd{dZd{dZd}dZd{dZeZd{dZd{dZd{dZ e Z!d{dZ"dZ#d{d Z$d{d!Z%d{d"Z&d{d#Z'd{d$Z(d{d%Z)d{d&Z*d{d'Z+d(Z,d)Z-e-Z.e/d*Z0e/d+Z1d,Z2d-Z3d.Z4d/Z5d0Z6d1Z7d2Z8d3Z9d4Z:d5Z;d6Z<d7Z=e>e6e7e8e9e:e;e<e=8Z?d{d9Z@d:ZAd;ZBd{d<ZCd{d=ZDd>ZEdzd?ZFd{d@ZGd{dAZHdzdBZId{dCZJdDZKdEZLdzdFZMdzdGZNeNZOd{dHZPd{dIZQd{dJZRdKZSdLZTdMZUdNZVd{dOZWd{dPZXd{dQZYdRZZdSZ[d{dTZ\d{dUZ]dVZ^dWZ_dXZ`dYZad{dZZbd[Zcd\Zdd]Zed{d^Zfd_Zgd`Zhd{daZidbZjd{dcZkd{ddZldeZmdfZnd{dgZod{dhZpd{diZqd{djZrd{dkZsd{dlZtd{dmZud{dnZvd{doZwd{dpZxdqZyd{drZzd{dsZ{d{dtZ|duZ}dvZ~dwZdzdxZy)~r)_exprErD_is_specialNc:		tj|}t|trht	|jj
dd}|%|
t}|jtd|zS|jddk(rd|_nd|_|jd}|k|jd	xsd}t|jd
xsd}tt||z|_
|t|z
|_d|_|S|jd
}|Mtt|xsdj#d|_
|jdrd|_nd|_nd|_
d|_d|_|St|tr=|dk\rd|_nd|_d|_tt%||_
d|_|St|t&rF|j|_|j|_|j|_
|j |_|St|t(rN|j*|_t|j|_
t|j,|_d|_|St|t.t0frZt|dk7rt3dt|dtr|ddvst3d|d|_|ddk(rd|_
|d|_d|_|Sg}	|dD]N}
t|
tr2d|
cxkrdkr'nt3d|	s|
dk7s3|	j5|
Et3d|ddvr7dj7t9t|	|_
|d|_d|_|St|dtr<dj7t9t|	xsdg|_
|d|_d|_|St3dt|t:r}|
t}|jt<dt&j?|}|j|_|j|_|j|_
|j |_|StAd|z)N_zInvalid literal for Decimal: %rrQ-r2r(intfracexp0FdiagsignalNrBFTztInvalid tuple size in creation of Decimal from list or tuple.  The list or tuple should have exactly three elements.r(r2z|Invalid sign.  The first value in the tuple should be an integer; either 0 for a positive number or 1 for a negative number.	zTThe second value in the tuple must be composed of integers in the range 0 through 9.rBrzUThe third value in the tuple must be an integer, or one of the strings 'F', 'n', 'N'.;strict semantics for mixing floats and Decimals are enabledzCannot convert %r to Decimal)!object__new__
isinstancestr_parserstripreplacer_raise_errorrgrouprDrrElenrrlstripabsr_WorkReprQrlisttuple
ValueErrorappendjoinmapfloatr
from_floatry)clsrr7r6mintpartfracpartrrdigitsdigits           r/rzDecimal.__new__sV	,~~c"eS!
--c267Ay?(lG++,< AE IKKwwv#%

ggenG"776?0b!''%./C0GH$4 56	#h-/	#( Kwwv# #C$4 5 < <S ADIwwx($'	$'	!$DI #DI#' KeS!z

DICJDI$DKeW%DIDJDI % 1 1DKeX&DJEIIDIEIIDI$DKed5\*5zQ "GHHuQx-%(e2C "OPPqDJQx3	!!H	#' 6K1"1X9E!%-!u//
)*899"UaZ"MM%0(*899
98z) "C(8 9DI %aDI'+D$K a#. "CA3(? @DI %aDI',D$
K%&>??
eU#$,  
&&u-EDIDJDI % 1 1DK6>??r1c	t|tr |dk\rdnd}d}tt|}nt|trtj|stj|r|t|Stjd|dk(rd}nd}t|j\}}|jdz
}t|d|zz}ntdt|||}|tur|S||S)Nr(r2g?zargument must be int or float.)rrrrr_mathisinfisnanreprcopysignas_integer_ratio
bit_lengthryrCr)rfrQkcoeffrBdresults        r/rzDecimal.from_floats	(aQ1ADAAKE
5
!{{1~Q47|#~~c1%,q6**,DAq"A!Q$KE<==!$r2'>Mv;r1cN	|jr|j}|dk(ry|dk(ryy)NrBr2rrr()rr)r6rs  r/_isnanzDecimal._isnans2	))Cczr1c@	|jdk(r|jryyy)Nrr2r()rrDr6s r/_isinfinityzDecimal._isinfinitys%	99zzr1c(	|j}|d}n|j}|s|rh|
t}|dk(r|jtd|S|dk(r|jtd|S|r|j	|S|j	|Sy)NFrsNaNr()rrrr
rF)r6otherr7self_is_nanother_is_nans     r/_check_nanszDecimal._check_nanss	kkm= L <<>L,$,a++,<f(,..q ++,<f(-//}}W-->>'**r1c	|
t}|js|jr|jr|jtd|S|jr|jtd|S|jr|jtd|S|jr|jtd|Sy)Nzcomparison involving sNaNzcomparison involving NaNr()rris_snanrr
is_qnanr6rr7s   r/_compare_check_nanszDecimal._compare_check_nanss		? lGu00||~++,<,G,022++,<,G,133++,<,F,022++,<,F,133r1c>	|jxs|jdk7SNrrrErs r/__bool__zDecimal.__bool__4s#	3499#33r1c	|js|jr-|j}|j}||k(ry||kryy|s|syd|jzS|sd|jzS|j|jkry|j|jkry|j}|j}||k(r||jd|j
|j
z
zz}|jd|j
|j
z
zz}||k(ry||krd|jzSd|jzS||kDrd|jzSd|jzS)Nr(rr2r)rrrDadjustedrEr)r6rself_inf	other_inf
self_adjustedother_adjustedself_paddedother_paddeds        r/_cmpzDecimal._cmp;sc	D
u00'')H))+I9$I%u{{*++##;;#::#


)N*))c499uzz+A&BBK ::UZZ$))-C(DDLl*|+djj(((TZZ''
^
+##4::%&&r1ct||d\}}|tur|S|j||ry|j|dk(S)NT)equality_opFr()_convert_for_comparisonNotImplementedrrrs   r/__eq__zDecimal.__eq__{sH-dEtLeN"LE7+yy1$$r1ct||\}}|tur|S|j||}|ry|j|dkSNFr(rrrrr6rr7rHs    r/__lt__zDecimal.__lt__K-dE:eN"L&&ug6yy!##r1ct||\}}|tur|S|j||}|ry|j|dkSrrrs    r/__le__zDecimal.__le__K-dE:eN"L&&ug6yy1$$r1ct||\}}|tur|S|j||}|ry|j|dkDSrrrs    r/__gt__zDecimal.__gt__rr1ct||\}}|tur|S|j||}|ry|j|dk\Srrrs    r/__ge__zDecimal.__ge__rr1c	t|d}|js|r"|jr|j||}|r|St|j	|SNTraiseit)_convert_otherrrrrrs    r/comparezDecimal.comparesX	ud3
%*;*;""5'2C
tyy'((r1c	|jrY|jrtd|jrtj|S|jrtStS|jdk\rtd|jt}n tt|jt}t|j|ztz}|dk\r|n|}|dk(rdS|S)Nz"Cannot hash a signaling NaN value.r(
r)rrryis_nanr__hash__rD_PyHASH_INFrpow_PyHASH_MODULUS
_PyHASH_10INVrrE)r6exp_hashhash_rHs    r/rzDecimal.__hash__s'||~ DEEt,,::'<'&&99>2tyy/:H=499*oFHDII)O;qyeufBYr'C'r1c		t|jttt|j
|jSr,)rrDrrrrErrs r/as_tuplezDecimal.as_tuples0	DJJc#tyy.A(BDIINNr1c	|jr&|jrtdtd|syt	|j
}|jdk\r|d|jzzd}}nt|j}|dkDr |dzdk(r|dz}|dz}|dkDr	|dzdk(r|j}t||zjdz
|}|r
||z}||z}d|z|z}|jr|}||fS)Nz#cannot convert NaN to integer ratioz(cannot convert Infinity to integer ratiorr(rr2r)
rrr
OverflowErrorrrErminrrD)r6rBrd5d2shift2s      r/rzDecimal.as_integer_ratios	{{} !FGG#$NOO
		N99>r499}$aqA))Bq&QUaZaaq&QUaZ))B!qb&,,.2B7Fff2A::A!tr1c 	dt|zS)Nz
Decimal('%s'))rrs r/__repr__zDecimal.__repr__s>T**r1c
	ddg|j}|jrG|jdk(r|dzS|jdk(r|dz|jzS|dz|jzS|jt	|jz}|jdkr|d	kDr|}n+|sd
}n&|jdk(r|d
zdzd
z
}n|d
z
dzd
z}|dkrd}d
d|zz|jz}nd|t	|jk\r+|jd|t	|jz
zz}d}n!|jd|}d
|j|dz}||k(rd}n&|
t}ddg|jd||z
zz}||z|z|zS)NrrrInfinityrBNaNrr(r2rr.eEz%+d)rDrrrErrrg)	r6engr7rQ
leftdigitsdotplacerrrs	         r/__str__zDecimal.__str__s	
Cy$yyCj((c!e|dii//f}tyy00YYTYY/

99>j2o!HH
YY#
"Q!+a/H#Q!+a/Hq=GS8)_,tyy8H
TYY
'iiXc$))n%< ==GHii	*GTYYxy11H!C$,*W--.*X:M1NNCg~(3..r1c*	|jd|S)NT)rr7)rr6r7s  r/
to_eng_stringzDecimal.to_eng_stringEs	||g|66r1c	|jr|j|}|r|S|
t}|s$|jtk7r|j}n|j
}|j|SNrp)rrrr_rcopy_abscopy_negate_fixr6r7rHs   r/__neg__zDecimal.__neg__Nss	""7"3C
? lG((K7--/C""$Cxx  r1c	|jr|j|}|r|S|
t}|s$|jtk7r|j}nt
|}|j|Sr)rrrr_rrrrrs   r/__pos__zDecimal.__pos__dsl	""7"3C
? lG((K7--/C$-Cxx  r1c	|s|jS|jr|j|}|r|S|jr|j	|}|S|j|}|Sr)rrrrDrr )r6roundr7rHs    r/__abs__zDecimal.__abs__ysq	==?"""7"3C
::,,w,/C
,,w,/C
r1c>	t|}|tur|S|
t}|js|jr|j	||}|r|S|jrJ|j|jk7r&|jr|jtdSt|S|jrt|St|j|j}d}|jtk(r|j|jk7rd}|sF|sDt|j|j}|rd}t|d|}|j|}|S|sUt!||j|j"z
dz
}|j%||j}|j|}|S|sUt!||j|j"z
dz
}|j%||j}|j|}|St'|}t'|}t)|||j"\}}t'}	|j*|j*k7r|j,|j,k(r t|d|}|j|}|S|j,|j,kr||}}|j*dk(r+d|	_|j*|j*c|_|_n5d|	_n-|j*dk(rd|	_d\|_|_nd|	_|j*dk(r|j,|j,z|	_n|j,|j,z
|	_|j.|	_t|	}|j|}|S)Nz
-INF + INFr(r2r)r(r()rrrrrrrDrr
rrrr_rrCrmaxr`_rescaler
_normalizerQrr)
r6rr7rHrnegativezerorQop1op2rs
          r/__add__zDecimal.__add__s	u%N"L? lGu00""5'2C
!::,1B1B1D"//0@,OOt}$  "u~%$))UZZ({*tzzU[[/HLEtzz5;;/D"4c2C((7#CJc5::4Q67C..g&6&67C((7#CJc499w||3A56C--W%5%56C((7#CJtnuoc35S88sxxww#''!&|S#>hhw'
ww Sxx1}%(XXsxx"#(
XX]FK!'CHchFK88q=377*FJ377*FJWW
fohhw
r1c	t|}|tur|S|js|jr|j||}|r|S|j	|j|Sr)rrrrr+rrs    r/__sub__zDecimal.__sub__sh!u%N"Lu00""5'":C
||E--/|AAr1cT	t|}|tur|S|j||Sr)rrr-rs   r/__rsub__zDecimal.__rsub__s/!u%N"L}}T7}33r1c	t|}|tur|S|
t}|j|jz}|js|jrx|j||}|r|S|j
r!|s|jtdSt|S|j
r!|s|jtdSt|S|j|jz}|r|s t|d|}|j|}|S|jdk(r*t||j|}|j|}|S|jdk(r*t||j|}|j|}|St|}t|}t|t|j |j z|}|j|}|S)Nz(+-)INF * 0z0 * (+-)INFr1)rrrrDrrrrr
rOrrCrrErrr)r6rr7
resultsignrH	resultexpr)r*s        r/__mul__zDecimal.__mul__s	u%N"L? lGZZ%++-
u00""5'2C
!"//0@-PP&z22  ""//0@-PP&z22II

*	5":sI>C((7#CJ99":uzz9EC((7#CJ::":tyy)DC((7#CJtnuoz3sww/@+A9Mhhw
r1c	t|}|turtS|
t}|j|jz}|js|jr|j||}|r|S|j
r&|j
r|jtdS|j
r	t|S|j
r1|jtdt|d|jS|s/|s|jtdS|jtd|S|s|j|jz
}d}nt!|j"t!|j"z
|j$zdz}|j|jz
|z
}t'|}t'|}	|dk\r*t)|j*d|zz|	j*\}}
n*t)|j*|	j*d|zz\}}
|
r|d	zdk(rD|dz
}n>|j|jz
}||kr |dzdk(r|dz}|dz
}||kr	|dzdk(rt|t-||}|j/|S)
Nz(+-)INF/(+-)INFzDivision by infinityrz0 / 0zx / 0r(r2rr)rrrrDrrrrr
rOr	rCEtinyrrrrrEr`rdivmodrrr)r6rr7rQrHrrshiftr)r*	remainder	ideal_exps            r/__truediv__zDecimal.__truediv__6sJ"u%N"!!? lGzzEKK'u00""5'2C
!e&7&7&9++,<>OPP!&t,,  "$$W.DE'c7==?CC++,=wGG''FF))ejj(CE

Oc$))n4w||CaGE))ejj(50C4.C5/Cz#)#''BI*=sww#G y#)#''377R%Z3G#H y19>QJE!II

2	Io%"*/bLE1HCIo%"*/tSZ5xx  r1c	|j|jz}|jr
|j}n t|j|j}|j	|j	z
}|r|js|dkr)t|dd|j
||jfS||jkrt|}t|}|j|jk\r0|xjd|j|jz
zzc_n/|xjd|j|jz
zzc_t|j|j\}}	|d|jzkr6t|t|dt|jt|	|fS|jtd}
|
|
fS)Nrrr(rz%quotient too large in //, % or divmod)rDrrrrrCr&r_r`rrrr7rrr)r6rr7rQr:expdiffr)r*qrrHs           r/_dividezDecimal._divideqs	
zzEKK'		IDIIuzz2I--/ENN$44u((*gm$T32MM)W-=-=>@
@gll"4.C5/Cww#''!2#'' 1222#'' 122#''377+DAq2w||##(s1vq9(SVYGII""#5#JLCxr1cT	t|}|tur|S|j||Sr)rrr;rs   r/__rtruediv__zDecimal.__rtruediv__s27u%N"L  w 77r1cD	t|}|tur|S|
t}|j||}|r||fS|j|jz}|jrI|jr|j
td}||fSt||j
tdfS|sI|s|j
td}||fS|j
td||j
tdfS|j||\}}|j|}||fS)Nzdivmod(INF, INF)INF % xzdivmod(0, 0)x // 0x % 0)
rrrrrDrrr
rOrrr@r)r6rr7rHrQquotientr9s       r/
__divmod__zDecimal.__divmod__s:	u%N"L? lGug.:zzEKK'  "**+;=OPCx'-,,-=yIKK**+<nMCx,,^XtL,,-=wGII#ll5':)NN7+	""r1cT	t|}|tur|S|j||Sr)rrrHrs   r/__rdivmod__zDecimal.__rdivmod__s26u%N"Lg66r1cn	t|}|tur|S|
t}|j||}|r|S|j	r|jtdS|s.|r|jtdS|jtdS|j||d}|j|}|S)NrDrFz0 % 0r2)
rrrrrrr
rr@r)r6rr7rHr9s     r/__mod__zDecimal.__mod__s	u%N"L? lGug.J''(8)DD++,<gFF++,=wGGLL03	NN7+	r1cT	t|}|tur|S|j||Sr)rrrLrs   r/__rmod__zDecimal.__rmod__/3u%N"L}}T7}33r1cv	|
t}t|d}|j||}|r|S|jr|j	t
dS|s.|r|j	t
dS|j	tdS|jrt|}|j|St|j|j}|s(t|jd|}|j|S|j|jz
}||jdzk\r|j	tS|dkr-|j!||j"}|j|St%|}t%|}|j&|j&k\r0|xj(d	|j&|j&z
zzc_n/|xj(d	|j&|j&z
zzc_t+|j(|j(\}}	d
|	z|dzz|j(kDr|	|j(z}	|dz
}|d	|jzk\r|j	tS|j}
|	dkrd|
z
}
|	}	t|
t-|	|}|j|S)NTrzremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rr2rrrr()rrrrrr
rrrrrrCrDrr`rr&r_rrrr7r)r6rr7rHideal_exponentr=r)r*r>r?rQs           r/remainder_nearzDecimal.remainder_nears~	? lGud3ug.J''(8(EG
G++,<,BDD++,=,BDD$-C88G$$TYY

3"4::sNCC88G$$--/ENN$44gllQ&&''(:;;b=--0@0@AC88G$$tnuo77cggGGrCGGcgg-..GGGrCGGcgg-..Gcggsww'1
Q3!A#; 
LA
FAGLL  ''(:;;zzq5T6DAtSV^<xx  r1c	t|}|tur|S|
t}|j||}|r|S|j	rF|j	r|jtdSt|j|jzS|sF|r.|jtd|j|jzS|jtdS|j||dS)Nz
INF // INFrEz0 // 0r()rrrrrrr
rOrDrrr@rs    r/__floordiv__zDecimal.__floordiv__1su%N"L? lGug.J  "++,<lKK&tzzEKK'?@@++NH,0JJ,DFF++,=xHH||E7+A..r1cT	t|}|tur|S|j||Sr)rrrTrs   r/
__rfloordiv__zDecimal.__rfloordiv__Ms28u%N"L!!$!88r1c	|jr6|jrtd|jrdnd}t|St	|}t|S)Nz%Cannot convert signaling NaN to floatz-nannan)rrrrDrrr6ss  r/	__float__zDecimal.__float__TsO#;;=||~ !HII**%AQxD	AQxr1cf	|jr6|jrtd|jrt	dd|j
z}|jdk\r(|t|jzd|jzzS|t|jd|jxsdzS)NzCannot convert NaN to integerz"Cannot convert infinity to integerrr(rr)	rrrrrrDrrrErYs  r/__int__zDecimal.__int__^s?{{} !@AA!!##$HII
$**99>S^#B		M11S:DII.5#666r1c|Sr,r-rs r/realzDecimal.realmsr1ctdSNr(rrs r/imagzDecimal.imagqsqzr1c|Sr,r-rs r/	conjugatezDecimal.conjugateusr1c*tt|Sr,)complexrrs r/__complex__zDecimal.__complex__xsuT{##r1c	|j}|j|jz
}t||kDrB|t||z
dj	d}t|j||jdSt|S)NrT)	rEr`rhrrrCrDrr)r6r7payloadmax_payload_lens    r/rFzDecimal._fix_nan{sr@))",,6w</)c'l?:;<CCCHG#DJJDIIt}r1c	|jr,|jr|j|St|S|j	}|j}|s|j|g|j}tt|j||}||jk7r,|jtt|jd|St|St|j |jz|j"z
}||kDrM|jt$d|j}|jt&|jt(|S||k}|r|}|j|krlt|j |jz|z
}	|	dkrt|jd|dz
}d}	|j*|j,}
|
||	}|j d|	xsd}|dkDr9t/t1|dz}t||j"kDr
|dd}|dz
}||kDr"|jt$d|j}nt|j||}|r|r|jt2|r|jt4|r|jt&|jt(|s|jt|S|r|jt4|jdk(rZ|j|kDrK|jt|j d|j|z
zz}
t|j|
|St|S)Nr
above Emaxr(r1r2r)rrrFrr6Etoprarhrr%rrr	rCrDrrEr`rrr
_pick_rounding_functionr_rrrr)r6r7r6rnexp_maxnew_expexp_minrHself_is_subnormalrrounding_methodchangedrrs              r/rzDecimal._fixs	{{}}}W--t}$

||~||T*7==9G#dii/9G$))#$$W-'

CAAt}$dii.499,w||;T>&&xtzzJC  )  )J#eOG99w^dii/'9Fz'

CC"::7;K;KLO%dF3GIIgv&-#E{CJqL)u:,!#2JEqLG~**8\4::N&tzz5'B,$$Y/ $$Y/$$W-  )$$W-J  +==A$))d"2  )))c499t+;&<<K#DJJTBBt}r1c4	t|j|ryy)Nr(r)
_all_zerosrEr6r`s  r/_round_downzDecimal._round_downs6dii&r1c(	|j|Sr,)ryrxs  r/	_round_upzDecimal._round_ups!  &&&r1cX	|j|dvryt|j|ryy)N56789r2r(r)rErwrxs  r/_round_half_upzDecimal._round_half_ups,'99T?g%
		4
(r1cT	t|j|ry|j|S)Nr_exact_halfrEr~rxs  r/_round_half_downzDecimal._round_half_downs'tyy$'&&t,,r1c	t|j|r|dk(s|j|dz
dvry|j|S)Nr(r202468rrrxs  r/_round_half_evenzDecimal._round_half_evensB/tyy$'diiQ/7:&&t,,r1cb	|jr|j|S|j|Sr,rDryrxs  r/_round_ceilingzDecimal._round_ceilings16::##D))$$T***r1cb	|js|j|S|j|Sr,rrxs  r/_round_floorzDecimal._round_floors15zz##D))$$T***r1cv	|r%|j|dz
dvr|j|S|j|S)Nr205)rEryrxs  r/_round_05upzDecimal._round_05upsA7DIId1f%T1##D))$$T***r1)rrrrrrrrc	|:t|tstdtdd|}|j	|S|j
r&|j
rtdtdt|jdtS)Nz+Second argument to round should be integralr(r1cannot round a NaNcannot round an infinity)rrryrCquantizerrrrr&r)r6rBrs   r/	__round__zDecimal.__round__0s-	\
=a% MNN"1cA2.C==%%{{} !566#$>??4==O455r1c	|jr&|jrtdtdt	|jdtSNrrr()rrrrrr&rrs r/	__floor__zDecimal.__floor__nsI	{{} !566#$>??4==K011r1c	|jr&|jrtdtdt	|jdtSr)rrrrrr&rrs r/__ceil__zDecimal.__ceil__}sI	{{} !566#$>??4==M233r1c		t|d}t|d}|js
|jr
|
t}|jdk(r|j	t
d|S|jdk(r|j	t
d|S|jdk(r|}n|jdk(r|}n|jdk(r9|s|j	t
dSt|j|jz}n|jdk(r|s|j	t
dSt|j|jz}nmt|j|jztt|jt|jz|j|jz}j||S)	NTrrrrBrzINF * 0 in fmaz0 * INF in fma)
rrrrrr
rOrDrCrrrEr+)r6rthirdr7products     r/fmazDecimal.fmas	ud3ud3u00$,yyC++,<fdKKzzS ++,<feLLyyCs"c!"//0@0@BB)$**u{{*BCs""//0@0@BB)$**u{{*BC&tzzEKK'?'*3tyy>C

O+K'L'+yy5::'=?Gug..r1cD	t|}|tur|St|}|tur|S|
t}|j}|j}|j}|s|s|r|dk(r|j	t
d|S|dk(r|j	t
d|S|dk(r|j	t
d|S|r|j
|S|r|j
|S|j
|S|jr |jr|js|j	t
dS|dkr|j	t
dS|s|j	t
dS|j|jk\r|j	t
dS|s|s|j	t
dS|jrd}n|j}tt|}t|j}t|j}	|j|zt!d	|j"|z|z}t%|	j"D]}
t!|d	|}t!||	j|}t'|t)|dS)
Nrrz@pow() 3rd argument not allowed unless all arguments are integersr(zApow() 2nd argument cannot be negative when 3rd argument specifiedzpow() 3rd argument cannot be 0zSinsufficient precision: pow() 3rd argument must not have more than precision digitszXat least one of pow() 1st argument and 2nd argument must be nonzero; 0**0 is not definedr)rrrrrr
rF
_isintegerrr`_isevenrDrrrto_integral_valuerrrangerCr)r6rmodulor7rr
modulo_is_nanrQbaseexponentis           r/
_power_modulozDecimal._power_modulos/u%N"L'^#M? lGkkm||~


,-a++,<f(,..q ++,<f(-//!++,<f(.00}}W--~~g..??7++!  "!!#''(8)LM
M19''(8)OP
P''(8(HJ
J
??,''(8);<
<T''(8)>?
?==?D::DS[!..01E33566!CDHHf$==Gx||$	)AtR(D	)4v.c$i33r1c	t|}|j|j}}|dzdk(r|dz}|dz
}|dzdk(rt|}|j|j}}|dzdk(r|dz}|dz
}|dzdk(r|dk(r||z}|dzdk(r|dz}|dz
}|dzdk(r|dkry|d|zz}	|jdk(r|	}	|j	r:|j
dk(r+|jt|z}
t|	|
z
|dz
}nd}tddd|zz|	|z
S|jdk(r+|dz}|dvrg||z|k7ryt|dz
}
|dzdz}|tt|k\ryt|
|z|}
t||z|}|
|y|
|kDryd	|
z}n|d	k(rt|d
zdz}
td	|
z|\}}|ry|d	zdk(r|d	z}|
dz}
|d	zdk(r|dzdz}|tt|k\ryt|
|z|}
t||z|}|
|y|
|kDryd|
z}ny|d|zk\ry|
|z
}tdt||S|dk\r|d|zzd}}n|dk7r%ttt||z|kryt|}ttt||z|kry|d|z}}|dz|dzcxk(rdk(r!nn|dz}|dz}|dz|dzcxk(rdk(rn|d	z|d	zcxk(rdk(r!nn|d	z}|d	z}|d	z|d	zcxk(rdk(rn|dkDrf|kryt||\}}|dk7rydt||zz}	t|||dz
z\}}||krn||dz
z|z|z}*||k(r|dk(sy|}|dkDr||d
zt|zkDry||z}||z}|d|zkDryt|}|j	rC|j
dk(r4|jt|z}
t||
z
|t|z
}nd}td|d|zz||z
S)Nrr(r2r1r)r]Arrrd)rrrrQrrDrrrC_nbitsrr_decimal_lshift_exactr7r	_log10_lb)r6rpxxcxeyycyerrQzeros
last_digitremaxr9rrBxc_bitsremar>r?str_xcs                        r/_power_exactzDecimal._power_exact
s$	Br
TNB2gl2IB!GB2gl
UOB2gl2IB!GB2gl7"HBr'Q,r	ar'Q,AvBF{Hvv{$9!ekkQ&6!%3u:!5H^3QqS9#AsSYGG
66Q;bJY&8r>2JqL6tRxSY'*!b&"5*27B79
t8Tq2JrM2% &q!tR 0
I1fk1HBFA1fktQwSY')!b&"5*27B79
t8TRU{BB#As2w337b"f9aqAQw3s3r"u:/B36RjG3s2ww'(RC/rRCyqAa%1q5%A%aaa%1q5%A%a%1q5%A%aaa%1q5%A%

q5!|RmGBaxr
{A~&&Ab!ac(+16AaC1q(AFqAvB6a!C%2..
U
a
A:
R%++"2!YYs5z1N>)1S[=9EE6#e)#3RX>>r1c\	||j|||St|}|tur|S|
t}|j	||}|r|S|s|s|jtdStSd}|jdk(rK|jr|jsd}n|r|jtdS|j}|s%|jdk(r
t|ddSt|S|jr%|jdk(r	t|St|ddS|tk(r|jr|jdk(rd}n'||jkDr
|j}nt!|}|j"|z}|d|jz
kr^d|jz
}|jt$n9|jt&|jt$d|jz
}t|dd|zz|S|j)}|jr+|jdk(|dkk(r
t|ddSt|Sd}d}	|j+|j)z}
|dk\|jdk(k(r<|
t-t/|j0k\rSt|d|j0dz}n8|j3}|
t-t/|k\rt|d|dz
}|I|j5||jdz}|(|dk(r!td|j6|j"}d}	||j}t9|}
|
j |
j:}}t9|}|j |j:}}|j<dk(r|}d	}	t?||||||z\}}|d
dt-t/||z
dz
zzzrn|d	z
}?t|t/||}|	r|jszt-|j6|jkrY|jdzt-|j6z
}t|j|j6d|zz|j"|z
}|jA}|jCtDD]}d|jF|<|jI|}|jt&|jJtLr|jtN|jJtPr!|jtPd|jtNtLt&t$tRfD]#}|jJ|s|j|%|S|jI|}|S)
Nz0 ** 0r(r2z+x ** y with x negative and y not an integerrr1FTrrrrm)*rrrrrrr
_OnerDrrrrCrOrr`rrr
rr_log10_exp_boundrrrar6rrErrrQ_dpowerrrrs_signalsrjrrirrrr	)r6rrr7rHresult_sign
multiplierrself_adjexactboundr6rrrrrrrextrarr=
newcontext	exceptions                        r/__pow__zDecimal.__pow__sL	.%%eVW==u%N"L? lGug.J++,<hGG::?!}}"#K"//0@EGG##%D{{a'S!<<&{33{{a&{33'S!<<
4<!
;;!#!"JW\\)!(J!$UJii*,7<<'GLL.C((1$$W-$$W-n#KS#XsCC==?q hl3'S!<<&{33%%'%..*::Mu{{a/0C-..&{CaHMMOECK((&{CqA;##E7<<!+;<C!#*1chhAC;AAUUAEEBAUUAEEBvv{SE$RRQuW=
sAb3s5z?1#4Q#6778
	#;E
C@C))+388},!,,*S]:&syy#((3w;2F'*xx'79!J""$%
0	./
  +
0((:&C
##G,	*''	2)$$X|SYYG&	7GWL
4	##I.((3
4
((7#C
r1cT	t|}|tur|S|j||Sr)rrrrs   r/__rpow__zDecimal.__rpow__	rOr1c2	|
t}|jr|j|}|r|S|j|}|j	r|S|st|jddS|j|jg|j}t|j}|j}|j|dz
dk(r*||kr%|dz
}|dz}|j|dz
dk(r||kr%t|j|jd||S)Nrprr(r2)
rrrrrrCrDrarnrhrrEr)r6r7rHduprpendrs       r/	normalizezDecimal.normalize	sM? lG""7"3C
ii ??J#CIIsA66<<0?#((mhhhhs1uo$w1HC1HChhs1uo$w 		388DS>3??r1cb	t|d}|
t}||j}|js|jrw|j	||}|r|S|js|jrA|jr|jrt
|S|jtdS|j|jcxkr|jksn|jtdS|s2t|jd|j}|j|S|j}||jkDr|jtdS||jz
dz|j kDr|jtdS|j#|j|}|j|jkDr|jtdSt%|j&|j kDr|jtdS|r2|j|j(kr|jt*|j|jkDr/||k7r|jt,|jt.|j|}|S)	NTrzquantize with one INFz)target exponent out of bounds in quantizerz9exponent of quantize result too large for current contextr2z7quantize result has too many digits for current context)rrr_rrrrrr
r6rrarCrDrrr`r&rrErfrrr
)r6rr_r7rHrs      r/rzDecimal.quantize	sQ	S$/? lG''Hs""30C
 D$4$4$6??$)9)9);"4=(++,<(?AA

388;w||;''(8>@
@"4::sCHH=C88G$$


7<<'''(8(ce
e388#a'',,6''(8(ac
cmmCHHh/<<>GLL(''(8(ce
esxx=7<<'''(8(ac
c3<<>GLL0  +88diid{$$W-  )hhw
r1c	t|d}|js|jrF|jxr|jxs"|jxr|jS|j|jk(Sr)rrris_infiniterrs   r/same_quantumzDecimal.same_quantum/
sr	ud3u00KKM4elln?$$&>5+<+<+>
@yyEJJ&&r1c2	|jrt|S|st|jd|S|j|k\r4t|j|j
d|j|z
zz|St
|j
|jz|z
}|dkrt|jd|dz
}d}|j|}|||}|j
d|xsd}|dk(rtt|dz}t|j||S)Nrr(r1r2)
rrrCrDrrErrorr)r6rr_r
this_functionrurs       r/r&zDecimal._rescale>
s
		4= #DJJS9999#DJJ(,		CS4I(I3P
P
TYY$))+c1A:#DJJSU;DF44X>
f-		'6")ca<E
1%E

E377r1c4	|dkrtd|js|st|S|j|j	dz|z
|}|j	|j	k7r&|j|j	dz|z
|}|S)Nr(z'argument should be at least 1 in _roundr2)rrrr&r)r6placesr_rHs    r/_roundzDecimal._round`
s	Q;FGG44= mmDMMOA-f4h?
<<>T]]_,,,s||~a/6AC
r1c~	|jr!|j|}|r|St|S|jdk\rt|S|st	|j
ddS|
t
}||j}|jd|}||k7r|jt|jt|S)Nrpr(r)rrrrrCrDrr_r&rrr
r6r_r7rHs    r/to_integral_exactzDecimal.to_integral_exactw
s	""7"3C
4= 99>4= #DJJQ77? lG''HmmAx($;  )W%
r1c	|
t}||j}|jr!|j|}|r|St	|S|j
dk\rt	|S|j
d|S)Nrpr()rr_rrrrr&rs    r/rzDecimal.to_integral_value
svN? lG''H""7"3C
4= 99>4= ==H--r1c.	|
t}|jr@|j|}|r|S|jr|jdk(rt|S|s5t
|jd|jdz}|j|S|jdk(r|jtdS|jdz}t|}|jdz	}|jdzr+|jdz}t|j dz	dz}n'|j}t|j dzdz	}||z
}|dk\r|d|zz}d	}	nt#|d|z\}}
|
}	||z}d|z}	||z}||krn	||zdz	}|	xr||z|k(}	|	r|dk\r	|d|zz}n	|d|zz}||z
}n
|d
zdk(r|dz
}t
dt%||}|j'}|j)t*}
|j|}|
|_|S)Nrpr(rrr2zsqrt(-x), x > 0rrTr)rrrrrDrrCrrrr
r`rrrrrEr7r
_shallow_copy
_set_roundingrr_)r6r7rHr`oprclr8rr9rBr>r_s              r/sqrtzDecimal.sqrt
s:-? lG""7"3C
!djjAot}$"4::sDIINCC88G$$::?''(8:KLL,||A~d^FFaK
66A:ATYY1$)AADIIq A%AQA:
eOAE!!S5&[1LAy!ME	U

H1AAvEQJ"!A#(zb%iR%Z
JA1uzQq#a&!,'')((9hhw#
r1c	t|d}|
t}|js|jrl|j}|j}|s|rH|dk(r|dk(r|j	|S|dk(r|dk(r|j	|S|j||S|j
|}|dk(r|j|}|dk(r|}n|}|j	|SNTrr2r(rrrrrrrr
compare_totalr6rr7snonrrHs       r/r%zDecimal.max
s	
ud3? lGu00BBR7rQw99W--7rQw ::g..''w77IIe6""5)A7CCxx  r1c	t|d}|
t}|js|jrl|j}|j}|s|rH|dk(r|dk(r|j	|S|dk(r|dk(r|j	|S|j||S|j
|}|dk(r|j|}|dk(r|}n|}|j	|Srrrs       r/rzDecimal.min4s	
ud3? lGu00BBR7rQw99W--7rQw ::g..''w77IIe6""5)A7CCxx  r1c	|jry|jdk\ry|j|jd}|dt|zk(S)NFr(Tr)rrrEr)r6rests  r/rzDecimal._isintegerVsF099>yy$s3t9}$$r1cd	|r|jdkDry|jd|jzdvS)Nr(Trr)rrErs r/rzDecimal._iseven_s1Htyy1}yyDII&'11r1cn		|jt|jzdz
S#t$rYywxYw)Nr2r()rrrEryrs r/rzDecimal.adjustedes82	99s499~-11		s$(	44c	|Sr,r-rs r/	canonicalzDecimal.canonicalms	
r1cp	t|d}|j||}|r|S|j||SNTrrp)rrrrs    r/compare_signalzDecimal.compare_signalusB	
u5&&ug6J||E7|33r1cd	t|d}|jr|jstS|js|jrtS|j}|j	}|j	}|s|r||k(rnt|j|jf}t|j|jf}||kr|rtStS||kDr|rtStStS|r,|dk(rtS|dk(rtS|dk(rtS|dk(r2tS|dk(rtS|dk(rtS|dk(rtS|dk(rtS||krtS||kDrtS|j|jkr|rtStS|j|jkDr|rtStStS)NTrr2r)	rrD_NegativeOnerrrrE_Zeror)r6rr7rQself_nan	other_nanself_key	other_keys        r/rzDecimal.compare_totals	ud3::ekkzzekkKzz;;=LLN	y9$tyy>4994

OUZZ7	i'#++i'++#q=''>Kq=''>Kq=K>''q=K>''%<%<K99uzz!##99uzz!##r1c	t|d}|j}|j}|j|Sr)rrr)r6rr7rZos     r/compare_total_magzDecimal.compare_total_mags;	ud3MMONNq!!r1c\	td|j|j|jSra)rCrErrrs r/rzDecimal.copy_abss$5499dii9I9IJJr1c	|jr,td|j|j|jStd|j|j|jS)Nr(r2)rDrCrErrrs r/rzDecimal.copy_negatesJ4::#Atyy$))T=M=MNN#Atyy$))T=M=MNNr1c	t|d}t|j|j|j|j
Sr)rrCrDrErrrs   r/	copy_signzDecimal.copy_signs92ud3TYY $		4+;+;=	=r1c	|
t}|j|}|r|S|jdk(rtS|stS|jdk(rt|S|j}|j}|jdk(rC|tt|jdzdzkDrtdd|jdz}nE|jdk(rK|tt|jdzdzkDrtdd|jdz
}n|jdk(r!||krtddd|dz
zzdz|}n|jdk(r!||dz
krtdd|dzz|dz
}nt|}|j|j }}|j"dk(r|}d}	t%||||z\}	}
|	d	d
tt|	|z
dz
zzzrn|dz
}=tdt|	|
}|j'}|j)t*}|j-|}||_|S)Nrprr2r(rr1rr^rr)rrrrrrr`rrDrrrarCr6rrrrQ_dexprrrrr_)r6r7rHradjrrrrrrr_s            r/rzDecimal.expsE ? lGw/J#LK"4= 
LLmmo::?sSgll1na-?)@%AA"1c7<<>:C
ZZ1_s30@0BA/E+F'G!G"1c7==?1+<=C
ZZ1_r"1cC1Io&;aR@C
ZZ1_r!t"1c1Q3i!A6C$B66266qAww!|B
E"1a51
sAb3s5z?1#4Q#6778
	#1c%j#6C'')((9hhw#
r1c	y)NTr-rs r/is_canonicalzDecimal.is_canonical1s	
r1c	|jSr,)rrs r/	is_finitezDecimal.is_finite9s	
####r1c"	|jdk(S)Nrrrs r/rzDecimal.is_infiniteAsFyyCr1c 	|jdvS)Nrrrs r/rzDecimal.is_nanEsLyyJ&&r1ct	|js|sy|
t}|j|jkSNF)rrrfrrs  r/	is_normalzDecimal.is_normalIs4M4? lG||t}}..r1c"	|jdk(S)NrBrrs r/rzDecimal.is_qnanQsIyyCr1c"	|jdk(SNr2)rDrs r/	is_signedzDecimal.is_signedUsFzzQr1c"	|jdk(S)Nrrrs r/rzDecimal.is_snanYsMyyCr1ct	|js|sy|
t}|j|jkSr)rrrrfrs  r/is_subnormalzDecimal.is_subnormal]s4G4? lG}}--r1c@	|jxr|jdk(Srrrs r/is_zerozDecimal.is_zeroes"D###8		S(88r1c	|jt|jzdz
}|dk\rtt|dzdzdz
S|dkr ttd|z
dzdzdz
St	|}|j
|j}}|dk(r:t|d|zz
}t|}t|t|z
||kz
S|ttd|z|z
zdz
S)Nr2rrrr(rrrErrrrr6r
rrrnumdens       r/
_ln_exp_boundzDecimal._ln_exp_boundis	ii#dii.(1,!8s3r62:'!++"9sBsFB;?+,q00
d^vvrvv1!8aQBh-Ca&Cs8c#h&#)443s2r6A:''!++r1c
	|
t}|j|}|r|S|stS|jdk(rtS|t
k(rtS|jdk(r|jtdSt|}|j|j}}|j}||jz
dz}	t|||}|ddt!t#t%||z
dz
zzzrn|dz
}@t't|dkt#t%||}|j)}|j+t,}	|j/|}|	|_|S)	Nrpr2zln of a negative valuerrrrr()rr_NegativeInfinityr	_InfinityrrrDrr
rrrr`r$_dlogrrrrCrrrrr_
r6r7rHrrrrrrr_s
          r/lnz
Decimal.lnsm=? lGw/J$$"4<L::?''(8(@B
Bd^vvrvv1LLT''))A-!Q'E"s3s5z?3A5a7889aKFs57|SU_vgF'')((9hhw#
r1c	|jt|jzdz
}|dk\rtt|dz
S|dkrttd|z
dz
St	|}|j
|j}}|dk(r@t|d|zz
}td|z}t|t|z
||kz
dzStd|z|z
}t||z|dkz
dz
S)	Nr2rrr(rr231r r!s       r/rzDecimal._log10_exp_bounds	ii#dii.(1,!8s3x=?""9s2c6{#A%%
d^vvrvv1!8aQBh-Cc!e*Cs8c#h&#)4q88"qb&(m3x!|sU{+a//r1c
	|
t}|j|}|r|S|stS|jdk(rtS|j
dk(r|j
tdS|jddk(rZ|jdddt|jdz
zk(r/t|jt|jzdz
}nt|}|j|j}}|j}||j!z
dz}	t#|||}|dd	tt%t'||z
dz
zzzrn|d
z
}@t)t|dkt%t'||}|j+}|j-t.}	|j1|}|	|_|S)Nrpr2zlog10 of a negative valuer(r1rrrrr)rrr&rr'rDrr
rErrrrrrr`r_dlog10rrrCrrrrr_r)s
          r/log10z
Decimal.log10s4? lGw/J$$"::?''(8(CE
E99Q<3499QR=CTYY!9K4L#L$))c$))n4q89C$B66266qAAt,,..q0F1f-Ab3s3u:#7#9!#;<<=!#3uQw<SZ6'JC'')((9hhw#
r1c	|j|}|r|S|
t}|jrtS|s|j	t
ddSt
|j}|j|S)Nrpzlogb(0)r2)	rrrr'rrrrrrs   r/logbzDecimal.logb
s	w/J? lG''	1EE
dmmo&xx  r1cr	|jdk7s|jdk7ry|jD]}|dvsyy)Nr(F01T)rDrrE)r6digs  r/
_islogicalzDecimal._islogical#
sC	::?dii1n99	C$	r1c|jt|z
}|dkDr	d|z|z}n|dkr||jd}|jt|z
}|dkDrd|z|z}||fS|dkr||jd}||fS)Nr(r)r`r)r6r7opaopbdifs     r/
_fill_logicalzDecimal._fill_logical1
sllSX%7c'C-C
1Ww||mn%CllSX%7c'C-CCx1Ww||mn%CCxr1c	|
t}t|d}|jr|js|jtS|j||j|j\}}djt||Dcgc]%\}}tt|t|z'c}}}td|jdxsddScc}}wNTrrr(r
rrr6rr
r;rErziprrrCrr6rr7r8r9rbrs        r/logical_andzDecimal.logical_and>
I? lGud3 (8(8(:''(899''EJJG
cCE1#c!fSVm,EF6==#5#<a@@F*C&
cp	|
t}|jtdd|jzd|S)Nr(r1)rlogical_xorrCr`rs  r/logical_invertzDecimal.logical_invertO
s<$? lG 03w||3CA F ')	)r1c	|
t}t|d}|jr|js|jtS|j||j|j\}}djt||Dcgc]%\}}tt|t|z'c}}}td|jdxsddScc}}wr=r>r@s        r/
logical_orzDecimal.logical_orV
sH? lGud3 (8(8(:''(899''EJJG
cCE1#c!fSVm,EF6==#5#<a@@FrDc	|
t}t|d}|jr|js|jtS|j||j|j\}}djt||Dcgc]%\}}tt|t|z'c}}}td|jdxsddScc}}wr=r>r@s        r/rFzDecimal.logical_xorg
rCrDc	t|d}|
t}|js|jrl|j}|j}|s|rH|dk(r|dk(r|j	|S|dk(r|dk(r|j	|S|j||S|j
j|j
}|dk(r|j|}|dk(r|}n|}|j	|Sr	rrrrrrrrrrs       r/max_magzDecimal.max_magx
sFud3? lGu00BBR7rQw99W--7rQw ::g..''w77MMO  !126""5)A7CCxx  r1c	t|d}|
t}|js|jrl|j}|j}|s|rH|dk(r|dk(r|j	|S|dk(r|dk(r|j	|S|j||S|j
j|j
}|dk(r|j|}|dk(r|}n|}|j	|SrrLrs       r/min_magzDecimal.min_mag
sFud3? lGu00BBR7rQw99W--7rQw ::g..''w77MMO  !126""5)A7CCxx  r1c	|
t}|j|}|r|S|jdk(rtS|jdk(r(t	dd|j
z|j
S|j}|jt|j|j|}||k7r|S|jt	dd|jdz
|S)Nrprr2r(r^r1)rrrr&rCr`rnrrrr_ignore_all_flagsrr-r6r6r7rHnew_selfs    r/
next_minuszDecimal.next_minus
sK? lGw/J#$$"#As7<<'7HH,,.k*!!#99W%tO||,QW]]_Q5FG#%	%r1c	|
t}|j|}|r|S|jdk(rtS|jdk(r(t	dd|j
z|j
S|j}|jt|j|j|}||k7r|S|jt	dd|jdz
|S)Nrpr2rr^r(r1)rrrr'rCr`rnrrrrrQrr+r6rRs    r/	next_pluszDecimal.next_plus
sK? lGw/J"##As7<<'7HH,,.m,!!#99W%tO||,QW]]_Q5FG#%	%r1c	t|d}|
t}|j||}|r|S|j|}|dk(r|j	|S|dk(r|j|}n|j
|}|jrM|jtd|j|jt|jt|S|j|jkrk|jt|jt |jt|jt|s|jt"|S)NTrr(rz Infinite result from next_toward)rrrrrrVrTrrrrDrr
rrfrrr	)r6rr7rH
comparisons     r/next_towardzDecimal.next_toward
s2	ud3? lGug.JYYu%
?>>%((..)C//'*C??  !C!$
,
  )  )
\\^gll
*  +  +  )  )$$W-
r1c0	|jry|jry|j}|dk(ry|dk(ry|jr|jryy|
t}|j
|	r|jry
y|jryy
)Nrrr2z	+Infinityrz	-Infinityz-Zeroz+Zerorpz
-Subnormalz
+Subnormalz-Normalz+Normal)rrrrrDrr)r6r7infs   r/number_classzDecimal.number_classs
	<<><<> !8"9<<>zz? lGW-zz##::r1c	tdSNrrbrs r/radixz
Decimal.radix:s5r{r1cn	|
t}t|d}|j||}|r|S|jdk7r|j	t
S|jt|cxkr|jksn|j	t
S|jrt|St|}|j}|jt|z
}|dkDr	d|z|z}n|dkr||d}||d|d|z}t|j|jdxsd|jSNTrr(rrrrrrr
r`rrrrErrCrDr)r6rr7rHtorotrotdigtopadrotateds        r/rotatezDecimal.rotate>s*C? lGud3ug.J::?''(899
U;w||;''(8994= E
s6{*19Y'F
QYUFG_F.6&5>1

 's 3 :sDIIG	Gr1c:	|
t}t|d}|j||}|r|S|jdk7r|j	t
Sd|j|jzz}d|j|jzz}|t|cxkr|ksn|j	t
S|jrt|St|j|j|jt|z}|j|}|S)NTrr(rr)rrrrrr
rar`rrrrCrDrEr)r6rr7rHliminflimsuprs       r/scalebzDecimal.scaleb_sL? lGud3ug.J::?''(899w||gll23w||gll23#e*..''(8994= TZZDIIE
4JK
FF7Or1c	|
t}t|d}|j||}|r|S|jdk7r|j	t
S|jt|cxkr|jksn|j	t
S|jrt|St|}|j}|jt|z
}|dkDr	d|z|z}n|dkr||d}|dkr|d|}n|d|zz}||jd}t|j|jdxsd|jSrarb)r6rr7rHrcrdreshifteds        r/r8z
Decimal.shiftxsFC? lGud3ug.J::?''(899
U;w||;''(8994= E
s6{*19Y'F
QYUFG_F19VenGs5y(Gw||mn-G

$+NN3$7$>3		K	Kr1c2|jt|ffSr,)	__class__rrs r/
__reduce__zDecimal.__reduce__sT--r1c\t|tur|S|jt|Sr,typerrorrs r/__copy__zDecimal.__copy__&: K~~c$i((r1c\t|tur|S|jt|Sr,rr)r6memos  r/__deepcopy__zDecimal.__deepcopy__rur1c	|
t}t||}|jrIt|j|}t|j
}|ddk(r|dz
}t|||S|dddg|j|d<|ddk(r.t|j|j|jdz}|j}|d}|i|ddvr|j|d	z|}nL|dd
vr|j||}n1|ddvr*t|j|kDr|j||}|s(|jdkDr|dd
vr|jd|}|s|d
r|jrd}	n|j}	|jt|jz}
|ddvr
|s|d	|z
}n-d	}n*|dd
vr|
}n |ddvr|jdkr|
dkDr|
}nd	}dkrd}d|z|jz}
ne|t|jkDr+|jd|t|jz
zz}d}
n"|jd|xsd}|j|d}
|
|z
}t!|	||
||S)N)_localeconvrs%gGr	precisioneEr2zfF%gGr(no_neg_0r
rr)r_parse_format_specifierr_format_signrDrr
_format_alignrgrCrErr_rr&r_format_number)r6	specifierr7rzspecrQbodyr_r~
adjusted_signrrrrrs               r/
__format__zDecimal.__format__s	? lG&ykJ

D1Dt}}'DF|s" tT22<:g&6&67DL<3#DJJ		499Q;GD##%	 F|t#{{9Q;9f&}}iZ:f%#dii.9*D{{9h7		A
$v,%*?==H-DZ(TZZM JJMYYTYY/
<4I1y=
&\U
"!H
&\T
!yyA~*r/%a<GXI2H
DII
&ii#xDII'>"??GHii	*1cGyy+H!mWhTJJr1)rN)NNr,)FN)TN)r:r;r<	__slots__rclassmethodrrrrrrrrrrrrrrrrr	rrrr r#r+__radd__r-r/r4__rmul__r;r@rBrHrJrLrNrRrTrVr[r]	__trunc__propertyr_rcrerhrFrryr{r~rrrrrdictrorrrrrrrrrrrr&rrrto_integralrr%rrrrrrrrrrrrrrrrrrrrrrr$r*rr0r2r6r;rBrGrIrFrMrOrTrVrYr\r_rgrkr8rprtrxrr-r1r/rrs66IT@l**X
@B4-'@%$%$%)$(4O0d+
2/h7!,!*,TlHB46nH9!vB8"#H764I!V/897I
$
ZL'--+++# &**&" 	<6|
2
4*/XS4jk?ZVp4@2;z
' 8D.:."$KaF(!T !D%2
4FR	"KO=IV$ '/  .9,20d0<1f!<A")A"A"!<!<%.%.,\(TGB2$KN.)
)TKr1rcr	tjt}||_||_||_||_|Sr,)rrrrDrErr)rQcoefficientrspecialr6s     r/rCrCs9>>'"DDJDIDIDKr1c eZdZ	dZdZdZy)rvc.|j|_yr,)rrr{)r6r{s  r/__init__z_ContextManager.__init__"s&++-r1cbt|_t|j|jSr,)r
saved_contextrr{rs r/	__enter__z_ContextManager.__enter__$s&'\4##$r1c.t|jyr,)rr)r6tvtbs    r/__exit__z_ContextManager.__exit__(s4%%&r1N)r:r;r<rrrr-r1r/rvrvs
. 'r1rvceZdZ				dSdZdZdZdZdZdZdZ	d	Z
d
ZdZdZ
e
ZdTd
ZdZdZdZdZdZdZdZdUdZdZdZdZdZdZdZdZdZdZ dZ!dZ"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-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=d;Z>d<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdTdDZGdEZHdFZIdGZJdHZKdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTdRZUeUZVy)VrNc
	t}
||n
j|_||n
j|_||n
j|_||n
j
|_||n
j|_||n
j|_|	g|_n|	|_ 
jj|_	n8tts!tfdtzD|_	n|_	 tjtd|_ytts!tfdtzD|_y|_y#t$rYPwxYw)Nc3<K|]}|t|vfywr,r).0rZrjs  r/	<genexpr>z#Context.__init__.<locals>.<genexpr>WMqq#a5j/2Mr(c3<K|]}|t|vfywr,r)rrZris  r/rz#Context.__init__.<locals>.<genexpr>^rr)r	NameErrorr`r_rfrargrh_ignored_flagsrjrrrrrfromkeysri)r6r`r_rfrargrhrirjrdcs       ``  r/rzContext.__init__>s"
	B!,D"''	$,$8bkk
 ,D"''	 ,D"''	$,$8bkk
#/URXX
!"$D"0D=DJE4(MHu<LMMDJDJ=x3DJE4(MHu<LMMDJDJ7		sE	EEct|tstd|z|dk(r||kDrJtd||||fz|dk(r||kr.td||||fz||ks||kDrtd||||fztj|||S)Nz%s must be an integer-infz%s must be in [%s, %d]. got: %sr[z%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)rrryrr__setattr__)r6namervminvmaxs     r/_set_integer_checkzContext._set_integer_checkbs%%3d:;;6>t| !BdDRVX]E^!^__
U]t| !BdDRVX]E^!^__t|ut| !AT4QUW\D]!]^^!!$e44r1ct|tstd|z|D]}|tvst	d|ztD]}||vst	d|zt
j
|||S)Nz%s must be a signal dictz%s is not a valid signal dict)rrryrKeyErrorrr)r6rrrs    r/_set_signal_dictzContext._set_signal_dictps!T"6:;;	DC(?>BCC	D	DC!8>BCC	D!!$a00r1c|dk(r|j||ddS|dk(r|j||ddS|dk(r|j||ddS|dk(r|j||ddS|d	k(r|j||ddS|d
k(r-|tvrtd|ztj	|||S|dk(s|d
k(r|j||S|dk(rtj	|||St
d|z)Nr`r2r[rfrr(rargrhr_z%s: invalid rounding moderirjrz.'decimal.Context' object has no attribute '%s')r_rounding_modesryrrrAttributeError)r6rrs   r/rzContext.__setattr__{s&6>**45AA
V^**4BB
V^**45AA
Z
**41==
W_**41==
Z
O+  ;e CDD%%dD%88
W_((u55
%
%%%dD%88 @4GI
Ir1ctd|z)Nz%s cannot be deleted)r)r6rs  r/__delattr__zContext.__delattr__s3d:;;r1c	z|jjDcgc]
\}}|s	|}}}|jjDcgc]
\}}|s	|}}}|j|j|j
|j|j|j|j||ffScc}}wcc}}wr,)
rirwrjror`r_rfrargrh)r6sigrrirjs     r/rpzContext.__reduce__s#'::#3#3#5;a;;#'::#3#3#5;a;;DMM499dii

E5:;	;<;s
B1B1
B7B7c	g}|jdt|z|jjDcgc]\}}|s	|j}}}|jddj|zdz|jjDcgc]\}}|s	|j}}}|jddj|zdzdj|dzScc}}wcc}}w)NzrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dzflags=[, ]ztraps=[))rvarsrirwr:rrj)r6rZrrnamesrs      r/r	zContext.__repr__s'	#:	)-

(8(8(:@1a@@	TYYu--34(,

(8(8(:@1a@@	TYYu--34yy|c!!	A@s
C3	C3
C9(C9cF	|jD]}d|j|<yra)rir6flags  r/rszContext.clear_flags&%JJ	!D DJJt	!r1cF	|jD]}d|j|<yra)rjrs  r/clear_trapszContext.clear_trapsrr1c	t|j|j|j|j|j
|j|j|j|j	}|Sr,)
rr`r_rfrargrhrirjrr6ncs  r/rzContext._shallow_copysP/
TYY

tyy$))]]DJJ

DJJ((*	r1c	t|j|j|j|j|j
|j|jj|jj|j	}|Sr,)rr`r_rfrargrhrirrrjrrs  r/rrzContext.copys_,
TYY

tyy$))]]DJJZZ__&

(9((*	r1c	tj||}||jvr|j|g|Sd|j|<|j
|s|j|g|S||r)_condition_maprmrr8rirj)r6	conditionexplanationr.errors     r/rzContext._raise_errors	""9i8D'''!57>>$...

5zz% %9;%%d2T22K  r1c*	|jtSr,)
_ignore_flagsrrs r/rQzContext._ignore_all_flagss2!t!!8,,r1cT	|jt|z|_t|Sr,)rr)r6ris  r/rzContext._ignore_flagss(2 $22T%[@E{r1c	|rt|dttfr|d}|D]}|jj	|yra)rrrrremove)r6rirs   r/
_regard_flagszContext._regard_flagssE9Za5,7!HE	-D&&t,	-r1cN	t|j|jz
dzSr)rrfr`rs r/r6z
Context.Etinys"/499tyy(1,--r1cN	t|j|jz
dzSr)rrar`rs r/rnzContext.Etops":499tyy(1,--r1c.	|j}||_|Sr,)r_)r6rsr_s   r/rzContext._set_roundings
	==
r1cd	t|tr-||jk7sd|vr|jtdSt||}|j
rEt|j|j|jz
kDr|jtdS|j|S)NrzAtrailing or leading whitespace and underscores are not permitted.rpzdiagnostic info too long in NaN)rrrrrrrrrEr`rhr)r6r"rs   r/create_decimalzContext.create_decimals	&
c3SCIIK%73#:$$%5&FG
G
C&88:#aff+		DJJ(>>$$%5%FH
Hvvd|r1cP	tj|}|j|Sr,)rrr)r6rrs   r/create_decimal_from_floatz!Context.create_decimal_from_floats'	
q!vvd|r1cB	t|d}|j|Sr)rr#r6rs  r/rzContext.abs/s&	"
1d+yyy&&r1ct	t|d}|j||}|turtd|z|SNTrrpUnable to convert %s to Decimal)rr+rryr6rrAr?s    r/addzContext.addDsE	
1d+
IIaI&=ABBHr1c6t|j|Sr,)rrrs  r/_applyzContext._applyYs166$<  r1cZ	t|tstd|jS)Nz,canonical requires a Decimal as an argument.)rrryrrs  r/rzContext.canonical\s+	!W%JKK{{}r1cD	t|d}|j||Sr)rrr6rrAs   r/rzContext.compareis)	@
1d+yyDy))r1cD	t|d}|j||Sr)rrrs   r/rzContext.compare_signals+	>
1d+400r1c@	t|d}|j|Sr)rrrs   r/rzContext.compare_totals$	2
1d+q!!r1c@	t|d}|j|Sr)rrrs   r/rzContext.compare_total_mags&	
1d+""1%%r1c>	t|d}|jSr)rrrs  r/rzContext.copy_abss!	
1d+zz|r1c4	t|d}t|Sr)rrrs  r/copy_decimalzContext.copy_decimals	
1d+qzr1c>	t|d}|jSr)rrrs  r/rzContext.copy_negates!	
1d+}}r1c@	t|d}|j|Sr)rrrs   r/rzContext.copy_signs#	(
1d+{{1~r1ct	t|d}|j||}|turtd|z|Sr)rr;rryrs    r/dividezContext.dividesE	:
1d+
MM!TM*=ABBHr1ct	t|d}|j||}|turtd|z|Sr)rrTrryrs    r/
divide_intzContext.divide_int9sE	
1d+
NN1dN+=ABBHr1ct	t|d}|j||}|turtd|z|Sr)rrHrryrs    r/r7zContext.divmodPsE	
1d+
LLDL)=ABBHr1cB	t|d}|j|Sr)rrrs  r/rzContext.expes&	(!T*uuTu""r1cF	t|d}|j|||Sr)rr)r6rrArs    r/rzContext.fma}s*	&
1d+uuQ4u((r1cZ	t|tstd|jS)Nz/is_canonical requires a Decimal as an argument.)rrryrrs  r/rzContext.is_canonicals,	!W%MNN~~r1c>	t|d}|jSr)rrrs  r/rzContext.is_finites!	$
1d+{{}r1c>	t|d}|jSr)rrrs  r/rzContext.is_infinites!
	
1d+}}r1c>	t|d}|jSr)rrrs  r/rzContext.is_nans!	
1d+xxzr1cB	t|d}|j|Sr)rrrs  r/rzContext.is_normals&	&
1d+{{4{((r1c>	t|d}|jSr)rrrs  r/rzContext.is_qnans!
	
1d+yy{r1c>	t|d}|jSr)rrrs  r/rzContext.is_signeds!	
1d+{{}r1c>	t|d}|jSr)rrrs  r/rzContext.is_snan
s!	
1d+yy{r1cB	t|d}|j|Sr)rrrs  r/rzContext.is_subnormals&	$
1d+~~d~++r1c>	t|d}|jSr)rrrs  r/rzContext.is_zero3s!	
1d+yy{r1cB	t|d}|j|Sr)rr*rs  r/r*z
Context.lnDs&	$
1d+ttDt!!r1cB	t|d}|j|Sr)rr0rs  r/r0z
Context.log10Zs&	0
1d+wwtw$$r1cB	t|d}|j|Sr)rr2rs  r/r2zContext.logbvs&	,
1d+vvdv##r1cD	t|d}|j||Sr)rrBrs   r/rBzContext.logical_and(	.
1d+}}Q}--r1cB	t|d}|j|Sr)rrGrs  r/rGzContext.logical_inverts)	
1d+--r1cD	t|d}|j||Sr)rrIrs   r/rIzContext.logical_ors(	.
1d+||At|,,r1cD	t|d}|j||Sr)rrFrs   r/rFzContext.logical_xorr
r1cD	t|d}|j||Sr)rr%rs   r/r%zContext.max(	.
1d+uuQu%%r1cD	t|d}|j||Sr)rrMrs   r/rMzContext.max_mag(	
1d+yyDy))r1cD	t|d}|j||Sr)rrrs   r/rzContext.min rr1cD	t|d}|j||Sr)rrOrs   r/rOzContext.min_mag;rr1cB	t|d}|j|Sr)rrrs  r/minusz
Context.minusL&	
1d+yyy&&r1ct	t|d}|j||}|turtd|z|Sr)rr4rryrs    r/multiplyzContext.multiply]sE	0
1d+
IIaI&=ABBHr1cB	t|d}|j|Sr)rrTrs  r/rTzContext.next_minus}s&	 
1d+||D|))r1cB	t|d}|j|Sr)rrVrs  r/rVzContext.next_pluss&	 
1d+{{4{((r1cD	t|d}|j||Sr)rrYrs   r/rYzContext.next_towards(	>
1d+}}Q}--r1cB	t|d}|j|Sr)rrrs  r/rzContext.normalizes&	(
1d+{{4{((r1cB	t|d}|j|Sr)rr\rs  r/r\zContext.number_classs'-	\
1d+~~d~++r1cB	t|d}|j|Sr)rr rs  r/pluszContext.plusrr1cv	t|d}|j|||}|turtd|z|Sr)rrrry)r6rrArr?s     r/powerz
Context.power#sIG	P
1d+
IIaI.=ABBHr1cD	t|d}|j||Sr)rrrs   r/rzContext.quantizess)5	l
1d+zz!Tz**r1c	tdSr^rbrs r/r_z
Context.radixs	
r{r1ct	t|d}|j||}|turtd|z|Sr)rrLrryrs    r/r9zContext.remaindersE	<
1d+
IIaI&=ABBHr1cD	t|d}|j||Sr)rrRrs   r/rRzContext.remainder_nears+	<
1d+400r1cD	t|d}|j||Sr)rrgrs   r/rgzContext.rotates(	2
1d+xx4x((r1c@	t|d}|j|Sr)rrrs   r/rzContext.same_quantums$	(
1d+~~a  r1cD	t|d}|j||Sr)rrkrs   r/rkzContext.scaleb2s(	
1d+xx4x((r1cD	t|d}|j||Sr)rr8rs   r/r8z
Context.shiftEs(	4
1d+wwq$w''r1cB	t|d}|j|Sr)rrrs  r/rzContext.sqrtcs&	8
1d+vvdv##r1ct	t|d}|j||}|turtd|z|Sr)rr-rryrs    r/subtractzContext.subtractsE	
1d+
IIaI&=ABBHr1cB	t|d}|j|Sr)rrrs  r/rzContext.to_eng_strings&	0
1d+t,,r1cB	t|d}|j|Sr)rrrs  r/
to_sci_stringzContext.to_sci_strings&	
1d+yyy&&r1cB	t|d}|j|Sr)rrrs  r/rzContext.to_integral_exacts)	4
1d+""4"00r1cB	t|d}|j|Sr)rrrs  r/rzContext.to_integral_values)	2
1d+""4"00r1)	NNNNNNNNNr,)r)Wr:r;r<rrrrrrpr	rsrrrrrtrrQrrrr6rnrrrrrrrrrrrrrrrrrr7rrrrrrrrrrrrr*r0r2rBrGrIrFr%rMrrOrrrTrVrYrr\rr!rr_r9rRrgrrkr8rr,rr/rrrr-r1r/rr+s$BFDH&*"H5	1I2<;"!
!
H!,--H..&"$'**!"*H!1F":&0#J.*#0). ,
 ).
" ,,"",%8$4.6.&-6.6&6*"&6*"'"@*()(!.F)00,d'"N`8+t$L 1D):!0)&(<$@.-8'1<1<$Kr1rceZdZdZddZdZy)rrQrrNc
|d|_d|_d|_yt|tr=|j
|_t|j|_|j|_y|d|_|d|_|d|_y)Nr(r2r)rQrrrrrDrEr)r6rs  r/rz_WorkRep.__init__sn=DIDHDH
w
'DI5::DHzzDHaDIQxDHQxDHr1cVd|jd|jd|jdS)N(rrr3rs r/r	z_WorkRep.__repr__s!%DHHdhh??r1r,)r:r;r<rrr	r-r1r/rrs$I

 @r1rc	|j|jkr|}|}n|}|}tt|j}tt|j}|jt	d||z
dz
z}||jzdz
|krd|_||_|xjd|j|jz
zzc_|j|_||fS)Nrrr2r)rrrrr)r)r*r`tmprtmp_len	other_lenrs        r/r'r'sww#cgg,GC		N#I

''CGdNQ./
/C599q 3&		GGrcgg		)**GiiCG8Or1c	|dk(ry|dk\r|d|zzStt|}t|t|jdz
}||krdS|d|zzS)Nr(rr)rrrrstrip)rBrstr_nval_ns    r/rr6sp		Av	
a2q5yCFE
Sc!233rzt2qBF{2r1ch	|dks|dkrtdd}||k7r||||zz
dz	}}||k7r|S)Nr(z3Both arguments to _sqrt_nearest should be positive.r2)r)rBrrAs   r/
_sqrt_nearestr@KsS	AvaNOOA
q&!QBE'1*1q&Hr1cF	d|z||z	}}|d||dz
zz|dzz|kDzS)Nr2rr-)rr8rAr>s    r/_rshift_nearestrBZs?
:qEzqA1!9
1%)**r1cD	t||\}}|d|z|dzz|kDzS)Nrr2)r7)rrAr>r?s    r/_div_nearestrDbs3!Q<DAq!qsa  r1cD	||z
}d}||krt|||z
z|k\s||kDr|t|||z
z	|k\rht||zdz|t||t||zz|z}|dz
}||krt|||z
z|k\rN||kDrt|||z
z	|k\rht	dtt
|zd|zz}t||}t||}t|dz
ddD]}t||t||z|z
} t||z|S)Nr(r2rr)rrDr@rBrrrr)	rMLrRTyshiftwrs	         r/_ilogrMjsF:	
!A	A6c!f!mq(q5SVqs]a'!A#!]1a10E.E+FJJ
L	Q	
6c!f!mq(q5SVqs]a'

SSV_qs
#	$$A
Q
"FQA
1Q32
;AfQh!::;!Qr1cL	|dz
}tt|}||z||zdk\z
}|dkDrWd|z}||z|z
}|dk\r	|d|zz}nt|d|z}t||}t	|}t||z|}||z}	nd}t|d|z}	t|	|zdSNrr2r(rr)rrrDrM
_log10_digits)
rrrrrrGrlog_dlog_10log_tenpowers
          r/r/r/s:FA	CFA	!qsaxA1uE
aCE6
QJAQQB'Aaq!U1Wf-s#ArA2v.U*C00r1c	|dz
}tt|}||z||zdk\z
}|dkDr6||z|z
}|dk\r	|d|zz}nt|d|z}t|d|z}nd}|rJttt	|dz
}||zdk\rt|t||zzd|z}nd}nd}t||zdSrO)rrrDrMrrP)	rrrrrrrQr	f_log_tens	         r/r(r(s:FA
	CFA	!qsaxA	1u
aCE6
QJAQQB'AaQ	CAK "u9>%Q}QuW'=%=r5yIII		E)3//r1ceZdZ	dZdZy)
_Log10Memoizecd|_y)N/23025850929940456840179914546843642076011014886)rrs r/rz_Log10Memoize.__init__s	Gr1cB	|dkrtd|t|jk\r\d}	d||zdzz}tt	td|z|d}||dd|zk7rn|dz
}@|j
ddd|_t|jd|d	zS)
Nr(zp should be nonnegativerrrrrrr2)rrrrrDrMr<r)r6rrrGrs     r/	getdigitsz_Log10Memoize.getdigitss	
q5677DKK  E5O\%1a.#>?5&'?c%i/

!--,Sb1DK4;;t!$%%r1N)r:r;r<rr[r-r1r/rWrWsCH&r1rWcR	t||z|z}tdtt|zd|zz}t	||}||z}t|dz
ddD]}t	|||zz||z}t|dz
ddD]}||dzz}t	|||zz|}||zS)NrFrr2r(rr)rrrrrDr)	rrGrHrIrJrMshiftrrs	         r/_iexpr^
s!(	1qyA

SSV_qs
#	$$AQA
TF
1Q32
5FQJ!451Q3B
/QqSAfHv./
Q3Jr1c	(	|dz
}td|tt|zdz
}||z}||z}|dk\r	|d|zz}n	|d|zz}t|t	|\}}t|d|z}tt
|d|zd||z
dzfS)Nrr(r2rir)r%rrr7rPrDr^)	rrrrr>r8cshiftquotrs	         r/r	r	2s4FA
1s3q6{?Q&'E	E	A
aCEz2u9BJv}Q/0ID#sBI
&Cc2q5)40$(Q,>>r1c	ttt||z}t||||zdz}||z
}|dk\r||zd|zz}nt	||zd|z}|dk(rCtt||zdk\|dkDk(rd|dz
zdzd|z
}
}	|	|
fSd|zdz
|}
}	|	|
fSt||dz|dz\}	}
t	|	d}	|
dz
}
|	|
fS)Nr2r(r)rrrr(rDr	)rrrrrrAlxcr8pcrrs           r/rrVs	CBLBAB!A
C
qDEz
VBI

#b&"uf*
-	QwR\B
!
#a0ac1ac3E#:
Qq1"3E#:	21vqs+
sUB'q#:r1rF5(rrr)	r12345678r^ch	|dkrtdt|}dt|z||dz
S)Nr(z0The argument to _log10_lb should be nonnegative.r)rrr)r
correctionstr_cs   r/rrs@KAvKLLFEs5z>JuQx000r1c	t|tr|St|trt|S|r%t|trtj	|S|rtd|ztS)Nr)rrrrrryr)rrallow_floats   r/rrsc%!%u~z%/!!%((9EABBr1cz	t|tr||fSt|tjrm|jsJt|jtt|j|jz|j}|t|jfS|r5t|tjr|jdk(r|j}t|t rMt#}|rd|j$t&<n|j)t&d|tj+|fSt,t,fS)Nr(r2r)rr_numbersRationalrrCrDrrrEdenominatorr	numeratorComplexrcr_rrrirrrr)r6rrr7s    r/rrs%!U{%**+#DJJ$'DII9J9J(J$K$(II/DWU__---
z%)9)9:uzzQ

%,,-GMM.)  M
OW''...>))r1ri?Bi)r`r_rjrirarfrgrhr)r`r_rjria        # A numeric string consists of:
#    \s*
    (?P<sign>[-+])?              # an optional sign, followed by either...
    (
        (?=\d|\.\d)              # ...a number (with at least one digit)
        (?P<int>\d*)             # having a (possibly empty) integer part
        (\.(?P<frac>\d*))?       # followed by an optional fractional part
        (E(?P<exp>[-+]?\d+))?    # followed by an optional exponent, or...
    |
        Inf(inity)?              # ...an infinity, or...
    |
        (?P<signal>s)?           # ...an (optionally signaling)
        NaN                      # NaN
        (?P<diag>\d*)            # with (possibly empty) diagnostic info.
    )
#    \s*
    \Z
z0*$z50*$z\A
(?:
   (?P<fill>.)?
   (?P<align>[<>=^])
)?
(?P<sign>[-+ ])?
(?P<no_neg_0>z)?
(?P<alt>\#)?
(?P<zeropad>0)?
(?P<minimumwidth>(?!0)\d+)?
(?P<thousands_sep>,)?
(?:\.(?P<precision>0|(?!0)\d+))?
(?P<type>[eEfFgGn%])?
\Z
cp	tj|}|td|z|j}|d}|d}|ddu|d<|dr |td|z|td|z|xsd|d<|xsd|d<|d	d
|d	<t	|dxsd|d<|d
t	|d
|d
<|d
dk(r|d|ddvrd|d
<|ddk(rHd|d<|tj}|dtd|z|d|d<|d|d<|d|d<|S|dd|d<ddg|d<d|d<|S)NzInvalid format specifier: fillalignzeropadz7Fill character conflicts with '0' in format specifier: z2Alignment conflicts with '0' in format specifier:  >rQrminimumwidthrr~r(rsgGnr2rBr|
thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: grouping
decimal_pointrrr)_parse_format_specifier_regexmatchr	groupdictr_locale
localeconv)format_specrzrformat_dictr}r~s      r/rr,s$	&++K8Ay5CDD++-KvD E))4D@K	968CDE
E24?@A
A+#K!<CK6"!F#&k.&A&HS"IK;+#&{;'?#@K ;1$v&+f*=*F'(K$6c!!F!,,.K'3>@KLM
M'2?'CO$"-j"9J'2?'CO$'/+-K(#$a&J'*O$r1c	|d}|d}||t|z
t|z
z}|d}|dk(r
||z|z}|S|dk(r
||z|z}|S|dk(r
||z|z}|S|dk(r!t|dz}|d||z|z||dz}|Std	)
Nrr}r~<r=^rzUnrecognised alignment field)rr)	rQrrrr}paddingr~rhalfs	         r/rr|s'L<DL3t9,s4y89GME|w&M
#4$&M
#$&M

#7|Q$$&->M788r1c	ddlm}m}|sgS|ddk(r#t|dk\r||dd||dS|dtj
k(r|ddSt
d)Nr()chainrepeatrrrz unrecognised format for grouping)	itertoolsrrrrCHAR_MAXr)rrrs   r/_group_lengthsrsq(		"	s8}1Xcr]F8B<$899	"))	)};<<r1c	|d}|d}g}t|D]{}|dkrtdttt	||d|}|jd|t	|z
z||dz|d|}||z}|s|dkrnM|t	|z}}tt	||d}|jd|t	|z
z||dz|j
t|S)Nrrr(zgroup length should be positiver2r)rrrr%rrrreversed)rr	min_widthseprgroupsrs       r/_insert_thousands_seprs 
CJH
F
H
%
;6>??CKA.2

c1s6{?+faRSk9:!Q	)q.SX	
;
FY*

c1s6{?+faRSk9:88HV$%%r1c$	|ry|ddvr|dSy)NrrQz +rr-)is_negativers  r/rrs$#	
f	F|r1c4	t||}|s|dr|d|z}|dk7s|ddvr"ddddd|d}|d	j||z
}|dd
k(r|d
z
}|dr|dt|z
t|z
}nd}t|||}t	|||z|S)
Naltrr(rsrrr)rrr}r|z{0}{1:+}r{rr)rformatrrr)rrrrrrQecharrs        r/rrs"T*D4;(83
ax4<4'#C8fFJ%%eS11F|sCI(3x=83t9D		#GT9=Gwx/66r1Infz-Infrrrr,)F)r()r)FF)r2){__all__r:	__xname____version____libmpdec_version__mathrnumbersrwsyscollectionsr)_namedtuplerImportErrorrrrrrrrrr%r&maxsizer!r"r#r$ArithmeticErrorrr	r
rZeroDivisionErrorrrrrrr
rrrryrrrrcontextvars
ContextVarrl	frozensetrxrrr rrrCNumberregisterrvrrr'rrrrr@rBrDrMr/r(rWr[rPr^r	rrrrrrrrecompileVERBOSE
IGNORECASErrrwrDOTALLrlocalerrrrrrrr'r&rGrrrrO	hash_infomodulusrr[rrX_PyHASH_NANrrr-r1r/<module>rs aF!F
	
&5~/EiXL


#
#

;;'!H!H"HHHH
#	

.

':'%%'8% 	)		(*;	

%

	 	#:w#:L
)

%y
 
^Wh'ND##3$%5#$4 !13}o}/:G-{--.?@O&+hw3Kfw3Krg&	!

'f
'O$fO$b6@v@4<

3*

+!. ` 1D*0X!&F!&F))
#J"?H(Vr"
br+1&"*T
/x)9:


x)97IN
*

"**"ZZ"--#!""'#&RZZ

$
$
bjj &&!+

,ZZ		! 
	N`6=.#&J#7R
EN	FOu~
qzr{/0--''mmmmB!+_=
mC&%L&L|		s#M%M4%M10M14M<;M<