
    _Mhi                     l   d gZ ddlZddlZddlZddlZddlZddddddd	d	d
d	d	dddddZdddddddddddddddZi 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 G d, d-          Z G d. d/e          Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7 Z d8 Z!d9 Z"d: Z# G d; d<e$          Z%	 	 d?d>Z&dS )@readsav    Nz>u1z>i2z>i4z>f4z>f8z>c8z|Oz>c16z>u2z>u4z>i8z>u8)                        	   
                  START_MARKERCOMMON_VARIABLEVARIABLESYSTEM_VARIABLE
END_MARKER	TIMESTAMPCOMPILEDIDENTIFICATIONVERSIONHEAP_HEADER	HEAP_DATA	PROMOTE64NOTICEDESCRIPTION)r   r   r   r   r	   r   r   r   r   r               c                 |    |                                  }|dz  dk    r|                     |dz   |dz  z
             dS )z+Align to the next 32-bit position in a filer   r   N)tellseek)fposs     M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/io/_idl.py	_align_32r+   K   sB     &&((C
Qw!||	sQwq !!!
F    c                 0    |                      |           dS )zSkip `n` bytesNreadr(   ns     r*   _skip_bytesr2   T   s    FF1III
Fr,   c                 ,    |                      |          S )zRead the next `n` bytesr.   r0   s     r*   _read_bytesr4   Z   s    66!99r,   c                     t          j        t          j        d|                     d          dd                   d                   S )zRead a single bytez>Br   Nr   r   )npuint8structunpackr/   r(   s    r*   
_read_byter;   _   s5    8FM$q		"1"66q9:::r,   c                     t          j        t          j        d|                     d                    d                   S )Read a signed 32-bit integer>lr   r   r6   int32r8   r9   r/   r:   s    r*   
_read_longrA   d   -    8FM$q		2215666r,   c                     t          j        t          j        d|                     d          dd                   d                   S )zRead a signed 16-bit integerz>hr   r   r   )r6   int16r8   r9   r/   r:   s    r*   _read_int16rE   i   s5    8FM$q		!A#77:;;;r,   c                     t          j        t          j        d|                     d                    d                   S )r=   z>ir   r   r?   r:   s    r*   _read_int32rG   n   rB   r,   c                     t          j        t          j        d|                     d                    d                   S )zRead a signed 64-bit integerz>qr   r   )r6   int64r8   r9   r/   r:   s    r*   _read_int64rJ   s   rB   r,   c                     t          j        t          j        d|                     d          dd                   d                   S )zRead an unsigned 16-bit integerz>Hr   r   r   )r6   uint16r8   r9   r/   r:   s    r*   _read_uint16rM   x   s5    9V]41Q388;<<<r,   c                     t          j        t          j        d|                     d                    d                   S )zRead an unsigned 32-bit integer>Ir   r   )r6   uint32r8   r9   r/   r:   s    r*   _read_uint32rQ   }   -    9V]433A6777r,   c                     t          j        t          j        d|                     d                    d                   S )zRead an unsigned 64-bit integerz>Qr   r   )r6   uint64r8   r9   r/   r:   s    r*   _read_uint64rU      rR   r,   c                     t          j        t          j        d|                     d                    d                   S )zRead a 32-bit floatz>fr   r   )r6   float32r8   r9   r/   r:   s    r*   _read_float32rX      -    :fmD!&&))44Q7888r,   c                     t          j        t          j        d|                     d                    d                   S )zRead a 64-bit floatz>dr   r   )r6   float64r8   r9   r/   r:   s    r*   _read_float64r\      rY   r,   c                       e Zd ZdZd ZdS )PointerzClass used to define pointersc                     || _         d S N)index)selfra   s     r*   __init__zPointer.__init__   s    
r,   N)__name__
__module____qualname____doc__rc    r,   r*   r^   r^      s)        ''    r,   r^   c                       e Zd ZdZdS )ObjectPointerz$Class used to define object pointersN)rd   re   rf   rg   rh   r,   r*   rj   rj      s        ..Dr,   rj   c                     t          |           }|dk    r3t          | |                              d          }t          |            nd}|S )zRead a stringr   latin1 )rA   r4   decoder+   )r(   lengthcharss      r*   _read_stringrq      sJ    ]]FzzAv&&--h77!Lr,   c                     t          |           }|dk    r/t          |           }t          | |          }t          |            nd}|S )z.Read a data string (length is specified twice)r   rm   )rA   r4   r+   )r(   ro   string_datas      r*   _read_string_datart      sH    ]]FzzA!!V,,!r,   c                    |dk    r1t          |           dk    rt          d          t          |           S |dk    rt          |           S |dk    rt          |           S |dk    rt	          |           S |dk    rt          |           S |dk    r8t	          |           }t	          |           }t          j        ||dz  z             S |d	k    rt          |           S |d
k    rt          d          |dk    r8t          |           }t          |           }t          j	        ||dz  z             S |dk    rt          t          |                     S |dk    rt          t          |                     S |dk    rt          |           S |dk    rt          |           S |dk    rt          |           S |dk    rt          |           S t          d|z            )z*Read a variable with a specified data typer   z*Error occurred while reading byte variabler   r   r   r   r	   y              ?r
   r   z'Should not be here - please report thisr   r   r   r   r   r   r   z)Unknown IDL type: %i - please report this)rG   	Exceptionr;   rE   rX   r\   r6   	complex64rt   
