§
    Ëãßc� ã                   ó  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZ	 ddl	Z	n# e
$ r dZ	Y nw xY wddlmZ ddlT ddlmZ ej        adadadadadad	ad	adadadag ad	ad	adai ad	a da!da"da#tF          g ia$d	a%g a&d
a'g a(da)d
a*g a+g a,g a-d„ Z.dÅd„Z/de_0        i Z1dD ]	Z2ddie1e2<   Œ
dD ]	Z2ddie1e2<   Œ
i Z3i Z4dD ]Z5e5dz   e3e5<   e5e4e5dz   <   Œd„ Z6d„ Z7d„ Z8d„ Z9d„ Z: ej;        dej<        ¦  «        j=        Z> ej;        dej<        ¦  «        j?        Z@ ej;        dej<        ¦  «        j?        ZA ej;        dej<        ¦  «        j?        ZB ej;        dej<        ¦  «        j=        ZCd„ ZDd „ ZEeFdfd!„ZGd"ZHd#ZI ej;        eHd	eIeId$fz  ej<        ¦  «        d%fZJ ej;        eHd	eId&z   eId&z   d$fz  ej<        ¦  «        ZK ej;        eHd'z  ej<        ¦  «        d(fZL ej;        eHd)z  ej<        ¦  «        d(fZMd*ZN ej;        eHd	eNeNd$fz  ej<        ¦  «        d(fZOeNd+z   d,z   ZP ej;        eHd	ePePd$fz  ej<        ¦  «        d(fZQd-ZR ej;        eHd	eReRd$fz  ej<        ¦  «        d.fZSd/ZT ej;        eHd0eTeTd1fz  ej<        ¦  «        d2fZUd3ZV ej;        eHd	eVeVd$fz  ej<        ¦  «        d4fZW ej;        eHd5z  ej<        ¦  «        d6fZX ej;        eHd7z  ej<        ¦  «        d8fZY ej;        eHd9z  ej<        ¦  «        d:fZZ ej;        eHd;z  ej<        ¦  «        d<fZ[ ej;        eHd=z  ej<        ¦  «        d>fZ\ ej;        eHd?z  ej<        ¦  «        d@fZ] ej;        eHdAz  ej<        ¦  «        dBfZ^ ej;        eHdCz  ej<        ¦  «        dDfZ_ ej;        eHdEz  ej<        ¦  «        dFfZ` ej;        eHdGz  ej<        ¦  «        dHfZa ej;        eHdIz  ej<        ¦  «        dJfZb ej;        eHdKz  ej<        ¦  «        dLfZc ej;        eHdMz  ej<        ¦  «        dNfZd ej;        eHdOz  ej<        ¦  «        dPfZe ej;        eHdQz  ej<        ¦  «        dRfZf ej;        eHdSz  ej<        ¦  «        dTfZg ej;        eHdUz  ej<        ¦  «        dVfZh ej;        eHdWz  ej<        ¦  «        dXfZi ej;        eHdYz  ej<        ejj        z  ¦  «        dZfZk ej;        d[ejj        ¦  «        d\fZld]„ Zmd^„ Zn ej;        d_ej<        ¦  «        ZodÆd`„Zpda„ ZqdÇdc„Zrdd„ ZsdÅde„Zt ej;        dfej<        ¦  «        Zu ej;        dgej<        ¦  «        Zv ej;        dhej<        ¦  «        Zw ej;        diej<        ¦  «        Zx ej;        djej<        ¦  «        Zy ej;        dk¦  «        Zz ej;        dl¦  «        Z{ ej;        dmej<        ¦  «        Z|dn„ Z}do„ Z~dp„ Zdq„ Z€dr„ Z�ds„ Z‚ ej;        dtej<        ¦  «        Zƒ ej;        duej<        ¦  «        Z„ ej;        dvej<        ¦  «        Z… ej;        dwej<        ¦  «        Z† ej;        dxej<        ¦  «        Z‡dy„ Zˆdz„ Z‰d{„ ZŠd|„ Z‹dÆd}„ZŒdÆd~„Z�dÆd„ZŽdÈd�„Z�d‚„ Z�dƒ„ Z‘dÉd„„Z’dÊd…„Z“dËd†„Z”d‡„ Z•dˆ„ Z–dÌd‰„Z—dŠ„ Z˜dÍd‹„Z™ ej;        dŒej<        ¦  «        Zšd�„ Z› ej;        dŽej<        ¦  «        Zœd�„ Z�d�„ Zžd‘„ ZŸd’„ Z d“„ Z¡dÎd”„Z¢i fd•„Z£d–„ Z¤ ej;        d—¦  «        j=        Z¥d˜„ Z¦d™„ Z§ ej;        dšej<        ¦  «        Z¨g fd›„Z©dœ„ Zª ej;        d�ej<        ¦  «        Z« ej;        džej<        ¦  «        Z¬ ej;        dŸej<        ¦  «        Z­ ej;        d ej<        ¦  «        Z® ej;        d¡ej<        ¦  «        Z¯d¢„ Z°i fd£„Z±dÏd¦„Z²dÌd§„Z³dÌd¨„Z´d©„ ZµdÐdª„Z¶g a·d«„ Z¸d¬„ Z¹d­„ Zºg dfd®„Z»d¯„ Z¼�tn           ½                    e¼¦  «         e¾d°k    �rög Z¿g ZÀdZÁdZÂdZÃdZÄejÅ        dd…         D �]1ZÆeÆd	k    rŒ
eÆd         d±k    rdZÁŒeÆd²k    rdadaŒ$eÆd³k    rd´adaŒ/eÆdµk    rt"          r e/d¶d¦  «         dadaŒMeÆd·k    rdaŒVeÆd¸k    rdaŒ_eÆd¹k    rdadaŒjeÆdºk    rdad»adaŒweÆd¼k    rdZÂŒ€eÆd½k    rdZÄŒ‰eÆd¾k    rdZÃŒ’eÆd         d¿k    r eÇdÀ eÈeÆ¦  «        z  ¦  «         Œ¶eÂrdZÂeÆaŒ½eÃrdZÃeÆaŒÄeÁrV	  eÉeÆ¦  «         Ê                    ¦   «          e¿ ½                    eÆ¦  «         Œú# eË$ rZÌ eÇdÁeÌ›d¤�¦  «         Y dZÌ[Ì�ŒdZÌ[Ìww xY weÀ ½                    eÆ¦  «         �Œ3t"          st.          rt0          s e/dÂd¦  «          e¸e¿¦  «        ZÍt,          rf e/dÃ eÈt,          ¦  «        z  d¦  «          e¹eÍ¦  «        ZÎ eÉt,          dÄ¦  «        5 ZÁeÁ Ï                    eÎ¦  «         ddd¦  «         n# 1 swxY w Y   eÄr eFeÍ¦  «         dS dS dS )Ña*  
crackfortran --- read fortran (77,90) code and extract declaration information.

Copyright 1999-2004 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
$Date: 2005/09/27 07:13:49 $
Pearu Peterson


Usage of crackfortran:
======================
Command line keys: -quiet,-verbose,-fix,-f77,-f90,-show,-h <pyffilename>
                   -m <module name for f77 routines>,--ignore-contains
Functions: crackfortran, crack2fortran
The following Fortran statements/constructions are supported
(or will be if needed):
   block data,byte,call,character,common,complex,contains,data,
   dimension,double complex,double precision,end,external,function,
   implicit,integer,intent,interface,intrinsic,
   logical,module,optional,parameter,private,public,
   program,real,(sequence?),subroutine,type,use,virtual,
   include,pythonmodule
Note: 'virtual' is mapped to 'dimension'.
Note: 'implicit integer (z) static (z)' is 'implicit static (z)' (this is minor bug).
Note: code after 'contains' will be ignored until its scope ends.
Note: 'common' statement is extended: dimensions are moved to variable definitions
Note: f2py directive: <commentchar>f2py<line> is read as <line>
Note: pythonmodule is introduced to represent Python module

Usage:
  `postlist=crackfortran(files)`
  `postlist` contains declaration information read from the list of files `files`.
  `crack2fortran(postlist)` returns a fortran code to be saved to pyf-file

  `postlist` has the following structure:
 *** it is a list of dictionaries containing `blocks':
     B = {'block','body','vars','parent_block'[,'name','prefix','args','result',
          'implicit','externals','interfaced','common','sortvars',
          'commonvars','note']}
     B['block'] = 'interface' | 'function' | 'subroutine' | 'module' |
                  'program' | 'block data' | 'type' | 'pythonmodule' |
                  'abstract interface'
     B['body'] --- list containing `subblocks' with the same structure as `blocks'
     B['parent_block'] --- dictionary of a parent block:
                             C['body'][<index>]['parent_block'] is C
     B['vars'] --- dictionary of variable definitions
     B['sortvars'] --- dictionary of variable definitions sorted by dependence (independent first)
     B['name'] --- name of the block (not if B['block']=='interface')
     B['prefix'] --- prefix string (only if B['block']=='function')
     B['args'] --- list of argument names if B['block']== 'function' | 'subroutine'
     B['result'] --- name of the return value (only if B['block']=='function')
     B['implicit'] --- dictionary {'a':<variable definition>,'b':...} | None
     B['externals'] --- list of variables being external
     B['interfaced'] --- list of variables being external and defined
     B['common'] --- dictionary of common blocks (list of objects)
     B['commonvars'] --- list of variables used in common blocks (dimensions are moved to variable definitions)
     B['from'] --- string showing the 'parents' of the current block
     B['use'] --- dictionary of modules used in current block:
         {<modulename>:{['only':<0|1>],['map':{<local_name1>:<use_name1>,...}]}}
     B['note'] --- list of LaTeX comments on the block
     B['f2pyenhancements'] --- optional dictionary
          {'threadsafe':'','fortranname':<name>,
           'callstatement':<C-expr>|<multi-line block>,
           'callprotoargument':<C-expr-list>,
           'usercode':<multi-line block>|<list of multi-line blocks>,
           'pymethoddef:<multi-line block>'
           }
     B['entry'] --- dictionary {entryname:argslist,..}
     B['varnames'] --- list of variable names given in the order of reading the
                       Fortran code, useful for derived types.
     B['saved_interface'] --- a string of scanned routine signature, defines explicit interface
 *** Variable definition is a dictionary
     D = B['vars'][<variable name>] =
     {'typespec'[,'attrspec','kindselector','charselector','=','typename']}
     D['typespec'] = 'byte' | 'character' | 'complex' | 'double complex' |
                     'double precision' | 'integer' | 'logical' | 'real' | 'type'
     D['attrspec'] --- list of attributes (e.g. 'dimension(<arrayspec>)',
                       'external','intent(in|out|inout|hide|c|callback|cache|aligned4|aligned8|aligned16)',
                       'optional','required', etc)
     K = D['kindselector'] = {['*','kind']} (only if D['typespec'] =
                         'complex' | 'integer' | 'logical' | 'real' )
     C = D['charselector'] = {['*','len','kind','f2py_len']}
                             (only if D['typespec']=='character')
     D['='] --- initialization expression string
     D['typename'] --- name of the type if D['typespec']=='type'
     D['dimension'] --- list of dimension bounds
     D['intent'] --- list of intent specifications
     D['depend'] --- list of variable names on which current variable depends on
     D['check'] --- list of C-expressions; if C-expr returns zero, exception is raised
     D['note'] --- list of LaTeX comments on the variable
 *** Meaning of kind/char selectors (few examples):
     D['typespec>']*K['*']
     D['typespec'](kind=K['kind'])
     character*C['*']
     character(len=C['len'],kind=C['kind'], f2py_len=C['f2py_len'])
     (see also fortran type declaration statement formats below)

Fortran 90 type declaration statement format (F77 is subset of F90)
====================================================================
(Main source: IBM XL Fortran 5.1 Language Reference Manual)
type declaration = <typespec> [[<attrspec>]::] <entitydecl>
<typespec> = byte                          |
             character[<charselector>]     |
             complex[<kindselector>]       |
             double complex                |
             double precision              |
             integer[<kindselector>]       |
             logical[<kindselector>]       |
             real[<kindselector>]          |
             type(<typename>)
<charselector> = * <charlen>               |
             ([len=]<len>[,[kind=]<kind>]) |
             (kind=<kind>[,len=<len>])
<kindselector> = * <intlen>                |
             ([kind=]<kind>)
<attrspec> = comma separated list of attributes.
             Only the following attributes are used in
             building up the interface:
                external
                (parameter --- affects '=' key)
                optional
                intent
             Other attributes are ignored.
<intentspec> = in | out | inout
<arrayspec> = comma separated list of dimension bounds.
<entitydecl> = <name> [[*<charlen>][(<arrayspec>)] | [(<arrayspec>)]*<charlen>]
                      [/<init_expr>/ | =<init_expr>] [,<entitydecl>]

In addition, the following attributes are used: check,depend,note

TODO:
    * Apply 'parameter' attribute (e.g. 'integer parameter :: i=2' 'real x(i)'
                                   -> 'real x(2)')
    The above may be solved by creating appropriate preprocessor program, for example.

é    Né   )Ú__version__)Ú*)ÚsymbolicÚfixú    Ú éÿÿÿÿc                  ó|   — da dadadadadadadadada	g a
dat          g iadadadag ai adadadag ag ag ag ad ad S )Nr   r   r   r   r	   r
   )Ú	strictf77ÚsourcecodeformÚquietÚverboseÚtabcharÚpyffilenameÚf77modulenameÚskipemptyendsÚignorecontainsÚdolowercaseÚdebugÚgroupcounterÚ	grouplistÚneededmoduleÚexpectbeginÚskipblocksuntilÚusermodulesÚf90modulevarsÚgotnextfileÚfilepositiontextÚcurrentfilenameÚskipfunctionsÚ	skipfuncsÚ	onlyfuncsÚinclude_pathsÚprevious_context© ó    ú9/usr/lib/python3/dist-packages/numpy/f2py/crackfortran.pyÚreset_global_f2py_varsr)   Ç   s“   € ð €IØ€NØ€EØ€GØ€GØ€KØ€MØ€MØ€NØ€KØ€Eà€LÝ˜rÐ"€IØ€LØ€KØ€OØ€KØ€MØ€KØÐØ€OØ€MØ€IØ€IØ€MØÐÐÐr'   c                 ó´   — t           sd S t          sG|r$t          j                             t
          ¦  «         t          j                             | ¦  «         d S d S ©N)r   r   ÚsysÚstdoutÚwriter   )ÚlineÚflags     r(   Úoutmessr1   í   s^   € õ ð ØˆÝð Øð 	/ÝŒJ×ÒÕ-Ñ.Ô.Ð.ÝŒ
×Ò˜ÑÔÐÐÐðð r'   é2   zabcdefghopqrstuvwxyz$_ÚtypespecÚrealÚijklmnÚinteger)3ÚintÚdoubleÚfloatÚcharÚshortÚlongÚvoidÚcaseÚwhileÚreturnÚsignedÚunsignedÚifÚforÚtypedefÚsizeofÚunionÚstructÚstaticÚregisterÚnewÚbreakÚdoÚgotoÚswitchÚcontinueÚelseÚinlineÚexternÚdeleteÚconstÚautoÚlenÚrankÚshapeÚindexÚslenÚsizeÚ_iÚmaxÚminÚflenÚfshapeÚstringÚcomplex_doubleÚfloat_doubleÚstdinÚstderrr-   ÚtypeÚdefaultÚ_bnc                 ót   — | t           v r.t          d| ›dt           |          ›d�¦  «         t           |          S | S )Nzrmbadname1: Replacing "ú" with "ú".
)ÚbadnamesÚerrmess©Únames    r(   Ú
rmbadname1rq     sF   € Ø�xÐÐÝˆØ��•x ”~�~�~ð'ñ 	(ô 	(ð 	(å˜Œ~ÐØ€Kr'   c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r&   )rq   ©Ú.0Ú_ms     r(   ú
<listcomp>zrmbadname.<locals>.<listcomp>  s   € Ð+Ð+Ð+˜r�J�r‰NŒNÐ+Ð+Ð+r'   r&   ©Únamess    r(   Ú	rmbadnamerz     s   € Ø+Ð+ UÐ+Ñ+Ô+Ð+r'   c                 ót   — | t           v r.t          d| ›dt           |          ›d�¦  «         t           |          S | S )Nzundo_rmbadname1: Replacing "rk   rl   )Úinvbadnamesrn   ro   s    r(   Úundo_rmbadname1r}     sJ   € Ø�{ÐÐÝˆØ�4�4� TÔ*Ð*Ð*ð,ñ 	-ô 	-ð 	-å˜4Ô Ð Ø€Kr'   c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r&   )r}   rt   s     r(   rw   z"undo_rmbadname.<locals>.<listcomp>!  s    € Ð0Ð0Ð0 B�O˜BÑÔÐ0Ð0Ð0r'   r&   rx   s    r(   Úundo_rmbadnamer€      s   € Ø0Ð0¨%Ð0Ñ0Ô0Ð0r'   c                 óŽ   — |                       d¦  «        }|dk    rdS d| |d …         v rdS d| |d …         v rdS | |dz   d …         S )Nú.r
   r	   ú\ú/r   )Úrfind)rp   Úis     r(   Úgetextensionr‡   $  s_   € Ø�
Š
�3‰Œ€AØˆB‚w€wØˆrØˆt�A�B�BŒxÐÐØˆrØ
ˆd�1�2�2Œh€€ØˆrØ��A‘��Œ<Ðr'   z.*\.(for|ftn|f77|f)\Zz-\*-\s*fortran\s*-\*-z-\*-\s*f90\s*-\*-z-\*-\s*fix\s*-\*-z[^c*]\s*[^\s\d\t]c                 ó`  — t           �,t          j        | ¦  «                             ¦   «         j        }nêt	          dt
          j                             | ¦  «        ¦  «        }t          | d¦  «        5 }| 	                    |¦  «        }| 
                    t          j        ¦  «        rd}n^| 
                    t          j        t          j        f¦  «        rd}n0| 
                    t          j        t          j        f¦  «        rd}nd}ddd¦  «         n# 1 swxY w Y   t          | ||¬¦  «        S )	aN  Ensures that filename is opened with correct encoding parameter.

    This function uses charset_normalizer package, when available, for
    determining the encoding of the file to be opened. When charset_normalizer
    is not available, the function detects only UTF encodings, otherwise, ASCII
    encoding is used as fallback.
    Né    Úrbz	UTF-8-SIGzUTF-32zUTF-16Úascii)Úencoding)Úcharset_normalizerÚ	from_pathÚbestrŒ   r_   ÚosÚpathÚgetsizeÚopenÚreadÚ
startswithÚcodecsÚBOM_UTF8ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_LEÚBOM_BE)ÚfilenameÚmoderŒ   ÚnbytesÚfhandleÚraws         r(   Úopenhookr¡   5  sB  € õ Ð%Ý%Ô/°Ñ9Ô9×>Ò>Ñ@Ô@ÔIˆˆõ �R�œŸš¨Ñ2Ô2Ñ3Ô3ˆÝ�(˜DÑ!Ô!ð 
	# WØ—,’,˜vÑ&Ô&ˆCØ�~Š~�fœoÑ.Ô.ð #Ø&��Ø—’¥Ô!4µfÔ6IÐ JÑKÔKð #Ø#��Ø—’¥¤µ´Ð >Ñ?Ô?ð #Ø#��ð #�ð
	#ð 
	#ð 
	#ñ 
	#ô 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#øøøð 
	#ð 
	#ð 
	#ð 
	#õ �˜$¨Ð2Ñ2Ô2Ð2s   Á1BDÄDÄDc                 óÊ  — d}t          | d¦  «        5 }|                     ¦   «         }d}t          |¦  «        rd}nt          |¦  «        rd}d}|dk    rw|ru|d         dk    rM|                     ¦   «         r9|dz  }|d         dk    rt          |dd…         ¦  «        s|d	d
…         dk    rd}n|                     ¦   «         }|dk    r|°uddd¦  «         n# 1 swxY w Y   |S )z(Check if file is in free format Fortran.r   Úré   r   ú!ú	Né   éþÿÿÿr
   ú&)r¡   ÚreadlineÚ_has_f_headerÚ_has_f90_headerÚstripÚ_free_f90_start)ÚfileÚresultÚfr/   Úns        r(   Úis_free_formatr³   T  s<  € ð €FÝ	�$˜Ñ	Ô	ð   Ø�zŠz‰|Œ|ˆØˆÝ˜ÑÔð 	ØˆAˆAÝ˜TÑ"Ô"ð 	ØˆAØˆFØ�!Šeˆe˜ˆeØ�AŒw˜#Š~ˆ~ $§*¢*¡,¤,ˆ~Ø�Q‘�Ø˜”G˜t’O�O­¸¸R¸a¸R¼Ñ(AÔ(A�OÀdÈ2ÈbÈ5ÄkÐUXÒFXÐFXØ�FØØ—:’:‘<”<ˆDð �!Šeˆe˜ˆeð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð €Ms   “B9CÃCÃCc           
      óæ  — |s8t           t          t          t          t          t
          t          t          t          f	}| g k    rdS t          }d}d}d}t          j
        dt          j        ¦  «        }t          j
        d¦  «        }	t          j
        d¦  «        }
t          j
        d¦  «        }|r |dd¦  «         d	\  }}d
gd„ t          d¦  «        D ¦   «         z   }dat          j        | t          ¬¦  «        }	 	 |                     ¦   «         }nO# t"          $ rB}t%          d|                     ¦   «         › d|                     ¦   «         › d|› d�¦  «        ‚d}~ww xY w|s�nê|                     ¦   «         rðda|                     ¦   «         ada |}dadat,          j                             t          ¦  «        d         }t3          t          ¦  «        r!t5          |¦  «        st7          |¦  «        sdan%t9          t          ¦  «        rt7          |¦  «        sdat          rt:          ant<          at?          dtA          t          ¦  «        ›dt          ›t          rdpd›d�¦  «         | !                    ¦   «          "                    dd
¦  «        }|dk    s|d         dvrn|dd…         }|dk    ¯t          sYtG          |d¦  «        \  }}|d
z  }|dd…          $                    ¦   «         dk    r!tG          |d z   |dd…         z   d¦  «        \  }}| %                    ¦   «         dk    rt          dk    rnd}�Œ?t          dk    �r…|d         d!v r2|dd…          $                    ¦   «         d"k    rd#|dd…         z   }n(d}�Œ‡t          rtM          |¦  «        d$k    r
|dd$…         }|d         |vrt%          d%tA          |¦  «        z  ¦  «        ‚|rt          r2tM          |¦  «        dk    r|d         d
k    s||d&d…         z   }d}d}�nét          sŽ|	 '                    |¦  «        }|r| (                    d'¦  «        }|r0||
 '                    |¦  «         (                    d'¦  «        z   }d}d}n*d#|dd…         z   }|r| $                    ¦   «         }n|}|}|}|du}�nTd#|dd…         z   }|r| $                    ¦   «         }n|}|}|}�n(t          dk    rù|sw|d(k    rq| '                    |¦  «        r\|d)z   }	 |                     ¦   «         }|stS          d*¦  «         n||z   }| '                    |¦  «        rnŒB| *                    ¦   «         }|	 '                    |¦  «        }|r| (                    d'¦  «        }|r0||
 '                    |¦  «         (                    d'¦  «        z   }d}d}n|r| $                    ¦   «         }n|}|}|}|du}n$tW          d+tA          t          ¦  «        z  ¦  «        ‚d,| ,                    ¦   «         dz
  t          |fz  a| '                    |¦  «        }|�r| (                    d-¦  «        }t,          j         -                    |¦  «        rt]          ||d¬.¦  «         n×t,          j         /                    t          ¦  «        gt`          z   }d}|D ]W}t,          j         1                    ||¦  «        }t,          j         -                    |¦  «        rd}t]          ||d¬.¦  «          nŒX|s@t?          d/tA          |¦  «        ›d0t,          j2         1                    |¦  «        ›d1�¦  «         n ||¦  «         |}�ŒS|r| $                    ¦   «         }n|}|}d,| ,                    ¦   «         dz
  t          |fz  a| '                    |¦  «        }|�r| (                    d-¦  «        }t,          j         -                    |¦  «        rt]          ||d¬.¦  «         n×t,          j         /                    t          ¦  «        gt`          z   }d}|D ]W}t,          j         1                    ||¦  «        }t,          j         -                    |¦  «        rd}t]          ||d¬.¦  «          nŒX|s@t?          d/tA          |¦  «        ›d0t,          j2         1                    |¦  «        ›d1�¦  «         n ||¦  «         da| 3                    ¦   «          |r |dd¦  «         dS |\	  a aaaaaaaadS )2zõ
    Read fortran codes from files and
     1) Get rid of comments, line continuations, and empty lines; lower cases.
     2) Call dowithline(line) on every line.
     3) Recursively call itself when statement "include '<filename>'" is met.
    NFr	   z*\s*include\s*(\'|")(?P<name>[^\'"]*)(\'|")z(?P<line>.*)&\s*\Zz(\s*&|)(?P<line>.*)z.*?'''r
   )r	   r	   ú c                 ó,   — g | ]}t          |¦  «        ‘ŒS r&   )Ústrrt   s     r(   rw   z#readfortrancode.<locals>.<listcomp>‰  s   € Ð7Ð7Ð7 r�3˜r™7œ7Ð7Ð7Ð7r'   é
   )r¡   Tzreadfortrancode: reading ú#z failed with
zu.
It is likely that installing charset_normalizer package will help f2py determine the input file encoding correctly.r   r   r   Úfreez	Reading file z	 (format:z,strictú)
õ   Â z
r¥   r§   z!f2pyr   )r   Úcr¥   ÚCr¹   Úf2pyz     éH   zxreadfortrancode: Found non-(space,digit) char in the first column.
	Are you sure that this code is in fix form?
	line=%sé   r/   ú.pyfú
z.Unexpected end of file when reading multiline
z6Flag sourcecodeform must be either 'fix' or 'free': %szLine #%d in %s:"%s"
	rp   )Ú
dowithlineÚistopz-readfortrancode: could not find include file z in ú. Ignoring.
)4r   r   r    r   r   Úbeginpatternr   r   r   ÚreÚcompileÚIÚrangeÚ	fileinputÚ	FileInputr¡   rª   ÚUnicodeDecodeErrorÚ	Exceptionrœ   ÚlinenoÚisfirstliner�   r‘   ÚsplitextÚ	is_f_filer¬   Ú_has_fix_headerr³   Úbeginpattern77Úbeginpattern90r1   ÚreprÚ
expandtabsÚreplaceÚsplit_by_unquotedÚlowerr­   rW   ÚmatchÚgrouprn   ÚrstripÚ
ValueErrorÚ
filelinenoÚisfileÚreadfortrancodeÚdirnamer$   ÚjoinÚpathsepÚclose)ÚffilerÄ   rÅ   ÚsaveglobalsÚlocaldolowercaseÚcontÚ	finallineÚllÚincludelineÚcont1Úcont2Ú
mline_markÚl1ÚspacedigitsÚfinÚlÚmsgÚextÚrlÚ_Úorigfinalliner£   ÚlcÚmÚfnÚinclude_dirsÚ	foundfileÚinc_dirÚfn1s                                r(   râ   râ   l  sÝ	  € ð ð 6Ý!Õ#3µ_ÅnÕV_Ý�%¥­+ð6ˆà�‚{€{ØˆÝ"Ðð €DØ€IØ	€BÝ”*Ø5µr´tñ=ô =€KåŒJÐ,Ñ-Ô-€EÝŒJÐ-Ñ.Ô.€EÝ”˜IÑ&Ô&€JØð Øˆ
�2�rÑÔÐØ�F€BˆØ�%Ð7Ð7­U°2©Y¬YÐ7Ñ7Ô7Ñ7€KØÐÝ
Ô
˜e­hÐ
7Ñ
7Ô
7€Cðað	Ø—’‘”ˆAˆAøÝ!ð 	ð 	ð 	Ýð¨C¯LªL©N¬Nð ð ¸S¿ZºZ¹\¼\ð ð Ø!$ðð ð ñô ð øøøøð	øøøð ð 	ÙØ�?Š?ÑÔð 	7Ø!ÐØ!Ÿlšl™nœnˆOØˆKØˆBØˆIØ"ˆNÝ”'×"Ò"¥?Ñ3Ô3°AÔ6ˆCÝ�Ñ)Ô)ð (Ý(¨Ñ+Ô+ð(Ý/>¸qÑ/AÔ/Að(à�	�	Ý¥Ñ0Ô0ð (½ÈÑ9KÔ9Kð (Ø!'�Ýð .Ý-��å-�ÝˆGÝ�OÑ,Ô,Ð,Ð,­n¨nÝ Ð. YÐ4°"Ð4Ð4ð6ñ 7ô 7ð 7ð �LŠL‰NŒN×"Ò" 6¨3Ñ/Ô/ˆà�r’'�'Ø�Œu˜HÐ$Ð$ØØ�#�2�#”ˆAð �r’'�'õ ð 	DÝ'¨¨3Ñ/Ô/‰GˆQ�Ø�‰HˆAØ�"�1�"Œv�|Š|‰~Œ~ Ò(Ð(Ý(¨¨W©°r¸!¸"¸"´vÑ)=¸sÑCÔC‘��1Ø�7Š7‰9Œ9˜Š?ˆ?Ý Ò'Ð'ð
 ð �ÙÝ˜UÒ"Ñ"Ø�ŒtÐ0Ð0Ð0Ø�Q�q�S”6—<’<‘>”> VÒ+Ð+Ø ! A B B¤%™�A�Aà �DÙÝð Ý�q‘6”6˜B’;�;Ø˜#˜2˜#œ�AØ�a”D˜KÐ'Ð'Ýð !GåIMÈaÉÌñ!Qñ Rô Rð Rð ð !�Ið !­C°©F¬F°QªJ¨J¸qÀ¼tÀsº{¸{à˜!˜A˜B˜Bœ%‘Z�Ø�	Ø "�‘å ð àŸš A™œ�AØð ,ØŸGšG F™OœO˜Øð Ø %§+¢+¨a¡.¤.×"6Ò"6°vÑ">Ô">Ñ>˜Ø$&˜	Ø(*˜˜ð $ a¨¨¨¤e™O˜Ø+ð +Ø(*¯ª©
¬
˜I˜Ià(*˜IØ(*˜Ø˜Ø T˜M�D‘Dð   ! A B B¤%™�AØ'ð 'Ø$&§H¢H¡J¤J˜	˜	à$&˜	Ø$&�MØ�B‘Bå˜vÒ%Ð%Øð ˜C 6šM˜M¨j×.>Ò.>¸qÑ.AÔ.A˜MØ˜‘H�ðØŸš™œ�BØð ÝØMñOô Oð OàØ˜B™�AØ!×'Ò'¨Ñ+Ô+ð Øðð —H’H‘J”J�Ø—’˜A‘”ˆAØð $Ø—G’G˜F‘O”O�Øð 
Ø˜%Ÿ+š+ a™.œ.×.Ò.¨vÑ6Ô6Ñ6�Ø�	Ø "��à#ð #Ø "§¢¡
¤
�I�Ià "�IØ "�Ø�Ø˜T�MˆDˆDåØHÍ4ÕP^ÑK_ÔK_Ñ_ñaô að aà4Ø�NŠNÑÔ˜qÑ ¥/°2ð87ñ 7Ðà×Ò˜mÑ,Ô,ˆØñ 	"Ø—’˜‘”ˆBÝŒw�~Š~˜bÑ!Ô!ð BÝ ¨zÀÐCÑCÔCÐCÐCõ ”G—O’O¥OÑ4Ô4ð 6Ý8Eñ F�à�	Ø+ð ð �GÝœ'Ÿ,š, w°Ñ3Ô3�CÝ”w—~’~ cÑ*Ô*ð Ø$%˜	Ý'¨¸
È!ÐLÑLÔLÐLØ˜ðð !ð BÝ�GÝ˜R™œ˜˜¥"¤*§/¢/°,Ñ"?Ô"?Ð"?Ð"?ðAñ Bô Bð Bøð ˆJ�yÑ!Ô!Ð!ØˆñCaðD ð Ø—H’H‘J”Jˆ	ˆ	àˆ	Ø€MØ0Ø�ŠÑÔ˜1Ñ�o¨rð43ñ 3Ðà×Ò˜-Ñ(Ô(€AØñ Ø�WŠW�V‰_Œ_ˆÝŒ7�>Š>˜"ÑÔð 	>Ý˜B¨:¸QÐ?Ñ?Ô?Ð?Ð?åœGŸOšO­OÑ<Ô<Ð=ÅÑMˆLØˆIØ'ð ð �Ý”g—l’l 7¨BÑ/Ô/�Ý”7—>’> #Ñ&Ô&ð Ø !�IÝ# C°JÀaÐHÑHÔHÐHØ�Eðð ð >Ý�Ý˜‘H”H�H�H�bœjŸošo¨lÑ;Ô;Ð;Ð;ð=ñ >ô >ð >øð 	ˆ
�9ÑÔÐØÐØ‡I‚I�K„K€KØð DØˆ
�2�qÑÔÐÐÐð 9Dñ	6ˆÐ% ¸È	Ø˜% ¨+¨+¨+s   Ã:D Ä
EÄ=EÅEzN\s*(?P<before>%s(?=\s*(\b(%s)\b)))\s*(?P<this>(\b(%s)\b))\s*(?P<after>%s)\s*\Zzqcharacter|logical|integer|real|complex|double\s*(precision\s*(complex|)|complex)|type(?=\s*\([\w\s,=(*)]*\))|byteú.*rg   z|static|automatic|undefined)z([a-z]+[\w\s(=*+-/)]*?|)Úfunctionr  r  Úbegin)z	[a-z\s]*?Ú
subroutiner  r  zprogram|block\s*dataz@|module(?!\s*procedure)|python\s*module|(abstract|)\s*interface|ztype(?!\s*\()z\end|endprogram|endblockdata|endmodule|endpythonmodule|endinterface|endsubroutine|endfunctionÚendzJend\s*(if|do|where|select|while|forall|associate|block|critical|enum|team)z[\w]*?z[\w\s]*Úendifzmodule\s*procedureÚmoduleprocedure)r	   Úimplicitr  r  r  )r	   údimension|virtualr	  r  Ú	dimension)r	   Úexternalr  r  r  )r	   Úoptionalr  r  r  )r	   Úrequiredr  r  r  )r	   Úpublicr  r  r  )r	   Úprivater  r  r  )r	   Ú	intrinsicr  r  r  )r	   úintent|depend|note|checkr  z\s*\(.*?\).*Úintent)r	   Ú	parameterr  z\s*\(.*r  )r	   Údatar  r  r  )r	   Úcallr  r  r  )r	   Úentryr  r  r  )r	   Úcallfunr  r  r  )r	   Úcommonr  r  r  )r	   Úuser  r  r  )r	   Úcontainsr  r	   r  )r	   Úformatr  r  r  )r	   úKthreadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddefr  r  Úf2pyenhancementsz2\s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\ZÚ	multilinec           
      ó¼  — t          d¦  «        t          |¦  «        z  r
J d¦   «         ‚t          j        d                     d                     t          j        |¦  «        ¦  «        d                     t          j        |¦  «        ¦  «        dd¬¦  «        ¦  «        }|                     | ¦  «        }|r$|                     ¦   «         }|d	         |d
         fS | dfS )z¶
    Splits the line into (line[:i], line[i:]),
    where i is the index of first occurrence of one of the characters
    not within quotes, or len(line) if no such index exists
    z"'zcannot split by unquoted quoteszR\A(?P<before>({single_quoted}|{double_quoted}|{not_quoted})*)(?P<after>{char}.*)\Zz[^"'{}]z[{}]z('([^'\\]|(\\.))*')z("([^"\\]|(\\.))*"))Ú
not_quotedr:   Úsingle_quotedÚdouble_quotedÚbeforeÚafterr	   )ÚsetrÈ   rÉ   r  ÚescaperÜ   Ú	groupdict)r/   Ú
charactersr£   rû   Úds        r(   rÚ   rÚ   ¡  sÑ   € õ �E‘
”
�S ™_œ_Ñ,ÐPÐPÐ/PÑPÔPÐPÝ
Œ
ð	!ß!'¢Ø!×(Ò(­¬°:Ñ)>Ô)>Ñ?Ô?Ø—’�rœy¨Ñ4Ô4Ñ5Ô5Ø0Ø0ð	 "(ñ "2ô "2ñ	3ô 	3€Að 	
�Š�‰Œ€AØð )Ø�KŠK‰MŒMˆØ�(”˜Q˜wœZÐ(Ð(Ø�"ˆ:Ðr'   c                 óÚ   — g }t          | ¦  «                             d¦  «        D ]2}dD ]}|                     |d¦  «        }Œ|                     |¦  «         Œ3d                     |¦  «        S )Nú@,@z(),rø   ú,)ÚmarkoutercommaÚsplitrÙ   Úappendrä   )ÚargslineÚar²   r£   s       r(   Ú_simplifyargsr2  µ  sq   € Ø
€AÝ˜HÑ%Ô%×+Ò+¨EÑ2Ô2ð ð ˆØð 	"ð 	"ˆAØ—	’	˜!˜SÑ!Ô!ˆAˆAØ	�Š�‰ŒˆˆØ�8Š8�A‰;Œ;Ðr'   z"\s*(?P<result>\b[a-z]+\w*\b)\s*=.*c                 ón  — t          | d¦  «        \  }}|r±t          d                              | ¦  «        s‘t          d                              | ¦  «        sq|dk    sJ t	          |¦  «        ¦   «         ‚t          | d¦  «        \  } }|r-t          | |¦  «         t          |dd…         d¦  «        \  } }|°-t          | |¦  «         dS |dk     rwdat          diat          i iat          g ia	g t          t                   d<   i t          t                   d<   dt          t                   d<   dt          t                   d	<   d
a
d
adS |dk    �rd}t          rt          t          k    rd}t          |k    rÑt          dt	          t          ¦  «        ›dt	          t          ¦  «        ›d�¦  «         t          d¦  «         t          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  at          |k    °Ñt          �rt          t          k    rüt          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  at          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  ad
a
dS | dk    rdS d}t          t           t"          t$          t&          t(          t*          t,          t.          t0          t2          t4          t6          t8          t:          t<          t>          t@          tB          tD          tF          tH          tJ          t          t          tL          fD ]&}|d                              | ¦  «        }|r n|dz   }Œ'|�sötN          }	dt          cxk    rt          k    rn ndS dt          t                   v �rat          t                   d         D �]G}
|
tP          v rtP          |
         }
dt          t                   v r|
t          t                   d         v rŒHtS          j        d|
z  tU          | ¦  «        tR          j+        ¦  «        }|rÍ|	                     | ,                    d¦  «        ¦  «        }t[          | ,                    d¦  «        ¦  «        }|r d|
›d|›d| ,                    d¦  «        ›d�} n	d|
›d|›d�} t\          d                              | ¦  «        }|s"t          dt	          | ¦  «        z  ¦  «          dS t_          |d| ¦  «          dS �ŒIt`          dk    s7t`          dk    rEtb           2                    ¦   «          3                    d¦  «        rda4t          dt          z  ¦  «         dS |d         dk    �r™dt          cxk    rt          k     rn nt          dz
  at          t          k    rdS t          dk    rtk          dt          z  ¦  «        ‚t8          d                              | ¦  «        }|rƒ| ,                    d ¦  «        t          t                   k    sZtk          d!t	          | ,                    d ¦  «        ¦  «        ›d"t	          t          t                   ¦  «        ›d#tl          ›�¦  «        ‚t          t          k    rd
at          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  atn          sda8dS dS |d         d$k    rCdt          cxk    rt          k    rn nt          dz   adS da9t_          ||d         | ¦  «         da8dS |d         d%k    rdS |d         d&k    rt_          ||d         | ¦  «         dS |d         d'k    r.tt          rdS dt          cxk    rt          k    rn ndS t          adS dt          cxk    rt          k    rn ndS t_          ||d         | ¦  «         dS )(z¬
    reset=-1  --- initialize
    reset=0   --- crack the line
    reset=1   --- final check if mismatch of blocks occurred

    Cracked data is saved in grouplist[0].
    ú;r   r   Nr	   ÚbodyÚvarsÚblockrp   r
   é   zcrackline: groupcounter=z groupname=rÃ   zYcrackline: Mismatch of blocks encountered. Trying to fix it by assuming "end" statement.
Ú	externalsÚ
interfacedz5(?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Zr#  Úargszcallfun ú(z
) result (r°   ú)z8crackline: could not resolve function call for line=%s.
r  rÂ   z"crackline:%d: No pattern for line
r  z>crackline: groupcounter(=%s) is nonpositive. Check the blocks.Úthiszcrackline: End group z* does not match with previous Begin group z
	r  r  r  r  );rÚ   Úf2pyenhancementspatternrÜ   Úmultilinepatternr×   Ú	crackliner   Ú	groupnameÚ
groupcacher   r   r   r   r1   r/  ÚdimensionpatternÚexternalpatternÚintentpatternÚoptionalpatternÚrequiredpatternÚparameterpatternÚdatapatternÚpublicpatternÚprivatepatternÚintrinsicpatternÚendifpatternÚ
endpatternÚformatpatternrÇ   ÚfunctionpatternÚsubroutinepatternÚimplicitpatternÚtypespatternÚcommonpatternÚcallpatternÚ
usepatternÚcontainspatternÚentrypatternÚmoduleprocedurepatternÚcrackline_re_1r|   rÈ   ÚmarkouterparenrÊ   rÝ   r2  ÚcallfunpatternÚanalyzeliner   r    rÛ   Úendswithr%   rÏ   r   r   r   r   r   )r/   Úresetrø   Úhas_semicolonÚsemicolon_lineÚflr0   Úpatrû   Úre_1rp   Úm1Úm2r1  s                 r(   rA  rA  À  sQ  € õ )¨¨sÑ3Ô3Ñ€A€}Øð 
Õ5°aÔ8×>Ò>¸tÑDÔDð 
Ý/°Ô2×8Ò8¸Ñ>Ô>ð
ð ˜Šzˆzˆz�4 ™;œ;‰zŒzˆzå0°°sÑ;Ô;ÑˆˆnØð 	NÝ�d˜EÑ"Ô"Ð"Ý#4°^ÀAÀBÀBÔ5GÈÑ#MÔ#MÑ ˆD�.ð ð 	Nõ 	�$˜ÑÔÐØˆØˆq‚y€yØˆÝ! 2Ð&ˆ	Ý" BÐ'ˆ
Ý! 2Ð&ˆ	Ø+-�
•<Ô  Ñ(Ø+-�
•<Ô  Ñ(Ø,.�
•<Ô  Ñ)Ø+-�
•<Ô  Ñ(ØˆØˆØˆØˆq‚y�yØˆÝð 	�\­\Ò9Ð9ØˆBÝ˜RÒÐÝˆGÝ�,Ñ'Ô'Ð'Ð'­­i©¬¨¨ð:ñ ;ô ;ð ;åØlñnô nð nå•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLõ ˜RÒÐõ ñ 		�\­\Ò9Ð9Ý•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLÝ•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLØˆLØˆØˆr‚z€zØˆØ€DÝ ¥/µ=Å/ÝÝ ¥+­}½nÝ Ý�jÝÝ�oÕ/@Ý¥­}Ý�Z­ÝÝ'Ý Ý&ðð ð ˆð �ŒF�LŠL˜ÑÔˆØð 	ØˆEØ�a‰xˆˆØñ K%ÝˆØ•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/ØˆFØ�*¥\Ô2Ð2Ñ2Ý"¥<Ô0°Ô=ð ñ �Ø�;Ð&Ð&Ý& tÔ,�DØ¥:­lÔ#;Ð;Ð;ÀÍ
ÕS_ÔH`ÐamÔHnÐ@nÐ@nØÝ”XØLÈtÑSÕUcÐdhÑUiÔUiÕkmÔkoñqô q�àð ØŸš B§H¢H¨XÑ$6Ô$6Ñ7Ô7�BÝ% b§h¢h¨vÑ&6Ô&6Ñ7Ô7�AØð <ð <à ˜D˜D ! ! ! R§X¢X¨hÑ%7Ô%7Ð%7Ð%7ð 9˜˜ð<ð 48°4°4¸¸¸Ð;˜Ý& qÔ)×/Ò/°Ñ5Ô5�AØð ÝØWÕZ^Ð_cÑZdÔZdÑdñfô fð fà˜˜Ý  9¨dÑ3Ô3Ð3Ø�F�Fñõ �QŠ;ˆ;�7 aš<˜<­O×,AÒ,AÑ,CÔ,C×,LÒ,LÈVÑ,TÔ,T˜<Ø#ÐÝÐ9½\ÑJÑKÔKÐKØˆØ	ˆQŒ�5Š‰Ø•Ð.Ð.Ò.Ð.¥,Ò.Ð.Ð.Ð.Ð.Ý'¨!Ñ+ˆLÝ¥,Ò.Ð.Ø�Ý˜1ÒÐÝð 0å+ñ-ñ .ô .ð .õ ˜!Œ_×"Ò" DÑ*Ô*ˆØð 	˜Ÿš &Ñ)Ô)­Yµ|Ô-DÒDÐDÝ�)å! "§(¢(¨6Ñ"2Ô"2Ñ3Ô3Ð3Ð3µT½)ÅLÔ:QÑ5RÔ5RÐ5RÐ5RÝ-Ð-ð/ñ ô ð õ
 �lÒ*Ð*Ø ˆOÝ•, Ñ"Ô#×*Ò*­:µlÔ+CÑDÔDÐDÝ2;½LÔ2I�	•, Ñ"Ô# BÔ'¨Ñ/Ý•lÐ#Ý# aÑ'ˆÝð 	ØˆKˆKˆKð	ð 	à	ˆQŒ�7Ò	Ð	Ø•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/Ý'¨!Ñ+ˆLØˆFØˆÝ�A�s˜1”v˜tÑ$Ô$Ð$ØˆˆˆØ	ˆQŒ�7Ò	Ð	ØˆØ	ˆQŒÐ$Ò	$Ð	$Ý�A�s˜1”v˜tÑ$Ô$Ð$Ð$Ð$Ø	ˆQŒ�:Ò	Ð	Ýð 	ØˆFØ•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/ØˆFÝ&ˆˆˆà•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/ØˆFÝ�A�s˜1”v˜tÑ$Ô$Ð$Ð$Ð$r'   c                 ó€   — d}d}| D ]6}|dk    r|dz   }|dk    r|dz   }Œn|dk    r|dz
  }|dk    r|dz   }Œ1||z   }Œ7|S )Nr	   r   r<  r   ú@(@r=  ú@)@r&   )r/   rô   r±   r½   s       r(   r\  r\  _  s€   € Ø
€AØ	€AØð ð ˆØ�Š8ˆ8Ø�A‘ˆAØ�AŠvˆvØ˜‘I�Øð ð �#ŠXˆXØ�A‘ˆAØ�AŠvˆvØ˜‘I�ØØ�‰EˆˆØ€Hr'   r,  c                 ób  — d}d}t          | |dz   ¦  «        \  }}||z  }|rq|d         |k    r|dk    r|d|z   dz   z  }n.||d         z  }|d         dk    r|dz  }n|d         dk    r|dz  }t          |dd …         |dz   ¦  «        \  }}||z  }|°q|rJ t          || |f¦  «        ¦   «         ‚|S )Nr	   r   z()ú@r<  r   r=  )rÚ   r×   )r/   Úcommarô   r±   r#  r$  s         r(   r-  r-  q  sö   € Ø
€AØ	€AÝ% d¨E°D©LÑ9Ô9�M€FˆEØˆ�K€AØ
ð 
Ø�!ŒH˜ÒÐ A¨¢F FØ��u‘˜sÑ"Ñ"ˆAˆAà��q”‰MˆAØ�QŒx˜3ŠˆØ�Q‘��Ø�q”˜S’�Ø�Q‘�Ý)¨%°°°¬)°U¸T±\ÑBÔB‰ˆ�Ø	ˆV‰ˆð ð 
ð Ð$Ð$•$˜˜4 �|Ñ$Ô$Ñ$Ô$Ð$Ø€Hr'   c                 óZ   — |                       dd¦  «                              dd¦  «        }|S )Nri  r<  rj  r=  )rÙ   )r/   r£   s     r(   Úunmarkouterparenro  „  s*   € Ø�Š�U˜CÑ Ô ×(Ò(¨°Ñ4Ô4€AØ€Hr'   c                 óü  — | si } |s| S | |u r| S t          |                     ¦   «         ¦  «        D ]Ë}|dk    r|s|| vr||         | |<   Œ|dk    r||         D ]}t          | ||¦  «        } ŒŒ=|dk    rt          | ||         |¦  «        } Œ[|dk    rt	          | ||         |¦  «        } Œy|dv r|s|| vr||         | |<   Œ�|dk    rŒ–|dv rt          d|z  ¦  «         Œ­t          d	t          |¦  «        z   ¦  «        ‚| S )
Nr3   ÚattrspecÚkindselectorÚcharselector)ú=ÚtypenameÚnote)r  Úcheckr
  r  r  Údependz"appenddecl: "%s" not implemented.
z-appenddecl: Unknown variable definition key: )ÚlistÚkeysÚsetattrspecÚsetkindselectorÚsetcharselectorrn   rÏ   r·   )ÚdeclÚdecl2ÚforceÚkrô   s        r(   Ú
appenddeclr‚  ‰  so  € Øð ØˆØð ØˆØˆu€}€}ØˆÝ�%—*’*‘,”,ÑÔð $ð $ˆØ�
Š?ˆ?Øð #˜ ˜˜Ø œ(��Q‘øØ�*Š_ˆ_Ø˜1”Xð 3ð 3�Ý" 4¨¨EÑ2Ô2��ð3à�.Ò Ð Ý" 4¨¨q¬°5Ñ9Ô9ˆDˆDØ�.Ò Ð Ý" 4¨¨q¬°5Ñ9Ô9ˆDˆDØÐ#Ð#Ð#Øð #˜ ˜˜Ø œ(��Q‘øØ�&Š[ˆ[ØØð )ð )ð )åÐ9¸AÑ=Ñ>Ô>Ð>Ð>åÐKÝ ™FœFñ#ñ $ô $ð $à€Kr'   zD\s*(?P<this>(@\(@.*?@\)@|\*[\d*]+|\*\s*@\(@.*?@\)@|))(?P<after>.*)\Zz[(?:,(?P<attributes>[\w(),]+))?(::)?(?P<name>\b[a-z$_][\w$]*\b)(?:\((?P<params>[\w,]*)\))?\Zzž\s*(?P<name>\b[\w$]+\b)\s*(@\(@\s*(?P<args>[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P<result>\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P<bind>.*)\s*@\)@))*\s*\ZzF\s*(?P<scheme>(operator|assignment))@\(@\s*(?P<name>[^)]+)\s*@\)@\s*\Zz9\s*(?P<name>\b[\w$]+\b)\s*@\(@\s*(?P<args>.*)\s*@\)@\s*\Zz4([-+]?(?:\d+(?:\.\d*)?|\d*\.\d+))[dD]((?:[-+]?\d+)?)zA([-+]?((?:\d+(?:\.\d*)?|\d*\.\d+))[eE]((?:[-+]?\d+)?)|(\d+\.\d*))zintent\s*\(.*?\bcallback\bc                 ór   — |                       dg ¦  «        D ]}t                               |¦  «        r dS Œ dS )Nrq  r   r   )ÚgetÚ_intentcallbackpatternrÜ   )Úvdeclr1  s     r(   Ú_is_intent_callbackr‡  ¼  sF   € Ø�YŠY�z 2Ñ&Ô&ð ð ˆÝ!×'Ò'¨Ñ*Ô*ð 	Ø�1�1ð	àˆ1r'   c                 óx  — d                      |                      ¦   «         ¦  «        } t                               | ¦  «        }t	          | |¦  «         |rc|                     d¦  «        }|rd„ |                     d¦  «        D ¦   «         ng }|                     d¦  «        ||                     d¦  «        fS d g d fS )Nr	   Ú
attributesc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   )rÛ   )ru   r1  s     r(   rw   z*_resolvetypedefpattern.<locals>.<listcomp>É  s    € Ð5Ð5Ð5˜q�—’‘”Ð5Ð5Ð5r'   r,  rp   Úparams)rä   r.  ÚtypedefpatternrÜ   ÚprintrÝ   )r/   rf  Úattrss      r(   Ú_resolvetypedefpatternr�  Ã  s¯   € Ø�7Š7�4—:’:‘<”<Ñ Ô €DÝ	×	Ò	˜dÑ	#Ô	#€BÝ	ˆ$��O„O€OØ	ð ;Ø—’˜Ñ&Ô&ˆØ9>ÐFÐ5Ð5 E§K¢K°Ñ$4Ô$4Ð5Ñ5Ô5Ð5ÀBˆØ�xŠx˜ÑÔ ¨¯ª°Ñ(:Ô(:Ð:Ð:Ø��Tˆ>Ðr'   c                 ó>  — t          | ¦  «        } t                               | ¦  «        }|rR|                     d¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        fS t                               | ¦  «        }|r7|                     d¦  «        dz   |                     d¦  «        z   dz   }|g d d fS t
                               | ¦  «        }|r,|                     d¦  «        |                     d¦  «        d d fS d g d d fS )Nrp   r;  r°   ÚbindÚschemer<  r=  )r\  ÚnameargspatternrÜ   rÝ   ÚoperatorpatternÚcallnameargspattern)r/   rf  rp   s      r(   Ú_resolvenameargspatternr–  Î  s  € Ý˜$ÑÔ€DÝ	×	Ò	˜tÑ	$Ô	$€BØ	ð XØ�xŠx˜ÑÔ §¢¨&Ñ!1Ô!1°2·8²8¸HÑ3EÔ3EÀrÇxÂxÐPVÑGWÔGWÐWÐWÝ	×	Ò	˜tÑ	$Ô	$€BØ	ð $Ø�xŠx˜Ñ!Ô! CÑ'¨"¯(ª(°6Ñ*:Ô*:Ñ:¸SÑ@ˆØ�R˜˜tÐ#Ð#Ý	×	"Ò	" 4Ñ	(Ô	(€BØ	ð >Ø�xŠx˜ÑÔ §¢¨&Ñ!1Ô!1°4¸Ð=Ð=Ø��T˜4ÐÐr'   c                 ódB  — |                       d¦  «        }|dk    rd at          �r
|dv�rt          sþt          dk     rót
          j                             t          ¦  «         	                    d¦  «        d         }t          d|z  ¦  «         dat          dz   adt          t          <   i t          t          <   g t          t          <   g t          t                   d	<   i t          t                   d
<   dt          t                   d<   |t          t                   d<   dt          t                   d<   da|dv �
r·|                     ¦   «         }t!          j        d|t           j        ¦  «        rd}nEt!          j        d|t           j        ¦  «        rd}n"t!          j        d|t           j        ¦  «        rd}|dk    rTt'          |                       d¦  «        ¦  «        \  }}}t)          |¬¦  «        t          t                   d
         |<   g }d }	n't+          |                       d¦  «        ¦  «        \  }}}	}|€|dk    rd}nd}|dvrt          d¦  «         ||t          fa|r:t-          d„ t/          |¦  «         	                    d¦  «        D ¦   «         ¦  «        }ng }d|v r,d|v r|                     d¦  «         d|v °t          d¦  «         d}
d}|d v rd}d!t          t                   vrd S |t          t                   d!         vrd S t          t                   D ]}|d         |k    r d S Œ|t          t                   d"         v rd S d#d$d œ|         }t2          r(t4          d%k    rt          dk    rt          d&z   ad}
|d'vrd}t          dz   ai t          t          <   g t          t          <   |
rÿt6          dk    r%t          d(t9          t2          ¦  «        z  d¦  «         d)t          t          <   dt          t                   d<   t2          t          t                   d<   dt          t                   d<   g t          t                   d	<   g t          t                   d*<   g t          t                   d"<   i t          t                   d
<   t          dz   ai t          t          <   g t          t          <   |�r$t6          dk    rt          d+t          z  d¦  «         d,t          t          <   d,t          t                   d<   d-t          t                   d<   t          t          dz
           d         ›d.t          t          dz
           d         ›�t          t                   d<   g t          t                   d	<   g t          t                   d*<   g t          t                   d"<   i t          t                   d
<   t          dz   ai t          t          <   g t          t          <   |t          t          <   |t          t                   d<   |sd/|                     d0d1¦  «        z   }|                       d2¦  «        t          t                   d3<   t=          |¦  «        t          t                   d<   |	t          t                   d4<   t          dk    rt          t          t                   d<   n—t2          rDt          d5k    r9t          t          dz
           d         ›d.t          ›�t          t                   d<   nLt          t          dz
           d         ›d.t          t          dz
           d         ›�t          t                   d<   t?          t          t                                         ¦   «         ¦  «        D ]-}t          t                   |         st          t                   |= Œ.|t          t                   d!<   g t          t                   d	<   g t          t                   d*<   g t          t                   d"<   i t          t                   d
<   i t          t                   d6<   |dk    rg t          t                   d7<   |d v rñ|t          t          d&z
           d*         vr.t          t          d&z
           d*          !                    |¦  «         tE          j#        t          t          d&z
           d
         ¦  «        t          t                   d
<   	 t          t                   d
         |         t          t                   d
         |         d8          $                    d9¦  «        = n# tJ          $ r Y nw xY w|d:v �r?	 tM          t          t                   d
         |         t          t          d&z
           d
         d         ¦  «        t          t                   d
         |<   n# tJ          $ r Y nw xY w|d;k    rƒ|	r�|	t          t                   d
         v rg||	k    satM          t          t                   d
         |         t          t                   d
         |	         ¦  «        t          t                   d
         |<   	 t          t          d&z
           d"          !                    |¦  «         n# tJ          $ r Y nw xY w|d$k    rˆtN          d                              |                       d2¦  «        d0z   |z   ¦  «        }|rMtQ          |                      d¦  «        |                      d¦  «        ¦  «        \  }}}}tS          ||||¦  «         |d v rüt          t          dz
            !                    t          t                   ¦  «         t          t                   t          t          dz
           d%         d	<   t          t          = t          dz
  at          t          dz
            !                    t          t                   ¦  «         t          t                   t          t          dz
           d%         d	<   t          t          = t          dz
  ad S d S |d6k    r©t+          |                       d¦  «        ¦  «        \  }}}	}|�~|r:t-          d<„ t/          |¦  «         	                    d¦  «        D ¦   «         ¦  «        }ng }|	�J t9          |	¦  «        ¦   «         ‚|t          t                   d6         |<   d6|t          fad S d S |dk    rJtQ          ||                       d¦  «        ¦  «        \  }}}}tS          ||||¦  «        }|�d=|t          fad S d S |d>v �rt          t                   d
         }|                       d¦  «         *                    ¦   «         }| +                    d?¦  «        }|dk     rÞ|d@k    rØtY          |¦  «         +                    dA¦  «        d&z
  }|d |dz   …         d?z   ||dz   d …         z   }| +                    d?¦  «        }||d …         d?k    rrd!t          t                   v r^t          dB|                       d¦  «        ›|d |…         ›dC�¦  «         |dD -                    t          t                   d!         ¦  «        z   }|dk     rd}d}n)|d |…          *                    ¦   «         }||d&z   d …         }t/          |¦  «         	                    d¦  «        }t]          |¦  «        dk    r5|d         }t          dEdD -                    |dd …         ¦  «        z  ¦  «         d }dF„ t/          |¦  «         	                    d¦  «        D ¦   «         D �]â}t^                               |¦  «        }|sL|dGv rd}ngta          |  1                    ¦   «         ¦  «         t          dH|›dIt9          |¦  «        ›dJ�¦  «         Œkt=          |                      d¦  «        ¦  «        }|dGv r$|dKk    s|dLk    r||                      d¦  «        z  }||vri ||<   |dMk    r||                      d¦  «        z   }|d@k    �r|                       d¦  «        |z   }td                               |¦  «        rê|t          t                   d!         vr¾t          dk    r dNt          t          d&z
           d         vrt          dO¦  «         |t          t                   d         k    rWt          dP|›dQt          t                   d         ›dR�¦  «         t          t                   d!          !                    |¦  «         n%tg          dS|z  ¦  «         ntg          dT|z  ¦  «         |dUv r|}d8||         v r"||         d8          !                    |¦  «         n|g||         d8<   |d9k    r�t          t                   d         dk    rt          dV¦  «         �Œp|t          t                   d!         vr�ŒŒd*t          t                   vrg t          t                   d*<   t          t                   d*          !                    |¦  «         |}�Œä|t          t                   d
<   |�d=|t          fad S d S |dWk    rGdX„ |                       d¦  «         	                    dD¦  «        D ¦   «         t          t                   dY<   d S |dZk    �r<t          t                   d
         }|                       d¦  «         *                    ¦   «         dd%…         }d }t/          |¦  «         	                    d¦  «        D �]ª}	 d[„ | 	                    d\¦  «        D ¦   «         \  }}n&# tJ          $ r t          d]|›d^|›d_�¦  «         Y ŒIw xY wti          |¦  «        }t=          |¦  «        }||vri ||<   d\||         v r7||         d\         |k    s%t          d`|›da||         d\         ›db|›dc�¦  «         tk          ||¦  «        }|�rB| 6                    dd¦  «        dek    rÌt?          |¦  «        }tn           8                    |¦  «        D ]Œ} t?          ||  9                    ¦   «         |  :                    ¦   «         …                              ¦   «                              dfdg¦  «        ¦  «        ||  9                    ¦   «         |  :                    ¦   «         …<   Œ�d -                    |¦  «        }n]| 6                    dd¦  «        dhk    rD|dd …                              ¦   «                              dfdg¦  «                             dDdi¦  «        }	 tw          |i |¦  «        }n;# tx          tz          t|          f$ r!} tg          dj|›dk| ›dC�¦  «         Y d } ~ �ŒPd } ~ ww xY wt9          |¦  «        ||         d\<   d8||         v r"||         d8          !                    dZ¦  «         ndZg||         d8<   |}�Œ¬|t          t                   d