complex128r^   rj   rM   rQ   rJ   rU   )r(   dtyperealimags       r*   
_read_datar|      s   zzq>>QHIII!}}	!1~~	!1~~	!Q	!Q	!QQ|D4"9,---	! ###	!ABBB	!QQ}TD2I-...	"{1~~&&&	"[^^,,,	"A	"A	"1~~	"ACeKLLLr,   c           	      6   |d         }|d         }g }|D ]}|d         s|d         rB|                     |d                                         |d         ft          j        f           T|d         t          v rI|                     |d                                         |d         ft          |d                  f           t          d|d         z            t          j                            |f|          }t          |          D ]}|D ]}|d         }|d         rEt          | |d	         |d                  |d
         |d                            ||d                  |<   W|d         r3t          | ||d	         |d                            ||d                  |<   t          | |          ||d                  |<   |d         dk    rL|d         dt          |d                            }	|	                                 |                    |	          }|S )z
    Read a structure, with the array and structure descriptors given as
    `array_desc` and `structure_desc` respectively.
    	nelementstagtable	structurearraynametypecodez Variable type %i not implementedry   arrtablestructtablendimsr   dimsN)appendlowerr6   object_
DTYPE_DICTrv   recrecarrayrange_read_structure_read_arrayr|   intreversereshape)
r(   
array_descstruct_descnrowscolumnsry   colr   ir   s
             r*   r   r      sg    {#E*%GE 	M 	M{ 	Ms7| 	MLL3v;,,..F<bjIJJJJ:*,,s6{0022CK@$.s:$?A B B B B   B<?
O!L M M M 	77I5\\ A A 
	A 
	AC
OE; A,;A&1*&=c&k&J&1-&@V&M-O -O	#f+&q)) W A,75&1*&=c&k&J-L -L	#f+&q)) -7q%,@,@	#f+&q))
	A 'Q&!";3z'':#;#;";<%%d++	r,   c                    |dv rr|dk    r1t          |           }||d         k    rt          j        dd           t          j        |                     |d                   t          |                   }n|dv rGt          j        |                     |d         d	z            t          |                   dd
d	         }nag }t          |d                   D ])}|}t          | |          }|	                    |           *t          j
        |t          j                  }|d         dk    rL|d         d