<   |�d=|t          fad S d S |dlk    �r |                       d¦  «         *                    ¦   «                              ¦   «         dmk    rd t          t                   dl<   d S |                       d¦  «        �r´dlt          t                   v rt          t                   dl         }!ni }!|!€t          dn¦  «         i }!t/          |                       d¦  «        ¦  «         	                    d¦  «        D �]$}i }"t!          j        do|t           j        ¦  «        }|st          dp|z  ¦  «         Œ:t~                               |                      d¦  «        ¦  «        }#|#st          dq|z  ¦  «         Œ|tQ          |#                      d¦  «        |#                      d¦  «        ¦  «        \  }}}}t�          ||¦  «        \  }$}%}&||"dd<   |$|"dr<   |%|"ds<   |&|"dt<   t?          |"                      ¦   «         ¦  «        D ]}|"|         s|"|= Œt/          |                      d¦  «        ¦  «         	                    d¦  «        D ]à}'du|'v rF	 dv„ |' 	                    du¦  «        D ¦   «         \  }(})n8# tJ          $ r t          dw|'z  ¦  «         Y ŒHw xY w|' *                    ¦   «         x}(})t]          |(¦  «        t]          |)¦  «        cxk    rdk    sn t          dx|'z  ¦  «         Œžtƒ          t…          |(¦  «        t…          |)¦  «        dz   ¦  «        D ]}*|"|!t‡          |*¦  «        <   ŒŒá�Œ&|!t          t                   dl<   d S d S |dyk    �rKg }d}+d},d}-d}.d}/|                       d¦  «        D ]²}0|/s|0dzk    r|. }.|0d{k    r|.r|-dz   }-Œ|0d|k    r|/dz   }/n|0d}k    r|/dz
  }/|-dk    r|+|0z   }+Œ>|-dk    r|,|0z   },ŒJ|-d&k    rb|+ *                    ¦   «         }+|+ D                    dD¦  «        r|+dd …          *                    ¦   «         }+| !                    |+|,g¦  «         |0}+d},d}-Œ³|-d&k    r\|+ *                    ¦   «         }+|+ D                    dD¦  «        r|+dd …          *                    ¦   «         }+| !                    |+|,g¦  «         i }1d
t          t                   v rt          t                   d
         }1d }|D �]¼}2d~„ |2D ¦   «         }2|2d         d         dDk    r|2d         dd …         |2d<   |2d         d         d|k    rt          d|2d         z  ¦  «         Œ_d}d}3t]          |2d         ¦  «        }4t-          d€„ t/          |2d         ¦  «         	                    d¦  «        D ¦   «         ¦  «        D �]}|d         d|k    rt          d|z  ¦  «         Œ"d}.||4k     rH|.s|2d         |         dDk    s4|2d         |         dzk    r|. }.|dz   }||4k     r|.°"|2d         |         dDk    ¯4|dz   }||1vri |1|<   d\|1|         v rY|1|         d\         |2d         |3|dz
  …         k    s6t          d�|›da|1|         d\         ›d‚|2d         |3|dz
  …         ›d_�¦  «         |2d         |3|dz
  …         |1|         d\<   |}3|}�Œ�Œ¾|1t          t                   d
<   |�d=|t          fad S d S |dƒk    �r�|                       d¦  «         *                    ¦   «         }|d         d{k    sd„|z   }g }5d}-d}6d}7|D ]\}0|0d{k    r|-dz   }-Œ|-d5k    r8|6 *                    ¦   «         }6|6sd…}6|5 !                    |6|7g¦  «         |-d&z
  }-d}6d}7|-d&z  r|6|0z   }6ŒW|7|0z   }7Œ]|6 *                    ¦   «         }6|6sd…}6|5 !                    |6|7g¦  «         i }8dƒt          t                   v rt          t                   dƒ         }8|5D ]o}0|0d         |8vrg |8|0d         <   d†„ t/          |0d         ¦  «         	                    d¦  «        D ¦   «         D ]%}|r!|8|0d                   !                    |¦  «         Œ&Œp|8t          t                   dƒ<   dƒ|6t          fad S |d‡k    �r t!          j        dˆ|                       d¦  «        t           j        ¦  «        }|�r˜| 1                    ¦   «         }9d‡t          t                   vri t          t                   d‡<   |                      d¦  «        }i t          t                   d‡         |<   d}:d‰|9v �r"|9d‰         ��dŠ|9v r
|9dŠ         €d}:|:t          t                   d‡         |         d‹<   dŒ„ |9d‰          	                    dD¦  «        D ¦   «         }i };|D ]¾}2d\|2v r’t!          j        d�|2t           j        ¦  «        }#|#rP|#                      d‡¦  «         *                    ¦   «         |;|#                      dŽ¦  «         *                    ¦   «         <   n%t          d�t9          |2¦  «        z  ¦  «         n|2|;|2<   |;t          t                   d‡         |         d�<   Œ¿d S d S ta          |  1                    ¦   «         ¦  «         t          d‘¦  «         d S |d’v râd“t          t                   vri t          t                   d“<   t          t                   d“         }<|                       d¦  «        d”k    r[d”|<v rWt‹          |<d”         tŒ          ¦  «        r|<d”         g|<d”<   |<d”          !                    |                       d¦  «        ¦  «         d S |                       d¦  «        |<|                       d¦  «        <   d S |dk    rdt          €t6          rt          d•¦  «         d S t          }=t�          t          |=         t          d d&…         |                       d¦  «        ¦  «         d S t6          dk    r2ta          |  1                    ¦   «         ¦  «         t          d–¦  «         d S d S )—Nr>  r  )r  r  r  rg   r   r‚   r   zBanalyzeline: no group yet. Creating program group with name "%s".
Úprogramr5  r6  r7  rp   ÚfromskyÚfrom)r  r  r  zblock\s*dataú
block datazpython\s*moduleúpython modulezabstract\s*interfaceúabstract interfacerg   r$  )rq  Ú_BLOCK_DATA_r	   )Ú	interfacer›  r�  z2analyzeline: No name/args pattern found for line.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   ©r­   ©ru   Úxs     r(   rw   zanalyzeline.<locals>.<listcomp>  s6   € ð Jð Jð JØ"#ð  Ÿgšg™iœið Jð Jð Jr'   r+  z<analyzeline: argument list is malformed (missing argument).
)r  r  r;  r:  r  r  r
   r8  ©rŸ  r�  z&analyzeline: Creating module block %s
Úmoduler9  zDanalyzeline: Creating additional interface block (groupcounter=%s).
rŸ  Úunknown_interfaceú:Úunknown_rµ   rø   r#  Úprefixr°   é   r  Úvarnamesrq  r  ©r  r  r  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>ž  s6   € ð "Nð "Nð "NØ&'ð #$§'¢'¡)¤)ð "Nð "Nð "Nr'   Úvariable)r
  r  r  r  r  r  r  r  ú::r  rj  z"All arguments will have attribute rÃ   r,  zXanalyzeline: cannot handle multiple attributes without type specification. Ignoring %r.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>Ä  s    € ÐEÐEÐE �!—'’'‘)”)ÐEÐEÐEr'   ©r  r  z&analyzeline: no name pattern found in z statement for z. Skipping.
ÚoperatorÚ
assignmentr
  Ú__user__z8analyzeline: missing __user__ module (could be nothing)
z(analyzeline: appending intent(callback) ú to z arguments
z,analyzeline: intent(callback) %s is ignored
z=analyzeline: intent(callback) %s is already in argument list
)r  r  r  r  r  r  z(analyzeline: ignoring program arguments
r  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>ÿ  s    € Ð<Ð<Ð<˜1ˆQ�WŠW‰YŒYÐ<Ð<Ð<r'   Úimplementedbyr  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>  s    € Ð?Ð?Ð?¨Q˜qŸwšw™yœyÐ?Ð?Ð?r'   rt  zAanalyzeline: could not extract name,expr in parameter statement "ú" of "ú"
z1analyzeline: Overwriting the value of parameter "ú" ("z	") with "rl   r3   r4   r)  ÚeÚcomplexz+1j*(z analyzeline: Failed to evaluate z. Ignoring: r  Únonez<analyzeline: Overwriting earlier "implicit none" statement.
z9\s*(?P<this>.*?)\s*(\(\s*(?P<after>[a-z-, ]+)\s*\)\s*|)\ZzDanalyzeline: could not extract info of implicit statement part "%s"
zManalyzeline: could not extract types pattern of implicit statement part "%s"
rr  rs  ru  ú-c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>S  s    € Ð)JÐ)JÐ)J¸¨!¯'ª'©)¬)Ð)JÐ)JÐ)Jr'   zZanalyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement
z^analyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement (2)
r  ú'r„   r<  r=  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>‰  s    € Ð&Ð&Ð&˜q�—’‘”Ð&Ð&Ð&r'   z>analyzeline: implied-DO list "%s" is not supported. Skipping.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>“  s    € ÐUÐUÐU¨a §¢¡	¤	ÐUÐUÐUr'   z*analyzeline: changing init expression of "ú") to "r  z//Ú_BLNK_c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>Î  s    € ÐKÐKÐK A�a—g’g‘i”iÐKÐKÐKr'   r  zR\A\s*(?P<name>\b\w+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Zry  ÚnotonlyÚonlyc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzeline.<locals>.<listcomp>á  s    € Ð?Ð?Ð? A�a—g’g‘i”iÐ?Ð?Ð?r'   z7\A\s*(?P<local>\b\w+\b)\s*=\s*>\s*(?P<use>\b\w+\b)\s*\ZÚlocalz0analyzeline: Not local=>use pattern found in %s
Úmapz0analyzeline: Could not crack the use statement.
)r  r  Úusercodez-analyzeline: No context for multiline block.
z+analyzeline: No code implemented for line.
)HrÝ   r%   r   r   r   r�   r‘   Úbasenamer    r.  r1   r   rB  rC  r   rÛ   rÈ   rÜ   rÊ   r�  Údictr–  rz   r-  Úremover   r   r   r×   rÙ   rq   ry  rz  r/  ÚcopyÚdeepcopyrZ   rÏ   r‚  rT  Úcracktypespec0Ú
updatevarsr­   Úfindr\  rä   rW   Únamepatternr�  r'  r…  rn   Úget_parametersÚdetermineexprtyper„  Úreal16patternÚfinditerÚstartr  ÚevalÚSyntaxErrorÚ	NameErrorÚ	TypeErrorÚtypespattern4implicitÚcracktypespecrË   ÚordÚchrr•   Ú
isinstancer·   Úappendmultiline)>rû   r>   r/   r7  Únewnamerp   rŽ  rø   r;  r°   Ú
needmoduleÚneedinterfaceÚitr�  Útr3   ÚselectorÚattrÚedeclr‘  Ú	last_namerì   r†   ÚplÚchr¼  rf  ÚapÚinitexprr‹  ÚttÚvrõ   Úimplr~  rg  Ú
kindselectÚ
charselectru  r£   ÚbegcÚendcÚoÚdlÚilr±   ÚfcÚinpr½   r6  rô   ÚjÚllenÚclÚbnÚolÚ	commonkeyÚmmÚisonlyr÷   r)  Úgcs>                                                                 r(   r^  r^  Ý  s"  € ð
 �GŠG�F‰OŒO€EØˆ{ÒÐØÐÝñ �tÐ#GÐGÑGÝð HÝ!-°Ò!1Ð!1Ý”'×"Ò"¥?Ñ3Ô3×9Ò9¸#Ñ>Ô>¸qÔAˆÝØQÐT[Ñ[ñ	]ô 	]ð 	]àˆÝ# aÑ'ˆØ"+�	•,ÑØ#%�
•<Ñ Ø"$�	•,ÑØ+-�
•<Ô  Ñ(Ø+-�
•<Ô  Ñ(Ø,5�
•<Ô  Ñ)Ø+2�
•<Ô  Ñ(Ø+4�
•<Ô  Ñ(ØˆØÐ+Ð+Ñ+à—’‘”ˆÝŒ8�O U­B¬DÑ1Ô1ð 	)Ø ˆEˆEÝŒXÐ(¨%µ´Ñ6Ô6ð 	)Ø#ˆEˆEÝŒXÐ-¨uµb´dÑ;Ô;ð 	)Ø(ˆEØ�FŠ?ˆ?Ý3°A·G²G¸GÑ4DÔ4DÑEÔE‰NˆD�%˜Ý59ÀUÐ5KÑ5KÔ5K�J•|Ô$ VÔ,¨TÑ2ØˆDØˆFˆFå$;¸A¿GºGÀGÑ<LÔ<LÑ$MÔ$MÑ!ˆD�$˜ Øˆ<Ø˜Ò$Ð$Ø%��à�ØÐMÐMÐMÝÐMÑNÔNÐNà! 4­Ð6ÐØð 	Ýð Jð JÝ'5°dÑ';Ô';×'AÒ'AÀ%Ñ'HÔ'HðJñ Jô Jñ Kô KˆDˆDð ˆDØ�ˆ:ˆ:Ø˜�*�*Ø—’˜B‘”�ð ˜�*�*åØOñQô Qð Qð ˆ
ØˆàÐ&Ð&Ð&ØˆMØ�Z­Ô5Ð5Ð5Ø�Ø�:¥lÔ3°FÔ;Ð;Ð;Ø�Ý¥Ô-ð ð �Ø�f”: Ò%Ð%Ø�F�Fð &à•z¥,Ô/°Ô=Ð=Ð=Ø�Ø)°jÐAÐAÀ$ÔGˆEÝð 	"�\¨RÒ/Ð/µLÀAÒ4EÐ4EÝ'¨!Ñ+ˆLØˆJØÐ?Ð?Ð?Ø !�å# aÑ'ˆØ#%�
•<Ñ Ø"$�	•,ÑØð 	)Ý˜Š{ˆ{ÝÐAÝ�]Ñ+Ô+ñ,Ø-.ñ0ô 0ð 0à&.�I•lÑ#Ø0?�J•|Ô$ WÑ-Ý/<�J•|Ô$ VÑ,Ø/1�J•|Ô$ VÑ,Ø/1�J•|Ô$ VÑ,Ø46�J•|Ô$ [Ñ1Ø57�J•|Ô$ \Ñ2Ø/1�J•|Ô$ VÑ,Ý'¨!Ñ+ˆLØ')�J•|Ñ$Ø&(�I•lÑ#Øñ 	)Ý˜Š{ˆ{ÝÐ_Ý ñ"Ø#$ñ&ô &ð &à&1�I•lÑ#Ø0;�J•|Ô$ WÑ-Ø/B�J•|Ô$ VÑ,å�<¨!Ñ+Ô,¨VÔ4Ð4Ð4µjÅÐPQÑAQÔ6RÐSYÔ6ZÐ6Zð0\�J•|Ô$ VÑ,à/1�J•|Ô$ VÑ,Ø46�J•|Ô$ [Ñ1Ø57�J•|Ô$ \Ñ2Ø/1�J•|Ô$ VÑ,Ý'¨!Ñ+ˆLØ')�J•|Ñ$Ø&(�I•lÑ#Ø"'�	•,ÑØ,1�
•<Ô  Ñ)Øð 	8Ø §¢¨c°3Ñ 7Ô 7Ñ7ˆDØ-.¯WªW°XÑ->Ô->�
•<Ô  Ñ*Ý+5°dÑ+;Ô+;�
•<Ô  Ñ(Ø-3�
•<Ô  Ñ*Ý˜1ÒÐÝ/>�J•|Ô$ VÑ,Ð,åð `¥°Ò!2Ð!2å�|¨aÑ/Ô0°Ô8Ð8Ð8½/¸/ð4K•
�<Ô(¨Ñ0Ð0õ �|¨aÑ/Ô0°Ô8Ð8Ð8½*Å\ÐTUÑEUÔ:VÐW]Ô:^Ð:^ð4`•
�<Ô(¨Ñ0å•j¥Ô.×3Ò3Ñ5Ô5Ñ6Ô6ð 	0ð 	0ˆAÝ�lÔ+¨AÔ.ð 0Ý�|Ô,¨QÐ/øà+/�
•<Ô  Ñ(Ø+-�
•<Ô  Ñ(Ø02�
•<Ô  Ñ-Ø13�
•<Ô  Ñ.Ø+-�
•<Ô  Ñ(Ø,.�
•<Ô  Ñ)à�FŠ?ˆ?Ø35�J•|Ô$ ZÑ0àÐ&Ð&Ð&Ø�:¥l°QÑ&6Ô7¸ÔDÐDÐDÝ�<¨!Ñ+Ô,¨[Ô9×@Ò@ÀÑFÔFÐFÝ/3¬}Ý�<¨!Ñ+Ô,¨VÔ4ñ06ô 06�J•|Ô$ VÑ,ðÝ�|Ô,¨VÔ4°TÔ:Ý�|Ô,¨VÔ4°TÔ:¸:ÔF×LÒLÈZÑXÔXðZð Zøåð ð ð Ø�ðøøøàÐ.Ð.Ñ.ðÝ9CÝ�|Ô,¨VÔ4°TÔ:½JÅ|ÐVWÑGWÔ<XÐY_Ô<`ÐacÔ<dñ:fô :f•
�<Ô(¨Ô0°Ñ6Ð6øåð ð ð Ø�ðøøøà�yÒ Ð Øð n˜f­
µ<Ô(@ÀÔ(HÐHÐHØ 6š>˜>ÝAKÝ&¥|Ô4°VÔ<¸TÔBÅJÍ|ÔD\Ð]cÔDdÐekÔDlñBnô Bn�
¥<Ô0°Ô8¸Ñ>ðÝ�<¨!Ñ+Ô,¨\Ô:×AÒAÀ$ÑGÔGÐGÐGøÝð ð ð Ø�ðøøøà�JÒÐÝ˜Q”×%Ò% a§g¢g¨hÑ&7Ô&7¸#Ñ&=ÀÑ&DÑEÔEˆAØð <Ý2@Ø—G’G˜F‘O”O Q§W¢W¨WÑ%5Ô%5ñ37ô 37Ñ/�˜( D¨%å˜8 X¨t°UÑ;Ô;Ð;àÐ&Ð&Ð&Ý•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLÝ•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLˆLˆLð 'Ð&ð 
�ŠˆÝ#:¸1¿7º7À7Ñ;KÔ;KÑ#LÔ#LÑ ˆˆd�F˜DØÐØð Ý ð "Nð "NÝ+9¸$Ñ+?Ô+?×+EÒ+EÀeÑ+LÔ+Lð"Nñ "Nô "Nñ Oô O��ð �Ø�>�>¥4¨¡<¤<‘>”>�>Ø6:�J•|Ô$ WÔ-¨dÑ3Ø '¨­|Ð<ÐÐÐð Ðð 
�ŠˆÝ*8Ø�1—7’7˜7Ñ#Ô#ñ+%ô +%Ñ'ˆ�(˜D %å˜x¨°4¸Ñ?Ô?ˆ	ØÐ Ø *¨Iµ|ÐDÐÐÐð !Ð à	ÐnÐ	nÑ	nÝ�<Ô(¨Ô0ˆØ�WŠW�WÑÔ×#Ò#Ñ%Ô%ˆØ�GŠG�D‰MŒMˆØˆqŠ5ˆ5�T˜XÒ%Ð%Ý˜rÑ"Ô"×'Ò'¨Ñ.Ô.°Ñ2ˆAØ�F�Q˜‘U�F”˜dÑ" R¨¨A©¨¨¤ZÑ/ˆBØ—’˜‘”ˆAØ�!�"�"Œv˜Š~ˆ~ &­Jµ|Ô,DÐ"DÐ"DÝ�ØŸš ™œ˜¨"¨R¨a¨R¬&¨&¨&ð2ñ 3ô 3ð 3à˜#Ÿ(š(¥:­lÔ#;¸FÔ#CÑDÔDÑD�ØˆqŠ5ˆ5ØˆAØˆBˆBà�B�Q�B”—’‘”ˆBØ�A˜‘E�F�F”ˆBÝ˜BÑÔ×%Ò% eÑ,Ô,ˆÝˆr‰7Œ7�QŠ;ˆ;Ø�A”ˆBÝÐoØ—’˜˜A˜B˜BœÑ Ô ñ"ñ #ô #ð #àˆ	àEÐE¥^°BÑ%7Ô%7×%=Ò%=¸eÑ%DÔ%DÐEÑEÔEð 5	ñ 5	ˆAÝ×"Ò" 1Ñ%Ô%ˆBØð 	1ØÐ0Ð0Ð0Ø�A�Aå˜!Ÿ+š+™-œ-Ñ(Ô(Ð(Ý�GØ˜˜�d 1™gœg˜g˜gð'ñ (ô (ð (àå˜rŸxšx¨Ñ/Ô/Ñ0Ô0�ØÐ,Ð,Ð,Ø�Z’� 1¨Ò#4Ð#4Ø�R—X’X˜gÑ&Ô&Ñ&�Ø˜ˆ~ˆ~Ø��a‘Ø�{Ò"Ð"Ø˜BŸHšH WÑ-Ô-Ñ-�Ø�xÒÑØ—W’W˜V‘_”_ rÑ)�Ý)×/Ò/°Ñ3Ô3ð =Ø¥
­<Ô 8¸Ô @Ð@Ð@Ý'¨!Ò+Ð+Ø)µ½LÈ1Ñ<LÔ1MÈfÔ1UÐUÐUÝ 'Ø$_ñ!aô !að !að  !¥J­|Ô$<¸VÔ$DÒDÐDÝ ' Ø@AÀÀÅ:ÍlÔC[Ð\bÔCcÐCcÐCcð)eñ !fô !fð !få *­<Ô 8¸Ô @× GÒ GÈÑ JÔ JÐ Jøå#Ø OÐSTÑ UñWô Wð Wð Wõ  ð !6Ø9:ñ!<ñ =ô =ð =àÐ]Ð]Ð]Ø�Ø˜U 1œXÐ%Ð%Ø�a”˜Ô$×+Ò+¨BÑ/Ô/Ð/Ð/à(* t��a”˜Ñ$Ø�zÒ!Ð!Ý�lÔ+¨GÔ4¸	ÒAÐAÝÐGÑHÔHÐHÙØ�J¥|Ô4°VÔ<Ð<Ð<ÙØ¥jµÔ&>Ð>Ð>Ø<>•J�|Ô,¨[Ñ9Ý�<Ô(¨Ô5×<Ò<¸QÑ?Ô?Ð?ØˆI‰IØ+0�
•<Ô  Ñ(ØÐ Ø *¨Iµ|ÐDÐÐÐð !Ð à	Ð"Ò	"Ð	"à<Ð< §¢¨Ñ 0Ô 0× 6Ò 6°sÑ ;Ô ;Ð<Ñ<Ô<õ 	•<Ô  Ñ1Ð1Ð1à	�Ò	Ñ	Ý�<Ô(¨Ô0ˆØ�WŠW�WÑÔ×#Ò#Ñ%Ô% a¨ dÔ+ˆØˆ	Ý Ñ#Ô#×)Ò)¨%Ñ0Ô0ð $	ñ $	ˆAðØ?Ð?°!·'²'¸#±,´,Ð?Ñ?Ô?‘��8�8øÝð ð ð Ý�ØhiÐhiÐhiÐkmÐkmÐkmÐnñpô pð pà�ðøøøõ $ EÑ*Ô*ˆFÝ˜1‘”ˆAØ˜ˆ~ˆ~Ø��a‘Ø�e˜A”hˆˆ¨¨a¬°¬¸Ò(AÐ(AÝ�Ø�A�A�u˜Q”x ”}�}�} h h hð0ñ 1ô 1ð 1å! (¨FÑ3Ô3ˆAØñ 	.Ø—5’5˜Ñ$Ô$¨Ò.Ð.Ý˜h™œ�BÝ*×3Ò3°HÑ=Ô=ð Sð S˜Ý04Ø$ Q§W¢W¡Y¤Y¨q¯uªu©w¬wÐ%6Ô7×=Ò=Ñ?Ô?×GÒGÈÈSÑQÔQñ1Sô 1S˜˜1Ÿ7š7™9œ9 Q§U¢U¡W¤WÐ,Ñ-Ð-à!Ÿwšw r™{œ{�H�HØ—U’U˜:Ñ&Ô&¨)Ò3Ð3Ø'¨¨¨œ|×1Ò1Ñ3Ô3×;Ò;¸CÀÑEÔEßš  WÑ-Ô-ð ðÝ˜ 2 vÑ.Ô.��øÝ¥­IÐ6ð ð ð Ý�Ø#˜8˜8 S S Sð*ñ +ô +ð +à���‘øøøøðøøøõ ! ™GœGˆE�!ŒH�S‰MØ˜U 1œXÐ%Ð%Ø�a”˜Ô$×+Ò+¨KÑ8Ô8Ð8Ð8à(3 }��a”˜Ñ$ØˆI‰IØ+0�
•<Ô  Ñ(ØÐ Ø *¨Iµ|ÐDÐÐÐð !Ð à	�Ò	Ñ	Ø�7Š7�7ÑÔ×!Ò!Ñ#Ô#×)Ò)Ñ+Ô+¨vÒ5Ð5Ø37�J•|Ô$ ZÑ0Ð0Ð0Ø�WŠW�WÑÔñ 1	8Ø�Z­Ô5Ð5Ð5Ý!¥,Ô/°
Ô;��à�Øˆ|ÝØSñUô Uð Uà�Ý# A§G¢G¨GÑ$4Ô$4Ñ5Ô5×;Ò;¸EÑBÔBð ',ñ ',�Ø�Ý”XØPÐRSÕUWÔUYñ[ô [�àð ÝØ_ÐcdÑeñgô gð gàÝ*×0Ò0°·²¸&Ñ1AÔ1AÑBÔB�Øð ÝØhÐlmÑnñpô pð pàÝ2@Ø—H’H˜VÑ$Ô$ b§h¢h¨wÑ&7Ô&7ñ39ô 39Ñ/�˜( D¨%å3@Ø˜hñ4(ô 4(Ñ0�
˜J¨à#+��ZÑ Ø'1��^Ñ$Ø'1��^Ñ$Ø#+��ZÑ Ý˜dŸiši™kœkÑ*Ô*ð $ð $�AØ œ7ð $Ø  ˜GøÝ'¨¯ª°Ñ(9Ô(9Ñ:Ô:×@Ò@ÀÑGÔGð ,ð ,�AØ˜a�x�xð%Ø)JÐ)J¸Q¿WºWÀS¹\¼\Ð)JÑ)JÔ)J™J˜D $ $øÝ(ð %ð %ð %Ý#Ø }ð  ABñ  !BñCô Cð Cà$˜Hð%øøøð
 '(§g¢g¡i¤iÐ/˜˜tÝ˜t™9œ9­¨D©	¬	Ð6Ð6Ò6Ð6°QÒ6Ð6Ð6Ð6ÝØ}ð  ABñ  BñCô Cð Cà Ý"¥3 t¡9¤9­c°$©i¬i¸!©mÑ<Ô<ð ,ð ,˜Ø'+˜�S ™VœV™˜ð,ñ,ð  48�J•|Ô$ ZÑ0Ð0Ð0ðc1	8ð 1	8ðd 
�Š‰ØˆØˆØˆØˆØˆØˆØ—’˜Ñ!Ô!ð 	ð 	ˆAØð Ø˜’8�8Ø˜�BØ˜’8�8 �8Ø˜A™�AØØ�CŠxˆxØ˜A‘g��Ø�c’�Ø˜A‘g�Ø�AŠvˆvØ˜!‘V��Ø�a’�Ø˜!‘V��Ø�a’�Ø—X’X‘Z”Z�Ø—=’= Ñ%Ô%ð (Ø˜A˜B˜BœŸš™œ�BØ—	’	˜2˜r˜(Ñ#Ô#Ð#Ø�Ø�Ø�øØ�Š6ˆ6Ø—’‘”ˆBØ�}Š}˜SÑ!Ô!ð $Ø˜˜˜”V—\’\‘^”^�Ø�IŠI�r˜2�hÑÔÐØˆØ•Z¥Ô-Ð-Ð-Ý�lÔ+¨FÔ3ˆDØˆ	Øð  	ñ  	ˆAØ&Ð& AÐ&Ñ&Ô&ˆAØ�Œt�AŒw˜#Š~ˆ~Ø˜”t˜A˜B˜B”x��!‘Ø�Œt�AŒw˜#Š~ˆ~ÝØUÐXYÐZ[ÔX\Ñ\ñ^ô ^ð ^àØˆAØˆAÝ�q˜”t‘9”9ˆDÝÐUÐUµ>À!ÀAÄ$Ñ3GÔ3G×3MÒ3MÈeÑ3TÔ3TÐUÑUÔUÑVÔVð ñ �Ø�Q”4˜3’;�;ÝØYÐ\]Ñ]ñ_ô _ð _ð
 Ø�Ø˜4’x�x b�x°°!´°Q´¸3²°Ø˜”t˜A”w #’~�~Ø!#˜V˜Ø˜A™�Að ˜4’x�x b�x°°!´°Q´¸3²°ð ˜‘E�Ø˜D�=�=Ø �D˜‘GØ˜$˜qœ'�>�>¨$¨q¬'°#¬,¸!¸A¼$¸qÀÀQÁ¸w¼-Ò*GÐ*GÝ�GØ˜˜˜4 œ7 3œ<˜<˜<¨¨1¬¨a°°A±¨g¬¨¨ð8ñ 9ô 9ð 9à  œt A a¨!¡e Gœ}��Q”˜‘Ø�Ø�	‘	ñ+ð, ,0�
•<Ô  Ñ(ØÐ Ø *¨Iµ|ÐDÐÐÐð !Ð à	�Ò	Ñ	Ø�wŠw�wÑÔ×%Ò%Ñ'Ô'ˆØ�AŒw˜#Š~ˆ~Ø˜$‘;ˆDØˆØˆØˆØˆØð 	ð 	ˆAØ�CŠxˆxØ˜‘E�ØØ�AŠvˆvØ—X’X‘Z”Z�Øð "Ø!�BØ—	’	˜2˜r˜(Ñ#Ô#Ð#Ø˜‘E�Ø�Ø�Ø�1‰uð Ø˜!‘V��à˜!‘V��Ø�XŠX‰ZŒZˆØð 	ØˆBØ
�	Š	�2�r�(ÑÔÐØˆ	Ø•z¥,Ô/Ð/Ð/Ý"¥<Ô0°Ô:ˆIØð 	.ð 	.ˆAØ�Œt˜9Ð$Ð$Ø"$�	˜!˜Aœ$‘ØKÐK­¸¸!¼Ñ)=Ô)=×)CÒ)CÀEÑ)JÔ)JÐKÑKÔKð .ð .�Øð .Ø˜a œd”O×*Ò*¨1Ñ-Ô-Ð-øð.ð .7�
•<Ô  Ñ*Ø$ b­,Ð7ÐÐÐØ	�Š‰ÝŒXØaÐcd×cjÒcjÐkrÑcsÔcsÕuwÔuyñ{ô {ˆàñ 	IØ—’‘”ˆBØ�J¥|Ô4Ð4Ð4Ø24•
�<Ô(¨Ñ/Ø—8’8˜FÑ#Ô#ˆDØ46�J•|Ô$ UÔ+¨DÑ1ØˆFØ˜ˆ|‰|  6¤
Ñ 6Ø �?�? r¨)¤}Ð'<Ø�FØ@F•
�<Ô(¨Ô/°Ô5°fÑ=Ø?Ð?¨¨F¬×)9Ò)9¸#Ñ)>Ô)>Ð?Ñ?Ô?�Ø�Øð Fð F�AØ˜a�x�xÝœXØVÐXYÕ[]Ô[_ñaô a˜àð _Ø<>¿HºHØ %ñ='ô ='ß',¢u¡w¤wð ˜rŸxšx¨Ñ0Ô0×6Ò6Ñ8Ô8Ñ9Ð9õ $Ø SÕVZÐ[\ÑV]ÔV]Ñ ]ñ_ô _ð _ð _ð !"˜˜1™ØCE•J�|Ô,¨UÔ3°DÔ9¸%Ñ@Ð@ðFð Fð �å�!—+’+‘-”-Ñ Ô Ð ÝÐGÑHÔHÐHÐHÐHØ	Ð%Ð	%Ð	%Ø¥ZµÔ%=Ð=Ð=Ø;=�J•|Ô$Ð%7Ñ8Ý•|Ô$Ð%7Ô8ˆØ�7Š7�6‰?Œ?˜jÒ(Ð(¨Z¸1¨_¨_Ý˜!˜Jœ-­Ñ-Ô-ð 0Ø!" :¤ ��*‘ØˆjŒM× Ò  §¢¨Ñ!1Ô!1Ñ2Ô2Ð2Ð2Ð2à!"§¢¨Ñ!1Ô!1ˆAˆa�gŠg�f‰oŒoÑÐÐØ	�Ò	Ð	ÝÐ#Ýð JÝÐHÑIÔIÐIØˆFÝˆÝ�
 2œÝ(¨¨!¨Ô,ØŸš ™œñ	)ô 	)ð 	)ð 	)ð 	)õ �QŠ;ˆ;Ý�!—+’+‘-”-Ñ Ô Ð ÝÐBÑCÔCÐCÐCÐCð ˆ;sˆ   â3Ad ä
dädäA$f æ
fæfè.i é
iéiÁK "AK#ÁK# ALÁLALÁSASÁSATÁS0ATÁTATÁ^?"A_"Á_"A`Á` A`c                 óp   — d| vri | d<   | d         }||vrg ||<   ||                               |¦  «         d S )NÚf2pymultilines©r/  )rÝ   Úcontext_nameÚmlr)  s       r(   rä  rä    sT   € Ø˜uÐ$Ð$Ø"$ˆÐÑØÐÔ€AØ˜1ÐÐØˆˆ,‰Ø€l„O×Ò˜2ÑÔÐØ
€Fr'   c                 ó²  — d }d }t          j        d| t           j        ¦  «        rd} nIt          j        d| t           j        ¦  «        rd} n&|                      ¦   «                              ¦   «         } t
                               t          |¦  «        ¦  «        }|st          d¦  «         d S |                     ¦   «         }t          | 
                    ¦   «         ¦  «        D ]}t          ||         ¦  «        ||<   Œ| dv r|d         }|d         }|                     d	¦  «        }|d
k    r)|d |…                              ¦   «         }||dz   d …         }| |||fS )Nzdouble\s*complexúdouble complexzdouble\s*precisionzdouble precisionz>cracktypespec0: no kind/char_selector pattern found for line.
)r½  r6   Úlogicalr4   Ú	characterrg   r>  r$  r¯  r   r8  )rÈ   rÜ   rÊ   r­   rÛ   Úselectpatternr\  r1   r'  ry  rz  ro  rÔ  )r3   rì   rê  rë  rf  r)  r�  r†   s           r(   rÒ  rÒ    sS  € Ø€HØ€DÝ	„xÐ# X­r¬tÑ4Ô4ð ,Ø#ˆˆÝ	ŒÐ'¨µ2´4Ñ	8Ô	8ð ,Ø%ˆˆà—>’>Ñ#Ô#×)Ò)Ñ+Ô+ˆÝ	×	Ò	�^¨BÑ/Ô/Ñ	0Ô	0€BØð ÝØMñ	Oô 	Oð 	OàˆØ
�Š‰Œ€AÝ�!—&’&‘(”(‰^Œ^ð &ð &ˆÝ  !¤Ñ%Ô%ˆˆ!‰ˆØÐQÐQÐQØ�V”9ˆØˆwŒZˆØ
�Š�‰Œ€AØˆA‚v€vØ�"�1�"Œv�|Š|‰~Œ~ˆØ��A‘��ŒZˆØ�X˜t RÐ'Ð'r'   z)\s*(?P<name>\b\w+\b)\s*(?P<after>.*)\s*\ZzB\s*(\(\s*(kind\s*=)?\s*(?P<kind>.*)\s*\)|\*\s*(?P<kind2>.*?))\s*\Zz2\s*(\((?P<lenkind>.*)\)|\*\s*(?P<charlen>.*))\s*\Zz§\s*(kind\s*=\s*(?P<kind>.*?)\s*(@,@\s*len\s*=\s*(?P<len>.*)|)|(len\s*=\s*|)(?P<len2>.*?)\s*(@,@\s*(kind\s*=\s*|)(?P<kind2>.*)|(f2py_len\s*=\s*(?P<f2py_len>.*))|))\s*\Zz¿\s*(@\(@\s*(?!/)\s*(?P<array>.*?)\s*@\)@\s*\*\s*(?P<len>.*?)|(\*\s*(?P<len2>.*?)|)\s*(@\(@\s*(?!/)\s*(?P<array2>.*?)\s*@\)@|))\s*(=\s*(?P<init>.*?)|(@\(@|)/\s*(?P<init2>.*?)\s*/(@\)@|)|)\s*\Zc                 ó(  — |                       ¦   «         } t          | ¦  «        dk    r| S | d         }t          dt          | ¦  «        dz
  ¦  «        D ]4}| |         dk    r| |dz            dv s| |dz
           dv rŒ)|| |         z   }Œ5|| d         z   }|S )Nr   r   rµ   z()[]{}=+-/* r
   )r­   rW   rË   )ÚexprÚexpr2r†   s      r(   Úremovespacesr  ?  s§   € Ø�:Š:‰<Œ<€DÝ
ˆ4�y„y�A‚~€~ØˆØ�ŒG€EÝ�1•c˜$‘i”i !‘mÑ$Ô$ð  ð  ˆØ�ŒG�sŠNˆNØ�1�q‘5Œk˜^Ð+Ð+Ø�a˜!‘e” Ð.Ð.ØØ˜˜Qœ‘ˆˆØ�D˜”HÑ€EØ€Lr'   c                 ó’   — d}d}d}d}| D ];}|dk    r|dv r||z  }|}Œ|s|dv r|}||k    r| }n|dk    r|r|dz  }Œ4||z  }|}Œ<|S )	a(  
    The function replace all spaces in the input variable line which are 
    surrounded with quotation marks, with the triplet "@_@".

    For instance, for the input "a 'b c'" the function returns "a 'b@_@c'"

    Parameters
    ----------
    line : str

    Returns
    -------
    str

    r	   FNrƒ   )rƒ   rÁ  ú")rÁ  r  rµ   ú@_@r&   )r/   ÚfragmentÚinsideÚcurrent_quoteÚescapedr½   s         r(   Úmarkinnerspacesr  N  s¦   € ð  €HØ€FØ€MØ€GØð ð ˆØ�dŠ?ˆ?˜qÐ$5Ð5Ð5Ø˜‰MˆHØˆGØØð 	˜!˜{Ð*Ð*ØˆMØ�ÒÐØ�ZˆFˆFØ�#ŠXˆX˜&ˆXØ˜ÑˆHØØ�A‰ˆØˆˆØ€Or'   c                 ó¾  — d }t          | |¦  «        \  }}}|r¹d„ t          |¦  «                             d¦  «        D ¦   «         }g }t          j        d¦  «        }	|D ]r}
|
sŒ|	                     |
¦  «        }|rA|                     d¦  «                             ¦   «         }||
t          |¦  «        d …         z   }
| 	                    |
¦  «         Œs|}d„ t          |¦  «                             d¦  «        D ¦   «         }g }|D ]x}d„ t          t          t          |¦  «        ¦  «        d¬¦  «                             d	¦  «        D ¦   «         D ]-}|r)| 	                    |                     d
d¦  «        ¦  «         Œ.Œy|D �]Þ}t                               |¦  «        }|s t          dt          |¦  «        z  ¦  «         Œ?t!          |                     d¦  «        ¦  «        }i }|t"          t$                   d         v �r^t"          t$                   d         |                              ¦   «         }d|v}|r| |d<   n-| r+| |d         k    st          d|›d|d         ›d| ›d�¦  «         d|vrt'          j        |¦  «        |d<   nš|r˜t)          |                     ¦   «         ¦  «        D ]v}||d         v rG||         |d         |         k    s/t          d|›d|›d|d         |         ›d||         ›d�	¦  «         ŒSt'          j        ||         ¦  «        |d         |<   Œwd|vr!|r|r||d<   n±t-          d|›d|›d�¦  «         nš|r˜t)          |                     ¦   «         ¦  «        D ]v}||d         v rG||         |d         |         k    s/t          d|›d|›d|d         |         ›d||         ›d�	¦  «         ŒSt'          j        ||         ¦  «        |d         |<   Œwd|vr||d<   n-|r+|d         |k    st          d|›d|d         ›d|›d�¦  «         d|vrt'          j        |¦  «        |d<   nŽ|r*|D ]'}
|
|d         vr|d          	                    |
¦  «         Œ(nat'          j        | ¦  «        |d<   t'          j        |¦  «        |d<   t'          j        |¦  «        |d<   ||d<   t'          j        |¦  «        |d<   d|                     d¦  «        pg v rn|t"          t$                   d         v rTd t"          t$                   vrg t"          t$                   d <   t"          t$                   d           	                    |¦  «         |                     d!¦  «        �ryt0                               t3          |                     d!¦  «        ¦  «        ¦  «        }|�r|                     ¦   «         }d"D ]!}||d#z            �||d#z            ||<   ||d#z   = Œ"t)          |                     ¦   «         ¦  «        D ]&}||         �t7          ||         ¦  «        ||<   Œ#||= Œ'd$|v r^d%|v rZ|d$         d&k    r|d%         |d$<   |d%= n?|d%         d'z   |d$         z   |d%<   |d$= t-          d(| ›d|›d)| ›d|›d*|d%         ›d+�¦  «         d%|v r|d,|d%         z  }d|vs|d         s|g|d<   n^|d          	                    |¦  «         |d         D ]:}|d d-…         d.k    r*||k    r$|d         d/= t-          d|›d0|›d1|›d�¦  «          nŒ;d$|v rb| d2v r#d|vs|d         si |d<   |d$         |d         d3<   n;| d4k    r5d|vs|d         si |d<   d$|d         v r	|d         d$= |d$         |d         d3<   d5|v rGd6|v r8|d6         |d5         k    s&t          d7|›d|d6         ›d|d5         ›d�¦  «         n4|d5         |d6<   n(t          d8||                     d!¦  «        z   z  ¦  «         t)          |                     ¦   «         ¦  «        D ]}||         s||= Œ|t"          t$                   d         |<   d9t"          t$                   v r+t"          t$                   d9          	                    |¦  «         |}�Œà|S ):Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zupdatevars.<locals>.<listcomp>y  s    € ÐMÐMÐM !�A—G’G‘I”IÐMÐMÐMr'   r+  z(?P<start>[a-zA-Z]+)rÚ  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zupdatevars.<locals>.<listcomp>…  s    € Ð	EÐ	EÐ	E˜ˆ!�'Š'‰)Œ)Ð	EÐ	EÐ	Er'   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zupdatevars.<locals>.<listcomp>ˆ  s    € ÐoÐoÐo �1—7’7‘9”9ÐoÐoÐor'   rµ   ©rm  z@ @r  z;updatevars: no name pattern found for entity=%s. Skipping.
rp   r6  r3   z+updatevars: attempt to change the type of "r»  rÄ  z". Ignoring.
rr  z0updatevars: attempt to change the kindselector "r¹  rs  zupdatevars:z*: attempt to change empty charselector to rÆ   z0updatevars: attempt to change the charselector "ru  z/updatevars: attempt to change the typename of "rq  r  r;  r9  r$  )rW   ÚarrayÚinitÚ2rW   r"  r	   r,  zupdatevars: "z" is mapped to "r<  z)"
údimension(%s)é	   r
  r
   z: attempt to change rµ  ©r½  r6   r  r4   r   r  r#  rt  z6updatevars: attempt to change the init expression of "z?updatevars: could not crack entity declaration "%s". Ignoring.
r«  )rà  r-  r.  rÈ   rÉ   rÜ   rÝ   rÛ   rW   r/  r  r  rÙ   rÕ  r1   r×   rq   rC  r   rÐ  ry  rz  rn   r„  Úlenarraypatternr\  r'  ro  )r3   rê  rq  Ú
entitydeclrí  rõ  rö  ru  rô   r½   r1  rû   ÚsÚelÚel1r¼  Úe1Úenamerì  Únot_has_typespecr�  rf  Úd1ÚlkÚdmÚdm1s                             r(   rÓ  rÓ  s  s
  € ð €IÝ'4°X¸xÑ'HÔ'HÑ$€J�
˜HØð ØMÐM¥~°hÑ'?Ô'?×'EÒ'EÀeÑ'LÔ'LÐMÑMÔMˆØˆÝŒJÐ.Ñ/Ô/ˆØð 	ð 	ˆAØð ØØ—’˜‘
”
ˆAØð #Ø—G’G˜GÑ$Ô$×*Ò*Ñ,Ô,�Ø˜�#˜a™&œ&˜'˜'œ
‘N�Ø�HŠH�Q‰KŒKˆKˆKØˆØ	EÐ	E�^¨JÑ7Ô7×=Ò=¸eÑDÔDÐ	EÑ	EÔ	E€BØ
€CØð 3ð 3ˆØoÐo¥nµ\Å/ÐRSÑBTÔBTÑ5UÔ5UÐ]`Ð&aÑ&aÔ&a×&gÒ&gÐhmÑ&nÔ&nÐoÑoÔoð 	3ð 	3ˆBØð 3Ø—
’
˜2Ÿ:š: e¨SÑ1Ô1Ñ2Ô2Ð2øð	3ð ð xñ xˆÝ×Ò˜aÑ Ô ˆØð 	ÝØNÕRVÐWXÑRYÔRYÑZñ\ô \ð \àÝ˜1Ÿ7š7 6™?œ?Ñ+Ô+ˆØˆØ•J�|Ô,¨VÔ4Ð4Ñ4Ý�|Ô,¨VÔ4°UÔ;×@Ò@ÑBÔBˆEØ)°Ð6ÐØð 9Ø$,��jÑ!Ð!Øð 9 8¨u°ZÔ/@Ò#@Ð#@Ý�Ø�E�E˜5 Ô,Ð,Ð,¨h¨h¨hð8ñ 9ô 9ð 9à UÐ*Ð*Ý(,¬	°*Ñ(=Ô(=��nÑ%Ð%Øð LÝ˜jŸošoÑ/Ô/Ñ0Ô0ð Lð L�AØ˜E .Ô1Ð1Ð1¸:Àa¼=ÈEÐR`ÔLaÐbcÔLdÒ;dÐ;dÝ˜Ø˜A˜A˜u˜u˜u e¨NÔ&;¸AÔ&>Ð&>Ð&>À
È1ÄÀÀð!Oñ Pô Pð Pð Põ 48´9¸ZÈ¼]Ñ3KÔ3K˜˜nÔ-¨aÑ0Ð0Ø UÐ*Ð*¨zÐ*Ø#ð 3Ø,6�E˜.Ñ)Ð)å�GØ$˜u˜u j j jð2ñ 3ô 3ð 3ð 3àð LÝ˜jŸošoÑ/Ô/Ñ0Ô0ð Lð L�AØ˜E .Ô1Ð1Ð1¸:Àa¼=ÈEÐR`ÔLaÐbcÔLdÒ;dÐ;dÝ˜Ø˜A˜A˜u˜u˜u e¨NÔ&;¸AÔ&>Ð&>Ð&>À
È1ÄÀÀð!Oñ Pô Pð Pð Põ 48´9¸ZÈ¼]Ñ3KÔ3K˜˜nÔ-¨aÑ0Ð0Ø Ð&Ð&Ø$,��jÑ!Ð!Øð 9 5¨Ô#4¸Ò#@Ð#@Ý�Ø�E�E˜5 Ô,Ð,Ð,¨h¨h¨hð8ñ 9ô 9ð 9à Ð&Ð&Ý$(¤I¨hÑ$7Ô$7��jÑ!Ð!Øð 4Ø!ð 4ð 4�AØ  jÔ 1Ð1Ð1Ø˜jÔ)×0Ò0°Ñ3Ô3Ð3øøå $¤	¨(Ñ 3Ô 3ˆE�*ÑÝ$(¤I¨jÑ$9Ô$9ˆE�.Ñ!Ý$(¤I¨jÑ$9Ô$9ˆE�.Ñ!Ø (ˆE�*ÑÝ $¤	¨(Ñ 3Ô 3ˆE�*ÑØ˜%Ÿ)š) JÑ/Ô/Ð5°2Ð6Ð6¸1Å
Í<Ô@XÐY_Ô@`Ð;`Ð;`Ø¥*­\Ô":Ð:Ð:Ø8:•
�<Ô(¨Ñ5Ý•|Ô$ [Ô1×8Ò8¸Ñ;Ô;Ð;Ø�7Š7�7ÑÔñ 6	/Ý ×&Ò&¥~°a·g²g¸gÑ6FÔ6FÑ'GÔ'GÑHÔHˆBØñ 4/Ø—\’\‘^”^�Ø2ð )ð )�BØ˜"˜s™(”|Ð/Ø!# B¨¡H¤˜˜2™Ø˜r C™x˜LøÝ˜bŸgšg™iœi™œð "ð "�AØ˜!”uÐ(Ý 0°°A´Ñ 7Ô 7˜˜1™˜à˜q˜E˜EØ˜B�;�; 7¨b = =Ø˜%”y B’�Ø$& w¤K˜˜5™	Ø˜w˜K˜Kà&(¨¤k°CÑ&7¸"¸U¼)Ñ&C˜˜7™Ø˜u˜IÝ˜Ø$˜H˜H a a a¨¨¨°5°5°5¸"¸W¼+¸+¸+ð!Gñ Hô Hð Hà˜b�=�=Ø(¨2¨g¬;Ñ6�BØ!¨Ð.Ð.°u¸ZÔ7HÐ.Ø-/¨D˜˜jÑ)Ð)à˜jÔ)×0Ò0°Ñ4Ô4Ð4Ø#(¨Ô#4ð &ð &˜CØ" 2 A 2œw¨+Ò5Ð5¸#Àº)¸)Ø$)¨*Ô$5°bÐ$9Ý ' Ø+0¨5¨5°#°#°#°r°r°rð);ñ !<ô !<ð !<à % øà˜B�;�;ØÐ#LÐLÐLØ*°%Ð7Ð7ÀÀ~ÔAVÐ7Ø46˜E .Ñ1Ø57¸´Y˜˜nÔ-¨cÑ2Ð2Ø! [Ò0Ð0Ø*°%Ð7Ð7ÀÀ~ÔAVÐ7Ø46˜E .Ñ1Ø  E¨.Ô$9Ð9Ð9Ø % nÔ 5°eÐ <Ø57¸´Y˜˜nÔ-¨cÑ2Ø˜R�<�<Ø˜e�|�|¨U°3¬Z¸2¸f¼:Ò-EÐ-EÝ˜Ø!˜E˜E 5¨¤: : :¨r°&¬z¨z¨zð!;ñ <ô <ð <ð <ð &(¨¤Z˜˜c™
øåÐZØ˜AŸGšG GÑ,Ô,Ñ,ñ.ñ /ô /ð /å�e—j’j‘l”lÑ#Ô#ð 	ð 	ˆAØ˜”8ð Ø˜!�HøØ27�
•<Ô  Ô(¨Ñ/Ø�¥LÔ1Ð1Ð1Ý•|Ô$ ZÔ0×7Ò7¸Ñ>Ô>Ð>Øˆ	‰	ØÐr'   c                 ór  — d }d }d }|�rª| dv rÉt                                |¦  «        }|s!t          dt          |¦  «        z  ¦  «         d S |                     ¦   «         }|d         |d<   |d= t          |                     ¦   «         ¦  «        D ]}||         s||= Œt          |                     ¦   «         ¦  «        D ]\  }}t          |¦  «        ||<   Œ�nÝ| dk    �rVt                               |¦  «        }|s!t          dt          |¦  «        z  ¦  «         d S |                     ¦   «         }|d         |d<   |d= |d         rƒt                               t          |d         ¦  «        ¦  «        }|                     ¦   «         }d	D ],}||d
z            r||d
z            ||<   ||         ||<   ||d
z   = Œ-|d         �|d         |d<   |d= t          |                     ¦   «         ¦  «        D ]}||         s||= Œt          |                     ¦   «         ¦  «        D ]\  }}t          |¦  «        ||<   Œn€| dk    r[t          j        d|t          j        ¦  «        }|r|                     d¦  «        }nBt          dt          | |z   ¦  «        z  ¦  «         nt          dt          |¦  «        z  ¦  «         |||fS )Nr'  z4cracktypespec: no kindselector pattern found for %s
Úkind2r   r  z4cracktypespec: no charselector pattern found for %s
ÚcharlenÚlenkind)rW   Úkindr$  Úf2py_lenrg   z\s*\(\s*(?P<name>\w+)\s*\)rp   z'cracktypespec: no typename found in %s
z'cracktypespec: no selector used for %s
)rr  rÜ   r1   r×   r'  ry  rz  Úitemsrq   rs  Úlenkindpatternr-  rÈ   rÊ   rÝ   )	r3   rê  rõ  rö  ru  r�  r†   r7  r1  s	            r(   rà  rà    s;  € Ø€JØ€JØ€HØñ 3&ØÐ@Ð@Ð@Ý%×+Ò+¨HÑ5Ô5ˆJØð ÝØKÍtÐT\É~Ì~Ñ^ñ`ô `ð `à�Ø#×-Ò-Ñ/Ô/ˆJØ(¨Ô1ˆJ�s‰OØ˜7Ð#Ý˜*Ÿ/š/Ñ+Ô+Ñ,Ô,ð &ð &�Ø! !”}ð &Ø" 1˜øÝ˜Z×-Ò-Ñ/Ô/Ñ0Ô0ð .ð .‘��1Ý *¨1¡¤�
˜1‘�ñ.à˜Ò$Ñ$Ý%×+Ò+¨HÑ5Ô5ˆJØð ÝØKÍtÐT\É~Ì~Ñ^ñ`ô `ð `à�Ø#×-Ò-Ñ/Ô/ˆJØ(¨Ô3ˆJ�s‰OØ˜9Ð%Ø˜)Ô$ð AÝ(×.Ò.Ý" :¨iÔ#8Ñ9Ô9ñ;ô ;�à!×+Ò+Ñ-Ô-�Ø)ð *ð *�BØ˜r C™xÔ(ð 8Ø&-¨b°3©hÔ&7˜ ™Ø%,¨R¤[�J˜r‘NØ  S¡Ð)Ð)Ø˜:Ô&Ð2à-4°ZÔ-@�J˜zÑ*Ø˜9Ð%Ý˜*Ÿ/š/Ñ+Ô+Ñ,Ô,ð &ð &�Ø! !”}ð &Ø" 1˜øÝ˜Z×-Ò-Ñ/Ô/Ñ0Ô0ð .ð .‘��1Ý *¨1¡¤�
˜1‘�ð.à˜ÒÐÝ”xÐ =¸xÍÌÑNÔNˆHØð 5Ø#Ÿ>š>¨&Ñ1Ô1��åÐBÝ˜h¨Ñ1Ñ2Ô2ñ4ñ 5ô 5ð 5ð 5õ Ð>Ý˜(‘^”^ñ%ñ &ô &ð &à�z 8Ð+Ð+r'   c                 ó  — | si } |s| S d| vr|g| d<   | S |r| d                               |¦  «         || d         v r| S |dk    r&d| d         vr| d                               |¦  «         nŸ|dk    r&d| d         vr| d                               |¦  «         ns|dk    r&d| d         vr| d                               |¦  «         nG|dk    r&d| d         vr| d                               |¦  «         n| d                               |¦  «         | S )Nrq  rI   Ú	automaticr  r  r	  )r~  rë  r€  s      r(   r{  r{  C  sb  € Øð ØˆØð ØˆØ˜ÐÐØ ˜6ˆˆZÑØˆØð &ØˆZÔ×Ò Ñ%Ô%Ð%Øˆt�JÔÐÐØˆØˆxÒÐ˜K¨t°JÔ/?Ð?Ð?ØˆZÔ×Ò Ñ%Ô%Ð%Ð%Ø	�Ò	Ð	 °°jÔ1AÐ!AÐ!AØˆZÔ×Ò Ñ%Ô%Ð%Ð%Ø	�Ò	Ð	Ø˜D Ô,Ð,Ð,Ø�Ô×#Ò# DÑ)Ô)Ð)øØ	�Ò	Ð	Ø˜4 
Ô+Ð+Ð+Ø�Ô×#Ò# DÑ)Ô)Ð)øàˆZÔ×Ò Ñ%Ô%Ð%Ø€Kr'   c                 ó®   — | si } |s| S d| vr|| d<   | S t          |                     ¦   «         ¦  «        D ]}|s
|| d         vr||         | d         |<   Œ | S )Nrr  ©ry  rz  ©r~  Úselr€  r�  s       r(   r|  r|  ^  s…   € Øð ØˆØð ØˆØ˜TÐ!Ð!Ø"ˆˆ^ÑØˆÝ�#—(’(‘*”*ÑÔð -ð -ˆØð 	-�A˜T .Ô1Ð1Ð1Ø&)¨!¤fˆD�Ô  Ñ#øØ€Kr'   c                 ó®   — | si } |s| S d| vr|| d<   | S t          |                     ¦   «         ¦  «        D ]}|s
|| d         vr||         | d         |<   Œ | S )Nrs  r?  r@  s       r(   r}  r}  l  s…   € Øð ØˆØð ØˆØ˜TÐ!Ð!Ø"ˆˆ^ÑØˆå�#—(’(‘*”*ÑÔð -ð -ˆØð 	-�A˜T .Ô1Ð1Ð1Ø&)¨!¤fˆD�Ô  Ñ#øØ€Kr'   Úunknownc                 ó   — d| v r| d         S |S )Nrp   r&   )r7  rC  s     r(   ÚgetblocknamerE  {  s   € Ø�€€Ø�VŒ}ÐØ€Nr'   c                 óR   — d| d         ›d| d         ›d�a d S # t          $ r Y d S w xY w)NzIn: rš  r§  rp   rÃ   )r   rÏ   )r7  s    r(   ÚsetmesstextrG  ƒ  sJ   € ðØ,1°&¬M¨M¨M¸5À¼=¸=¸=ÐIÐÐÐøÝð ð ð Øˆˆðøøøs   � ˜
&¥&c                 óz   — i }d| v rt          | d         ¦  «        }d| v r|                     | d         ¦  «         |S )NÚparent_blockr  )Úget_usedictÚupdate)r7  Úusedicts     r(   rJ  rJ  Œ  sH   € Ø€GØ˜ÐÐÝ˜e NÔ3Ñ4Ô4ˆØ�€~€~Ø�Š�u˜U”|Ñ$Ô$Ð$Ø€Nr'   c           
      ó6  — |€i }t          | ¦  «        }|s|S t          |                     ¦   «         ¦  «        D ]ß\  }}|                     ¦   «         }|t          vr*t          d|›d|                      d¦  «        ›d�¦  «         ŒLt          |         }t          |¦  «        }|sŒk|rt          d|z  ¦  «         t          |                     ¦   «         ¦  «        D ]>\  }}||v r0t          dt          |¦  «        ›dt          |¦  «        ›d�¦  «         |||<   Œ?Œà|S )Nzget_useparameters: no module z info used by rp   rÃ   z,get_useparameters: mapping for %s not impl.
z(get_useparameters: overriding parameter z with value from module )
rJ  ry  r:  rÛ   r   r1   r„  rÖ  rn   r×   )	r7  Ú	param_maprL  ÚusenameÚmappingÚmvarsr‹  r�  ró  s	            r(   Úget_useparametersrR  •  sV  € ð ÐØˆ	Ý˜%Ñ Ô €GØð ØÐÝ  §¢¡¤Ñ1Ô1ð ð Ñˆ�Ø—-’-‘/”/ˆØ�-Ð'Ð'ÝˆGØ�W�W˜eŸiši¨Ñ/Ô/Ð/Ð/ð1ñ 2ô 2ð 2àÝ˜gÔ&ˆÝ Ñ&Ô&ˆØð 	Øàð 	QÝÐCÀwÑOÑPÔPÐPÝ˜Ÿš™œÑ(Ô(ð 	ð 	‰DˆAˆqØ�Iˆ~ˆ~Ý�Ý59¸!±W´W°W°W½dÀ7¹m¼m¸m¸mðMñ Nô Nð NàˆI�a‰LˆLð		ð Ðr'   c                 óÖ  ‡‡— t           s| S t          | t          ¦  «        rˆˆfd„| D ¦   «         }|S t          | ¦  «         t	          ‰›d| d         ›d�d¦  «         ‰€t          | ¦  «        Š‰�_d| v r[| d         }t          |                     ¦   «         ¦  «        D ]1}||         }d|v r#|d         }d|v r|d         }|‰v r‰|         |d<   Œ2ˆˆfd	„| d
         D ¦   «         }	|	| d
<   | S )Nc                 ó:   •— g | ]}t          |‰d z   ‰¬¦  «        ‘ŒS ©r¦   )ÚtabrN  ©Ú
postcrack2)ru   ÚgrN  rV  s     €€r(   rw   zpostcrack2.<locals>.<listcomp>¹  s<   ø€ ð ð ð Øõ ˜!  t¡°yÐAÑAÔAð ð ð r'   úBlock: rp   rÃ   r   r6  rr  r8  c                 ó:   •— g | ]}t          |‰d z   ‰¬¦  «        ‘ŒS rU  rW  )ru   ÚbrN  rV  s     €€r(   rw   zpostcrack2.<locals>.<listcomp>Ì  s<   ø€ ð (ð (ð (Øõ ˜1 #¨¡*¸	ÐBÑBÔBð (ð (ð (r'   r5  )r   rã  ry  rG  r1   rR  rz  )
r7  rV  rN  Úretr6  r²   Úvarr8  ÚvalÚnew_bodys
    ``       r(   rX  rX  ³  sW  øø€ õ ð ØˆÝ�%�ÑÔð ðð ð ð ð Øðñ ô ˆàˆ
Ý�ÑÔÐÝ˜s˜s˜s E¨&¤M M MÐ2°AÑ6Ô6Ð6àÐÝ% eÑ,Ô,ˆ	àÐ ¨5  Ø�VŒ}ˆÝ�d—i’i‘k”kÑ"Ô"ð 	6ð 	6ˆAØ�q”'ˆCØ Ð$Ð$Ø˜>Ô*�Ø˜T�>�>Ø˜vœ,�CØ˜iÐ'Ð'Ø'0°¤~˜˜V™øð(ð (ð (ð (ð (Ø˜vœð(ñ (ô (€Hà€Eˆ&�Mà€Lr'   c                 ó¶  — t          | t          ¦  «        rjg }g }| D ]^}t          |¦  «         t          ||dz   ¬¦  «        }d|v r d|d         v r|                     |¦  «         ŒI|                     |¦  «         Œ_||z   S t          | ¦  «         t          | t
          ¦  «        s#d| vrt          dt          | ¦  «        z   ¦  «        ‚d| v r(| d         dk    st          |›d| d         ›d	�d
¦  «         t          | ¦  «        } t          | ¦  «        } t          | ¦  «        | d<   t          | d         ¦  «        | d<   d| v r| d         r| d         }t          | ||¬¦  «        | d<   g }d| v rF| d         }t          |                     ¦   «         ¦  «        D ]}d|v r|                     |¦  «         Œni }d}	d| v r| d         }	d| v �r�| d         �r„g }
d| v r| d         }
t          j        | d         ¦  «        }|	r|	dz   }nd}||v r d}d||fz  |v r|dz   }d||fz  |v °d||fz  }dg i |	dz   dœ}| d         D ]Ø}||
v r¨g }d}| d         D ]}|dz   }|d         dk    rld}|d         D ]6}|dz   }d|v r+|d         |k    rt          j        |¦  «        }|d         |=  nŒ7|r)|d         s	| d         |= |
|
                     |¦  «        =  nŒ€|d                              |¦  «         Œ®||v r&t#          ||         ¦  «        s||         |d         |<   ŒÙ|d         s|d         r3|
| d<   d|gi || d         dœ}i ||<   t$                               |¦  «         |r|| d<   | S )zi
    TODO:
          function return values
          determine expression types if in argument list
    r¦   ©rV  rp   r´  r7  z0postcrack: Expected block dictionary instead of r¦  rZ  rÃ   r   r6  Úsortvarsr;  r5  r  r	   r9  r:  Ú__user__routinesÚunknown__user__routinesr   z%s_%irŸ  Ú_user_interface)r7  r5  r6  rp   r
   rœ  )r7  r5  r6  rp   r:  )rã  ry  rG  Ú	postcrackr/  rÎ  rÏ   r·   r1   ÚanalyzeargsÚanalyzecommonÚanalyzevarsÚsortvarnamesÚanalyzebodyrz  rÐ  rZ   Ú
isexternalr   )r7  r;  rV  ÚgretÚuretrY  ÚuserisdefinedÚuseblockr�  rp   r:  rQ  Úmnamer†   rŸ  r¼  Úedefrþ  r\  ÚbbÚmblocks                        r(   rg  rg  Ó  st  € õ �%�ÑÔð ØˆØˆØð 	ð 	ˆAÝ˜‰NŒNˆNÝ˜!  t¡Ð,Ñ,Ô,ˆAà˜ˆ{ˆ{˜z¨Q¨v¬YÐ6Ð6Ø—’˜A‘”��à—’˜A‘”��Ø�d‰{ÐÝ�ÑÔÐÝ�e�TÑ"Ô"ð $ w°eÐ';Ð';ÝÐJÝ˜E™
œ
ñ#ñ $ô $ð 	$à�€€˜u Vœ}Ð0CÒCÐCÝ 3 3 3¨¨f¬¨¨Ð6¸Ñ:Ô:Ð:Ý˜ÑÔ€EÝ˜%Ñ Ô €EÝ Ñ&Ô&€Eˆ&�MÝ$ U¨6¤]Ñ3Ô3€Eˆ*ÑØ�€€˜5 œ=€Ø�VŒ}ˆÝ  t°Ð5Ñ5Ô5€Eˆ&�Mà€MØ�€~€~Ø˜”<ˆÝ�h—m’m‘o”oÑ&Ô&ð 	(ð 	(ˆAØ˜QˆˆØ×$Ò$ QÑ'Ô'Ð'øð	(ð ˆØ€DØ�€€Ø�VŒ}ˆà�eÐÑ  kÔ 2ÑØˆ
Ø˜5Ð Ð Ø˜|Ô,ˆJÝ”	˜% œ-Ñ(Ô(ˆØð 	.ØÐ-Ñ-ˆEˆEà-ˆEØ�MÐ!Ð!ØˆAØ˜U A˜JÑ&¨-Ð7Ð7Ø˜‘E�ð ˜U A˜JÑ&¨-Ð7Ð7à˜u a˜jÑ(ˆEØ)°2Ø¨Ð0AÑ)AðCð Cˆ	à�{Ô#ð 	4ð 	4ˆAØ�JˆˆØ�Ø�Ø˜vœð "ð "�AØ˜A™�AØ˜”z [Ò0Ð0Ø˜Ø"# F¤)ð &ð &˜BØ ! A¡˜AØ%¨˜|˜|°°6´
¸a²°Ý'+¤y°¡}¤} Ø$% f¤I¨a LØ % øØð "Ø#$ V¤9ð 5Ø$)¨&¤M°!Ð$4Ø *¨:×+;Ò+;¸AÑ+>Ô+>Ð ?Ø!˜EøØ˜&Ô!×(Ò(¨Ñ.Ô.Ð.Ð.à˜�:�:¥j°°q´Ñ&:Ô&:�:Ø+0°¬8�I˜fÔ% aÑ(øØ�VÔð 	' 	¨&Ô 1ð 	'Ø",ˆE�,ÑØ.Øð9Ø$&°ÀUÈ;ÔEWðYð YˆFà ˆH�U‰OÝ×Ò˜vÑ&Ô&Ð&Øð  Øˆˆe‰Ø€Lr'   c                 óP  — g }g }t          |                      ¦   «         ¦  «        D ]E}d| |         v r$| |         d         r|                     |¦  «         Œ0|                     |¦  «         ŒFt          |¦  «        }d}|r§|d         }d}|dd …         D ]}|| |         d         v rd} nŒ|rH|dd …         |gz   }|dz   }||k    r.t	          dd                     |¦  «        z   dz   ¦  «         ||z   }n3n0|                     |¦  «         |dd …         }t          |¦  «        }d}|°§|S )Nrx  r   r   zTsortvarnames: failed to compute dependencies because of cyclic dependencies between ú, rÃ   )ry  rz  r/  rW   rn   rä   )r6  ÚindepÚdepró  r²   r†   rc  Úws           r(   rk  rk  3  s|  € Ø€EØ
€CÝ�$—)’)‘+”+ÑÔð ð ˆØ�t˜A”wÐÐ 4¨¤7¨8Ô#4ÐØ�JŠJ�q‰MŒMˆMˆMà�LŠL˜‰OŒOˆOˆOÝˆC‰Œ€AØ	€AØ
ð Ø�ŒFˆØˆØ�Q�R�R”ð 	ð 	ˆAØ�D˜”G˜HÔ%Ð%Ð%Ø�Ø�ð &ð ð 	Ø�a�b�b”'˜Q˜C‘-ˆCØ�A‘ˆAØ�1ŠuˆuÝð ;àŸ)š) C™.œ.ñ)à+/ñ0ñ 1ô 1ð 1ð  ™�Øð ð �LŠL˜‰OŒOˆOØ�a�b�b”'ˆCÝ�C‘”ˆAØˆAð) ð ð* €Lr'   c           	      óB  — t          | ¦  «        s| S g }t          | d                              ¦   «         ¦  «        D �]Ê}g }| d         |         D �]ª}t          j        d|t          j        ¦  «        }|�rWg }|                     d¦  «        r?d„ t          |                     d¦  «        ¦  «                             d¦  «        D ¦   «         }t          |                     d¦  «         
                    ¦   «         ¦  «        }|| d         v rwd| d         |         v r>| d         |         d                              d	d
                     |¦  «        z  ¦  «         n[d	d
                     |¦  «        z  g| d         |         d<   n2|r%dd	d
                     |¦  «        z  gi| d         |<   ni | d         |<   ||vr|                     |¦  «         n|}t          d|›d|›d�¦  «         |                     |¦  «         �Œ¬|| d         |<   �ŒÌd| vr|| d<   n| d         |z   | d<   | S )Nr  z2\A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\ZÚdimsc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   z!analyzecommon.<locals>.<listcomp>a  s6   € ð Sð Sð SØ !ð ŸGšG™IœIð Sð Sð Sr'   r+  rp   r6  rq  r%  r,  z:analyzecommon: failed to extract "<name>[(<dims>)]" from "z" in common /z/.
Ú
commonvars)Ú	hascommonry  rz  rÈ   rÜ   rÊ   rÝ   r-  r.  rq   r­   r/  rä   rn   )r7  r~  r�  Úcomvarsr¼  rû   r|  r²   s           r(   ri  ri  U  s�  € Ý�UÑÔð ØˆØ€JÝ�%˜”/×&Ò&Ñ(Ô(Ñ)Ô)ð %ñ %ˆØˆØ�x” Ô#ð 	ñ 	ˆAÝ”ØEÀqÍ"Ì$ñPô PˆAàñ pØ�Ø—7’7˜6‘?”?ð SðSð SÝ%3°A·G²G¸F±O´OÑ%DÔ%D×%JÒ%JÈ5Ñ%QÔ%QðSñ Sô S�Då˜qŸwšw v™œ×4Ò4Ñ6Ô6Ñ7Ô7�Ø˜˜fœÐ%Ð%Ø! U¨6¤]°1Ô%5Ð5Ð5Ø˜fœ aÔ(¨Ô4×;Ò;Ø+¨s¯xªx¸©~¬~Ñ>ñ@ô @ð @ð @ð ,¨s¯xªx¸©~¬~Ñ>ð8@˜˜fœ aÔ(¨Ñ4Ð4ð ð .à&¨¸C¿HºHÀT¹N¼NÑ)KÐ(Lð,N˜˜fœ aÑ(Ð(ð ,.˜˜fœ aÑ(Ø˜JÐ&Ð&Ø×%Ò% aÑ(Ô(Ð(øà�Ý�ØijÐijÐijÐlmÐlmÐlmÐnñpô pð pà�NŠN˜1ÑÔÐÑØ$ˆˆhŒ˜ÑÑØ˜5Ð Ð Ø(ˆˆlÑÐà# LÔ1°JÑ>ˆˆlÑØ€Lr'   c                 ón  — t          | ¦  «         g }| d         D �]}| |d<   |d         dv rR|�|d         |vrŒ|d         }|d         t          v rŒ7t          r|d         t          vrŒNt          |dd¬	¦  «        |d
<   n|}t	          |||dz   ¬¦  «        }|d         dv r"|d         s|                     d¦  «        sd|vrŒ§|d                              dd¦  «        dk    rt                               |¦  «         Œâ|d         dk    r|d         t          |d         <   |                     |¦  «         �Œ|S )Nr5  rI  r7  r¬  rp   r;  z
      T©Úas_interfaceÚsaved_interfacer¦   rb  r¤  r·  r  rµ   r	   Úpythonmoduler¥  r6  )
rG  r"   r#   Úcrack2fortrangenrg  r„  rÙ   r   r/  r   )r7  r;  rV  r5  r\  Úas_s         r(   rl  rl  €  s}  € õ �ÑÔÐØ€DØ�6Œ]ð ñ ˆØ!ˆˆ.ÑØˆWŒ:Ð3Ð3Ð3ØÐ A f¤I°TÐ$9Ð$9Øà˜”i�Ø�Œy�IÐ%Ð%ØÝð ˜Q˜vœY­iÐ7Ð7ØÝ#3Ø�>°ð$6ñ $6ô $6ˆAÐÑ Ð ð ˆCÝ�a˜ #¨¡*Ð-Ñ-Ô-ˆØˆWŒ:Ð<Ð<Ð<Ø�Œyð =Ø!"§¢ Ñ!7Ô!7ð =à!¨Ð*Ð*ØØˆWŒ:×Ò˜c 2Ñ&Ô&¨.Ò8Ð8Ý×Ò˜qÑ!Ô!Ð!Ð!à�Œz˜XÒ%Ð%Ø+,¨V¬9•˜a œiÑ(Ø�KŠK˜‰NŒNˆN‰NØ€Kr'   c                 ó¤  — t          | ¦  «         t          }i }d| v r±| d         €3d }t          dk    r%t          dt	          | d         ¦  «        z  ¦  «         nvt          | d                              ¦   «         ¦  «        D ]N}| d         |                              d¦  «        dvr| d         |         ||<   Œ7| d         |         d         ||<   ŒO||fS )Nr  r   z6buildimplicitrules: no implicit rules for routine %s.
rp   r3   )rI   r=  )rG  Údefaultimplicitrulesr   r1   r×   ry  rz  r„  )r7  ÚimplicitrulesÚ	attrrulesr�  s       r(   ÚbuildimplicitrulesrŒ  £  sø   € Ý�ÑÔÐÝ(€MØ€IØ�UÐÐØ�ÔÐ$Ø ˆMÝ˜Š{ˆ{ÝØMÕPTÐUZÐ[aÔUbÑPcÔPcÑcñeô eð eøõ ˜% 
Ô+×0Ò0Ñ2Ô2Ñ3Ô3ð Dð D�Ø˜Ô$ QÔ'×+Ò+¨JÑ7Ô7Ð?VÐVÐVØ',¨ZÔ'8¸Ô';�M !Ñ$Ð$à#(¨Ô#4°QÔ#7¸
Ô#C�I˜a‘L�LØ˜)Ð#Ð#r'   c                 ó†   — t          | ||¦  «        }t          |¦  «        t          t          fv r|S t	          d|z  ¦  «        ‚)z2 Like `eval` but returns only integers and floats zr=%r)rÛ  rg   r7   r9   rß   )r¼  rY  rô   r£   s       r(   ÚmyevalrŽ  ¶  s=   € åˆQ��1‰Œ€AÝˆA�w„w•3��,ÐÐØˆÝ
�V˜q‘\Ñ
"Ô
"Ð"r'   z\A\b\w+\b\Zc                 ó–  — 	 t          t          | i i ¦  «        ¦  «        }d|dfS # t          $ r Y nw xY wt                               | ¦  «        rdd| fS t          | ¦  «        }|D �]b}t          |¦  «        |k    rŒt          j        d|z   dz   | ¦  «        rŒ3t          j        d|z   dz   t          j	        ¦  «        }|                     | ¦  «        }|�rò	 |                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        }	|                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        |	z
  }
|                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        }|                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        }|
dz  |	z   |k    r|
dz  |	z   |k    r|
|	|fc S n# t          $ r Y nw xY w n�ŒddS )a  
    Obtain ``a`` and ``b`` when ``e == "a*x+b"``, where ``x`` is a symbol in
    xset.

    >>> getlincoef('2*x + 1', {'x'})
    (2, 1, 'x')
    >>> getlincoef('3*x + x*2 + 2 + 1', {'x'})
    (5, 3, 'x')
    >>> getlincoef('0', {'x'})
    (0, 0, None)
    >>> getlincoef('0*x', {'x'})
    (0, 0, 'x')
    >>> getlincoef('x*x', {'x'})
    (None, None, None)

    This can be tricked by sufficiently complex expressions

    >>> getlincoef('(x - 0.5)*(x - 1.5)*(x - 1)*x + 2*x + 3', {'x'})
    (2.0, 3.0, 'x')
    r   Nr   z\w\s*\([^)]*\bú\bú(?P<before>.*?)\bú\b(?P<after>.*)r#  r<  r=  r$  g      à?g      ø?)NNN)r7   rŽ  rÏ   Úgetlincoef_re_1rÜ   rW   rÈ   ÚsearchrÉ   rÊ   rÝ   )r¼  Úxsetr½   Úlen_er£  re  rû   rf  Úeer\  r1  Úc2s               r(   Ú
getlincoefr™  À  s?  € ð*Ý•�q˜"˜bÑ!Ô!Ñ"Ô"ˆØ�!�TˆzÐøÝð ð ð Øˆðøøøå×Ò˜QÑÔð Ø�!�QˆwˆÝ�‰FŒF€EØð 'ñ 'ˆÝˆq‰6Œ6�EŠ>ˆ>ØÝŒ9Ð&¨Ñ*¨UÑ2°AÑ6Ô6ð 	àÝŒzÐ.°Ñ2Ð5GÑGÍÌÑNÔNˆØ�JŠJ�q‰MŒMˆØñ 	ðØ—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨A¨A¨A¨r¯xªx¸Ñ/@Ô/@Ð/@ðB�BàŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&�Ø—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨A¨A¨A¨r¯xªx¸Ñ/@Ô/@Ð/@ðB�BàŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&¨Ñ*�Ø—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨C¨C¨C°·²¸'Ñ1BÔ1BÐ1BðD�BàŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&�à—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨C¨C¨C°·²¸'Ñ1BÔ1BÐ1BðD�BàŸš B™œ�Bð ð (õ ˜B  BÑ'Ô'�Ø˜‘G˜a‘K 1Ò$Ð$¨¨S©°1©¸Ò):Ð):Ø˜a ˜7�N�N�NøøÝð ð ð Ø�ðøøøàˆEñ?	ð@ Ðs   ‚"% ¥
2±2ÃGJ5Ê5
KËKz\b[a-z][\w$]*\bc                 ó
  — | |v rØ||                                dg ¦  «        }d||          v rat          ||          ¦  «        sLt                               ||          d         ¦  «        D ]%}||vr||v r|| k    r|                     |¦  «         Œ&|d d …         D ]E}|                      |g ¦  «        pt          |||¦  «        D ]}||vr|                     |¦  «         ŒŒFn!t          dt          | ¦  «        z  ¦  «         g }||| <   |S )Nrx  rt  z,_get_depend_dict: no dependence info for %s
)r„  ÚisstringÚword_patternÚfindallr/  Ú_get_depend_dictr1   r×   )rp   r6  ÚdepsÚwordsÚwordrz  s         r(   rž  rž  	  s1  € Øˆt€|€|Ø�T”
—’˜x¨Ñ,Ô,ˆà�$�t”*ÐÐ¥X¨d°4¬jÑ%9Ô%9ÐÝ$×,Ò,¨T°$¬Z¸¬_Ñ=Ô=ð 'ð '�ð ˜uÐ$Ð$¨°¨¨¸$À$º,¸,Ø—L’L Ñ&Ô&Ð&øØ˜!˜!˜!”Hð 	$ð 	$ˆDØ—X’X˜d BÑ'Ô'ð :Ý'¨¨d°DÑ9Ô9ð$ð $�à˜E�>�>Ø—L’L ‘O”O�Oøð$ð	$õ 	Ð?Å4ÈÁ:Ä:ÑNÑOÔOÐOØˆØ€Dˆ�JØ€Lr'   c                 óx   — t          |                      ¦   «         ¦  «        }i }|D ]}t          || |¦  «         Œ|S r+   )ry  rz  rž  )r6  ry   Údepend_dictr²   s       r(   Ú_calc_depend_dictr¤  !	  sF   € Ý�—’‘”ÑÔ€EØ€KØð /ð /ˆÝ˜˜D +Ñ.Ô.Ð.Ð.ØÐr'   c                 ó~  ‡ ‡— t          ‰ ¦  «        Šg }t          ‰                     ¦   «         ¦  «        D ]"}‰|         s|                     |¦  «         ‰|= Œ#‰rWt          ‰                     ¦   «         ¦  «        D ]3\  }}ˆfd„|D ¦   «         }|s|                     |¦  «         ‰|= Œ.|‰|<   Œ4‰°Wˆ fd„|D ¦   «         S )z
    c                 ó   •— g | ]}|‰v ¯|‘Œ	S r&   r&   )ru   r²   r£  s     €r(   rw   z$get_sorted_names.<locals>.<listcomp>4	  s#   ø€ Ð:Ð:Ð:˜Q¨¨kÐ)9Ð)9�qÐ)9Ð)9Ð)9r'   c                 ó   •— g | ]}|‰v ¯|‘Œ	S r&   r&   )ru   rp   r6  s     €r(   rw   z$get_sorted_names.<locals>.<listcomp>:	  s   ø€ Ð3Ð3Ð3�T d¨d l lˆD l l lr'   )r¤  ry  rz  r/  r:  )r6  ry   rp   ÚlstÚnew_lstr£  s   `    @r(   Úget_sorted_namesrª  )	  s  øø€ õ $ DÑ)Ô)€KØ€EÝ�[×%Ò%Ñ'Ô'Ñ(Ô(ð "ð "ˆØ˜4Ô ð 	"Ø�LŠL˜ÑÔÐØ˜DÐ!øØ
ð ,Ý˜k×/Ò/Ñ1Ô1Ñ2Ô2ð 	,ð 	,‰IˆD�#Ø:Ð:Ð:Ð: #Ð:Ñ:Ô:ˆGØð ,Ø—’˜TÑ"Ô"Ð"Ø Ð%Ð%à$+�˜DÑ!Ð!ð ð ,ð 4Ð3Ð3Ð3˜UÐ3Ñ3Ô3Ð3r'   c                 óª   — | d         dv r
| dd…         } t                                | ¦  «        rdS t                               | ¦  «        rdS d| z   dz   S )	Nr   ú'"r   r
   é   é   zkind(r=  )rØ  rÜ   Úreal8pattern)rb   s    r(   Ú
_kind_funcr°  =	  sd   € àˆa„y�EÐÐØ˜˜"˜”ˆÝ×Ò˜6Ñ"Ô"ð ØˆqÝ	×	Ò	˜FÑ	#Ô	#ð ØˆqØ�VÑ˜cÑ!Ð!r'   c                 óf   — d| z  }|dk    rdS |dk    rdS |dk    rdS |dk    rd	S |dd
z  k    rdS dS )Nr¸   é   r   i   r8  l        r®  l            r­  é€   é   r
   r&   )r£   rû   s     r(   Ú_selected_int_kind_funcrµ  H	  sZ   € à
ˆa‰€AØˆF‚{€{ØˆqØˆG‚|€|ØˆqØˆG‚|€|ØˆqØˆG‚|€|ØˆqØˆA�‰H‚}€}ØˆrØˆ2r'   c                 óÌ   — | dk     rdS | dk     rdS t          j        ¦   «                              ¦   «         }|                     d¦  «        r	| dk    rdS n| dk     rdS | dk    rdS d	S )
Né   r®  r´  r­  )Úaarch64ÚpowerÚppcÚriscvÚs390xÚsparcé   é   r¸   r
   )ÚplatformÚmachinerÛ   r•   )Úpr£   ÚradixrÁ  s       r(   Ú_selected_real_kind_funcrÄ  X	  s‡   € ð 	ˆ1‚u€uØˆqØˆ2‚v€vØˆqÝÔÑ Ô ×&Ò&Ñ(Ô(€GØ×ÒÐPÑQÔQð Ø�Š7ˆ7Ø�2ð ð ˆrŠ6ˆ6Ø�2Ø�"ŠWˆWØ�2Øˆ2r'   c           
      ój	  — t          j         |¦  «        }t          j         |¦  «        }dt          fdt          fdt          ffD ]\  }}||vr|||<   Œg }t	          | ¦  «        D ]1}d| |         v r%d| |         d         v r|                     |¦  «         Œ2t          j        dt          j        ¦  «        }t          j        dt          j        ¦  «        }	t          j        dt          j        ¦  «        }
|D �]½}d	| |         v �r{| |         d	         }t          | |         ¦  «        r#| 
                    ¦   «         }d
D ]} |j        |Ž }Œ|                     d|¦  «        }|	                     d|¦  «        }d}d| |         v r]d| |         d         v rMt          |¦  «        }|                     d| |         d         d         z   d¦  «        }t          |¦  «        |k     }|s˜|
                     |¦  «        sƒ|                     d¦  «        }t          |¦  «        dk    r[d                     |d d…         ¦  «         
                    ¦   «                              |d          
                    ¦   «         d¦  «        }t#          | |         ¦  «        rÌt%          |¦  «        }t&                               |¦  «        D ]Œ}t%          ||                     ¦   «         |                     ¦   «         …          
                    ¦   «                              dd¦  «        ¦  «        ||                     ¦   «         |                     ¦   «         …<   Œ�d                     |¦  «        }n(t/          | |         ¦  «        rt1          d|› d�¦  «         t&                               |¦  «        rd}nt4                               |¦  «        rd}	 t7          |||¦  «        ||<   n?# t8          $ r2}|||<   t1          d|›dt;          |¦  «        ›d�¦  «         Y d }~nd }~ww xY wt=          | |         ¦  «        r3t?          ||         t@          ¦  «        rtC          ||         ¦  «        ||<   | 
                    ¦   «         }||k    r||         ||<   �Œ‰tE          | |         ¦  «         t1          dt;          |¦  «        z  ¦  «         �Œ¿|S )Nr8  Úselected_int_kindÚselected_real_kindrq  r  z \bkind\s*\(\s*(?P<value>.*)\s*\)z-\bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)z4\bselected_(int|real)_kind\s*\(\s*(?P<value>.*)\s*\)rt  ))z.false.ÚFalse)z.true.ÚTruez
kind("\1")zselected_int_kind(\1)Frr  rø   r	   r   r
   r)  r¼  zAget_parameters[TODO]: implement evaluation of complex expression rÃ   r­  r®  zget_parameters: got "z" on z2get_parameters:parameter %s does not have value?!
)#rÐ  r°  rµ  rÄ  rª  r/  rÈ   rÉ   rÊ   Ú	islogicalrÛ   rÙ   ÚsubrW   rÜ   r.  rä   Úisdoublery  rØ  rÙ  rÚ  r  Ú	iscomplexr1   r”  r¯  rÛ  rÏ   r×   r›  rã  r7   râ  r�  )r6  Úglobal_paramsr‹  Úg_paramsrp   ÚfuncÚparam_namesr²   Úkind_reÚselected_int_kind_reÚselected_kind_reró  ÚreplÚis_replacedÚ
orig_v_lenÚv_rò  rû   rõ   Únls                       r(   rÖ  rÖ  k	  sÜ  € ÝŒY�}Ñ%Ô%€FÝŒy˜Ñ'Ô'€HØ¥
Ð+Ø+Õ-DÐEØ,Õ.FÐGðKð "ð "‰
ˆˆdð �xÐÐØ!ˆH�T‰NøØ€KÝ˜dÑ#Ô#ð "ð "ˆØ˜˜aœÐ Ð  [°D¸´G¸JÔ4GÐ%GÐ%GØ×Ò˜qÑ!Ô!Ð!øÝŒjÐ<½b¼dÑCÔC€GÝœ:Ø8½"¼$ñ@ô @Ðå”zØ?ÅÄñGô GÐàð ISñ ISˆØ�$�q”'ˆ>‰>Ø�Q”˜”ˆAÝ˜˜aœÑ!Ô!ð )Ø—G’G‘I”I�ðð )ð )�Dð
 "˜œ	 4Ð(�A�AØ—’˜M¨1Ñ-Ô-ˆAØ$×(Ò(Ð)AÀ1ÑEÔEˆAð  ˆKØ  a¤Ð(Ð(Ø˜T !œW ^Ô4Ð4Ð4Ý!$ Q¡¤�JØŸ	š	 #¨¨Q¬°Ô(?ÀÔ(GÑ"GÈÑLÔL�Aõ #& a¡&¤&¨:Ò"5�Kàð QØ'×-Ò-¨aÑ0Ô0ð QØŸš ™œ�Bå˜2‘w”w ’{�{ØŸGšG B s¨ s¤GÑ,Ô,×2Ò2Ñ4Ô4×<Ò<¸RÀ¼V¿\º\¹^¼^ÈRÑPÔP˜õ ˜˜QœÑ Ô ð 	MÝ˜!‘W”W�Ý&×/Ò/°Ñ2Ô2ð Hð H�AÝ,0Ø˜!Ÿ'š'™)œ) A§E¢E¡G¤GÐ+Ô,×2Ò2Ñ4Ô4×<Ò<¸SÀ#ÑFÔFñ-Hô -H�B�q—w’w‘y”y §¢¡¤Ð(Ñ)Ð)à—G’G˜B‘K”K��å˜4 œ7Ñ#Ô#ð MÝð LØFGðLð Lð Lñ Mô Mð Mõ
 ×#Ò# AÑ&Ô&ð Ø��Ý×$Ò$ QÑ'Ô'ð Ø�ðMÝ   H¨fÑ5Ô5��q‘	�	øåð Mð Mð MØ��q‘	Ý�¸c¸c¸cÅ4ÈÁ7Ä7À7À7ÐKÑLÔLÐLÐLÐLÐLÐLÐLøøøøðMøøøõ ˜˜QœÑ Ô ð +¥Z°°q´	½3Ñ%?Ô%?ð +Ý  q¤	™NœN��q‘	Ø—’‘”ˆBØ�QŠwˆwØ# AœY��r‘
ùå�$�q”'‰NŒNˆNÝØEÍÈaÉÌÑQñSô Sð Sñ Sà€Ms   Î:OÏ
PÏ(PÐPc                 ó.   — | dv rdS t          | |¦  «        S )N)z(:)ú(*)r   rÛ  )Ú_eval_scalar)Úlengthr‹  s     r(   Ú_eval_lengthrÞ  É	  s#   € ØÐ$Ð$Ð$ØˆuÝ˜ Ñ'Ô'Ð'r'   z\d+_c                 óª  — t          | ¦  «        r|                      d¦  «        d         } 	 t          | i |¦  «        }  t          | t          ¦  «        rt
          nt          | ¦  «        } ni# t          t          t          f$ r | cY S t          $ rB}t          d|›d| ›dt          |                     ¦   «         ¦  «        ›d�¦  «         Y d }~nd }~ww xY w| S )Nrø   r   r  z" in evaluating z (available names: r»   )Ú_is_kind_numberr.  rÛ  rã  r·   r×   rÝ  rÜ  rÞ  rÏ   rn   ry  rz  )Úvaluer‹  rõ   s      r(   rÜ  rÜ  Ñ	  s  € Ý�uÑÔð $Ø—’˜CÑ Ô  Ô#ˆð	5å�U˜B Ñ'Ô'ˆØ8� E­3Ñ/Ô/Ð8•�µS¸%Ñ@Ô@ˆˆøÝ•{¥IÐ.ð ð ð ØˆˆˆÝð 5ð 5ð 5Ýˆà�3�3˜˜˜�t F§K¢K¡M¤MÑ2Ô2Ð2Ð2ð4ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøøð5øøøð €Ls   ¬=A* Á*CÂ	CÂ8CÃCc                 ó.)  ‡@‡A‡B— t          | ¦  «         t          | ¦  «        \  }}t          j        | d         ¦  «        ŠB| d         dk    r| d         ‰Bvri ‰B| d         <   d| d         v r‰‰Bd= d| d         d         v rv| d         d         d         }t          ‰B¦  «        t          d„ | d         D ¦   «         ¦  «        z  D ]2}d	D ]-}||v r't	          ‰B                     |i ¦  «        |¦  «        ‰B|<   Œ.Œ3g }| d
         }|D ]0}	 ‰B|          |                     |¦  «         Œ!# t          $ r Y Œ-w xY wt          ‰B 	                    ¦   «         ¦  «        D ]}||vr|                     |¦  «         Œt          ‰Bt          | ¦  «        ¦  «        }	i }
t          j        d¦  «        j        }t          ‰B 	                    ¦   «         ¦  «        D ]�} ||¦  «        }|rr||                     ¦   «         |                     ¦   «         …         }	 |
|          ŒG# t          $ r- t          j        d|z  t          j        ¦  «        j        |
|<   Y Œ}w xY wŒ‚|D �] }|d         t          | 	                    ¦   «         ¦  «        v r%t	          ‰B|         ||d                  ¦  «        ‰B|<   d‰B|         vrÿd‰B|         v rd‰B|         d         v så|r°|d                              ¦   «         }t          ||          	                    ¦   «         ¦  «        D ]m}|dk    r||         |         dk    rŒ|‰B|         vr||         |         ‰B|         |<   Œ=|dk    r*||         |         D ]}t	          ‰B|         |¦  «        ‰B|<   ŒŒnn3|| d
         v r)t'          dt)          |¦  «        ›d| d         ›d�¦  «         d‰B|         v red‰B|         d         v rU‰B|         d         d         }	 t+          t-          |i |	¦  «        ¦  «        }n# t.          $ r Y nw xY w|‰B|         d         d<   d‰B|         v red‰B|         d         v rU‰B|         d         d         }	 t+          t-          |i |	¦  «        ¦  «        }n# t.          $ r Y nw xY w|‰B|         d         d<   i }d‰B|         v �r_‰B|         d         }|                     ¦   «          g ‰B|         d<   d\  }}}}}|D �]}|d d…         dk    r%|dd …                              ¦   «         dd…         }nå|d d…         dk    r%|dd …                              ¦   «         dd…         }n²|d d…         dk    r%|dd …                              ¦   «         dd…         }n|d d …         d!k    r%|d d …                              ¦   «         dd…         }nL|d d"…         d#k    r%|d"d …                              ¦   «         dd…         }nt	          ‰B|         |¦  «        ‰B|<   |r�d‰B|         vrg ‰B|         d<   d$„ t5          |¦  «                             d%¦  «        D ¦   «         D ]I}|                     d&d¦  «        }|‰B|         d         vr!‰B|         d                              |¦  «         ŒJd }|rf|                     d'd(¦  «        }|                     d)d*¦  «        }d#‰B|         vr|g‰B|         d#<   n!‰B|         d#                              |¦  «         d }|�„d‰B|         vrg ‰B|         d<   t;          d+„ t5          |¦  «                             d%¦  «        D ¦   «         ¦  «        D ]3}|‰B|         d         vr!‰B|         d                              |¦  «         Œ4d }|�wd!‰B|         vrg ‰B|         d!<   d,„ t5          |¦  «                             d%¦  «        D ¦   «         D ]3}|‰B|         d!         vr!‰B|         d!                              |¦  «         Œ4d }�Œ|�rd‰B|         v�rg ‰B|         d<   t;          d-„ t5          |¦  «                             d%¦  «        D ¦   «         ¦  «        D �]Á}|d.k    rd.nd/}||	v rt+          |	|         ¦  «        }|	D ]–}t          j        d0|z   d1z   t          j        ¦  «        }|                     |¦  «        }|rX|                     d2¦  «        t+          |	|         ¦  «        z   |                     d3¦  «        z   }|                     |¦  «        }|°XŒ—||k    r|g}n#t5          |d.¦  «                             d4¦  «        }t?          |¦  «        d5k    r	d/|v rd/g}d/}t?          |¦  «        dk    r|d         |k    r
d6|d         g}t?          |¦  «        d5k    �r[tA          tB          j"        j#        |¦  «        \  }}||z
  dz   } |  $                    tB          j%        j&        ¬7¦  «        }i }!| d         D ]ü}tC          j'        |¦  «        }"|  (                    |"¦  «        rÑ	 |  )                    |"¦  «        \  }}#||#fd8„}$t          | *                    ¦   «         ¦  «        }%|% +                    |# *                    ¦   «         ¦  «         n:# tX          $ r-}&d }$t          |  *                    ¦   «         ¦  «        }%Y d }&~&nd }&~&ww xY wt          ˆBfd9„|%D ¦   «         ¦  «        }'|$t          |'¦  «        f|!|<   Œý|!||<   ‰B|         d                              |¦  «         �ŒÃd!‰B|         v�rKd
| v �rF|| d
         v �r;‰B|                              dg ¦  «        }(g }) t[          t\          t^          t`          ¦  «        ‰B|         ¦  «        }*tc          ‰B|         ¦  «        �rïte          ‰B|         d         ¦  «        D �]Ñ\  }+}|                     |¦  «        Š@‰@€�n«|*�r¨‰@ 3                    ¦   «         D �]’\  }\  },}-ˆ@ˆAfd:„ŠAt          ¦   «         }. ‰A||.¦  «         ||(v sd;‰B|         v s
d‰B|         v rŒB|,�‰||.vr…d<}/ |,tC          j'        d=|› d>|+› d?�¦  «        ¦  «        }0|0 $                    tB          j%        j&        ¬7¦  «        }0|0‰B|         d;<   |g|-z   ‰B|         d<   d!‰B|         vrd=|› d>|+› d@|› �g‰B|         d!<   n{dA}/d‰B|         vrg ‰B|         d<   dB‰B|         d         vr!‰B|         d                              dB¦  «         |(                     |¦  «         |)                     d=|› d>|+› d@|› �¦  «         ‰B|                              dg ¦  «        }1dC|1v sdD|1v s|1                     |/rdDndC¦  «         |1r|1‰B|         d<   �Œ”‰@��‰@ 3                    ¦   «         D ]ï\  }\  },}-‰B|                              dg ¦  «        }'‰B|                              dg ¦  «        D ]n}2|2 4                    d¦  «        rWd 5                    |2                     ¦   «         ¦  «        }2|' 6                    |2dEd…                              dF¦  «        ¦  «         Œo|'r%t          t          |'¦  «        ¦  «        ‰B|         d<   ||'vr|(                     |¦  «         Œð�ŒÓnµto          ‰B|         ¦  «        r d‰B|         v r–d/‰B|         d         v r4tq          ‰B|         d         d/         |	¦  «        }3|3‰B|         d         d/<   nRd‰B|         d         v rBtq          ‰B|         d         d         |	¦  «        }3‰B|         d         d= |3‰B|         d         d/<   |)r|)‰B|         d!<   |(r%t          t          |(¦  «        ¦  «        ‰B|         d<   d;‰B|         v �rd‰B|         vrg ‰B|         d<   dC‰B|         d         vr1dD‰B|         d         vr!‰B|         d                              dC¦  «         d‰B|         vr�g ‰B|         d<   t          |
 3                    ¦   «         ¦  «        D ]=\  }} |‰B|         d;         ¦  «        r!‰B|         d                              |¦  «         Œ>‰B|         d         s	‰B|         d= ts          ‰B|         ¦  «        r%tu          ‰B|         d;         |	¦  «        ‰B|         d;<   �Œ"t          ‰B 	                    ¦   «         ¦  «        D �]â}|| d         k    �rÒd#‰B|         v r‰B|         d#         | d#<   | d         dk    �rªdG| v r/| dG         ‰Bv r%tw          ‰B|         ‰B| dG                  ¦  «        ‰B|<   dH| v �rr| dH         }4|4                     dId¦  «        }5|4|5k     }6|5                     dJd¦  «        }4|4|5k     }7tx          d                              |4¦  «        }|rét{          |                     dK¦  «        |                     d3¦  «        ¦  «        \  }8}9}}:t}          |8|9¦  «        \  };}<}=|8‰B|         d<   |;r;d|;v r,	 t-          |;d         i |	¦  «        |;d<   n# t.          $ r Y nw xY w|;‰B|         d<   |<r|<‰B|         d<   |=r|=‰B|         dL<   |6rt	          ‰B|         dI¦  «        ‰B|<   |7rt	          ‰B|         dJ¦  «        ‰B|<   �Œ½t'          dMt)          | dH         ¦  «        z  ¦  «         �Œä| d         dNv�rdO| v r$t          j        | d
         | dO         z   ¦  «        }>nt          j        | d
         ¦  «        }>t          ‰B 	                    ¦   «         ¦  «        D ]@} t[          t~          t€          ¦  «        ‰B|         ¦  «        r|>                     |¦  «         ŒAdP| v rŽ|> 6                    t          | dP          	                    ¦   «         ¦  «        ¦  «         t          | dP          	                    ¦   «         ¦  «        D ],}| dP         |         D ]}||>vr|>                     |¦  «         ŒŒ-| d         dk    r;dG| v r|>                     | dG         ¦  «         n|>                     | d         ¦  «         | d         dQv r'| d         }?|?‰Bv rd‰B|?         v r‰B|?         d         | d<   | d         dRk    r4|> 6                    t          ‰B 	                    ¦   «         ¦  «        ¦  «         t          ‰B 	                    ¦   «         ¦  «        D ]	}||>vr‰B|= Œ
‰BS )SNr6  r7  r  rp   r	   rq  c              3   ó&   K  — | ]}|d          V — ŒdS )rp   Nr&   )ru   r\  s     r(   ú	<genexpr>zanalyzevars.<locals>.<genexpr>í	  s&   è è € Ð$FÐ$F°1 Q v¤YÐ$FÐ$FÐ$FÐ$FÐ$FÐ$Fr'   r5  r±  r;  z[A-Za-z][\w$]*z.*\b%s\br   r3   r  Ú	undefinedz"analyzevars: typespec of variable z is not defined in routine z.
rs  rW   rr  r8  )NNNNNr&  r
  r   r
   rÁ   r  rx  r§   rw  r®  rv  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzevars.<locals>.<listcomp>C
  s    € ÐUÐUÐU¨A˜aŸgšg™iœiÐUÐUÐUr'   r+  rµ   z\n\nz

z\n rÃ   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzevars.<locals>.<listcomp>T
  s    € Ð'_Ð'_Ð'_°a¨¯ª©	¬	Ð'_Ð'_Ð'_r'   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzevars.<locals>.<listcomp>[
  s    € ÐTÐTÐT¨A˜aŸgšg™iœiÐTÐTÐTr'   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   zanalyzevars.<locals>.<listcomp>a
  s    € Ð#XÐ#XÐ#X°! A§G¢G¡I¤IÐ#XÐ#XÐ#Xr'   r§  r   r‘  r’  r#  r$  z@:@r8  Ú1)Úlanguagec                 ó   — | |z
  |z  S r+   r&   )r*  r1  r\  s      r(   Úsolve_vzanalyzevars.<locals>.solve_v…
  s   € Ø01°A±¸©{Ð(:r'   c              3   ó8   •K  — | ]}|j         ‰v ¯|j         V — Œd S r+   )r  )ru   r*  r6  s     €r(   rä  zanalyzevars.<locals>.<genexpr>’
  s9   øè è € ð -7ð -7Ø/0Ø'(¤v° ~ ~ð %&¤FØ'5 ~ ~ ~ð-7ð -7r'   c                 ó”   •— ‰                      | d g g¦  «        d         D ]'}||vr!|                     |¦  «          ‰||¦  «         Œ(d S )Nr   )r„  Úadd)ró  rŸ  Úv1Úcoeffs_and_depsÚcompute_depss      €€r(   ró  z!analyzevars.<locals>.compute_deps³
  s`   ø€ Ø*9×*=Ò*=¸aÀ$ÈÀÑ*LÔ*LÈQÔ*Oð !?ð !? BØ')° ~ ~Ø(,¯ª°©¬¨Ø(4¨°R¸Ñ(>Ô(>Ð(>øð!?ð !?r'   rt  Fzshape(rw  r=  z) == TÚinr  r  r·  r,  r°   r©  ÚpureÚ	recursiver>  ru  z'analyzevars: prefix (%s) were not used
)r¥  r…  rœ  r›  r~  r  )r  r  rg   )ArG  rŒ  rÐ  r%  r{  r„  r/  ÚKeyErrorry  rz  rÖ  rR  rÈ   rÉ   rÜ   rÚ  r  rÊ   rÛ   r1   r×   r·   rÛ  rÏ   Úreverser­   r-  r.  rÙ   rz   rÝ   rW   rË  r   ÚExprÚparseÚtostringÚLanguager¾   Ú	as_symbolr  Úlinear_solveÚsymbolsrK  ÚRuntimeErrorÚl_orÚisintent_inÚisintent_inoutÚisintent_inplaceÚisarrayÚ	enumerater:  r•   rä   Úextendr›  rÞ  ÚisscalarrÜ  r‚  rT  rÒ  rà  Úisintent_callbackÚisintent_aux)Cr7  rŠ  r‹  Úgenr²   r�  Úsvarsr;  r1  r‹  Údep_matchesÚ
name_matchró  rû   Úln0rô   Údimension_exprsrë  Údimr  rx  rw  rv  r½   Útmpr)  ÚstarrÂ  re  rú  r0  Úd2ÚdsizeÚsolver_and_depsr*  r\  rí  Úall_symbolsrõ   Úv_depsÚn_depsÚn_checksÚ
n_is_inputr†   ÚsolverrŸ  Úall_depsÚis_requiredr#  Úv_attrÚaarÝ  ÚprÚpr1ÚispureÚisrecr3   rê  rì  rõ  rö  ru  Ú
neededvarsrp   rò  ró  r6  sC                                                                   @@@r(   rj  rj  á	  sI  øøø€ õ �ÑÔÐÝ1°%Ñ8Ô8Ñ€M�9ÝŒ9�U˜6”]Ñ#Ô#€DØˆW„~˜Ò#Ð#¨¨f¬¸TÐ(AÐ(AØ ˆˆU�6Œ]ÑØ	ˆU�6Œ]ÐÐØ�ˆHØ˜˜vœ rÔ*Ð*Ð*Ø˜”- Ô# JÔ/ˆCÝ˜‘Y”Y¥Ð$FÐ$F¸¸f¼Ð$FÑ$FÔ$FÑ!FÔ!FÑFð Bð B�Ø.ð Bð B�AØ˜C�x�xÝ"-¨d¯hªh°q¸"©o¬o¸qÑ"AÔ"A˜˜Q™øðBð €EØ�Œ=€DØð ð ˆð	Ø�ŒGˆGØ�LŠL˜‰OŒOˆOˆOøÝð 	ð 	ð 	ØˆDð	øøøå�$—)’)‘+”+ÑÔð ð ˆØ�Dˆ=ˆ=Ø�LŠL˜‰OŒOˆOøå˜DÕ"3°EÑ":Ô":Ñ;Ô;€Fà€KÝ”Ð-Ñ.Ô.Ô4€JÝ�$—)’)‘+”+ÑÔð Kð KˆØˆJ�q‰MŒMˆØð 	KØ�!—'’'‘)”)˜AŸEšE™GœGÐ#Ô$ˆAðKØ˜A”��øÝð Kð Kð KÝ!#¤¨K¸1Ñ,=½r¼tÑ!DÔ!DÔ!J�˜A‘��ðKøøøð		Kð ð JBñ JBˆØˆQŒ4•4˜	ŸšÑ(Ô(Ñ)Ô)Ð)Ð)Ý! $ q¤'¨9°Q°q´T¬?Ñ;Ô;ˆD�‰GØ˜T !œWÐ$Ð$Ø  a¤Ð(Ð(¨Z¸4À¼7À:Ô;NÐ-NÐ-NØ ð 1Ø˜Aœ$Ÿ*š*™,œ,�CÝ! -°Ô"4×"9Ò"9Ñ";Ô";Ñ<Ô<ð Bð B˜Ø 
š?˜?¨}¸SÔ/AÀ!Ô/DÈÒ/SÐ/SØ$Ø D¨¤GÐ+Ð+Ø)6°sÔ);¸AÔ)>˜D œG A™J˜JØ *š_˜_Ø%2°3Ô%7¸Ô%:ð Bð B Ý*5°d¸1´g¸qÑ*AÔ*A  Q¡ øðBð ˜% œ-Ð'Ð'Ý�GÝ˜Q™œ˜˜  v¤  ð0ñ 1ô 1ð 1à˜T !œWÐ$Ð$Ø˜˜Qœ Ô/Ð/Ð/Ø˜”G˜NÔ+¨EÔ2�ðÝ�D  B¨Ñ/Ô/Ñ0Ô0�A�AøÝ ð ð ð Ø�Dðøøøà12��Q”˜Ô'¨Ñ.à˜T !œWÐ$Ð$Ø˜˜aœ Ô0Ð0Ð0Ø˜”G˜NÔ+¨FÔ3�ðÝ�D  B¨Ñ/Ô/Ñ0Ô0�A�AøÝ ð ð ð Ø�Dðøøøà23��Q”˜Ô'¨Ñ/àˆØ˜˜aœÐ Ñ Ø˜”7˜:Ô&ˆDØ�LŠL‰NŒNˆNØ"$ˆD�ŒG�JÑØ/KÑ,ˆC�˜ ¨Øð +!ñ +!�Ø�R�a�R”5˜KÒ'Ð'Ø˜Q˜R˜Rœ5Ÿ;š;™=œ=¨!¨B¨$Ô/�C�CØ�r˜�r”U˜hÒ&Ð&Ø   œeŸkšk™mœm¨Q¨r¨TÔ2�F�FØ�r˜�r”U˜hÒ&Ð&Ø   œeŸkšk™mœm¨Q¨r¨TÔ2�F�FØ�r˜�r”U˜gÒ%Ð%Ø˜q˜r˜rœUŸ[š[™]œ]¨A¨b¨DÔ1�E�EØ�r˜�r”U˜f’_�_Ø˜a˜b˜bœEŸKšK™MœM¨1¨R¨4Ô0�D�Då)¨$¨q¬'°1Ñ5Ô5�D˜‘GØð "Ø t¨A¤wÐ.Ð.Ø,.˜˜Qœ Ñ)ØUÐUµÀÑ1GÔ1G×1MÒ1MÈeÑ1TÔ1TÐUÑUÔUð :ð :˜àŸiši¨¨RÑ0Ô0˜Ø d¨1¤g¨hÔ&7Ð7Ð7Ø  œG HÔ-×4Ò4°SÑ9Ô9Ð9øØ!�FØð  ØŸ<š<¨°&Ñ9Ô9�DØŸ<š<¨°Ñ5Ô5�DØ T¨!¤WÐ,Ð,Ø+/¨&˜˜Qœ ™˜à˜Qœ œ×.Ò.¨tÑ4Ô4Ð4Ø�DØÐ%Ø t¨A¤wÐ.Ð.Ø,.˜˜Qœ Ñ)Ý&Ð'_Ð'_½>È&Ñ;QÔ;Q×;WÒ;WÐX]Ñ;^Ô;^Ð'_Ñ'_Ô'_Ñ`Ô`ð 8ð 8˜Ø D¨¤G¨HÔ$5Ð5Ð5Ø  œG HÔ-×4Ò4°QÑ7Ô7Ð7øØ!�FØÐ$Ø d¨1¤gÐ-Ð-Ø+-˜˜Qœ Ñ(ØTÐTµÀÑ1FÔ1F×1LÒ1LÈUÑ1SÔ1SÐTÑTÔTð 7ð 7˜Ø D¨¤G¨GÔ$4Ð4Ð4Ø  œG GÔ,×3Ò3°AÑ6Ô6Ð6øØ �EùØñ >3�{¨$¨q¬'Ð1Ñ1Ø')��Q”˜Ñ$Ý"Ð#XÐ#Xµ~ÀcÑ7JÔ7J×7PÒ7PÐQVÑ7WÔ7WÐ#XÑ#XÔ#XÑYÔYð <3ñ <3�AØ"# s¢( (˜3˜3°�Dà˜F�{�{Ý  q¤	™NœN˜Ø#ð .ð .˜Ý!œzÐ*>ÀÑ*BÐEWÑ*WÕY[ÔY]Ñ^Ô^˜Ø ŸJšJ q™MœM˜Øð .Ø !§¢¨Ñ 1Ô 1Ý # F¨1¤I¡¤ñ!/Ø12·²¸Ñ1AÔ1Añ!B˜Aà $§
¢
¨1¡¤˜Að  ð .øð
 ˜D’y�yØ"˜V˜˜å+¨A¨sÑ3Ô3×9Ò9¸%Ñ@Ô@˜Ý˜2‘w”w !’|�|¨¨r¨	¨	Ø!˜U˜Ø˜Ý˜2‘w”w !’|�|¨¨1¬°ª¨Ø! 2 a¤5˜\˜Ý˜2‘w”w !’|‘|Ý!$¥X¤]Ô%8¸"Ñ!=Ô!=™˜˜BØ " R¡¨!¡˜Ø!ŸNšNµHÔ4EÔ4G˜NÑHÔH˜ð +-˜Ø!& v¤ð Kð K˜AÝ (Ô 2°1Ñ 5Ô 5˜AØ$Ÿ~š~¨aÑ0Ô0ð Kð!GØ+0×+=Ò+=¸aÑ+@Ô+@¡D A qà56¸!ð %;ð %;ð %;ð %;õ 36°a·i²i±k´kÑ2BÔ2B KØ$/×$6Ò$6°q·y²y±{´{Ñ$CÔ$CÐ$CÐ$CøÝ'3ð !Gð !Gð !Gð /3 GÝ25°e·m²m±o´oÑ2FÔ2F K K K K K Køøøøð!Gøøøõ *-ð -7ð -7ð -7ð -7Ø4?ð-7ñ -7ô -7ñ *7ô *7 ð 6=½dÀ6¹l¼lÐ5J °Ñ 2øð .=˜¨Ñ*Ø˜”G˜KÔ(×/Ò/°Ñ2Ô2Ð2Ñ2à˜$˜qœ'Ð!Ñ! f° o¡o¸!¸uÀV¼}Ð:LÑ:Lð
 ˜!”W—[’[ ¨2Ñ.Ô.ˆFØˆHð0��k­>Ý.ñ0ô 0Ø04°Q´ñ9ô 9ˆJå�t˜A”wÑÔñ W>Ý% d¨1¤g¨kÔ&:Ñ;Ô;ð K1ñ K1‘D�A�qØ&5×&9Ò&9¸!Ñ&<Ô&<�OØ&Ð.áØ#ñ :=ð 2A×1FÒ1FÑ1HÔ1Hð 6=ñ 6=Ñ-˜A™~ ¨ð?ð ?ð ?ð ?ð ?ð ?õ
 (+¡u¤u˜HØ(˜L¨¨HÑ5Ô5Ð5Ø!" f  Ø$'¨4°¬7 N NØ$,°°Q´Ð$7Ð$7ð
 !)Ø%Ð1°a¸xÐ6GÐ6Gð /4 Ø'- v­hÔ.@Ø$6¨QÐ$6Ð$6°!Ð$6Ð$6Ð$6ñ/8ô /8ñ (9ô (9 à'+§}¢}Ý-5Ô->Ô-@ð (5ñ (Bô (B à/3  Q¤¨¡ð 67°C¸$±J  Q¤¨Ñ 1Ø#*°$°q´'Ð#9Ð#9ð )B°Ð(AÐ(A°aÐ(AÐ(A¸aÐ(AÐ(Að8C D¨¤G¨GÑ$4øð /3 Ø#+°4¸´7Ð#:Ð#:Ø8: D¨¤G¨HÑ$5Ø#'¨t°A¬w°xÔ/@Ð#@Ð#@Ø$(¨¤G¨HÔ$5×$<Ò$<¸TÑ$BÔ$BÐ$Bà &§¢¨aÑ 0Ô 0Ð 0Ø (§¢Ø$=¨QÐ$=Ð$=°!Ð$=Ð$=¸!Ð$=Ð$=ñ!?ô !?ð !?à%)¨!¤W§[¢[°¸RÑ%@Ô%@˜FØ$.°&Ð$8Ð$8Ø'1°VÐ';Ð';Ø &§¢Ø2=Ð$M J JÀ:ñ!Oô !Oð !Oà%ð =Ø6<  Q¤¨
Ñ 3ùØ&Ñ2à1@×1FÒ1FÑ1HÔ1Hð 	1ð 	1Ñ-˜A™~ ¨Ø%)¨!¤W§[¢[°¸2Ñ%>Ô%>˜FØ&*¨1¤g§k¢k°*¸bÑ&AÔ&Að Gð G Ø#%§=¢=°Ñ#:Ô#:ð !GØ)+¯ª°·²±´Ñ)<Ô)< BØ$*§M¢M°"°Q°r°T´(·.².ÀÑ2EÔ2EÑ$FÔ$FÐ$FøØ%ð FÝ48½¸V¹¼Ñ4EÔ4E  Q¤¨Ñ 1Ø ¨˜˜Ø &§¢¨aÑ 0Ô 0Ð 0øùðWK1õX ˜$˜qœ'Ñ"Ô"ð 
>Ø! T¨!¤WÐ,Ð,Ø˜d 1œg nÔ5Ð5Ð5Ý!-¨d°1¬g°nÔ.EÀcÔ.JØ.4ñ"6ô "6˜à7=˜˜Qœ Ô/°Ñ4Ð4Ø $ q¤'¨.Ô"9Ð9Ð9Ý!-¨d°1¬g°nÔ.EÀeÔ.LØ.4ñ"6ô "6˜à  œG NÔ3°EÐ:Ø7=˜˜Qœ Ô/°Ñ4Øð ,Ø#+��Q”˜Ñ Øð 6Ý$(­¨V©¬Ñ$5Ô$5��Q”˜Ñ!à�$�q”'ˆ>‰>Ø  a¤Ð(Ð(Ø&(��Q”˜
Ñ#Ø $ q¤'¨*Ô"5Ð5Ð5Ø $ q¤'¨*Ô"5Ð5Ð5Ø�Q”˜
Ô#×*Ò*¨:Ñ6Ô6Ð6Ø˜t AœwÐ&Ð&Ø$&��Q”˜Ñ!Ý  ×!2Ò!2Ñ!4Ô!4Ñ5Ô5ð 4ð 4‘D�A�qØ�q˜˜aœ œ‘”ð 4Ø˜Qœ Ô)×0Ò0°Ñ3Ô3Ð3øØ˜A”w˜xÔ(ð *Ø˜Qœ Ð)Ý˜˜QœÑ Ô ð BÝ+¨D°¬G°C¬L¸&ÑAÔA��Q”˜‘ùå�$—)’)‘+”+ÑÔð &`ñ &`ˆØ��f”ÒÑØ˜˜aœÐ Ð Ø $ Q¤¨¤��f‘Ø�WŒ~ Ò+Ñ+Ø˜uÐ$Ð$¨¨x¬¸DÐ)@Ð)@Ý(¨¨a¬°$°u¸X´Ô2GÑHÔH�D˜‘GØ˜uÐ$Ñ$Ø˜xœ�BØŸ*š* V¨RÑ0Ô0�CØ"$¨¢)˜m�FØŸš [°"Ñ5Ô5�BØ!# s¢˜]�EÝ$ Qœ×-Ò-¨bÑ1Ô1�AØð `Ý:HØŸGšG F™OœO¨Q¯WªW°WÑ-=Ô-=ñ;?ô ;?Ñ7˜ (¨D°%å;HØ$ hñ<0ô <0Ñ8˜
 J°à.6˜˜Qœ 
Ñ+Ø%ð AØ%¨Ð3Ð3ð!)Ý9=Ø(2°6Ô(:¸BÀñ:Hô :H J¨vÑ$6Ð$6øå'0ð !)ð !)ð !)Ø$( Dð!)øøøà6@˜D œG NÑ3Ø%ð AØ6@˜D œG NÑ3Ø#ð ;Ø2:˜D œG JÑ/Ø!ð CÝ&1°$°q´'¸6Ñ&BÔ&B˜D ™GØ ð HÝ&1°$°q´'¸;Ñ&GÔ&G˜D ™GùåØFÍÈeÐT\ÌoÑI^ÔI^Ñ^ñ`ô `ð `ùà�Œ>ÐVÐVÑVØ˜5Ð Ð Ýœ 5¨¤=°5¸Ô3FÑ#FÑGÔGˆJˆJåœ 5¨¤=Ñ1Ô1ˆJÝ�d—i’i‘k”kÑ"Ô"ð 	%ð 	%ˆAØ4�tÕ%¥|Ñ4Ô4°T¸!´WÑ=Ô=ð %Ø×!Ò! !Ñ$Ô$Ð$øØ�eÐÐØ×Ò�d 5¨¤>×#6Ò#6Ñ#8Ô#8Ñ9Ô9Ñ:Ô:Ð:Ý˜% œ.×-Ò-Ñ/Ô/Ñ0Ô0ð -ð -�Ø˜wœ¨Ô*ð -ð -�AØ 
Ð*Ð*Ø"×)Ò)¨!Ñ,Ô,Ð,øð-ð �Œ>˜ZÒ'Ð'Ø˜5Ð Ð Ø×!Ò! %¨¤/Ñ2Ô2Ð2Ð2à×!Ò! %¨¤-Ñ0Ô0Ð0Ø�Œ>Ð7Ð7Ð7Ø˜”=ˆDØ�tˆ|ˆ| ¨D°¬JÐ 6Ð 6Ø"& t¤*¨XÔ"6��h‘Ø�Œ>˜VÒ#Ð#Ø×Ò�d 4§9¢9¡;¤;Ñ/Ô/Ñ0Ô0Ð0Ý�d—i’i‘k”kÑ"Ô"ð 	ð 	ˆAØ˜
Ð"Ð"Ø˜�GøØ€Ksy   ÄD Ä 
D-Ä,D-ÈHÈ4IÉIÏO2Ï2
O?Ï>O?ÑQ!Ñ!
Q.Ñ-Q.ç5A&ié
j	é&#j	êj	ÁGAGÁG
AG*ÁG)AG*z\A[a-z]+[\w$]*\Zc                 ó(  — | }t                                | ¦  «         }|r¬t          |¦  «        \  }}t          | |d         |¦  «        }d}| D ]8}	|	                     ¦   «         }	|	t
          j        t
          j        z   vrd}	||	z   }Œ9|d         dk    r|dz   }n|dz   }|} | |d         v s
| |d         v r| dz   } | |d         v °| |d         v °| |v rAd	}
| t          |
¦  «        z   |v r|
d	z   }
| t          |
¦  «        z   |v °| t          |
¦  «        z   } |r||d         | <   ns| |d         vr-||d         v r|d         |         |d         | <   ni |d         | <   d
|v r8||d
         |d         z   v r%t          |d         |          d¦  «        |d         | <   | S )Nr6  Úe_rø   r
   r¼  Ú_er;  r£   r   r9  r:  r  )
Úanalyzeargs_re_1rÜ   rŒ  r×  rÛ   rb   Úascii_lowercaseÚdigitsr·   r{  )r1  r7  r;  Úorig_aÚ	a_is_exprrŠ  r‹  ÚatÚnar½   r�  s              r(   Ú	expr2namer0  ]  sù  € Ø€FÝ$×*Ò*¨1Ñ-Ô-Ð-€IØð Ý#5°eÑ#<Ô#<Ñ ˆ�yÝ˜q %¨¤-°Ñ?Ô?ˆØˆØð 	ð 	ˆAØ—’‘	”	ˆAØ�Ô.µ´Ñ>Ð>Ð>Ø�Ø�a‘ˆBˆBØˆbŒ6�SŠ=ˆ=Ø�c‘ˆBˆBà�d‘ˆBØˆØ�5˜”=Ð Ð  A¨¨v¬Ð$6Ð$6Ø�C‘ˆAð �5˜”=Ð Ð  A¨¨v¬Ð$6Ð$6àˆD€y€yØˆØ•#�a‘&”&‰j˜DÐ Ð Ø�A‘ˆAð •#�a‘&”&‰j˜DÐ Ð à•�A‘”‰JˆØð 	IØˆˆfŒ�aÑÐà�E˜&”MÐ!Ð!Ø˜˜vœÐ&Ð&Ø#(¨¤=°Ô#8��f”˜aÑ Ð à#%��f”˜aÑ Ø˜%ÐÐ F¨e°KÔ.@À5ÈÔCVÑ.VÐ$VÐ$VÝ*¨5°¬=¸Ô+;¸ZÑHÔHˆE�&ŒM˜!ÑØ€Hr'   c                 óH  — t          | ¦  «         t          | ¦  «        \  }}d| vrg | d<   g }| d         D ](}t          || |¦  «        }|                     |¦  «         Œ)|| d<   d| v rGt	          | d                              ¦   «         ¦  «        D ]\  }}|D ]}|| d         vri | d         |<   ŒŒ | d         D ]F}|d         |v r:d| vrg | d<   |d         | d         vr!| d                              |d         ¦  «         ŒGd| v r!| d         | d         vri | d         | d         <   | S )Nr;  r  r6  r5  rp   r9  r°   )rG  rŒ  r0  r/  ry  r:  )r7  rŠ  rø   r;  r1  r�  Úargs1r\  s           r(   rh  rh  ‚  s€  € Ý�ÑÔÐÝ)¨%Ñ0Ô0Ñ€M�1Ø�UÐÐØˆˆf‰Ø€DØ�6Œ]ð ð ˆÝ�a˜ Ñ%Ô%ˆØ�Š�A‰ŒˆˆØ€Eˆ&�MØ�%ÐÐÝ˜U 7œ^×1Ò1Ñ3Ô3Ñ4Ô4ð 	*ð 	*‰HˆAˆuØð *ð *�Ø˜E &œMÐ)Ð)Ø')�E˜&”M !Ñ$øð*ð �6Œ]ð 5ð 5ˆØˆVŒ9˜ÐÐØ %Ð'Ð'Ø%'��kÑ"Ø�Œy  kÔ 2Ð2Ð2Ø�kÔ"×)Ò)¨!¨F¬)Ñ4Ô4Ð4øØ�5ÐÐ˜U 8œ_°E¸&´MÐAÐAØ)+ˆˆfŒ�e˜H”oÑ&Ø€Lr'   z\A\(.+?,.+?\)\Zz\A[+-]?\d+(_(?P<name>\w+)|)\Zz*\A[+-]?[\d.]+[-\d+de.]*(_(?P<name>\w+)|)\Zz
\A\(.*\)\Zz\A(?P<name>\w+)\s*\(.*?\)\s*\Zc                 óþ   — t          | t          ¦  «        rddiS t          | t          ¦  «        rddiS t          | t          ¦  «        rddiS t          | t          ¦  «        r| S t          t          | ¦  «        ¦  «        ‚)Nr3   r6   r4   r½  )rã  r7   r9   r½  rÎ  ÚAssertionErrorr×   )r£   s    r(   Ú_ensure_exprdictr5  ¤  s„   € Ý�!•SÑÔð 'Ø˜IÐ&Ð&Ý�!•UÑÔð $Ø˜FÐ#Ð#Ý�!•WÑÔð 'Ø˜IÐ&Ð&Ý�!•TÑÔð ØˆÝ
�˜a™œÑ
!Ô
!Ð!r'   c                 óÐ  — | |v rt          ||          ¦  «        S |                      ¦   «         } t                               | ¦  «        rddiS t                               | ¦  «        }|rNd|                     ¦   «         v r4|                     d¦  «        rt          dt          | ¦  «        z  ¦  «         ddiS t                               | ¦  «        }|rNd|                     ¦   «         v r4|                     d¦  «        rt          dt          | ¦  «        z  ¦  «         ddiS dD ]V}d„ t          | |¬	¦  «                             d
|z   d
z   ¦  «        D ¦   «         D ]}||v rt          ||         ¦  «        c c S Œ ŒWi }t                               | ¦  «        rt          | dd…         ||¦  «        }n…t                               | ¦  «        }|ri|                     d¦  «        }t          |                     d¦  «        ||¦  «        }|rd|v r|d= |s%|d         |v rt          ||d                  ¦  «        S | d         dv rdddidœS |st          dt          | ¦  «        z  ¦  «         |S )Nr3   r½  rp   z:determineexprtype: selected kind types not supported (%s)
r6   r4   )ú+r¿  r   r„   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   r¡  r¢  s     r(   rw   z%determineexprtype.<locals>.<listcomp>Ã  s    € ÐZÐZÐZ �!—'’'‘)”)ÐZÐZÐZr'   r!  rl  r   r
   rq  r   r¬  r  r   )r3   rs  z>determineexprtype: could not determine expressions (%s) type.
)r5  r­   Údetermineexprtype_re_1rÜ   Údetermineexprtype_re_2r'  rÝ   r1   r×   Údetermineexprtype_re_3r-  r.  Údetermineexprtype_re_4r×  Údetermineexprtype_re_5)r  r6  Úrulesrû   Úopr¼  ré  Úrns           r(   r×  r×  °  sÀ  € Øˆt€|€|Ý  T¤
Ñ+Ô+Ð+Ø�:Š:‰<Œ<€DÝ×#Ò# DÑ)Ô)ð 'Ø˜IÐ&Ð&Ý×$Ò$ TÑ*Ô*€AØð 'Ø�Q—[’[‘]”]Ð"Ð" q§w¢w¨v¡¤Ð"ÝØMÕPTÐUYÑPZÔPZÑZñ\ô \ð \à˜IÐ&Ð&Ý×$Ò$ TÑ*Ô*€AØð $Ø�Q—[’[‘]”]Ð"Ð" q§w¢w¨v¡¤Ð"ÝØMÕPTÐUYÑPZÔPZÑZñ\ô \ð \à˜FÐ#Ð#Ø"ð 1ð 1ˆØZÐZ¥^°DÀÐ%CÑ%CÔ%C×%IÒ%IÈ#ÐPRÉ(ÐUXÉ.Ñ%YÔ%YÐZÑZÔZð 	1ð 	1ˆAØ�DˆyˆyÝ'¨¨Q¬Ñ0Ô0Ð0Ð0Ð0Ð0Ð0ð ð	1ð 	€AÝ×#Ò# DÑ)Ô)ð :Ý˜d 1 R 4œj¨$°Ñ6Ô6ˆˆå"×(Ò(¨Ñ.Ô.ˆØð 	:Ø—’˜‘”ˆBÝ! !§'¢'¨&¡/¤/°4¸Ñ?Ô?ˆAØð "�Z 1�_�_Ø�j�MØð :Ø�a”5˜E�>�>Ý+¨E°"°Q´%¬LÑ9Ô9Ð9ØˆA„w�%ÐÐØ'¸#¸s¸ÐDÐDÐDØð ^ÝØMÕQUÐVZÑQ[ÔQ[Ñ\ñ	^ô 	^ð 	^à€Hr'   rÃ   Fc                 ól  — t          | ¦  «         d}t          | t          ¦  «        rO| D ]J}|r1|d         dv r'|d         t          v rŒt          r|d         t          vrŒ5|t          |||¬¦  «        z   }ŒK|S d}d}d}| d         }|dk    rdS g }	d| v r| d         }d| v rt| d         }
| d         D ]=}t          || |	¦  «        }t          |
|         ¦  «        s|	                     |¦  «         Œ>| d         d	k    s|	rd
d 	                    |	¦  «        z  }d}d| v rIt          | d          
                    ¦   «         ¦  «        D ]!}|›|t          z   ›|›d| d         |         ›�}Œ"|                      dg ¦  «        d d …         }|d	k    rd|v r|                     d¦  «         |r'|›|t          z   ›dd 	                    |¦  «        ›d|›�}d}d| v rt          | d         |t          z   ¦  «        }d}d| v rt          | d         |t          z   ¦  «        }|dk    rd}d}d| v r0d| d         z  }| d         |	vr|	                     | d         ¦  «         t          | d         |t          z   |¬¦  «        }t!          | | d         |	|t          z   |¬¦  «        }
d}d| v r|sd| d         z  }d| v r\d}t          | d                              ¦   «         ¦  «        D ]-\  }}|›|t          z   ›d|›dd 	                    |¦  «        ›d�}Œ.||z   }|dk    r|dk    rd}|›|›|›d|›|›|›d|›|›|›|
›|›|›|›d |›d|›�}|S )!Nr	   r7  r¬  rp   r‚  r˜  r;  r6  r  z(%s)r,  r  rµ   r  Úcallbackúintent(z) r  r  r¦  r°   z result (%s)r5  rš  z! in %sr  zentry r<  r=  r›  rž  zend )rG  rã  ry  r"   r#   r†  r0  r	  r/  rä   rz  r   r„  rÏ  Úuse2fortranÚcommon2fortranÚvars2fortranr:  )r7  rV  rƒ  r]  rY  r©  rp   r;  Ú	blocktypeÚargslr6  r1  r  r�  Ú
intent_lstr  r  r°   r5  ÚmessÚentry_stmtsr†   s                         r(   r†  r†  Ý  sB  € õ �ÑÔÐØ
€CÝ�%�ÑÔð Øð 	Lð 	LˆAØð �Q�w”ZÐ#=Ð=Ð=Ø�V”9¥	Ð)Ð)ØÝð   6¤µ)Ð!;Ð!;ØØÕ(¨¨C¸lÐKÑKÔKÑKˆCˆCØˆ
Ø€FØ€DØ€DØ�g”€IØ�IÒÐØˆrØ€EØ�€€Ø�VŒ}ˆØ�€€Ø�VŒ}ˆØ�v”ð 	 ð 	 ˆAÝ˜!˜U EÑ*Ô*ˆAÝ$ T¨!¤WÑ-Ô-ð  Ø—’˜Q‘”�øØ�Œ>˜ZÒ'Ð'¨5Ð'Ø˜CŸHšH U™OœOÑ+ˆDØÐØ˜UÐ"Ð"Ý�eÐ.Ô/×4Ò4Ñ6Ô6Ñ7Ô7ð 	Rð 	RˆAà Ð  #­¡- -°°°°EÐ:LÔ4MÈaÔ4PÐ4Pð RÐÐà—’˜8 RÑ(Ô(¨¨¨Ô+€JØ�JÒÐ :°Ð#;Ð#;Ø×Ò˜*Ñ%Ô%Ð%Øð 8à,Ð,¨cµG©m¨m¨mØŸHšH ZÑ0Ô0Ð0Ð0°$°$ð8Ðð €CØ�€~€~Ý˜% œ,¨­g©Ñ6Ô6ˆØ€FØ�5ÐÐÝ  h¤°µw±Ñ?Ô?ˆØÐ"Ò"Ð"ØˆØ€FØ�5ÐÐØ %¨¤/Ñ1ˆØ�Œ? %Ð'Ð'Ø�LŠL˜˜xœÑ)Ô)Ð)Ý˜E &œM¨3µ©=À|ÐTÑTÔT€DÝØˆu�VŒ}˜e S­7¡]ÀðOñ Oô O€Dà€DØ�€€˜|€Ø˜5 œ=Ñ(ˆØ�%ÐÐØˆÝ˜˜wœ×-Ò-Ñ/Ô/Ñ0Ô0ð 	Ið 	I‰DˆAˆqà(˜[¨#µ©-¨-¨-¸¸¸¸C¿HºHÀQ¹K¼K¸K¸KðIˆKˆKà�kÑ!ˆØ�LÒ Ð  T¨^Ò%;Ð%;ØˆàˆˆVˆV�Y�Y�Y   d d¨F¨F¨F°D°DÐ:JÐ:JÈCÈCÐQUÐQUÐW]ÐW]Ð_cÐ_cÐehÐehÐehÐjsÐjsÐjsÐuyÐuyð{€Cà€Jr'   c           
      óî   — d}t          |                      ¦   «         ¦  «        D ]P}|dk    r#|›|›dd                     | |         ¦  «        ›�}Œ+|›|›d|›dd                     | |         ¦  «        ›�}ŒQ|S )Nr	   rÅ  zcommon r,  zcommon /z/ )ry  rz  rä   )r  rV  r]  r�  s       r(   rE  rE  (  sŠ   € Ø
€CÝ�&—+’+‘-”-Ñ Ô ð Lð LˆØ�Š=ˆ=Ø%( S¨#¨#¨#¨s¯xªx¸¸q¼	Ñ/BÔ/BÐ/BÐCˆCˆCà*-¨#¨s¨s¨s°A°A°A°s·x²xÀÀqÄ	Ñ7JÔ7JÐ7JÐKˆCˆCØ€Jr'   c                 ó2  — d}t          |                      ¦   «         ¦  «        D ]ò}|›|›d|›d�}| |         i k    r|r|d         dk    r
|d d…         }Œ1d| |         v r| |         d         rd|z  }d| |         v r‚| |         d         rtd}t          | |         d                              ¦   «         ¦  «        D ]D}|| |         d         |         k    r|›|›|›�}d}Œ%|›|›|›d	| |         d         |         ›�}d}ŒE|r|d         dk    r
|d d…         }Œó|S )
Nr	   zuse r,  r
   rÈ  z%s only:rË  rµ   z=>r?  )r  rV  r]  rû   r½   r�  s         r(   rD  rD  2  sa  € Ø
€CÝ�#—(’(‘*”*ÑÔð ð ˆØ"˜s C C C¨¨¨Ð+ˆØˆqŒ6�RŠ<ˆ<Øð �s˜2”w #’~�~Ø˜#˜2˜#”h�ØØ�S˜”VÐÐ  A¤ v¤ÐØ Ñ$ˆCØ�C˜”Fˆ?ˆ?˜s 1œv eœ}ˆ?ØˆAÝ˜#˜aœ& œ-×,Ò,Ñ.Ô.Ñ/Ô/ð ð �Ø˜˜Aœ˜uœ aÔ(Ò(Ð(Ø&) c¨1¨1¨a¨aÐ0�CØ�A�Aà*-¨#¨q¨q°!°!°!°S¸´V¸E´]À1Ô5EÐ5EÐF�CØ�A�AØð 	�3�r”7˜c’>�>Ø�c�r�c”(ˆCøØ€Jr'   c                 ó´   — | d         }g }|D ]J}	 t          ¦   «         d|z           } || ¦  «        r|                     |¦  «         Œ;# t          $ r Y ŒGw xY w|S )Nr  zisintent_%s)Úglobalsr/  r÷  )r^  r¨  r]  r  r±   s        r(   Útrue_intent_listrP  J  s…   € Ø
ˆhŒ-€CØ
€CØð #ð #ˆð	#Ý‘	”	˜-¨&Ñ0Ô1ˆAð ˆq�‰vŒvð #Ø—
’
˜6Ñ"Ô"Ð"øøõ	 ð 	ð 	ð 	ØˆDð	øøøð
 €Js   �AÁ
AÁAc           	      óÞ	  — t          | ¦  «         d}g }|D ]!}|| d         v r|                     |¦  «         Œ"d| v r;| d         D ]2}||v r||vr|                     |¦  «         Œ t          d|z  ¦  «         Œ3d| v r|                     | d         ¦  «         |s=t	          |                     ¦   «         ¦  «        D ]}||vr|                     |¦  «         Œ|D �]}d||         v rE||         d         D ]6}||v r0d||         v r&|||         d         v rt          d|›d|›d	�¦  «         Œ7d
| v rŠ|| d
         v r€t          ||         ¦  «        r	|›|›d|›�}|›|›d|›�}t          ||         ¦  «        r	|›|›d|›�}||v rd||         vrŒ´d}	| d         D ]}
||
d         k    r|
d         dk    rd}	 nŒ|	rŒà||vr#t          |¦  «         t          d|z  ¦  «         �Œ|| d         k    r#| d         dk    s|  
                    d¦  «        r�Œ6d||         vrRd||         v rd||         d         v r||v r	|›|›d|›�}�Œit          ||         ¦  «         t          d|z  ¦  «         �Œ’||         d         }|dk    rd||         v r|›d||         d         ›d�}i }d||         v r||         d         }nd||         v r||         d         }d |v r'|d          d!v r|›d"|d          ›d�}nJ|›d |d          ›�}n<d#|v r&|›d$|d#         ›�}d%|v r|›d&|d%         ›d�}nd'|z  }nd%|v r|›d(|d%         ›d�}d)}d||         v rUd*„ ||         d         D ¦   «         }|rd+|v rd,|v r|                     d,¦  «         |r|›d-d.                     |¦  «        ›�}d.}d/||         v r+|›|›d0d.                     ||         d/         ¦  «        ›d�}d.}d1||         v r6t          ||         ¦  «        }|r|›|›d2d.                     |¦  «        ›d�}d.}d3||         v r+|›|›d4d.                     ||         d3         ¦  «        ›d�}d.}d||         v r+|›|›d5d.                     ||         d         ¦  «        ›d�}d.}d6||         v r]||         d6         }||         d         d7v r4	 t          |¦  «        }d|j        ›d.|j        ›d�}n# t"          $ r Y nw xY w|›d8|›d6|›�}n|›d8|›�}|›|›|›�}�Œ|S )9z&
    TODO:
    public sub
    ...
    r	   r6  r~  z7vars2fortran: Confused?!: "%s" is not defined in vars.
r«  rx  z;vars2fortran: Warning: cross-dependence between variables "z" and "rº  r9  zintent(callback) z	external z	optional r3   r   r5  rp   r7  r  r   z/vars2fortran: No definition for argument "%s".
r°   rq  r  z-vars2fortran: No typespec for argument "%s".
rg   ru  r<  r=  rr  rs  r   )r   r§  z*(rW   z(len=r8  z,kind=z%s)z(kind=rµ   c                 ó   — g | ]}|d v¯|‘Œ	S ))r  r&   )ru   rô   s     r(   rw   z vars2fortran.<locals>.<listcomp>²  s,   € ð .ð .ð .˜!Ø Ð,Ð,ð Ø,Ð,Ð,r'   z
intent(in)zintent(out)rw  r,  r
  z
dimension(r  rC  rw  zcheck(zdepend(rt  )r½  r  z :: )rG  r/  rn   r  ry  rz  r	  Ú
isoptionalÚshowr1   r„  rÏ  rä   rP  rÛ  r4   ÚimagrÏ   )r7  r6  r;  rV  rƒ  r]  Únoutr1  r)  rê   r\  Úvardefrê  r½   rë  r¨  ró  s                    r(   rF  rF  X  sü  € õ �ÑÔÐØ
€CØ€DØð ð ˆØ��f”ÐÐØ�KŠK˜‰NŒNˆNøØ�uÐÐØ�|Ô$ð 	Tð 	TˆAØ�DˆyˆyØ˜D�=�=Ø—K’K ‘N”N�NøåØNÐQRÑRñTô Tð Tð Tà�UÐÐØ�Š�E˜*Ô%Ñ&Ô&Ð&Øð Ý�d—i’i‘k”kÑ"Ô"ð 	ð 	ˆAØ˜ˆ}ˆ}Ø—’˜A‘”�øØð g,ñ g,ˆØ�t˜A”wÐÐØ˜!”W˜XÔ&ð nð n�Ø˜�9�9 ¨T°!¬WÐ!4Ð!4¸¸dÀ1¼gÀhÔ>OÐ9OÐ9OÝ�GØghÐghÐghÐjkÐjkÐjkÐlñnô nð nøà˜%ÐÐ A¨¨{Ô);Ð$;Ð$;Ý   a¤Ñ)Ô)ð @Ø36°3¸¸¸¸Q¸QÐ?�Ø'* s¨C¨C¨C°°Ð3ˆCÝ˜$˜qœ'Ñ"Ô"ð 8Ø+.¨3°°°°Q°QÐ7�Ø�Dˆyˆy˜Z¨t°A¬wÐ6Ð6ØØˆDØ˜6”]ð ð �Ø˜˜&œ	’>�> a¨¤j°JÒ&>Ð&>Ø�DØ�EøØð ØØ�Dˆ=ˆ=Ý�‰JŒJˆJÝÐFÈÑJÑKÔKÐKÙØ��f”ÒÐØ�WŒ~ Ò+Ð+¨u¯yªy¸Ñ/BÔ/BÐ+ñ
 Ø˜T !œWÐ$Ð$Ø˜T !œWÐ$Ð$¨°t¸A´w¸zÔ7JÐ)JÐ)JØ˜�9�9Ø/2¨s°C°C°C¸¸Ð;�CÙÝ��a”‰MŒMˆMÝÐDÀqÑHÑIÔIÐIÙØ�a”˜Ô$ˆØ�VÒÐ 
¨d°1¬gÐ 5Ð 5Ø!'  ¨¨a¬°Ô)<Ð)<Ð)<Ð=ˆFØˆØ˜T !œWÐ$Ð$Ø˜A”w˜~Ô.ˆHˆHØ˜t AœwÐ&Ð&Ø˜A”w˜~Ô.ˆHØ�(ˆ?ˆ?Ø˜Œ} 
Ð*Ð*Ø&, f f¨h°s¬m¨m¨mÐ<��à$* F F¨H°S¬M¨MÐ:��à˜Ð Ð Ø(.¨¨°¸´°Ð@�Ø˜XÐ%Ð%Ø.4¨f¨f°h¸vÔ6FÐ6FÐ6FÐG�F�Fà" fÑ-�F�FØ˜8Ð#Ð#Ø*0¨&¨&°(¸6Ô2BÐ2BÐ2BÐC�ØˆØ˜˜aœÐ Ð ð.ð .˜t Aœw zÔ2ð .ñ .ô .ˆDàð + °Ð 4Ð 4¸È$Ð9NÐ9Nð —’˜MÑ*Ô*Ð*Øð Ø%+ V V¨S¯XªX°d©^¬^¨^Ð<�Ø�Ø˜$˜qœ'Ð!Ð!à�˜˜˜˜3Ÿ8š8 D¨¤G¨KÔ$8Ñ9Ô9Ð9Ð9ð;ˆFàˆAØ�t˜A”wÐÐÝ" 4¨¤7Ñ+Ô+ˆCØð GØ-3¨V°Q°Q°Q¸¿ºÀ¹¼¸¸ÐF�ØˆAØ�d˜1”gÐÐØ(.¨°°°°3·8²8¸DÀ¼GÀGÔ<LÑ3MÔ3MÐ3MÐ3MÐNˆFØˆAØ�t˜A”wÐÐà�˜˜˜˜3Ÿ8š8 D¨¤G¨HÔ$5Ñ6Ô6Ð6Ð6ð8ˆFàˆAØ�$�q”'ˆ>ˆ>Ø�Q”˜”ˆAØ�AŒw�zÔ"Ð&CÐCÐCðÝ˜Q™œ�A�AØ%&¤V V V¨Q¬V¨V¨VÐ4�A�AøÝ ð ð ð Ø�Dðøøøà&, f f¨a¨a¨a°°Ð3ˆFˆFà#) 6 6¨1¨1Ð-ˆFØ˜#˜s˜s F FÐ+ˆ‰Ø€Js   Ò"SÓ
SÓSc                 ó|  — t          dd¦  «         t          | t          ¦  «         t          dd¦  «         g at	          t
          d         ¦  «        }t          dd¦  «         t          D ]+}t          d|j        › d�d¦  «         t          ||¦  «        }Œ,t          dd¦  «         t          |¦  «        }t          |z   S )NzReading fortran codes...
r   zPost-processing...
z"Applying post-processing hooks...
z  rÃ   zPost-processing (stage 2)...
)
r1   râ   rA  r   rg  r   Úpost_processing_hooksÚ__name__ÚtraverserX  )ÚfilesÚpostlistÚhooks      r(   Úcrackfortranr_  ã  sÄ   € õ Ð(¨!Ñ,Ô,Ð,Ý�E�9Ñ%Ô%Ð%ÝÐ" AÑ&Ô&Ð&Ø€KÝ� 1œÑ&Ô&€HÝÐ1°1Ñ5Ô5Ð5Ý%ð ,ð ,ˆÝÐ&�T”]Ð&Ð&Ð&¨Ñ*Ô*Ð*Ý˜H dÑ+Ô+ˆˆÝÐ,¨aÑ0Ô0Ð0Ý˜(Ñ#Ô#€HÝ˜Ñ!Ð!r'   c                 óN   — t          | ¦  «        dz   }d}dt          z  }||z   |z   S )NrÃ   zE!    -*- f90 -*-
! Note: the context of this file is case sensitive.
z�
! This file was auto-generated with f2py (version:%s).
! See:
! https://web.archive.org/web/20140822061353/http://cens.ioc.ee/projects/f2py2e
)r†  Úf2py_version)r7  ÚpyfÚheaderÚfooters       r(   Úcrack2fortranre  ô  s?   € õ ˜5Ñ
!Ô
! DÑ
(€Cð€Fðõ ñ	€Fð
 �C‰<˜&Ñ Ð r'   c                 ó–   — t          | t          ¦  «        o4t          | ¦  «        dk    o!t          | d         t          t          f¦  «        S )Nr8  r   )rã  ÚtuplerW   r7   r·   )Úobjs    r(   Ú_is_visit_pairri    s@   € Ý�s�EÑ"Ô"ð /Ý�C‘”˜A’ð/å˜3˜qœ6¥C­ :Ñ.Ô.ð0r'   c                 ó8  — t          | ¦  «        r9| d         dk    r| S  || ||g|¢R i |¤Ž}|�t          |¦  «        sJ ‚|S | }| \  }} nd| f}d}t          | t          ¦  «        rLg }t          | ¦  «        D ]9\  }	}
t	          |	|
f|g|¢R ||gz   |dœ|¤Ž\  }}|�|                     |¦  «         Œ:ndt          | t          ¦  «        rMt          ¦   «         }|                      ¦   «         D ])\  }}
t	          ||
f|g|¢R ||gz   |dœ|¤Ž\  }}|�|||<   Œ*n| }|€|S ||fS )aí  Traverse f2py data structure with the following visit function:

    def visit(item, parents, result, *args, **kwargs):
        """

        parents is a list of key-"f2py data structure" pairs from which
        items are taken from.

        result is a f2py data structure that is filled with the
        return value of the visit function.

        item is 2-tuple (index, value) if parents[-1][1] is a list
        item is 2-tuple (key, value) if parents[-1][1] is a dict

        The return value of visit must be None, or of the same kind as
        item, that is, if parents[-1] is a list, the return value must
        be 2-tuple (new_index, new_value), or if parents[-1] is a
        dict, the return value must be 2-tuple (new_key, new_value).

        If new_index or new_value is None, the return value of visit
        is ignored, that is, it will not be added to the result.

        If the return value is None, the content of obj will be
        traversed, otherwise not.
        """
    r   rI  N)Úparentsr°   )ri  rã  ry  r  r[  r/  rÎ  r:  )rh  Úvisitrk  r°   r;  ÚkwargsÚ
new_resultÚparentÚ
result_keyrZ   rá  Ú	new_indexÚnew_itemÚkeyÚnew_keyÚ	new_values                   r(   r[  r[  	  sç  € õ8 �cÑÔð ØˆqŒ6�^Ò#Ð#àˆJØ�U˜3 ¨ÐA°$ÐAÐAÐA¸&ÐAÐAˆ
ØÐ!Ý! *Ñ-Ô-Ð-Ð-Ð-ØÐØˆØ‰ˆ
�C�Cà˜�ˆØˆ
å�#•tÑÔð Øˆ
Ý% c™NœNð 	,ð 	,‰LˆE�5Ý"*¨E°5¨>¸5ð #Kà;?ð#Kð #KØ3:¸f¸XÑ3EØ28ð#Kð #KàCIð#Kð #KÑˆI�xð Ð$Ø×!Ò! (Ñ+Ô+Ð+øð	,õ 
�C�Ñ	Ô	ð 	Ý‘V”Vˆ
ØŸ)š)™+œ+ð 	0ð 	0‰JˆC�Ý!)¨3°¨,¸ð "Jà:>ð"Jð "JØ29¸V¸HÑ2DØ17ð"Jð "JàBHð"Jð "JÑˆG�Yð Ð"Ø&/�
˜7Ñ#øð	0ð ˆ
àÐØÐØ�zÐ!Ð!r'   c                 ób  — |d         \  }}| \  }}d„ }	|dv r#|d         d         dk    sJ ‚|d         d         }
n+|dk    r#|d	         d         dk    sJ ‚|d	         d         }
nd
}
d
}|
�8|}|
                      ¦   «         D ] \  }}t          |¦  «        r |	||¦  «        }Œ!nd|dk    r^|d	         d         d         }
|}|
                      ¦   «         D ]3\  }}t          |¦  «        rt          j        d|z   dz   d|z   |¦  «        }Œ4|�'||k    rt	          d|› d|› d|› d|› d�	d¦  «         ||fS d
S )aü  Previously, Fortran character was incorrectly treated as
    character*1. This hook fixes the usage of the corresponding
    variables in `check`, `dimension`, `=`, and `callstatement`
    expressions.

    The usage of `char*` in `callprotoargument` expression can be left
    unchanged because C `character` is C typedef of `char`, although,
    new implementations should use `character*` in the corresponding
    expressions.

    See https://github.com/numpy/numpy/pull/19388 for more information.

    r
   c                 óv   — t          j        d| z   dz   | |¦  «        }t          j        d| z   dz   | |¦  «        }|S )Nz[*]\s*\br�  z\b\s*[\[]\s*0\s*[\]])rÈ   rË  )Úvarnamerá  s     r(   Ú	fix_usagez8character_backward_compatibility_hook.<locals>.fix_usage]  sF   € Ý”�{ WÑ,¨uÑ4°g¸uÑEÔEˆÝ”�u˜w‘Ð)@Ñ@Ø ñ'ô 'ˆàˆr'   )r
  rw  éýÿÿÿr   r6  r   rt  r¨   NÚcallstatementz
(?<![&])\br�  r©   zcharacter_bc_hook[r‚   z]: replaced `z` -> `z`
)r:  ÚischaracterrÈ   rË  r1   )Úitemrk  r°   r;  rm  Ú
parent_keyÚparent_valuers  rá  ry  Ú	vars_dictru  rx  Úvds                 r(   Ú%character_backward_compatibility_hookr‚  K  sá  € ð  ' rœ{Ñ€J�Ø�J€Cˆðð ð ð Ð+Ð+Ð+Ø�rŒ{˜1Œ~ Ò'Ð'Ð'Ð'Ø˜B”K ”Nˆ	ˆ	Ø	�ŠˆØ�rŒ{˜1Œ~ Ò'Ð'Ð'Ð'Ø˜B”K ”Nˆ	ˆ	àˆ	à€IØÐØˆ	Ø$Ÿ?š?Ñ,Ô,ð 	:ð 	:‰KˆG�RÝ˜2‰Œð :Ø%˜I g¨yÑ9Ô9�	øð	:ð 
�Ò	Ð	Ø˜B”K ”N 6Ô*ˆ	Øˆ	Ø$Ÿ?š?Ñ,Ô,ð 	Oð 	O‰KˆG�RÝ˜2‰Œð Oõ œFØ! GÑ+¨eÑ3°S¸7±]ÀIñOô O�	øð ÐØ˜ÒÐõ
 ð >¨ð >ð >°cð >ð >Ø"'ð>ð >Ø/8ð>ð >ð >Ø?@ñBô Bð Bà�YÐÐð Ðr'   Ú__main__r§  z-quietz-verboser8  z-fixz?Use option -f90 before -fix if Fortran 90 code is in fix form.
z-skipemptyendsz--ignore-containsz-f77z-f90rº   z-hz-showz-mr¿  zUnknown option %s
z	OSError: a    Warning: You have specified module name for non Fortran 77 code that
  should not need one (expect if you are scanning F90 code for non
  module blocks but then you should use flag -skipemptyends and also
  be sure that the files do not contain programs without program
  statement).
z Writing fortran code to file %s
rz  )r   )r   )r,  )rC  r+   )r	   N)Nr	   )r	   )NN)r   r   )rÃ   F)r	   F)ÐÚ__doc__r,   rb   rÌ   rÈ   r�   rÐ  rÀ  r–   r�   ÚImportErrorr	   r   Úauxfuncsr   Úversionra  r   r   r   r   r   r   r   r   r   r   r   rÇ   r    r   r   r   r   rC  r   r   rB  r$   r   r#   r%   r   r"   r!   r   r)   r1   Ú	_MAXCACHEr‰  r½   rm   r|   r²   rq   rz   r}   r€   r‡   rÉ   rÊ   rÜ   rÓ   r”  r«   r¬   rÔ   r®   r¡   r³   rT  râ   ÚbeforethisafterÚfortrantypesrT  rß  rQ  rR  Úgroupbegins77rÕ   Úgroupbegins90rÖ   Ú	groupendsrO  ÚendifsrN  ÚmoduleproceduresrZ  rS  rD  rE  rG  rH  rK  rL  rM  rF  rI  rJ  rV  rY  r]  rU  rW  rX  rP  ÚSr?  r@  rÚ   r2  r[  rA  r\  r-  ro  r‚  r  rŒ  r“  r”  r•  rØ  r¯  r…  r‡  r�  r–  r^  rä  rÒ  rÕ  rr  rs  r;  r(  r  r  rÓ  rà  r{  r|  r}  rE  rG  rJ  rR  rX  rg  rk  ri  rl  rŒ  rŽ  r“  r™  rœ  rž  r¤  rª  r°  rµ  rÄ  rÖ  rÞ  rà  rÜ  rj  r)  r0  rh  r9  r:  r;  r<  r=  r5  r×  r†  rE  rD  rP  rF  rY  r_  re  ri  r[  r‚  r/  rZ  r\  Úfuncsr±   Úf2Úf3ÚshowblocklistÚargvrô   rn   r×   r“   ræ   ÚOSErrorÚdetailr]  rb  r.   r&   r'   r(   ú<module>r˜     s�  ððKð KðX €
€
€
Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø €€€ðØÐÐÐÐøØð ð ð ØÐÐÐðøøøð Ð Ð Ð Ð Ð ð
 Ð Ð Ð Ø Ð Ð Ð Ð Ð àÔ"€ð €	Ø€Ø	€Ø
€Ø
€Ø€Ø€Ø€Ø€Ø€Ø
€ð €Ø€Ø€Ø€ØÐ Ø€Ø€
Ø€Ý˜2Ð€	Ø€	Ø€Ø€Ø€	ØÐ Ø€Ø€	Ø€Ø€ð#ð #ð #ðLð ð ð ð €„ØÐ Ø	!ð 3ð 3€AØ)¨6Ð2Ð˜ÑÐØ	ð 6ð 6€AØ)¨9Ð5Ð˜ÑÐØ€Ø€ð
ð 
ð 
€Að �e‘)€HˆQ�KØ€K��E‘	ÑÐðð ð ð,ð ,ð ,ðð ð ð1ð 1ð 1ðð ð ð ˆBŒJÐ/°´Ñ6Ô6Ô<€	Ø�”
Ð3°R´TÑ:Ô:ÔA€Ø�"”*Ð1°2´4Ñ8Ô8Ô?€Ø�"”*Ð1°2´4Ñ8Ô8Ô?€Ø�"”*Ð1°2´4Ñ8Ô8Ô>€ð3ð 3ð 3ð>ð ð ð0 '+°!ð bDð bDð bDð bDðJ€ð D€ØˆrŒzØ�r˜<¨°tÐ<Ñ<¸b¼dñDô DØEKðL€à"˜œ
 ?ØˆÐ4Ñ4°lÐEbÑ6bÐdhð6jñ $jØkmÔkoñqô qÐ ð �"”*˜_ð 0?ñ ?Ø@BÄñFô FØGNðO€à�B”J˜ð 24ñ  4Ø57´Tñ;ô ;Ø<CðDÐ ð (€Ø�”Ø�r˜=¨-¸Ð>Ñ>ÀÄñFô FØGNðO€àØGñHàñ€ð �”Ø�r˜=¨-¸Ð>Ñ>ÀÄñFô FØGNðO€ð7€	àˆRŒZØ�r˜9 i°Ð7Ñ7¸¼ñ?ô ?Ø@EðF€
ð
 €àˆrŒzØ�y &¨&°*Ð=Ñ=¸r¼tñEô EØFMðN€ð )Ð Ø#˜œØ�rÐ+Ð-=¸uÐEÑEÀrÄtñMô MàðÐ ð �"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�2”:˜oð 18ñ 8Ø9;¼ñ?ô ?Ø@KðLÐ à�"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�”
ØÐ4Ñ4°b´dñ<ô <Ø=EðF€à�”ØÐ6Ñ6¸¼ñ>ô >Ø?HðI€à�2”:ØÐ:Ñ:¸B¼DñBô BØCNðOÐ à�”
˜?ð .Qñ QØRTÔRVñXô XØYaðb€à�2”:ØÐ@Ñ@À"Ä$ñHô HØITðUÐ àˆbŒjØÐ0Ñ0°"´$ñ8ô 8Ø9?ð@€àˆbŒjØÐ0Ñ0°"´$ñ8ô 8Ø9?ð@€àˆrŒzØÐ2Ñ2°B´Dñ:ô :Ø;BðC€à�”ØÐ6Ñ6¸¼ñ>ô >Ø?HðI€à�”
ØÐ4Ñ4°b´dñ<ô <Ø=EðF€àˆRŒZØÐ.Ñ.°´ñ6ô 6Ø7<ð=€
à�"”*ØÐ6Ñ6¸¼ñ>ô >Ø?IðJ€à�”
ØÐ4Ñ4°b´dñ<ô <Ø=EðF€ð %˜"œ* _ð 8Mñ &Mð OQô  OSð  VXô  VZñ  OZñ[ô [ð ]oðoÐ à�2”:Ø9¸2¼4ñAô AØBMðNÐ ðð ð ð(ð ð ð �”ÐAÀ2Ä4ÑHÔH€ð\%ð \%ð \%ð \%ð~ð ð ð$ð ð ð ð&ð ð ð
ð ð ð ð> �”
ØKÈRÌTñSô S€à�”ð%Ø&(¤dñ,ô ,€ð �"”*ð fð  hjô  hlñmô m€à�"”*ð*Ø+-¬4ñ1ô 1€ð !�b”jØ@À"Ä$ñHô HÐ à�”
Ø;ñ=ô =€àˆrŒzØHñJô J€ð $˜œÐ$AÀ2Ä4ÑHÔHÐ ðð ð ðð ð ð ð  ð  ðnDð nDð nDðbð ð ð(ð (ð (ð4 ˆbŒjÐEÀrÄtÑLÔL€ØˆrŒzØIÈ2Ì4ñQô Q€àˆrŒzØ9¸2¼4ñAô A€à�”ð2à35´4ñ9ô 9€ð �"”*ð Gð  IKô  IMñNô N€ðð ð ð"ð "ð "ðJQð Qð Qðh8,ð 8,ð 8,ðxð ð ð ð6ð ð ð ðð ð ð ðð ð ð ðð ð ðð ð ðð ð ð ð<ð ð ð ð@]ð ]ð ]ð ]ð@ð ð ðD(ð (ð (ðV ð  ð  ð  ðF$ð $ð $ð&#ð #ð #ð #ð �"”*˜^¨R¬TÑ2Ô2€ðEð Eð EðP ˆrŒzÐ,¨b¬dÑ3Ô3€ðð ð ð,ð ð ð4ð 4ð 4ð("ð "ð "ðð ð ð ð ð ð ð& (*ð [ð [ð [ð [ð|(ð (ð (ð
 �"”*˜WÑ%Ô%Ô+€ðð ð ð wð wð wðr �2”:Ð1°2´4Ñ8Ô8Ð ð  ð "ð "ð "ð "ðJð ð ð4 $˜œÐ$6¸¼Ñ=Ô=Ð Ø#˜œÐ$DÀbÄdÑKÔKÐ Ø#˜œØ1°2´4ñ9ô 9Ð à#˜œ M°2´4Ñ8Ô8Ð Ø#˜œÐ$EÀrÄtÑLÔLÐ ð	"ð 	"ð 	"ð )+ð (ð (ð (ð (ðZHð Hð Hð HðVð ð ð ðð ð ð ð0ð ð ðBð Bð Bð BðP Ð ð"ð "ð "ð"!ð !ð !ð0ð 0ð 0ð "$¨Dð ?"ð ?"ð ?"ð ?"ðD9 ð 9 ð 9 öx × Ò ÐBÑ CÔ CÐ Cð ˆzÒÑØ€EØ€EØ	€AØ	
€BØ	
€BØ€MØŒX�a�b�bŒ\ð 1ñ 1ˆØ�Š7ˆ7ØØˆqŒT�SŠ[ˆ[ØˆAˆAØ�(Š]ˆ]ØˆEØˆGˆGØ�*Š_ˆ_ØˆGØˆEˆEØ�&Š[ˆ[Ýð [Ø�ØVÐXYñ[ô [ð [àˆMØ"ˆNˆNØÐ"Ò"Ð"ØˆMˆMØÐ%Ò%Ð%ØˆNˆNØ�&Š[ˆ[ØˆIØ"ˆNˆNØ�&Š[ˆ[ØˆIØ#ˆNØˆMˆMØ�$ŠYˆYØˆBˆBØ�'Š\ˆ\ØˆMˆMØ�$ŠYˆYØˆBˆBØˆqŒT�SŠ[ˆ[ØˆGÐ)¨D¨D°©G¬GÑ3Ñ4Ô4Ð4Ð4Øð 	ØˆBØˆKˆKØð 
	ØˆBØˆMˆMØð 	ð2Ø��Q‘”—’‘”�Ø—’˜Q‘”��øØð 2ð 2ð 2Ø�Ð0 FÐ0Ð0Ð0Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ñ1øøøøð2øøøð �LŠL˜‰OŒOˆO‰OÝð �ð ­}ð Øˆð ð ñ	ô 	ð 	ð ˆ|˜EÑ"Ô"€HÝð ØˆÐ3°d°d½;Ñ6GÔ6GÑGÈÑKÔKÐKØˆm˜HÑ%Ô%ˆØˆT•+˜sÑ#Ô#ð 	 qØ�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àð ØˆˆX‰ŒˆˆˆðS ÐðPð s6   ¤) ©3²3á.2b!â!c â&b;â;c åe(å(e,å/e,