t          |d                            }|                                 |                    |          }t          |            |S )z`
    Read an array of type `typecode`, with the array descriptor given as
    `array_desc`.
    )	r   r   r   r   r	   r   r   r   r   r   nbytesz.Not able to verify number of bytes from headerr   
stacklevelr   )r   r   r   Nr~   r   r   )rG   warningswarnr6   
frombufferr/   r   r   r|   r   r   r   r   r   r   r+   )	r(   r   r   r   r   r   ry   datar   s	            r*   r   r     s    111q== ^^FH---N)*, , , , affZ%9::$.x$8: : : 
W		 affZ%9!%;<<$.x$8: : ::;$Q$@ z+.// 	 	AEa''DLLbj111 'Q&!";3z'':#;#;";<d## aLLLLr,   c                 2    dt                     i}t                     }|t                                         t          j                  dz  z  }t           d           |d         t          vrt          d|d         z            t          |d                  |d<   |d         dv r|d         dk    rt                     |d<   n"t                     |d<   t           d           t                     }|d	         d
k    r.| 
                                k    rd|d<   nt          d          t                     }|dk    rt          d          |d         r"t           |d         |d                   |d<   n~|d         r"t           |d	         |d                   |d<   nT|d	         }t           |          |d<   n7|d         dk    rHt           d           t                     |d<   t                     |d<   t                     |d<   n|d         dk    rJt                     |d<   t                     |d<   t                     |d<   t                     |d<   n|d         dk    r8t                     |d<   t                     |d <   t                     |d!<   nI|d         d"k    rt                     |d#<   n)|d         d$k    rt                     |d%<   n	|d         d&k    r7t                     |d'<    fd(t!          |d'                   D             |d)<   n|d         d*k    rIt                     |d+<   t                     |d,<    fd-t!          |d+                   D             |d.<   nq|d         d/k    rd0|d1<   n_|d         d2k    rt#          j        d3d45           n<|d         d6k    rt#          j        d7d45           nt          d8|d          d9                               |           |S ):z!Function to read in a full recordrectype        r   zUnknown RECTYPE: %i)r   r   r   varname
heap_indexr   r   Nr   zUnexpected type code: 0r
   zVARSTART is not 7r   r   r   r   r   i   dateuserhostr   formatarchosreleaseIDENTIFICATONauthortitleidcoder   noticer    descriptionr   nvaluesc                 .    g | ]}t                    S rh   rA   .0_r(   s     r*   
<listcomp>z _read_record.<locals>.<listcomp>      MMMqZ]]MMMr,   indicesCOMMONBLOCKnvarsr   c                 .    g | ]}t                    S rh   rq   r   s     r*   r   z _read_record.<locals>.<listcomp>  s    NNN!l1ooNNNr,   varnamesr   TendUNKNOWNzSkipping UNKNOWN recordr   r   r   zSkipping SYSTEM_VARIABLE recordzrecord['rectype']=z not implemented)rA   rQ   astyper6   rI   r2   RECTYPE_DICTrv   rq   _read_typedescr&   
ValueErrorr   r   r|   rt   r   r   r   r'   )r(   recordnextrecrectypedescvarstartry   s   `     r*   _read_recordr   <  sV    A'F1ooG|A%%bh//%77G1i,,-y0AABBB$VI%67F9i555)
** ,QF9#-a==F< 1$Q''z"a''!&&((""!%v !:;;; "!}}H1}} 3444;' 6!0K4M4?4N"P "PvW% 6!,QJ0G0;L0I"K "Kv $J/!+Au!5!5v			k	)	)Au%av%av%av			i	'	'%a==x%av#At(OOy			o	-	-'??x&q//w'??x			h	&	&'??x			m	+	+ 1! 4 4}			m	+	+&qMMyMMMME&:K4L4LMMMy			m	+	+$Q--w%avNNNNuVG_7M7MNNNz			l	*	*u			i	'	'/A>>>>>			/	/	/7AFFFFF PVI->PPPQQQFF7OOOMr,   c                 V   t          |           t          |           d}|d         dz  dk    rt          d          |d         dz  dk    |d<   |d         dz  dk    |d<   |d         r%t          |           |d	<   t          |           |d
<   n|d         rt          |           |d	<   |S )z%Function to read in a type descriptor)r   varflagsr   r   z System variables not implementedr   r       r   r   r   )rA   rv   _read_arraydesc_read_structdesc)r(   typedescs     r*   r   r     s     'qMMz!}}EEH
a1$$:;;; ,q0A5HW$Z025;H[ 4!0!3!3"21"5"5	'	 4!0!3!3Or,   c                 Z    dt                     i}|d         dk    rt           d           t                     |d<   t                     |d<   t                     |d<   t           d           t                     |d<    fdt          |d                   D             |d	<   n|d         d
k    rt          j        dd           t           d           t                     |d<   t                     |d<   t                     |d<   t           d           d|d<   g |d	<   t          |d                   D ]N}t                     }|dk    rt          d          |d	                             t                                Ont          d|d         z            |S )z'Function to read in an array descriptorarrstartr   r   r   r~   r   nmaxc                 .    g | ]}t                    S rh   r   r   s     r*   r   z#_read_arraydesc.<locals>.<listcomp>  r   r,   r      z$Using experimental 64-bit array readr   r   r   zExpected a zero in ARRAY_DESCzUnknown ARRSTART: %i)rA   r2   r   r   r   rU   rv   r   )r(   	arraydescdvs   `   r*   r   r     s    Z]]+I!!Aq(mm	(!+A	+']]	'Aq&qMM	&MMMME)F:K4L4LMMM	&	:	"	$	$<KKKKAq*1oo	(!-a	+']]	'Aq	&	&y()) 	4 	4A1AAvv ?@@@f$$Z]]3333		4 .:1FFGGGr,   c                 x    i }t                     }|dk    rt          d          t                     |d<   t                     }t                     |d<   t                     |d<   |dz  |d<   |dz  |d	<   |d
z  |d<   |d         s fdt          |d                   D             |d<   |d         D ]}t                     |d<    fd|d         D             |d<    fd|d         D             |d<   |d	         s|d         rlt                     |d<   t                     |d<    fdt          |d                   D             |d<    fdt          |d                   D             |d<   |t          |d         <   n1|d         t          vrt          d          t          |d                  }|S )z*Function to read in a structure descriptorr   zSTRUCTSTART should be 9r   ntagsr   r   predefr   inheritsr   is_superc                 .    g | ]}t                    S rh   )_read_tagdescr   s     r*   r   z$_read_structdesc.<locals>.<listcomp>  s7     "G "G "G&' #0"2"2 "G "G "Gr,   r   c                 L    i | ] }|d          
|d         t                    !S )r   r   )r   r   tagr(   s     r*   
<dictcomp>z$_read_structdesc.<locals>.<dictcomp>  s@     "3 "3 "3&)%(\"3#f+q/A/A "3 "3 "3r,   r   c                 L    i | ] }|d          
|d         t                    !S )r   r   r   r   s     r*   r   z$_read_structdesc.<locals>.<dictcomp>	  sB     %: %: %:),(+K(8%:S[2B12E2E %: %: %:r,   r   	classnamensupclassesc                 .    g | ]}t                    S rh   r   r   s     r*   r   z$_read_structdesc.<locals>.<listcomp>  s2     +K +K +K$%Q+K +K +Kr,   supclassnamesc                 .    g | ]}t                    S rh   r   r   s     r*   r   z$_read_structdesc.<locals>.<listcomp>  s5     +O +O +O() ##+O +O +Or,   supclasstablez"PREDEF=1 but can't find definition)rA   rv   rq   r   STRUCT_DICT)r(   
structdescstructstartr   r   s   `    r*   r   r     sv    JQ--Ka1222%aJv]]F$Q--Jw%a==Jx!A:Jx#aZJz#aZJzh 5"G "G "G "G+0G1D+E+E"G "G "G
: j) 	* 	*C&q//CKK"3 "3 "3 "3-7
-C"3 "3 "3
:%: %: %: %:0::0F%: %: %:
=! j! 	OZ
%; 	O&21ooJ{#(21J}%+K +K +K +K).z-/H)I)I+K +K +KJ'+O +O +O +O-2:m3L-M-M+O +O +OJ' +5Jv&'' f[00@AAA F!34
r,   c                     dt          |           i}|d         dk    rt          |           |d<   t          |           |d<   t          |           }|dz  dk    |d<   |dz  dk    |d<   |d         t          v |d<   |S )	z$Function to read in a tag descriptoroffsetr   r   r   r   r   scalar)rA   rU   r   )r(   tagdesctagflagss      r*   r   r   !  s     A'GxB(OO$Q--GJ!}}H!|q(GG#b=B.GK
+z9GH Nr,   c                    t          | t                    rt          | t                    rR| j        dk    rd } n/| j        |v r|| j                 } nt          j        dd           d } t          | t                    Rt          | |          \  }}|r|} d| fS t          | t          j        j                  r3t          |           D ]\  }}t          ||          \  }}|r|| |<    d| fS t          | t          j
                  r3t          |           D ]\  }}t          ||          \  }}|r|| |<    d| fS t          | t          j                  rs| j        j        t          j        u rWt          | j                  D ]B}t          |                     |          |          \  }}|r||                     d          |<   Cd| fS d| fS )Nr   zNVariable referenced by pointer not found in heap: variable will be set to Noner   r   TFr   )
isinstancer^   ra   r   r   _replace_heapr6   r   r   	enumerater   ndarrayry   typer   r   sizeitemr   )variableheapreplacenewirr   ivvalues           r*   r   r   4  s   (G$$ >7++ 	$~"">T))#HN3HHM #J-.0 0 0 0  $H 7++ 	$ %Xt44 	HX~	Hbfo	.	. ( $H-- 	# 	#JB(66LGS #"h	Hbi	(	(  #8,, 	# 	#IB(55LGS #"h	Hbj	)	)  >"*,,HM** 3 3,X]]2->->EE 3/2H$$R((,h hr,   c                   B     e Zd ZdZddZ fdZ fdZd ZeZeZ	 xZ
S )AttrDicta]  
    A case-insensitive dictionary with access via item, attribute, and call
    notations:

        >>> from scipy.io._idl import AttrDict
        >>> d = AttrDict()
        >>> d['Variable'] = 123
        >>> d['Variable']
        123
        >>> d.Variable
        123
        >>> d.variable
        123
        >>> d('VARIABLE')
        123
        >>> d['missing']
        Traceback (most recent error last):
        ...
        KeyError: 'missing'
        >>> d.missing
        Traceback (most recent error last):
        ...
        AttributeError: 'AttrDict' object has no attribute 'missing'
    Nc                 D    |i }t                               | |           d S r`   )dictrc   )rb   inits     r*   rc   zAttrDict.__init__  s&    <DdD!!!!!r,   c                 j    t                                          |                                          S r`   )super__getitem__r   )rb   r   	__class__s     r*   r  zAttrDict.__getitem__  s#    ww""4::<<000r,   c                 l    t                                          |                                |          S r`   )r  __setitem__r   )rb   keyr  r  s      r*   r  zAttrDict.__setitem__  s%    ww""399;;666r,   c                     	 |                      |          S # t          $ r% t          dt          |            d| d          d w xY w)N'z' object has no attribute ')r  KeyErrorAttributeErrorr   )rb   r   s     r*   __getattr__zAttrDict.__getattr__  so    	N##D))) 	N 	N 	N BDJJBB4BBBD DIMN	Ns	    /Ar`   )rd   re   rf   rg   rc   r  r  r  __setattr____call____classcell__)r  s   @r*   r  r  w  s         2" " " "
1 1 1 1 17 7 7 7 7N N N KHHHHHr,   r  Fc           
      R   g }|s|ri }nt                      }t          | d          }t          |d          }|dk    rt          d|           t          |d          }	|	dk    rn |	dk    r|rt	          d           |rt          |d          }
nt          j        d	
          }
|rt	          d|
j                    |
                    d           	 t          |          }|
                    t          j        dt          |                               t          |          }|t          |                              t          j                  dz  z  }|                    d          }t$          |         dk    rt          j        d          }|
                    t          j        dt          |          |z                       |
                    t          j        dt          |||z  z
  |z                                 |
                    |           n|                                }t)          j        |                    ||z
                      }|
                                t-          |          z   dz   }|
                    t          j        dt          |dz                                 |
                    t          j        dt          ||dz  z
  dz                                 |
                    |           |
                    |           S|                                 |
}|                    d           nt          d|	           	 t3          |          }|                    |           d|v r	|d         rn2|                                 i }|D ]}|d         dk    r|d         ||d         <    |D ]Q}|d         dk    rCt7          |d         |          \  }}|r||d<   |d         ||d                                         <   R|ri|D ]g}|d         dk    rYt	          d           t	          d|d                     t	          d |d!                     t	          d"|d#                      nh|D ]}|d         d$k    rqt	          d           t	          d%|d&                     t	          d'|d(                     t	          d)|d*                     t	          d+|d,                      n|D ]g}|d         d-k    rYt	          d           t	          d.|d/                     t	          d0|d1                     t	          d2|d3                      nh|D ]7}|d         d4k    r)t	          d           t	          d5|d6                      n8t	          d           t	          d7t-          |           d8           d9 |D             }t;          |          D ]/}|dk    r't	          d:|                    |          |fz             0t	          d           d|v rLt	          d;           |D ]+}t	          d<| d=t?          ||                    d>           ,t	          d           |r|D ]}||         ||<   |S |S )?a	  
    Read an IDL .sav file.

    Parameters
    ----------
    file_name : str
        Name of the IDL save file.
    idict : dict, optional
        Dictionary in which to insert .sav file variables.
    python_dict : bool, optional
        By default, the object return is not a Python dictionary, but a
        case-insensitive dictionary with item, attribute, and call access
        to variables. To get a standard Python dictionary, set this option
        to True.
    uncompressed_file_name : str, optional
        This option only has an effect for .sav files written with the
        /compress option. If a file name is specified, compressed .sav
        files are uncompressed to this file. Otherwise, readsav will use
        the `tempfile` module to determine a temporary filename
        automatically, and will remove the temporary file upon successfully
        reading it in.
    verbose : bool, optional
        Whether to print out information about the save file, including
        the records read, and available variables.

    Returns
    -------
    idl_dict : AttrDict or dict
        If `python_dict` is set to False (default), this function returns a
        case-insensitive dictionary with item, attribute, and call access
        to variables. If `python_dict` is set to True, this function
        returns a Python dictionary with all variable names in lowercase.
        If `idict` was specified, then variables are written to the
        dictionary specified, and the updated dictionary is returned.

    Examples
    --------
    >>> from os.path import dirname, join as pjoin
    >>> import scipy.io as sio
    >>> from scipy.io import readsav

    Get the filename for an example .sav file from the tests/data directory.

    >>> data_dir = pjoin(dirname(sio.__file__), 'tests', 'data')
    >>> sav_fname = pjoin(data_dir, 'array_float32_1d.sav')

    Load the .sav file contents.

    >>> sav_data = readsav(sav_fname)

    Get keys of the .sav file contents.

    >>> print(sav_data.keys())
    dict_keys(['array1d'])

    Access a content with a key.

    >>> print(sav_data['array1d'])
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
     0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
     0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
     0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
     0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
     0. 0. 0.]

    rbr   s   SRzInvalid SIGNATURE: s    s    zIDL Save file is compressedzw+bz.sav)suffixz -> expanding to s   SR Tr>   r   r   r   rO   r   zInvalid RECFMT: r   r   r   r   r   r   r   r   z2--------------------------------------------------zDate: r   zUser: r   zHost: r   r   zFormat: r   zArchitecture: r   zOperating System: r   zIDL Version: r   r   zAuthor: r   zTitle: r   z	ID Code: r   r    zDescription: r   zSuccessfully read z records of which:c                     g | ]
}|d          S )r   rh   )r   rs     r*   r   zreadsav.<locals>.<listcomp>  s    222QAiL222r,   z - %i are of type %szAvailable variables:z - z []) r  openr4   rv   printtempfileNamedTemporaryFiler   writerA   r8   packr   rQ   r   r6   rI   r/   r   r&   zlib
decompresslencloser'   r   r   r   r   setcountr   )	file_nameidictpython_dictuncompressed_file_nameverboserecords	variablesr(   	signaturerecfmtfoutr   r   unknownmodvalr)   
rec_stringr  r  r  r  r   rectypesrtvars                            r*   r   r     sd   L G e 		JJ	 	YA Aq!!IE9i99::: AF	;		 	1/000! 	>.66DD.f===D 	31di11222 	

=!!!$	# !mmGJJv{4W66777 #1ooG|A--bh77%??G ffQiiG G$44%

6;tS\\F-BCCDDD

Kc7g6F+G6*Q&R&RSS   

7### &&((C )<)<==J iikkC
OO3b8G JJv{4Wu_)=)=>>???JJv{4g5.IU-R)S)STTUUUJJwJJz"""I$	#N 	
			 	q				 3633444OOqA::x  GGIII D . .Y<;&&$%fID<!  8 8Y<:%%(6D99LGS  &	./iIa	l((**+ 4  	 	Fi K//f/vf~//000/vf~//000/vf~//000 0  	 	Fi I--f3!1334447vf~7788896$<99:::9fY&799::: .  	 	Fi O33f3!1334441w112224&"244555 4  	 	Fi M11f=f]&;==>>> 2
 	fC3w<<CCCDDD 32'222h-- 	I 	IB\!!,r0B0BB/GGHHHf!!()))  < <:C::4	##7#7:::;;;;&MMM  	( 	(C"3E#JJr,   )NFNF)'__all__r8   numpyr6   r#  r'  r   r   r   r   r+   r2   r4   r;   rA   rE   rG   rJ   rM   rQ   rU   rX   r\   r^   rj   rq   rt   r|   r   r   r   r   r   r   r   r   r
  r  r   rh   r,   r*   <module>r?     s  < +          
" "$$$!!# #        
; ; ;
7 7 7
< < <
7 7 7
7 7 7
= = =
8 8 8
8 8 8
9 9 9
9 9 9
       	 	 	 	 	G 	 	 	
  	 	 	'M 'M 'MT* * *Z- - -`i i iX  (, , ,^3 3 3l  &@ @ @F- - - - -t - - -` 0516p p p p p pr,   