+
    X°³j�= ã                   ó&  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
  ^ RIt^RIHtHt ^RI5 ]P"                  s^sRs^ s^sRÚsRsRs^ s^s^s. sRsRs^s / s!Rs"^s#Rs$^ s%\J        . /s&Rs'. s(RÛs). s*Rs+RÛs,. s-. s.. s/R t0RÜR lt1/ t2R	 F
  t3R
R/]2]3&   K  	  R F
  t3R
R/]2]3&   K  	  / t4/ t5. RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@N F  t6]6RA,           ]4]6&   ]6]5]6RA,           &   K  	  RB t7RC t8RD t9RE t:]Pv                  ! RF]Px                  4      Pz                  t>]Pv                  ! RG]Px                  4      Pz                  t?]Pv                  ! RH]Px                  4      Pz                  t@]Pv                  ! RI]Px                  4      P‚                  tB. RÝOtC. RÞOtDRJ tERK tF]G^3RL ltHRMtIRNtJ]Pv                  ! ]IR]J]JRO3,          ]Px                  4      R?3tK]Pv                  ! ]IR]JRP,           ]JRP,           RO3,          ]Px                  4      tL]Pv                  ! ]IRß,          ]Px                  4      RQ3tM]Pv                  ! ]IRà,          ]Px                  4      RQ3tNRRtO]Pv                  ! ]IR]O]ORO3,          ]Px                  4      RQ3tP]ORS,           tQ]Pv                  ! ]IR]Q]QRO3,          ]Px                  4      RQ3tRRTtS]Pv                  ! ]IR]S]SRO3,          ]Px                  4      RU3tTRVtU]Pv                  ! ]IRW]U]URO3,          ]Px                  4      RX3tVRYtW]Pv                  ! ]IR]W]WRO3,          ]Px                  4      RZ3tX]Pv                  ! ]IRá,          ]Px                  4      R[3tY]Pv                  ! ]IRâ,          ]Px                  4      R\3tZ]Pv                  ! ]IRã,          ]Px                  4      R]3t[]Pv                  ! ]IRä,          ]Px                  4      R^3t\]Pv                  ! ]IRå,          ]Px                  4      R_3t]]Pv                  ! ]IRæ,          ]Px                  4      R`3t^]Pv                  ! ]IRç,          ]Px                  4      Ra3t_]Pv                  ! ]IRè,          ]Px                  4      Rb3t`]Pv                  ! ]IRé,          ]Px                  4      Rc3ta]Pv                  ! ]IRê,          ]Px                  4      Rd3tb]Pv                  ! ]IRë,          ]Px                  4      Re3tc]Pv                  ! ]IRì,          ]Px                  4      Rf3td]Pv                  ! ]IRí,          ]Px                  4      Rg3te]Pv                  ! ]IRî,          ]Px                  4      Rh3tf]Pv                  ! ]IRï,          ]Px                  4      Ri3tg]Pv                  ! ]IRð,          ]Px                  4      Rj3th]Pv                  ! ]IRñ,          ]Px                  4      Rk3ti]Pv                  ! ]IRò,          ]Px                  4      Rl3tj]Pv                  ! ]IRó,          ]Px                  ]PÖ                  ,          4      Rm3tl]Pv                  ! Rn]PÖ                  4      Ro3tmRp tnRq to]Pv                  ! Rr]Px                  4      tp]Pv                  ! Rs]Px                  4      tq]Pv                  ! Rt]Px                  4      trRôRu ltsRv ttRõRw ltuRx tvRÜRy ltw]Pv                  ! Rz]Px                  4      tx]Pv                  ! R{]Px                  4      ty]Pv                  ! R|]Px                  4      tz]Pv                  ! R}]Px                  4      t{]Pv                  ! R~]Px                  4      t|]Pv                  ! R4      t}]Pv                  ! R€4      t~]Pv                  ! R�]Px                  4      tR‚ t€Rƒ t�R„ t‚R… tƒR† t„R‡ t…Rˆ t†]Pv                  ! R‰]Px                  4      t‡]Pv                  ! RŠ]Px                  4      tˆ]Pv                  ! R‹]Px                  4      t‰]Pv                  ! RŒ]Px                  4      tŠ]Pv                  ! R�]Px                  4      t‹RŽ tŒR� t�R� tŽR‘ t�RôR’ lt�RôR“ lt‘RôR” lt’RöR• lt“R– t”R— t•R÷R˜ lt–RøR™ lt—RùRš lt˜R› t™Rœ tšRúR� lt›Rž tœRûRŸ lt�]Pv                  ! R ]Px                  4      tžR¡ tŸ]Pv                  ! R¢]Px                  4      t R£ t¡R¤ t¢R¥ t£R¦ t¤R§ t¥RüR¨ lt¦/ 3R© lt§Rª t¨]Pv                  ! R«4      P‚                  t©R¬ tªR­ t«]Pv                  ! R®]Px                  4      t¬R÷R¯ lt­R° t®. 3R± lt¯R² t°]Pv                  ! R³]Px                  4      t±]Pv                  ! R´]Px                  4      t²]Pv                  ! Rµ]Px                  4      t³]Pv                  ! R¶]Px                  4      t´]Pv                  ! R·]Px                  4      tµR¸ t¶/ 3R¹ lt·RýR» lt¸RúR¼ lt¹RúR½ ltºR¾ t»RþR¿ lt¼. s½RÀ t¾RÁ t¿RÂ tÀ. R3RÃ ltÁRÄ tÂE\z        EP‡                  ]Â4       ]ÄRÅ8X  Edý   . tÅ. tÆ^tÇ^ tÈ^ tÉ^ tÊ]EP–                  RÆ,           EF3  tÌ]ÌR8X  d   K  ]Ì^ ,          RÇ8X  d   ^ tÇK  ]ÌRÈ8X  d   ^s^ sK,  ]ÌRÉ8X  d   ^s^ sK9  ]ÌRÊ8X  d   \&        '       d
   ]1! RË^ 4       ^sRsK[  ]ÌRÌ8X  d   ^sKf  ]ÌRÍ8X  d   ^sKq  ]ÌRÎ8X  d   ^sRsK~  ]ÌRÏ8X  d	   ^ sRÐs^sK�  ]ÌRÑ8X  d   ^tÈK˜  ]ÌRÒ8X  d   ^tÊK£  ]ÌRÓ8X  d   ^tÉK®  ]Ì^ ,          RÔ8X  d   ]Í! RÕ]Î! ]Ì4       Rº24       KÐ  ]È'       d   ^ tÈ]ÌsKÞ  ]É'       d   ^ tÉ]ÌsKì  ]Ç'       d.    ]Ï! ]Ì4      EP¡                  4        ]ÅEP‡                  ]Ì4       EK!  ]ÆEP‡                  ]Ì4       EK6  	  \&        '       g"   \2        '       d   \4        '       g
   ]1! R×^ 4       ]¾! ]Å4      tÓ\0        '       dP   ]1! RØ]Î! \0        4       Rº2^ 4       ]¿! ]Ó4      tÔ]Ï! \0        RÙ4      ;_uu_ 4       tÇ]ÇEP«                  ]Ô4       RRR4       ]Ê'       d   ]G! ]Ó4       R# R# R#   ] d    Rt EL+i ; i  ]Ñ d   tÒ]Í! RÖ]Ò: Rº24        RtÒAÒEK	  RtÒAÒii ; i  + '       g   i     LY; i)ÿa÷  
crackfortran --- read fortran (77,90) code and extract declaration information.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
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.


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)ÚPath)Ú__version__Úsymbolic)Ú*ÚfixÚ c                  óz   € ^s Rs^ s^sRsRsRs^ s^s^s	. s
^ s\        . /sRs^sRs. s/ s^sRsRs. s. s. s. sRsR# )é   r   r   Nú    éÿÿÿÿ)Ú	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© ó    ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-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                 óÒ   € \         '       g   R # \        '       gM   V'       d$   \        P                  P	                  \
        4       \        P                  P	                  V 4       R # R # ©N)r   r   ÚsysÚstdoutÚwriter   )ÚlineÚflags   &&r(   Úoutmessr1   î   s>   € ÷ ‹7Ùß‹5ßÜ�J‰J×ÑÔ-Ô.Ü�
‰
×Ñ˜Öñ r'   zabcdefghopqrstuvwxyz$_ÚtypespecÚrealÚijklmnÚintegerÚ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                 óp   € V \         9   d+   \        R V  R\         V ,           R24       \         V ,          # V # )zrmbadname1: Replacing "ú" with "ú".
)ÚbadnamesÚerrmess©Únames   &r(   Ú
rmbadname1rp     s6   € ØŒxÔÜÐ)¨$¨¨x¼À½Ð7GÀtÐLÔMÜ˜�~ÐØ€Kr'   c                 óB   € V  Uu. uF  p\        V4      NK  	  up# u upi r+   )rp   ©ÚnamesÚ_ms   & r(   Ú	rmbadnameru     s   € Ù%*Ó+¡U˜rŒJ�rŽN¡UÑ+Ð+ùÒ+ó   …c                 óp   € V \         9   d+   \        R V  R\         V ,           R24       \         V ,          # V # )zundo_rmbadname1: Replacing "rj   rk   )Úinvbadnamesrm   rn   s   &r(   Úundo_rmbadname1ry     s8   € ØŒ{ÔÜÐ.¨t¨f°H¼[ÈÕ=NÐ<OÈtÐTÔUÜ˜4Õ Ð Ø€Kr'   c                 óB   € V  Uu. uF  p\        V4      NK  	  up# u upi r+   )ry   rr   s   & r(   Úundo_rmbadnamer{     s   € Ù*/Ó0©% BŒO˜BÖ©%Ñ0Ð0ùÒ0rv   z-\*-\s*fortran\s*-\*-z-\*-\s*f90\s*-\*-z-\*-\s*fix\s*-\*-z[^c*]\s*[^\s\d\t]c                ó’  € \         e0   \         P                  ! V 4      P                  4       P                  pMñ\	        ^ \
        P                  P                  V 4      4      p\        V R4      ;_uu_ 4       pVP                  V4      pVP                  \        P                  4      '       d   RpMrVP                  \        P                  \        P                  34      '       d   RpM:VP                  \        P                  \        P                   34      '       d   RpMRpRRR4       \        WXR7      #   + '       g   i     L; i)a:  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”   -  sã   € ô Ò%Ü%×/Ò/°Ó9×>Ñ>Ó@×IÑI‰ô �RœŸ™Ÿ™¨Ó2Ó3ˆÜ�(˜D×!Ô! WØ—,‘,˜vÓ&ˆCØ�~‰~œfŸo™o×.Ò.Ø&‘Ø—‘¤×!4Ñ!4´f×6IÑ6IÐ J×KÒKØ#‘Ø—‘¤§¡´·±Ð >×?Ò?Ø#‘ð #�÷ "ô �¨Ô2Ð2÷ "×!ús   Á5A.D6Ã$7D6ÄD6Ä6E	c                ó@  € Rp\        V 4      P                  P                  4       \        9   d   Rp\	        V R4      ;_uu_ 4       pVP                  4       p^p\        V4      '       d   ^ pM\        V4      '       d   ^ pRpV^ 8”  d{   V'       ds   V^ ,          R8w  dS   VP                  4       '       d=   V^,          pV^ ,          R8w  d   \        VR,          4      '       g   VR	R
 R8X  d   RpMVP                  4       pK�  RRR4       V#   + '       g   i     T# ; i)z(Check if file is in free format Fortran.FTÚrÚ!Ú	ºNé   NÚ&Néþÿÿÿr   )
r   ÚsuffixÚlowerÚCOMMON_FREE_EXTENSIONSr”   ÚreadlineÚ_has_f_headerÚ_has_f90_headerÚstripÚ_free_f90_start)ÚfnameÚresultr’   r/   Úns   &    r(   Úis_free_formatr¨   L  sñ   € ð €FÜˆEƒ{×Ñ×ÑÓ!Ô%;Ô;ØˆÜ	�%˜×	Ô	 Ø×ÑÓ!ˆØˆÜ˜×ÒØ‰AÜ˜T×"Ò"ØˆAØˆFØ�!ŒeŸØ�A�w˜#Œ~ $§*¡*§,¢,Ø�Q•�Ø˜•G˜t”O¬¸¸R½×(AÒ(AÀdÈ2ÈbÀkÐUXÔFXØ!�FØØ×#Ñ#Ó%ŠD÷ 
ð €M÷ 
Ö	ð €Mús   ÁA
DÂ#DÂ4ADÄD	c           
     ó  € V'       g0   \         \        \        \        \        \
        \        \        \        3	pV . 8X  d   R# \        pRpRpRp\        P                  ! R\        P                  4      p\        P                  ! R4      p	\        P                  ! R4      p
\        P                  ! R4      pV'       d
   V! RR.4       RRrÇR.\        ^
4       Uu. uF  p\        V4      NK  	  up,           pRs\        P                  ! V \         R	7      p  VP#                  4       pT'       g   EMéTP-                  4       '       Ed   RsTP)                  4       s^s Tp^ sRs\.        P0                  P3                  \        4      ^,          p\5        \        4      P6                  P9                  4       \:        9   d&   \=        T4      '       g   \?        T4      '       g   ^sM(\A        \        4      '       d   \?        T4      '       g   Rs\        '       d   \B        sM\D        s\G        R\        : R\         \        '       d   RMR R24       TPI                  4       PK                  RR4      pTR8X  g   TR.,          R9  d   MTRR. pK  Rp\M        TR4      w  ppTR,          pTR,          P9                  4       R8X  d'   \M        TR/,           TR,          ,           R4      w  ppR
pTPO                  4       R8X  d   \        R8X  d   MRpEK÷  \        R8X  Ed^   T^ ,          R09   d7   TR,          P9                  4       R8X  d   RTR,          ,           pR
pM,RpRpEKG  \        '       d   \Q        T4      ^H8”  d
   TR,          pT^ ,          T9  d   \'        RT: 24      hT'       d   \        '       d5   \Q        T4      ^8”  d%   T^,          R8X  g   TTR ,          ,           pRpRpEMÙT	PS                  T4      pT'       d   TPU                  R!4      pT'       d-   YzPS                  T4      PU                  R!4      ,           pRpRpEM{RTR,          ,           pT'       d   TP9                  4       pMTpTpTpEMJ\        R8X  Ed$   T'       g€   XR"8X  dy   TPS                  T4      '       db   TR#,           p TP#                  4       pT'       g   \W        R$4       M#TT,           pTPS                  T4      '       g   KG   TPY                  4       pT	PS                  T4      pT'       d   TPU                  R!4      pT'       d,   YzPS                  T4      PU                  R!4      ,           pRpRpM:T'       d-   T'       d   \[        T4      '       g   TP9                  4       MTpMTpTpTpTRJpM\]        R%\_        \        4       24      hR&TPa                  4       ^,
           R'\         R(T R)2sTPS                  T4      pT'       Ed   TPU                  R*4      p\.        P0                  Pc                  T4      '       d   \e        TT^ R+7       MÒ\.        P0                  Pg                  \        4      .\h        ,           p^ pT FZ  p\.        P0                  Pk                  TT4      p\.        P0                  Pc                  T4      '       g   KJ  ^p\e        TT^ R+7        M	  T'       g1   \G        R,T: R'\.        Pl                  Pk                  T4       R-24       MT! T4       TpEK  T'       d   TP9                  4       pMTpTpR&TPa                  4       ^,
           R'\         R(T R)2sTPS                  T4      pT'       Ed   TPU                  R*4      p\.        P0                  Pc                  T4      '       d   \e        TT^ R+7       MÒ\.        P0                  Pg                  \        4      .\h        ,           p^ pT FZ  p\.        P0                  Pk                  TT4      p\.        P0                  Pc                  T4      '       g   KJ  ^p\e        TT^ R+7        M	  T'       g1   \G        R,T: R'\.        Pl                  Pk                  T4       R-24       MT! T4       RsTPo                  4        T'       d   T! R^4       R# Xw	  s ssssssssR# u upi   \$         d7   p\'        RTP)                  4        RTP+                  4        RT R24      hRp?ii ; i)1zá
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”   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   Úfreez	Reading file z	 (format:z,strictú)
ô   Â z
r—   r™   z!f2pyºrš   NN:r	   rš   NÚf2pyz     :NéH   Nzvreadfortrancode: Found non-(space,digit) char in the first column.
	Are you sure that this code is in fix form?
	line=ºé   NNr/   ú.pyfÚ
z.Unexpected end of file when reading multiline
z4Flag sourcecodeform must be either 'fix' or 'free': zLine #z in z:"z"
	ro   )Ú
dowithlineÚistopz-readfortrancode: could not find include file ú. Ignoring.
r   r
   )r   Úcr—   ÚCr«   )8r   r   r    r   r   Úbeginpatternr   r   r   ÚreÚcompileÚIÚrangeÚstrÚ	fileinputÚ	FileInputr”   r    ÚUnicodeDecodeErrorÚ	Exceptionr�   ÚlinenoÚisfirstlinerƒ   r„   Úsplitextr   r�   rž   ÚCOMMON_FIXED_EXTENSIONSr¢   Ú_has_fix_headerr¨   Úbeginpattern77Úbeginpattern90r1   Ú
expandtabsÚreplaceÚsplit_by_unquotedr£   rV   ÚmatchÚgrouprm   ÚrstripÚiscstyledirectiveÚ
ValueErrorÚreprÚ
filelinenoÚisfileÚreadfortrancodeÚdirnamer$   ÚjoinÚpathsepÚclose)Úffiler¶   r·   ÚsaveglobalsÚlocaldolowercaseÚcontÚ	finallineÚllÚincludelineÚcont1Úcont2Ú
mline_markÚl1rt   ÚspacedigitsÚfinÚlÚmsgÚextÚis_f2py_directiveÚrlÚ_Úorigfinalliner–   ÚlcÚmÚfnÚinclude_dirsÚ	foundfileÚinc_dirÚfn1s   &&&                            r(   r×   r×   f  s•  € ÷ Ü!Ô#3´_ÄnÔV_Üœ%¤¬+ð6ˆà�„{ÙÜ"Ðð €DØ€IØ	€BÜ—*’*Ø5´r·t±tó=€Kä�JŠJÐ,Ó-€EÜ�JŠJÐ-Ó.€EÜ—’˜IÓ&€JßÙ�2�rÔØ�ˆØ�%¬U°2¬YÓ7©Y rœ3˜rž7©YÑ7Õ7€KØÐÜ
×
Ò
˜e¬hÔ
7€CØ
ð	Ø—‘“ˆA÷ ÙØ�?‰?×ÓØ!ÐØ!Ÿl™l›nˆOØˆKØˆBØˆIØ"ˆNÜ—'‘'×"Ñ"¤?Ó3°AÕ6ˆCÜ”OÓ$×+Ñ+×1Ñ1Ó3Ô7NÔNÜ(¨×+Ò+¬¸q×/AÒ/AØ‘	Ü¤×0Ò0¼È×9KÒ9KØ!'�ß‹yÜ-‘ä-�Ü�o¤oÑ%8ð 9Ü-Ð.¿I»I©yÈ2Ð.NÈcðSô Tð �L‰L‹N×"Ñ" 6¨3Ó/ˆà�r”'Ø��u˜HÔ$ØØ�#�2�ŠAà!Ðä# A sÓ+‰ˆˆBØ	ˆS�ˆØˆb�6�<‰<‹>˜WÔ$Ü$ Q¨¥[°2°bµ6Õ%9¸3Ó?‰DˆAˆqØ $ÐØ�7‰7‹9˜Œ?Ü Ô'ð
 ð �ÚÜ˜UÕ"Ø��tÐ0Ô0Ø�S•6—<‘<“> VÔ+Ø ! B¥%��AØ(,Ñ%à �DØ(-Ð%Úß“Ü�q“6˜B”;Ø˜#��AØ��t˜;Ô&Üð !EàEFÁEð!Kó Lð L÷ ŸI›I¬C°«F°Q¬J¸qÀ½tÀs¼{à˜!˜B�%•Z�Ø�	Ø "’à—K‘K “N�ßØŸ™ ›�AßØŸk™k¨!›n×2Ñ2°6Ó:Õ:�BØ "�IØ$&’Mð   ! B¥%��Aç'Ø$&§H¡H£J™	à$&˜	Ø$&�MØ’Bä˜vÕ%ß˜C 6œM¨j×.>Ñ.>¸q×.AÒ.AØ˜•H�ØØŸ™›�BßÜØMôOàØ˜B��AØ!×'Ñ'¨×+Ô+ØØ—H‘H“J�Ø—‘˜A“ˆAßØ—G‘G˜F“O�ßØŸ+™+ a›.×.Ñ.¨vÓ6Õ6�Ø�	Ø "‘ç#÷ 4EÔIZÐ[]×I^ÒI^ §¡¤
Ðeg‘Ià "�IØ "�Ø�Ø˜T�M‰DäØFÄtÌNÓG[ÐF\Ð]ó_ð _à$ S§^¡^Ó%5¸Õ%9Ð$:ð ;"Ü"1Ð!2°"°R°D¸ð?Ðà×Ñ˜mÓ,ˆßˆ1Ø—‘˜“ˆBÜ�w‰w�~‰~˜b×!Ò!Ü ¨zÀÖCô —G‘G—O‘O¤OÓ4ð 6Ü8Eõ F�à�	Û+�GÜŸ'™'Ÿ,™, w°Ó3�CÜ—w‘w—~‘~ c×*Ô*Ø$%˜	Ü'¨¸
È!ÕLÙñ  ,÷ !ÜÐKÈBÉ6ð R"Ü"$§*¡*§/¡/°,Ó"?Ð!@ÀðOô Pøñ �yÔ!Ø‹çØ—H‘H“J‰	àˆ	Ø€MØ §¡Ó 0°1Õ 4Ð5°T¼/Ð9JÈ"ÈRÈDÐPUÐVÐØ×Ñ˜-Ó(€Aß€qØ�W‰W�V‹_ˆÜ�7‰7�>‰>˜"×ÒÜ˜B¨:¸QÖ?äŸG™GŸO™O¬OÓ<Ð=ÄÕMˆLØˆIÛ'�Ü—g‘g—l‘l 7¨BÓ/�Ü—7‘7—>‘> #×&Ô&Ø !�IÜ# C°JÀaÕHÙñ (÷ ÜÐGÈÁvð NÜ Ÿj™jŸo™o¨lÓ;Ð<¸MðKô Løñ 	�9ÔØÐØ‡I�I„KßÙ�2�qÖð 9Dñ	6ˆÐ% ¸È	Ø˜% ª+ùòA 8øô "ô 	ÜØ+¨C¯L©L«NÐ+;¸1¸S¿Z¹Z»\¸NØ   ð &ðóð ûð	ús   Ãb=Äc ãdã1c>ã>d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ú.*z|static|automatic|undefinedÚbeginzprogram|block\s*datazM|module(?!\s*procedure)|python\s*module|(abstract|)\s*interface|type(?!\s*\()z\end|endprogram|endblockdata|endmodule|endpythonmodule|endinterface|endsubroutine|endfunctionÚendzDend\s*(if|do|where|select|while|forall|associate|critical|enum|team)z[\w]*?Úendifzmodule\s*procedureÚmoduleprocedureÚimplicitÚ	dimensionÚexternalÚoptionalÚrequiredÚpublicÚprivateÚ	intrinsicÚintentÚ	parameterÚdataÚcallÚentryÚcallfunÚcommonÚuseÚcontainsÚformatÚf2pyenhancementsz2\s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\ZÚ	multilinec           	     ó‚  € \        R4      \        V4      ,          '       d   Q R4       h\        P                  ! RP                  R\        P                  ! V4       R2R\        P                  ! V4       R2RRR	7      4      pVP                  V 4      pV'       d#   VP                  4       pVR
,          VR,          3# V R3# )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("([^"\\]|(\\.))*"))Ú
not_quotedr9   Úsingle_quotedÚdouble_quotedÚbeforeÚafterr   )Úsetr¼   r½   r  ÚescaperÏ   Ú	groupdict)r/   Ú
charactersr–   rñ   Úds   &&   r(   rÎ   rÎ   ˜  s±   € ô �E“
œS ›_×,Ô,ÐPÐ/PÓPÐ-Ü
�
Š
ð	!ß!'¡ØœrŸyšy¨Ó4Ð5°QÐ7Ø”R—Y’Y˜zÓ*Ð+¨1Ð-Ø0Ø0ð	 "(ó "2ó	3€Að 	
�‰�‹€AßØ�K‰K‹MˆØ�(•˜Q˜w�ZÐ(Ð(Ø�"ˆ:Ðr'   c                 óÂ   € . p\        V 4      P                  R 4       F/  pR F  pVP                  VR4      pK  	  VP                  V4       K1  	  RP	                  V4      # )ú@,@z(),rî   Ú,)ÚmarkoutercommaÚsplitrÍ   ÚappendrÙ   )ÚargslineÚar§   r–   s   &   r(   Ú_simplifyargsr%  ¬  sV   € Ø
€AÜ˜HÓ%×+Ñ+¨EÖ2ˆÛˆAØ—	‘	˜!˜SÓ!ŠAñ à	�‰�Žñ 3ð �8‰8�A‹;Ðr'   z"\s*(?P<result>\b[a-z]+\w*\b)\s*=.*z \s*(?P<bind>\b[a-z]+\w*\b)\s*=.*zH\s*bind\(\s*(?P<lang>[^,]+)\s*,\s*name\s*=\s*"(?P<lang_name>[^"]+)"\s*\)c                ó®  € \        V R4      w  r#V'       d¡   \        ^ ,          P                  V 4      '       g   \        ^ ,          P                  V 4      '       g]   V^ 8X  g   Q \	        V4      4       h\        V R4      w  rV'       d#   \        W4       \        VR,          R4      w  rK*  \        W4       R# V^ 8  dq   ^ s\        R/s\        / /s\        . /s	. \        \        ,          R&   / \        \        ,          R&   R\        \        ,          R&   R\        \        ,          R&   R)s
R)sR# V^ 8”  Edò   ^ p\        '       d   \        \        8X  d   ^p\        V8”  d©   \        R	\        : R
\        : R24       \        R4       \        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R),          R&   \        \         \        ^,
          sK³  \        '       Ed   \        \        8X  Ed   \        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R),          R&   \        \         \        ^,
          s\        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R),          R&   \        \         \        ^,
          sR)s
R# V R8X  d   R# ^ p\        \         \"        \$        \&        \(        \*        \,        \.        \0        \2        \4        \6        \8        \:        \<        \>        \@        \B        \D        \F        \H        \J        \        \        \L        3 F.  pV^ ,          P                  V 4      pV'       d    MV^,           pK0  	  X'       Egí   \N        p	^ \        u;8:  d   \        8:  d    R#  R\        \        ,          9   Ed_   \        \        ,          R,           EFA  p
V
\P        9   d   \P        V
,          p
R\        \        ,          9   d    V
\        \        ,          R,          9   d   KQ  \R        P                  ! RV
 R2\U        V 4      \R        PV                  4      pV'       g   KŽ  V	P                  VPY                  R4      4      p\[        VPY                  R4      4      pV'       d   RV
 RV RVPY                  R4       R2p M	RV
 RV R2p \\        ^ ,          P                  V 4      pV'       g   \        R\	        V 4       R24        R# \_        VRV 4        R# 	  \`        ^8”  g5   \`        ^8X  d?   \b        Pe                  4       Pg                  R4      '       d   Rs4\        R\         R24       R# X^,          R8X  Edz   ^ \        u;8:  d   \        8  d"   M M\        ^,
          s\        \        8:  d   R# \        ^ 8:  d   \k        R\         R 24      h\8        ^ ,          P                  V 4      pV'       d^   VPY                  R!4      \        \        ,          8X  g9   \k        R"VPY                  R!4      : R#\        \        ,          : R$\l         24      h\        \        8X  d   R)s\        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R),          R&   \        \         \        ^,
          s\n        '       g   ^s8R# R# V^,          R%8X  dC   ^ \        u;8:  d   \        8:  d   M M\        ^,           sR# ^ s9\_        W‡^,          V 4       ^ s8R# V^,          R&8X  d   R# V^,          R'8X  d   \_        W‡^,          V 4       R# V^,          R(8X  d2   \t        '       d   R# ^ \        u;8:  d   \        8:  d    R#  \        sR# ^ \        u;8:  d   \        8:  d    R#  \_        W‡^,          V 4       R# )*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	   NNNr   ÚbodyÚvarsÚblockro   zcrackline: groupcounter=z groupname=rµ   zYcrackline: Mismatch of blocks encountered. Trying to fix it by assuming "end" statement.
Ú	externalsÚ
interfacedz(?P<before>[^"]*)\bz \b\s*@\(@(?P<args>[^@]*)@\)@.*\Zr  Úargszcallfun Ú(z
) result (r¦   Ú)z4crackline: could not resolve function call for line=ú.
r	  r´   z
crackline:z: No pattern for line
rù   zcrackline: groupcounter(=z#) is nonpositive. Check the blocks.Úthiszcrackline: End group z* does not match with previous Begin group z
	rø   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_1rx   r¼   Úmarkouterparenr¾   rÐ   r%  ÚcallfunpatternÚanalyzeliner   r    rž   Úendswithr%   rÄ   r   r   r   r   r   )r/   Úresetrî   Úhas_semicolonÚsemicolon_lineÚflr0   Úpatrñ   Úre_1ro   Úm1Úm2r$  s   &&            r(   r5  r5  ¹  sJ  € ô )¨¨sÓ3Ñ€AßÔ5°aÕ8×>Ñ>¸t×DÒDÜ/°Õ2×8Ñ8¸×>Ò>à˜ŒzÐ&œ4 ›;Ó&ˆzä0°°sÓ;ÑˆßÜ�dÔ"Ü#4°^ÀBÕ5GÈÓ#MÑ ˆD‘.Ü�$ÔÙØˆq„yØˆÜ! 2Ð&ˆ	Ü" BÐ'ˆ
Ü! 2Ð&ˆ	Ø+-Œ
”<Õ  Ñ(Ø+-Œ
”<Õ  Ñ(Ø,.Œ
”<Õ  Ñ)Ø+-Œ
”<Õ  Ñ(ØˆØˆÙØˆq…yØˆß‹=œ\¬\Ô9ØˆBÜ˜RÔÜÐ.¬|Ñ.>¸kÌ)ÉÐVXÐYÔZÜØlônä”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ŠLßŒ=œ\¬\Õ9Ü”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ˆLÜ”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ˆLØˆLÙØˆr„zÙØ€DÜ ¤/´=Ä/ÜÜ ¤+¬}¼nÜ ÜœjÜÜœoÔ/@Ü¤¬}ÜœZ¬ÜÜ'Ü Ü&óˆð ��F�L‰L˜ÓˆßÙØ�a�xŠñ#÷$ ˆ1ÜˆØ”Ö/¤<Õ/Ùð 0àœ*¤\Õ2Õ2Ü"¤<Õ0°×=Ñ=�Øœ;Ô&Ü& tÕ,�DØ¤:¬lÕ#;Ô;ÀÌ
ÔS_ÕH`ÐamÕHnÔ@nÙÜ—X’XØ*¨4¨&Ð0PÐQÜ" 4Ó(¬"¯$©$ó0�÷ ‘2ØŸ™ B§H¡H¨XÓ$6Ó7�BÜ% b§h¡h¨vÓ&6Ó7�AßØ!)¨$¨¨q°°°:¸b¿h¹hÀxÓ>PÐ=QÐQRÐS™à!)¨$¨¨q°°°1Ð5˜Ü& qÕ)×/Ñ/°Ó5�AßÜØRÔSWÐX\ÓS]ÐR^Ð^aÐbôdâÜ  9¨dÔ3Úñ+ >ô, �QŒ;œ7 aœ<¬O×,AÑ,AÓ,C×,LÑ,LÈV×,TÒ,TØ#ÐÜ�j¤ Ð.EÐFÔGÙØ	ˆQ��5�Ø”Ö.¤,×.Ü'¨!Õ+ˆLÜ¤,Ô.ÙÜ˜1ÔÜÐ7¼°~ð F0ð 0ó 1ð 1ä˜!�_×"Ñ" 4Ó(ˆß˜Ÿ™ &Ó)¬Y´|Õ-DÔDÜÐ3°B·H±H¸VÓ4DÑ3Gð HHä(¬Õ6Ñ9¸Ô>NÐ=OðQó Rð Rô œlÔ*Ø ˆOÜ”, Õ"Õ#×*Ñ*¬:´lÕ+CÔDÜ2;¼LÕ2IŒ	”, Õ"Õ# BÕ'¨Ñ/Ü”lÐ#Ü# aÕ'ˆß‹}ØŠKñ à	ˆQ��7Ô	Ø”Ö/¤<×/Ü'¨!Õ+ˆLÙØˆÜ�A˜1•v˜tÔ$ØŠØ	ˆQ��7Ô	ÙØ	ˆQ�Ð$Ô	$Ü�A˜1•v˜tÖ$Ø	ˆQ��:Ô	ß‹>ÙØ”Ö/¤<Õ/Ùð 0ä&Šà”Ö/¤<Õ/Ùð 0ä�A˜1•v˜tÖ$r'   c                 óº   € R p^ pV  FP  pVR8X  d   V^,           pV^8X  d   VR,           pK%  M"VR8X  d   V^,
          pV^ 8X  d   VR,           pKH  W,           pKR  	  V# )r   r/  ú@(@r0  ú@)@r&   )r/   ré   Úfr¹   s   &   r(   rP  rP  T  sq   € Ø
€AØ	€AÛˆØ�Œ8Ø�A•ˆAØ�AŒvØ˜•I�Ùð ð �#ŒXØ�A•ˆAØ�AŒvØ˜•I�ÙØ�EŠñ ð €Hr'   c                 ó¬  € R p^ p\        WR,           4      w  rEW$,          pV'       d’   V^ ,          V8X  d    V^ 8X  d   VRV,           R,           ,          pM>W%^ ,          ,          pV^ ,          R8X  d   V^,          pMV^ ,          R8X  d
   V^,          p\        VR,          VR,           4      w  rEW$,          pK™  V'       d   Q \        W0V34      4       hV# )r   ú()Ú@r/  r0  r(  )rÎ   rÔ   )r/   Úcommaré   r_  r  r  s   &&    r(   r   r   f  s¶   € Ø
€AØ	€AÜ% d°D­LÓ9�M€FØ…K€Aß
Ø�!�H˜Ô A¨¤FØ��u•˜sÕ"Õ"‰Aà�q•�MˆAØ�Q�x˜3ŒØ�Q•‘Ø�q•˜S”Ø�Q•�Ü)¨%°­)°U¸Tµ\ÓB‰ˆØ	�ŠßÐ$”$˜ �|Ó$Ó$ˆ5Ø€Hr'   c                 óJ   € V P                  R R4      P                  RR4      pV# )r]  r/  r^  r0  )rÍ   )r/   r–   s   & r(   Úunmarkouterparenre  y  s$   € Ø�‰�U˜CÓ ×(Ñ(¨°Ó4€AØ€Hr'   c                 ó4  € V '       g   / p V'       g   V # WJ d   V # \        VP                  4       4       Fß  pVR 8X  d   V'       g   W09  d   W,          W&   K$  K&  VR8X  d   W,           F  p\        WV4      p K  	  KJ  VR8X  d   \        WV,          V4      p Kf  VR8X  d   \	        WV,          V4      p K‚  VR9   d   V'       g   W09  d   W,          W&   K£  K¥  VR8X  d   K®  VR	9   d   \        RV R24       KÆ  \        R\        V4      ,           4      h	  V # )
r2   ÚattrspecÚkindselectorÚcharselectorÚnotezappenddecl: "z" not implemented.
z-appenddecl: Unknown variable definition key: )Ú=Útypename)r  Úcheckrý   rÿ   r   Údepend)ÚlistÚkeysÚsetattrspecÚsetkindselectorÚsetcharselectorrm   rÄ   rÀ   )ÚdeclÚdecl2ÚforceÚkré   s   &&&  r(   Ú
appenddeclrx  ~  s  € ßØˆßØˆØƒ}ØˆÜ�%—*‘*“,ÖˆØ�
Œ?ß˜œØ�(�“ñ &à�*Œ_Ø—X�X�Ü" 4¨EÓ2’ó à�.Ô Ü" 4¨q­°5Ó9ŠDØ�.Ô Ü" 4¨q­°5Ó9ŠDØÐ#Ô#ß˜œØ�(�“ñ &à�&Œ[ÙØð )ô )ä�m A 3Ð&:Ð;Ö<äÐKÜ ›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                 ót   € V P                  R . 4       F!  p\        P                  V4      '       g   K    ^# 	  ^ # )rg  )ÚgetÚ_intentcallbackpatternrÏ   )Úvdeclr$  s   & r(   Ú_is_intent_callbackr}  ²  s0   € Ø�Y‰Y�z 2Ö&ˆÜ!×'Ñ'¨×*Ô*Úñ 'ñ r'   c                 óz  € R P                  V P                  4       4      p \        P                  V 4      p\	        W4       V'       dl   VP                  R4      pV'       d/   VP                  R4       Uu. uF  q3P                  4       NK  	  upM. pVP                  R4      W!P                  R4      3# R. R3# u upi )r   Ú
attributesr  ro   ÚparamsN)rÙ   r!  ÚtypedefpatternrÏ   ÚprintrÐ   rž   )r/   rZ  Úattrsr$  s   &   r(   Ú_resolvetypedefpatternr„  ¹  s“   € Ø�7‰7�4—:‘:“<Ó €DÜ	×	Ñ	˜dÓ	#€BÜ	ˆ$„Oß	Ø—‘˜Ó&ˆß9> E§K¡K°Ô$4Ó5Ñ$4˜q—‘–Ñ$4Ò5ÀBˆØ�x‰x˜Ó ¯©°Ó(:Ð:Ð:Ø��Tˆ>Ðùò 6s   Á4B8c                 óþ   € \         P                  ! R \         P                  4      pVP                  V 4      pRpV'       d<   VP	                  ^ 4      pV RVP                  4        WP                  4       R ,           p W3# )zObind\(\s*(?P<lang>[^,]+)(?:\s*,\s*name\s*=\s*["\'](?P<name>[^"\']+)["\']\s*)?\)N)r¼   r½   r¾   ÚsearchrÐ   Ústartrù   )r/   ÚpatternrÏ   Úbind_statements   &   r(   Úparse_name_for_bindrŠ  Ã  sh   € Ü�jŠjÐkÔmo×mqÑmqÓr€GØ�N‰N˜4Ó €EØ€NßØŸ™ Q›ˆà�N�U—[‘[“]Ð# d¯9©9«;¨<Ð&8Õ8ˆØÐÐr'   c                 ó  € \        V 4      w  r\        V 4      p \        P                  V 4      pV'       d4   VP	                  R 4      VP	                  R4      VP	                  R4      V3# \
        P                  V 4      pV'       d<   VP	                  R4      R,           VP	                  R 4      ,           R,           pV. RR3# \        P                  V 4      pV'       d%   VP	                  R 4      VP	                  R4      RR3# R. RR3# )ro   r.  r¦   Úschemer/  r0  N)rŠ  rP  ÚnameargspatternrÏ   rÐ   ÚoperatorpatternÚcallnameargspattern)r/   Ú
bind_cnamerZ  ro   s   &   r(   Ú_resolvenameargspatternr‘  Í  sá   € Ü*¨4Ó0Ñ€DÜ˜$Ó€DÜ	×	Ñ	˜tÓ	$€Bß	Ø�x‰x˜Ó §¡¨&Ó!1°2·8±8¸HÓ3EÀzÐQÐQÜ	×	Ñ	˜tÓ	$€Bß	Ø�x‰x˜Ó! CÕ'¨"¯(©(°6Ó*:Õ:¸SÕ@ˆØ�R˜˜tÐ#Ð#Ü	×	"Ñ	" 4Ó	(€Bß	Ø�x‰x˜Ó §¡¨&Ó!1°4¸Ð=Ð=Ø��T˜4ÐÐr'   c                ó|E  € V P                  R4      pVR8w  d   Rs\        '       Ed   VR’9  dü   \        '       gð   \        ^8  då   \
        P                  P                  \        4      P                  R4      ^ ,          p\        RV R	24       ^ s\        ^,           sR
\        \        &   / \        \        &   . \        \        &   . \        \        ,          R&   / \        \        ,          R&   R
\        \        ,          R&   V\        \        ,          R&   R\        \        ,          R&   ^ sVR“9   EdE   VP                  4       p\         P"                  ! RV\         P$                  4      '       d   RpM]\         P"                  ! RV\         P$                  4      '       d   RpM.\         P"                  ! RV\         P$                  4      '       d   RpVR8X  d@   \'        V P                  R4      4      w  rVpRV/\        \        ,          R,          V&   . pRp	M\)        V P                  R4      4      w  rXršVf   VR8X  d   RpMRpVR”9  d   \        R4       W5\        3sV'       dC   \+        \-        V4      P                  R4       Uu. uF  pVP/                  4       NK  	  up4      pM. pRV9   d&   RV9   d   VP1                  R4       K  \        R4       ^ p^ pVR•9   d�   ^pR\        \        ,          9  d   R# V\        \        ,          R,          9  d   R# \        \        ,           F  pVR,          V8X  g   K   R# 	  V\        \        ,          R ,          9   d   R# RR!RR"/V,          p\2        '       d/   \4        R–8X  d$   \        ^8:  d   \        ^,           s^pVR—9  d   ^p\        ^,           s/ \        \        &   . \        \        &   V'       då   \6        ^8”  d   \        R#\2        : R$2^ 4       R%\        \        &   R\        \        ,          R&   \2        \        \        ,          R&   R\        \        ,          R&   . \        \        ,          R&   . \        \        ,          R&&   . \        \        ,          R &   / \        \        ,          R&   \        ^,           s/ \        \        &   . \        \        &   V'       Ed   \6        ^8”  d   \        R'\        : R(2^ 4       R\        \        &   R\        \        ,          R&   R)\        \        ,          R&   \        \        ^,
          ,          pVR,           R*VR,           2\        \        ,          R&   . \        \        ,          R&   . \        \        ,          R&&   . \        \        ,          R &   / \        \        ,          R&   \        ^,           s/ \        \        &   . \        \        &   V\        \        &   V\        \        ,          R&   V'       g   R+VP9                  R,R-4      ,           pV P                  R.4      \        \        ,          R/&   \;        V4      \        \        ,          R&   V	\        \        ,          R0&   \        ^8X  d   \        \        \        ,          R&   M‘\2        '       dG   \        ^8X  d<   \        \        ^,
          ,          R,           R*\         2\        \        ,          R&   M?\        \        ^,
          ,          pVR,           R*VR,           2\        \        ,          R&   \=        \        \        ,          P?                  4       4       F5  p\        \        ,          V,          '       d   K#  \        \        ,          V K7  	  V\        \        ,          R&   . \        \        ,          R&   . \        \        ,          R&&   . \        \        ,          R &   / \        \        ,          R&   / \        \        ,          R1&   VR8X  d   . \        \        ,          R2&   VR•9   dì   V\        \        ^,
          ,          R&,          9  d/   \        \        ^,
          ,          R&,          PA                  V4       \B        PD                  ! \        \        ^,
          ,          R,          4      \        \        ,          R&    \        \        ,          R,          V,          \        \        ,          R,          V,          R,          PG                  R34       VR˜9   Edâ   X
'       d³   \         PJ                  ! \L        V
4      pV'       d�   V/ /\        \        ,          R4&   VP                  R54      \        \        ,          R4,          V,          R5&   VP                  R64      '       d2   VP                  R64      \        \        ,          R4,          V,          R&    \O        \        \        ,          R,          V,          \        \        ^,
          ,          R,          R,          4      \        \        ,          R,          V&   VR8X  d‹   V	'       dƒ   V	\        \        ,          R,          9   df   WY8X  g`   \O        \        \        ,          R,          V,          \        \        ,          R,          V	,          4      \        \        ,          R,          V&    \        \        ^,
          ,          R ,          PA                  V4       VR"8X  d   \P        ^ ,          P#                  V P                  R.4      R,,           V,           4      pV'       d>   \S        VP                  R4      VP                  R4      4      w  pppp\U        VVVV4       VR•9   Ed   \        \        ^,
          ,          PA                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R–,          R&   \        \         \        ^,
          s\        \        ^,
          ,          PA                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R–,          R&   \        \         \        ^,
          sR# R# VR18X  dª   \)        V P                  R4      4      w  rXr—Ve‡   V'       dC   \+        \-        V4      P                  R4       Uu. uF  pVP/                  4       NK  	  up4      pM. pV	e   Q \W        V	4      4       hV\        \        ,          R1,          V&   R1V\        3sR# R# VR8X  d?   \S        W0P                  R4      4      w  pppp\U        VVVV4      pVe   R7V\        3sR# R# VR™9   EdÐ   \        \        ,          R,          pV P                  R4      P/                  4       pVPY                  R:4      pV^ 8  dÏ   VR98X  dÈ   \[        V4      PY                  R;4      ^,
          pVRV^,            R:,           VV^,           R ,           pVPY                  R:4      pVVR R:8X  dh   R\        \        ,          9   dR   \        R<V P                  R4       VRV  R$24       VR=P]                  \        \        ,          R,          4      ,           pV^ 8  d   ^ pRpMVRV P/                  4       pVV^,           R p\-        V4      P                  R4      p\_        V4      ^8”  d0   V^ ,          p\        R>R=P]                  VR?,          4      : R@24       Rp\-        V4      P                  R4       Uu. uF  q»P/                  4       NK  	  up EFË  p\`        P#                  V4      pV'       g9   VRš9   d   RpMH\c        V Pe                  4       4       \        RAV RBV: RC24       KY  \;        VP                  R4      4      pVRš9   d    VR›9   d   VVP                  R4      ,          pVV9  d   / VV&   VR88X  d   VVP                  R4      ,           pVR98X  Ed   V P                  R4      V,           p\f        P#                  V4      '       dä   V\        \        ,          R,          9  d¸   \        ^8”  d�   RD\        \        ^,
          ,          R,          9  d   \        RE4       V\        \        ,          R,          8w  dP   \        RFV RG\        \        ,          R,           RH24       \        \        ,          R,          PA                  V4       M\i        RIV RJ24       M\i        RIV RK24       VRœ9   d   TpRVV,          9   d!   VV,          R,          PA                  X4       MX.VV,          R&   VR38X  d�   \        \        ,          R,          R
8X  d   \        RL4       EKX  V\        \        ,          R,          9  d   EKx  R&\        \        ,          9  d   . \        \        ,          R&&   \        \        ,          R&,          PA                  V4       TpEKÎ  	  V\        \        ,          R&   Ve   R7V\        3sR# R# VRM8X  dR   V P                  R4      P                  R=4       Uu. uF  q»P/                  4       NK  	  up\        \        ,          RN&   R# VRO8X  Ed—   \        \        ,          R,          pV P                  R4      P/                  4       ^R– pRp\-        V4      P                  R4       EF  p VP                  RP4       Uu. uF  q»P/                  4       NK  	  upw  pp\k        T4      p \;        T4      pTT9  d   / TT&   RPTT,          9   d9   TT,          RP,          T8X  g$   \        RTT RUTT,          RP,           RVT R	24       \m        TT 4      pT'       Ed   TPo                  RW4      RX8X  d¡   \=        T4      p!\p        Ps                  T4       Fj  p \=        TT Pu                  4       T Pw                  4        P                  4       P9                  RYRZ4      4      T!T Pu                  4       T Pw                  4       % Kl  	  RP]                  T!4      pMMTPo                  RW4      R[8X  d8   TR?,          P                  4       P9                  RYRZ4      P9                  R=R\4      p \y        T/ T 4      p"\W        T"4      TT,          RP&   RTT,          9   d!   TT,          R,          PA                  RO4       MRO.TT,          R&   TpEK  	  V\        \        ,          R&   Ve   R7V\        3sR# R# VR_8X  EdÌ   V P                  R4      P/                  4       P                  4       R`8X  d   R\        \        ,          R_&   R# V P                  R4      '       Edj   \        \        ,          Po                  R_/ 4      p$V$f   \        Ra4       / p$\-        V P                  R4      4      P                  R4       EFó  p/ p%\         P"                  ! RbV\         P$                  4      pV'       g   \        RcV RS24       KE  \€        P#                  VP                  R4      4      p&V&'       g   \        RdV RS24       K‚  \S        V&P                  R4      V&P                  R4      4      w  pppp\ƒ        VV4      w  p'p(p)VV%RW&   V'V%Re&   V(V%Rf&   V)V%Rg&   \=        V%P?                  4       4       F  pV%V,          '       d   K  V%V K  	  \-        VP                  R4      4      P                  R4       F½  p*RhV*9   d4    V*P                  Rh4       Uu. uF  q»P/                  4       NK  	  upw  p+p,MV*P/                  4       ;p+p,\_        V+4      \_        V,4      u;8X  d   ^8X  g   M \        RiV* Rk24       Kƒ  \…        \‡        V+4      \‡        V,4      ^,           4       F  p-V%V$\‰        V-4      &   K  	  K¿  	  EKö  	  V$\        \        ,          R_&   R# R# VRl8X  Ed·   . pRp.Rp/^ p0^p1^ p2V P                  R4       FØ  p3V2'       g)   V3Rm8X  d   V1'       * p1V3Rn8X  d   V1'       d   V0^,           p0K3  V3Ro8X  d   V2^,           p2MV3Rp8X  d
   V2^,
          p2V0^ 8X  d   V.V3,           p.Kf  V0^8X  d   V/V3,           p/Kx  V0^8X  g   K�  V.P/                  4       p.V.P‹                  R=4      '       d   V.R?,          P/                  4       p.VPA                  V.V/.4       T3p.Rp/^ p0KÚ  	  V0^8X  dR   V.P/                  4       p.V.P‹                  R=4      '       d   V.R?,          P/                  4       p.VPA                  V.V/.4       \        \        ,          Po                  R/ 4      p4RpV EF  p5V5^ ,          P/                  4       P�                  R=4      V5^,          P/                  4       uV5^ &   V5^&   V5^ ,          P‹                  Ro4      '       d   \        RqV5^ ,           Rr24       K~  \�        \+        \-        V5^ ,          4      P                  R4       Uu. uF  q»P/                  4       NK  	  up4      4       EF?  w  p6p"V"P‹                  Ro4      '       d   \        RqV" Rr24       K/  RsV5^,          9   d   \        RtV5^,           Rr24       KU  V4P‘                  V"/ 4       V4V",          Po                  RW4      p7\“        V4V",          4      p8V7R[8X  d   \         P”                  ! RuV5^,          4      MV5^,          P                  R=4      p9 V8'       d   RvRwP]                  V94       Rx2MV9V6,          p:T4T",          Po                  RP4      p?T?'       d   T?T:8w  d   \        R}T" RUT? R~T: RS24       T:T4T",          RP&   T"pEKB  	  EK  	  V4\        \        ,          R&   V'       d   R7V\        3sR# R# VR8X  Edc   V P                  R4      P/                  4       pV^ ,          Rn8X  g
   R€V,           p. p@\         P                  ! RnV^R�7      w  ppApBVAP/                  4       pAVA'       g   R‚pAX@PA                  XAXB.4       / pCR\        \        ,          9   d   \        \        ,          R,          pCX@ F‹  p3V3^ ,          XC9  d   . XCV3^ ,          &   \-        V3^,          4      P                  R4       Uu. uF  q»P/                  4       NK  	  up F,  pV'       g   K  XCV3^ ,          ,          PA                  V4       K.  	  K�  	  XC\        \        ,          R&   RXA\        3sR# VRƒ8X  Ed   \         P"                  ! R„V P                  R4      \         P$                  4      pV'       Ed­   VPe                  4       pDRƒ\        \        ,          9  d   / \        \        ,          Rƒ&   VP                  R4      p/ \        \        ,          Rƒ,          V&   ^ pER…XD9   Ed;   XDR…,          Ee-   R†XD9   d   XDR†,          f   ^pEXE\        \        ,          Rƒ,          V,          R‡&   XDR…,          P                  R=4       Uu. uF  q»P/                  4       NK  	  pp/ pFV F¸  p5RPV59   dˆ   \         P"                  ! RˆV5\         P$                  4      p&V&'       dA   V&P                  Rƒ4      P/                  4       XFV&P                  R‰4      P/                  4       &   M\        RŠ\W        V54       R$24       MV5XFV5&   XF\        \        ,          Rƒ,          V,          R‹&   Kº  	  R# R# R# \c        V Pe                  4       4       \        RŒ4       R# VR�9   dØ   R�\        \        ,          9  d   / \        \        ,          R�&   \        \        ,          R�,          pGV P                  R4      RŽ8X  d[   RŽXG9   dT   \¡        XGRŽ,          \¢        4      '       d   XGRŽ,          .VGRŽ&   XGRŽ,          PA                  V P                  R4      4       R# V P                  R4      XGV P                  R4      &   R# VR8X  d\   \        f   \6        '       d   \        R�4       R# \        pH\¥        \        VH,          \        R�,          V P                  R4      4       R# \6        ^8”  d'   \c        V Pe                  4       4       \        R‘4       R# R# u upi   \H         d     ELÓi ; i  \H         d     EL¼i ; i  \H         d     ELi ; iu upi u upi u upi u upi   \H         d    \        RQT RRT RS24        EK6  i ; i  \z        \|        \~        3 d    p#\i        R]T: R^T# R$24        Rp#?#EKj  Rp#?#ii ; iu upi   \H         d    \        RiT* Rj24        E
K`  i ; iu upi   \–         Ed    \˜        ;QJ d    Ry T9 4       F  '       g   K   RzM	  R{M! Ry T9 4       4      '       d¬   . p;T9 F¡  p<R|T<9   dy    T<P                  R|4      w  p=p>T;P›                  T>P/                  4       .\�        T=4      ,          4       KQ    \ž         d$    T;PA                  T<P/                  4       4        K~  i ; iT;PA                  T<P/                  4       4       K£  	  T;p9T8'       d   RvRwP]                  T94       Rx2MT9T6,          p: ELdi ; iu upi u upi )ža|  
Reads each line in the input file in sequence and updates global vars.

Effectively reads and collects information from the input file to the
global variable groupcache, a dictionary containing info about each part
of the fortran module.

At the end of analyzeline, information is filtered into the correct dict
keys, but parameter values and dimensions are not yet interpreted.
r2  r  Nr  r	  rf   Ú.z=analyzeline: no group yet. Creating program group with name "rk   Úprogramr)  r*  r+  ro   ÚfromskyÚfromzblock\s*dataú
block datazpython\s*moduleúpython modulezabstract\s*interfaceúabstract interfacer  rg  Ú_BLOCK_DATA_r   Ú	interfacez2analyzeline: No name/args pattern found for line.
r  z<analyzeline: argument list is malformed (missing argument).
r.  r-  Ú
subroutineÚfunctionz#analyzeline: Creating module block rµ   Úmoduler,  z?analyzeline: Creating additional interface block (groupcounter=z).
Úunknown_interfaceÚ:Úunknown_rª   rî   r  Úprefixr¦   r  Úvarnamesrþ   ÚbindlangÚlangÚ	lang_nameÚvariablerý   r  ú::r^  z"All arguments will have attribute r  zTanalyzeline: cannot handle multiple attributes without type specification. Ignoring r(  r1  z&analyzeline: no name pattern found in z statement for ú. Skipping.
Ú__user__z8analyzeline: missing __user__ module (could be nothing)
z(analyzeline: appending intent(callback) ú to z arguments
zanalyzeline: intent(callback) z is ignored
z is already in argument list
z(analyzeline: ignoring program arguments
rû   Úimplementedbyr  rk  zAanalyzeline: could not extract name,expr in parameter statement "ú" of "ú"
z1analyzeline: Overwriting the value of parameter "ú" ("z	") with "r2   r3   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*|)\Zz@analyzeline: could not extract info of implicit statement part "zIanalyzeline: could not extract types pattern of implicit statement part "rh  ri  rl  Ú-z2analyzeline: expected "<char>-<char>" instead of "z&" in range list of implicit statement
z*" in range list of implicit statement (2)
r  Ú'Ú/r/  r0  zanalyzeline: implied-DO list "z" is not supported. Skipping.
r—   zComment line in declaration "z\(.*?\)ú(/ú, z/)c              3   ó,   "  € T F
  pR V9   x € K  	  R# 5i)r   Nr&   )Ú.0rñ   s   & r(   Ú	<genexpr>Úanalyzeline.<locals>.<genexpr>±  s   é € Ð5©W¨˜3 !ž8«Wùs   ‚TFr   z*analyzeline: changing init expression of "ú") to "r
  z//)ÚmaxsplitÚ_BLNK_r  zR\A\s*(?P<name>\b\w+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Zro  ÚnotonlyÚonlyz7\A\s*(?P<local>\b\w+\b)\s*=\s*>\s*(?P<use>\b\w+\b)\s*\ZÚlocalz-analyzeline: Not local=>use pattern found in Úmapz0analyzeline: Could not crack the use statement.
r  Úusercodez-analyzeline: No context for multiline block.
:Né   Nz+analyzeline: No code implemented for line.
)rø   r  r	  rf   )rø   r  r	  )r›  r—  r™  )r  r	  r   ©r›  r™  ©r�  rœ  )rý   r  rÿ   r   rþ   r  r  r  ©r  r  >   ÚoperatorÚ
assignment)rÿ   r   r  rþ   r  r  )r  )SrÐ   r%   r   r   r   rƒ   r„   Úbasenamer    r!  r1   r   r6  r7  r   rž   r¼   rÏ   r¾   r„  r‘  ru   r   r£   Úremover   r   r   rÍ   rp   ro  rp  r"  ÚcopyÚdeepcopyrY   rÄ   r†  Úcrackline_bindlangrx  rH  Úcracktypespec0Ú
updatevarsrÔ   ÚfindrP  rÙ   rV   Únamepatternr‚  r  r{  rm   Úget_parametersÚdetermineexprtyperz  Úreal16patternÚfinditerr‡  rù   ÚevalÚSyntaxErrorÚ	NameErrorÚ	TypeErrorÚtypespattern4implicitÚcracktypespecr¿   ÚordÚchrrˆ   ÚremoveprefixÚ	enumerateÚ
setdefaultÚgetdimensionÚfindallÚ
IndexErrorÚanyÚextendr6   rÓ   Ú
isinstancerÀ   Úappendmultiline)Irñ   r=   r/   r+  Únewnamero   rƒ  rî   r.  r¦   Ú	bindclineÚxÚ
needmoduleÚneedinterfaceÚitÚ
prev_grouprw  ÚbindcdatÚtr2   ÚselectorÚattrÚedeclÚ	last_namerá   ÚiÚplÚchr°  rZ  ÚapÚinitexprr€  ÚttÚvrê   Úimplrt  r[  Ú
kindselectÚ
charselectrl  r–   ÚbegcÚendcÚoÚdlÚilr_  ÚfcÚinpr¹   r*  ré   ÚidxÚvtypeÚvdimÚmatchesÚnew_valÚexpanded_listrÏ   Ú
multiplierÚvalueÚcurrent_valÚclÚbnÚolÚ	commonkeyÚmmÚisonlyrí   r  ÚgcsI   &&&                                                                      r(   rR  rR  Ý  sÈ  € ð �G‰G�F‹O€EØˆ{ÔØÐß„{�tÐ#GÔGß‹}¤°Ô!1Ü—'‘'×"Ñ"¤?Ó3×9Ñ9¸#Ó>¸qÕAˆÜØKÈGÈ9ÐTXÐYô	[àˆÜ# aÕ'ˆØ"+Œ	”,ÑØ#%Œ
”<Ñ Ø"$Œ	”,ÑØ+-Œ
”<Õ  Ñ(Ø+-Œ
”<Õ  Ñ(Ø,5Œ
”<Õ  Ñ)Ø+2Œ
”<Õ  Ñ(Ø+4Œ
”<Õ  Ñ(ØˆØÐ+Õ+à—‘“ˆÜ�8Š8�O U¬B¯D©D×1Ò1Ø ‰EÜ�XŠXÐ(¨%´·±×6Ò6Ø#‰EÜ�XŠXÐ-¨u´b·d±d×;Ò;Ø(ˆEØ�FŒ?Ü3°A·G±G¸GÓ4DÓE‰NˆD˜Ø6@À%Ð5HŒJ”|Õ$ VÕ,¨TÑ2ØˆDØ‰Fä,CÀAÇGÁGÈGÓDTÓ,UÑ)ˆD˜ØŠ<Ø˜Ô$Ø%‘à�ØÐMÔMÜÐMÔNà!¬Ð6ÐßÜÜ'5°dÓ';×'AÑ'AÀ%Ô'HóJÙ'H !ð  Ÿg™gžiÙ'HñJó K‰Dð ˆDØ�Œ:Ø˜”*Ø—‘˜B–ÜØOôQð ˆ
ØˆàÐ&Ô&ØˆMØœZ¬Õ5Ô5ÙØœ:¤lÕ3°FÕ;Ô;ÙÜ¤×-Ð-�Ø�f•: Ö%Úñ .ð ”z¤,Õ/°Õ=Ô=ÙØ˜\¨9°jÐAÀ$ÕGˆEß‹=œ\¨RÔ/´LÀAÔ4EÜ'¨!Õ+ˆLØˆJØÐ?Ô?Ø !�ä# aÕ'ˆØ#%Œ
”<Ñ Ø"$Œ	”,ÑßÜ˜Œ{ÜÐ=¼mÑ=NÈbÐQÐSTÔUØ&.Œ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Ñ#ßˆ=Ü˜Œ{Üð *Ü(™?¨$ð0Ø12ô4à&1ŒI”lÑ#Ø0;ŒJ”|Õ$ WÑ-Ø/BŒJ”|Õ$ VÑ,Ü#¤L°1Õ$4Õ5ˆJØ2<¸VÕ2DÐ1EÀQÀzÐRXÕGYÐFZÐ/[ŒJ”|Õ$ VÑ,Ø/1ŒJ”|Õ$ VÑ,Ø46ŒJ”|Õ$ [Ñ1Ø57ŒJ”|Õ$ \Ñ2Ø/1ŒJ”|Õ$ VÑ,Ü'¨!Õ+ˆLØ')ŒJ”|Ñ$Ø&(ŒI”lÑ#Ø"'Œ	”,ÑØ,1Œ
”<Õ  Ñ)ßØ §¡¨c°3Ó 7Õ7ˆDØ-.¯W©W°XÓ->Œ
”<Õ  Ñ*Ü+5°dÓ+;Œ
”<Õ  Ñ(Ø-3Œ
”<Õ  Ñ*Ü˜1ÔÜ/>ŒJ”|Õ$ VÒ,ß‹]œ|¨qÔ0Ü2<¼\ÈAÕ=MÕ2NÈvÕ2VÐ1WÐWXÔYhÐXiÐ/jŒJ”|Õ$ VÒ,ä#¤L°1Õ$4Õ5ˆJØ2<¸VÕ2DÐ1EÀQÀzÐRXÕGYÐFZÐ/[ŒJ”|Õ$ VÑ,Ü”j¤Õ.×3Ñ3Ó5Ö6ˆAÜœlÕ+¨A×.Ö.Üœ|Õ,¨QÒ/ñ 7ð ,0Œ
”<Õ  Ñ(Ø+-Œ
”<Õ  Ñ(Ø02Œ
”<Õ  Ñ-Ø13Œ
”<Õ  Ñ.Ø+-Œ
”<Õ  Ñ(Ø,.Œ
”<Õ  Ñ)à�FŒ?Ø35ŒJ”|Õ$ ZÑ0àÐ&Ô&Øœ:¤l°QÕ&6Õ7¸ÕDÔDÜœ<¨!Õ+Õ,¨[Õ9×@Ñ@ÀÔFÜ/3¯}ª}Üœ<¨!Õ+Õ,¨VÕ4ó06ŒJ”|Õ$ VÑ,ðÜœ|Õ,¨VÕ4°TÕ:Üœ|Õ,¨VÕ4°TÕ:¸:ÕF×LÑLÈZÓXðZð Ð.Õ.çÜŸ9š9Ô%7¸ÓC�ßØ<@À"¸:”Jœ|Õ,¨ZÑ8ØIQÏÉÐX^ÓI_”Jœ|Õ,¨ZÕ8¸Õ>¸vÑFØ—~‘~ k×2Ò2ØMUÏ^É^Ð\gÓMhœ
¤<Õ0°Õ<¸TÕBÀ6ÑJðÜ9CÜœ|Õ,¨VÕ4°TÕ:¼JÄ|ÐVWÕGWÕ<XÐY_Õ<`ÐacÕ<dó:f”
œ<Õ(¨Õ0°Ñ6ð �yÔ ß˜f¬
´<Õ(@ÀÕ(HÔHØœ>ÜAKÜ&¤|Õ4°VÕ<¸TÕBÄJÌ|ÕD\Ð]cÕDdÐekÕDlóBnœ
¤<Õ0°Õ8¸Ñ>ðÜœ<¨!Õ+Õ,¨\Õ:×AÑAÀ$ÔGð �JÔÜ˜Q•×%Ñ% a§g¡g¨hÓ&7¸#Õ&=ÀÕ&DÓEˆAßÜ2@Ø—G‘G˜F“O Q§W¡W¨WÓ%5ó37Ñ/�˜( D¨%ä˜8 X¨t°UÔ;àÐ&Õ&Ü”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ˆLÜ”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ŠLñ 'ð 
�ŒÜ 7¸¿¹ÀÓ8HÓ IÑˆ�FØÒßÜ Ü+9¸$Ó+?×+EÑ+EÀeÔ+Ló"NÙ+L að #$§'¡'¦)Ù+Lñ"Nó O‘ð �Ø’>Ð/¤4¨£<Ó/�>Ø6:ŒJ”|Õ$ WÕ-¨dÑ3Ø '¨¬|Ð<Òñ ð 
�ŒÜ*8Ø—7‘7˜7Ó#ó+%Ñ'ˆ�(˜D %ä˜x¨°4¸Ó?ˆ	ØÒ Ø *¨I´|ÐDÒñ !à	ÐnÕ	nÜœ<Õ(¨Õ0ˆØ�W‰W�WÓ×#Ñ#Ó%ˆØ�G‰G�D‹MˆØˆqŒ5�T˜XÔ%Ü˜rÓ"×'Ñ'¨Ó.°Õ2ˆAØ�F�Q˜•U�˜dÕ" R¨¨A­¨ ZÕ/ˆBØ—‘˜“ˆAØ�!�"ˆv˜Œ~ &¬J´|Õ,DÔ"DÜÐ<ØŸ7™7 6›?Ð+¨B¨r°¨F¨8°2ð7ô 8à˜#Ÿ(™(¤:¬lÕ#;¸FÕ#CÓDÕD�ØˆqŒ5ØˆAØ‰Bà�B�Q�—‘“ˆBØ�A˜•E�F�ˆBÜ˜BÓ×%Ñ% eÓ,ˆÜˆr‹7�QŒ;Ø�A•ˆBÜð 4Ø47·H±H¸RÀ½VÓ4DÑ3GÀsðLô Màˆ	ä%3°BÓ%7×%=Ñ%=¸eÔ%DÓEÑ%D —'‘'–)Ñ%DÕEˆAÜ×"Ñ" 1Ó%ˆBßØÐ0Ô0Ø‘Aä˜!Ÿ+™+›-Ô(ÜÐDÀTÀFð K#Ø#$¡% }ð6ô 7áä˜rŸx™x¨Ó/Ó0�ØÐ,Ô,°Ð6PÔ1PØ�R—X‘X˜gÓ&Õ&�Ø˜Œ~Ø��a‘Ø�{Ô"Ø˜BŸH™H WÓ-Õ-�Ø�xÕØ—W‘W˜V“_ rÕ)�Ü)×/Ñ/°×3Ò3Ø¤
¬<Õ 8¸Õ @Ô@Ü'¨!Ô+Ø)´¼LÈ1Õ<LÕ1MÈfÕ1UÔUÜ 'Ø$_ô!að  !¤J¬|Õ$<¸VÕ$DÔDÜ 'Ð*RÐSTÐRUØ*.¬z¼,Õ/GÈÕ/OÐ.Pð Q6ð)6ô !7ô !+¬<Õ 8¸Õ @× GÑ GÈÔ Jøä#Ø"@ÀÀÀ=Ð QõSô  Ð"@ÀÀð D6ð !6ô 7àÐ]Ô]Ø�Ø˜U 1�XÔ%Ø�a•˜Õ$×+Ñ+¨BÕ/à(* t��a•˜Ñ$Ø�zÔ!ÜœlÕ+¨GÕ4¸	ÔAÜÐGÔHÚØœJ¤|Õ4°VÕ<Ô<ÚØ¤j´Õ&>Ô>Ø<>”Jœ|Õ,¨[Ñ9Üœ<Õ(¨Õ5×<Ñ<¸QÔ?Ø‹Iñk Fðl ,1Œ
”<Õ  Ñ(ØÒ Ø *¨I´|ÐDÒñ !à	Ð"Ô	"à !§¡¨Ó 0× 6Ñ 6°sÔ ;Ó<Ñ ;˜1�W‰WŽYÑ ;Ñ<ô 	”<Õ  Ó1à	�Õ	Üœ<Õ(¨Õ0ˆØ�W‰W�WÓ×#Ñ#Ó% a¨Ð+ˆØˆ	Ü Ó#×)Ñ)¨%×0ˆAðØ23·'±'¸#´,Ó?±,¨QŸw™wžy±,Ñ?‘��8ô
 $ EÓ*ˆFÜ˜1“ˆAØ˜Œ~Ø��a‘Ø�e˜A•hŒ¨¨a­°­¸Ô(AÜÐKÈAÈ3ð OØ" 1�X c�]˜O¨9°X°J¸dðDô Eä! (¨FÓ3ˆAßˆqØ—5‘5˜Ó$¨Ô.Ü˜h›�BÜ*×3Ñ3°HÖ=˜Ü04Ø$ Q§W¡W£Y¨q¯u©u«wÐ7×=Ñ=Ó?×GÑGÈÈSÓQó1S˜˜1Ÿ7™7›9 Q§U¡U£WÒ-ñ >ð  "Ÿw™w r›{‘HØ—U‘U˜:Ó&¨)Ô3Ø'¨�|×1Ñ1Ó3×;Ñ;¸CÀÓEß™  WÓ-ð ðÜ˜ 2 vÓ.�ô
 ! ›GˆE�!�H�S‰MØ˜U 1�XÔ%Ø�a•˜Õ$×+Ñ+¨KÕ8à(3 }��a•˜Ñ$Ø‹IñI 1ðJ ,1Œ
”<Õ  Ñ(ØÒ Ø *¨I´|ÐDÒñ !à	�Õ	Ø�7‰7�7Ó×!Ñ!Ó#×)Ñ)Ó+¨vÔ5Ø37ŒJ”|Õ$ ZÓ0Ø�W‰W�W×ÓÜœlÕ+×/Ñ/°
¸BÓ?ˆDØŠ|ÜØSôUà�Ü# A§G¡G¨GÓ$4Ó5×;Ñ;¸E×B�Ø�Ü—X’XØPÐRSÔUW×UYÑUYó[�çÜØZÐ[\ÐZ]Ð]aÐbôdáÜ*×0Ñ0°·±¸&Ó1AÓB�ßÜØcÐdeÐcfÐfjÐkômáÜ2@Ø—H‘H˜VÓ$ b§h¡h¨wÓ&7ó39Ñ/�˜( D¨%ä3@Ø˜hó4(Ñ0�
˜J¨à#+��ZÑ Ø'1��^Ñ$Ø'1��^Ñ$Ø#+��ZÑ Ü˜dŸi™i›kÖ*�AØ Ÿ7ž7Ø  šGñ +ô (¨¯©°Ó(9Ó:×@Ñ@ÀÖG�AØ˜a”xð%Ø=>¿W¹WÀS¼\Ó)J¹\¸¯'©'®)¹\Ñ)J™J˜D¡$ð '(§g¡g£iÐ/˜˜tÜ˜t›9¬¨D«	Ö6°QÖ6ÜØPÐQRÐPSÐS~ÐôAá Ü"¤3 t£9¬c°$«i¸!­mÖ<˜Ø'+˜œS ›V›ó =ô Hñ1 CðP 48ŒJ”|Õ$ ZÓ0ñ] ð^ 
��ØˆØˆØˆØˆØˆØˆØ—‘˜Ö!ˆAßØ˜”8Øœ�BØ˜”8§Ø˜A��AÙØ�CŒxØ˜A•g‘Ø�c”Ø˜A•g�Ø�AŒvØ˜!•V’Ø�a”Ø˜!•V’Ø�a–Ø—X‘X“Z�Ø—=‘= ×%Ò%Ø˜B�Ÿ™›�BØ—	‘	˜2˜r˜(Ô#Ø�Ø�Ø’ñ- "ð. �Œ6Ø—‘“ˆBØ�}‰}˜S×!Ò!Ø˜•V—\‘\“^�Ø�I‰I�r˜2�hÔÜœ,Õ'×+Ñ+¨F°BÓ7ˆØˆ	ÜˆAØ˜1�Ÿ™›×2Ñ2°3Ó7¸¸1½¿¹»ˆJˆAˆa‰D�!�A‘$Ø��t�‰˜s×#Ò#ÜÐ8¸¸1½¸Ð>]Ð^Ô_ÙÜ#¤IÄ.ÐQRÐSTÕQUÓBV×B\ÑB\Ð]bÔBcÓ.dÑBc¸Q¯w©w®yÑBcÑ.dÓ$e×f‘��QØ—<‘< ×$Ò$ÜÐ<¸Q¸CÐ?^Ð_Ô`ñ Ø˜!˜A�$”;ô Ð;¸A¸a½D¸6ÐA`ÐaÔbÙØ—‘  2Ô&Ø˜Q�Ÿ™ JÓ/�Ü# D¨¥GÓ,�Ø:?À9Ô:Lœ"Ÿ*š* Z°°1µÔ6ÐRSÐTUÕRV×R\ÑR\Ð]`ÓRa�ðTß=A  4§9¡9¨WÓ#5Ð"6°bÑ9ÀwÈsÅ|�Gð& # 1�gŸk™k¨#Ó.�ß K°7Ô$:ÜÐHÈÈÈ4ÐP[È}Ð\cÐdkÐclÐlpÐqÔrØ&��Q•˜‘Ø“	ôW gñ ðb ,0Œ
”<Õ  Ñ(ßØ *¨I´|ÐDÒñ à	�Õ	Ø�w‰w�wÓ×%Ñ%Ó'ˆØ�A�w˜#Œ~Ø˜$•;ˆDàˆÜ—h’h˜s D°1Ô5‰ˆˆB�Ø�X‰X‹ZˆßØˆBØ
�	‰	�2�r�(ÔØˆ	Ø”z¤,Õ/Ô/Ü"¤<Õ0°Õ:ˆIÛˆAØ��t˜9Ô$Ø"$�	˜!˜A�$‘Ü)7¸¸!½Ó)=×)CÑ)CÀEÔ)JÓKÑ)J A—g‘g–iÑ)JÔK�ß‘1Ø˜a �d•O×*Ñ*¨1Ö-ó Lñ ð .7Œ
”<Õ  Ñ*Ø$ b¬,Ð7ÒØ	��Ü�XŠXØaÐcd×cjÑcjÐkrÓcsÔuw×uyÑuyó{ˆçˆ2Ø—‘“ˆBØœJ¤|Õ4Ô4Ø24”
œ<Õ(¨Ñ/Ø—8‘8˜FÓ#ˆDØ46ŒJ”|Õ$ UÕ+¨DÑ1ØˆFØ˜�|  6¥
Ó 6Ø ”? r¨)¥}Ò'<Ø�FØ@F”
œ<Õ(¨Õ/°Õ5°fÑ=Ø)+¨F­×)9Ñ)9¸#Ô)>Ó?Ñ)> A—g‘g–iÑ)>�Ð?Ø�Û�AØ˜a”xÜŸXšXØVÐXYÔ[]×[_Ñ[_óa˜çØ<>¿H¹HØ %ó='ß',¡u£wð ˜rŸx™x¨Ó0×6Ñ6Ó8Ò9ô $Ø"OÔPTÐUVÓPWÈyÐXZÐ [õ]ð !"˜˜1™ØCE”Jœ|Õ,¨UÕ3°DÕ9¸%Ó@ó ñ !7‰|ô( �!—+‘+“-Ô ÜÐGÖHØ	Ð%Ô	%Ø¤Z´Õ%=Ô=Ø;=ŒJ”|Õ$Ð%7Ñ8Ü”|Õ$Ð%7Õ8ˆØ�7‰7�6‹?˜jÔ(¨Z¸1¬_Ü˜!˜J�-¬×-Ò-Ø!" :¥ ��*‘Øˆj�M× Ñ  §¡¨Ó!1Ö2à!"§¡¨Ó!1ˆAˆa�g‰g�f‹oÓØ	�Ô	ÜÒ#ß‹wÜÐHÔIÙÜˆÜœ
 2�Ü(¨Õ,ØŸ™ ›ö	)ô 
�1ŒÜˆa�k‰k‹mÔÜÐ>Ö?ñ 
ùòmJøôJ ô Úðûô ô Úðûô ô Úðüò."NùòL Fùòv =ùò @øÜô ÜØWÐXYÐWZÐZ`ÐacÐ`dÐdhÐiôkãðûô0  ¤¬IÐ6ô ÜÐ:¸8¹,ð G%Ø%( E¨ð-ô .æûðüòb *KøÜ(ô %Ü#Ø"TÐUVÐTWÐW~Ð ôAã$ð%üòn /eøô* "õ T÷
 “sÑ5©WÓ5—s—s’sÑ5©WÓ5×5Ò5Ø(*˜Û%,˜EØ" eœ|ð!HØ8=¿¹ÀCÓ8HÑ$5 J°Ø$1×$8Ñ$8¸%¿+¹+»-¸Ì3ÈzË?Õ9ZÖ$[øÜ'1ô !HØ$1×$8Ñ$8¸¿¹»×$Gð!Húð !.× 4Ñ 4°U·[±[³]Ö Cñ &-ð #0˜ß=A  4§9¡9¨WÓ#5Ð"6°bÑ9ÀwÈsÅ|“Gð#TüòV Lùò& @sm  ÊBB>â+ABC çA&BC ê9.BC' óBC9ü2BC>ÁI+BDÁK=BDÁLBDÁL(BDÁR/BD2Á\8BE/Á]BE*Á]#BE/Áh4BFÁl&BFÁl.BFÁsBJ4ÁyBJ9ÂCBCÂCBCÂCBC$ÂC#BC$ÂC'BC6ÂC5BC6ÂDBDÂDBD/ÂD.BD/ÂD2BE'ÂEBE"ÂE"BE'ÂE*BE/ÂE/BFÂFBFÂFBJ1ÂF-BJ1ÂGBJ1ÂGBJ1ÂG+ABH1ÂH/BJ1ÂH1*BIÂIBJ1ÂIBIÂI/BJ1ÂJBJ1ÂJ0BJ1c                 ór   € R V 9  d   / V R &   V R ,          pW9  d   . W1&   W1,          P                  V4       R# )Úf2pymultilinesN©r"  )rÐ   Úcontext_nameÚmlr  s   &&& r(   rè  rè    s=   € Ø˜uÔ$Ø"$ˆÐÑØÐÕ€AØÔØˆ‰Ø…O×Ñ˜2Ör'   c                 ó”  € R pR p\         P                  ! RV \         P                  4      '       d   Rp MM\         P                  ! RV \         P                  4      '       d   Rp MV P                  4       P	                  4       p \
        P                  \        V4      4      pV'       g   \        R4       R # VP                  4       p\        VP                  4       4       F  p\        WV,          4      WV&   K  	  V R	9   d   VR,          pVR,          pVP                  R4      pV^ 8¼  d   VR V P                  4       pW^,           R  pWW13# )
Nzdouble\s*complexúdouble complexzdouble\s*precisionzdouble precisionz>cracktypespec0: no kind/char_selector pattern found for line.
r2  r  r¨  )r±  r5   Úlogicalr3   Ú	characterrf   )r¼   rÏ   r¾   r£   rž   ÚselectpatternrP  r1   r  ro  rp  re  rÑ  )r2   rá   rò  ró  rZ  r  rw  rö  s   &&      r(   rÏ  rÏ    s  € Ø€HØ€DÜ	‡x‚xÐ# X¬r¯t©t×4Ò4Ø#‰Ü	�ŠÐ'¨´2·4±4×	8Ò	8Ø%‰à—>‘>Ó#×)Ñ)Ó+ˆÜ	×	Ñ	œ^¨BÓ/Ó	0€BßÜØMô	OáØ
�‰‹€AÜ�!—&‘&“(Ž^ˆÜ ¥Ó%ˆ‹ñ àÐQÔQØ�V•9ˆØˆw�ZˆØ
�‰�‹€AØˆA„vØ�"�1ˆv�|‰|‹~ˆØ�A•�ˆZˆØ˜tÐ'Ð'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                 óL  € V P                  4       p \        V 4      ^8:  d   V # V ^ ,          p\        ^\        V 4      ^,
          4       FI  pW,          R8X  d+   W^,           ,          R9   g   W^,
          ,          R9   d   K:  WV,          ,           pKK  	  WR,          ,           pV# )r	   rª   z()[]{}=+-/* r   )r£   rV   r¿   )ÚexprÚexpr2rö  s   &  r(   Úremovespacesr$  F  s…   € Ø�:‰:‹<€DÜ
ˆ4ƒy�A„~ØˆØ��G€EÜ�1”c˜$“i !•mÖ$ˆØ�G�sŒNØ�q•5�k˜^Ô+Ø˜!•e• Ô.ÙØ˜Q�•Šñ %ð ˜•HÕ€EØ€Lr'   c                óâ   € RpRpRpRpV  F`  pVR8X  d   VR9   d   W,          pTpK  V'       g
   VR9   d   TpWS8X  d	   V'       * pMVR8X  d   V'       d   VR,          pKV  W,          pTpKb  	  V# )	zÿ
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   FNÚ\rª   ú@_@)r&  r´  Ú")r´  r(  r&   )r/   ÚfragmentÚinsideÚcurrent_quoteÚescapedr¹   s   &     r(   Úmarkinnerspacesr-  U  s…   € ð  €HØ€FØ€MØ€GÛˆØ�dŒ?˜qÐ$5Ô5Ø�MˆHØˆGÙß˜!˜{Ô*ØˆMØÔØ”Z‰FØ�#ŒXŸ&Ø˜ÕˆHÙØ�ˆØŠñ ð €Or'   c                ó@  € Rp\        W4      w  rVpV'       dÁ   \        V4      P                  R4       Uu. uF  qˆP                  4       NK  	  pp. p	\        P
                  ! R4      p
V Fj  pV'       g   K  V
P                  V4      pV'       d4   VP                  R4      P                  4       pWÛ\        V4      R ,           pV	P                  V4       Kl  	  T	p\        V4      P                  R4       Uu. uF  qˆP                  4       NK  	  pp. pV F€  p\        \        \        V4      4      RR7      P                  R4       Uu. uF  qˆP                  4       NK  	  up F.  pV'       g   K  VP                  VP                  RR4      4       K0  	  K‚  	  V EFñ  p\        P                  V4      pV'       g   \        R	\!        V4       R
24       K;  \#        VP                  R4      4      p/ pV\$        \&        ,          R,          9   Ed³   \$        \&        ,          R,          V,          P)                  4       pRV9  pV'       d   V VR&   M4V '       d-   V VR,          8X  g   VR,          p\        RV RV RV  R24       RV9  d   \(        P(                  ! V4      VR&   MªV'       d£   \+        VP-                  4       4       F…  pVVR,          9   dN   VV,          VR,          V,          8X  g2   VR,          V,          p\        RV RV RV RVV,           R2	4       K^  \(        P(                  ! VV,          4      VR,          V&   K‡  	  RV9  d+   V'       d#   V'       d   VVR&   M¼\/        RV RV: R24       M¨V'       d¡   \+        VP-                  4       4       Fƒ  pVVR,          9   dL   VV,          VR,          V,          8X  g0   \        RV RV RVR,          V,           RVV,           R2	4       K\  \(        P(                  ! VV,          4      VR,          V&   K…  	  RV9  d   VVR&   M2V'       d+   VR,          V8X  g   \        RV RVR,           RV R24       RV9  d   \(        P(                  ! V4      VR&   M£V'       d2   V F+  pVVR,          9  g   K  VR,          P                  V4       K-  	  Mi\(        P(                  ! V 4      VR&   \(        P(                  ! V4      VR&   \(        P(                  ! V4      VR&   VVR&   \(        P(                  ! V4      VR&   RVP1                  R4      ;'       g    . 9   do   V\$        \&        ,          R,          9   dR   R\$        \&        ,          9  d   . \$        \&        ,          R&   \$        \&        ,          R,          P                  V4       VP                  R 4      '       Ed.   \2        P                  \5        VP                  R 4      4      4      pV'       EdÐ   VP7                  4       pR7 F4  pVVR$,           ,          f   K  VVR$,           ,          VV&   VVR$,            K6  	  \+        VP-                  4       4       F(  pVV,          e   \9        VV,          4      VV&   K%  VV K*  	  R!V9   d¿   R"V9   d¸   VR!,          R%8X  d   VR",          VR!&   VR" M™V R&8X  dK   RV9  g   VR,          '       g   / VR&   R!VR,          9   d   VR,          R! VR!,          VR,          R'&   VR! MHVR",          R(,           VR!,          ,           VR"&   VR! VR",          p\/        R)V  RV R*V  RV R+V R,24       R!V9   dŠ   V R89   d3   RV9  g   VR,          '       g   / VR&   VR!,          VR,          R'&   VR! MPV R&8X  dJ   RV9  g   VR,          '       g   / VR&   R!VR,          9   d   VR,          R! VR!,          VR,          R'&   VR! R#V9   dQ   R-V9   d>   VR-,          VR#,          8X  g)   VR-,          pVR#,          p\        R.V RV RV R24       MVR#,          VR-&   R"V9   d�   R/VR",           R02pRV9  g   VR,          '       g   V.VR&   M‹VR,          P                  V4       VR,           F=  pVR1,          R28X  g   K  VV8w  g   K  VR,          R9 \/        RV R3V: R4V: R24        M+	  M(\        R5VVP                  R 4      ,           ,          4       \+        VP-                  4       4       F  pVV,          '       d   K  VV K  	  V\$        \&        ,          R,          V&   R6\$        \&        ,          9   d(   \$        \&        ,          R6,          P                  V4       TpEKô  	  V# u upi u upi u upi ):zÇ
Returns last_name, the variable name without special chars, parenthesis
    or dimension specifiers.

Alters groupcache to add the name, typespec, attrspec (and possibly value)
of current variable.
Nr  z(?P<start>[a-zA-Z]+)r‡  rª   ©rc  z@ @r'  z-updatevars: no name pattern found for entity=r©  ro   r*  r2   z+updatevars: attempt to change the type of "r¯  r¼  z". Ignoring.
rh  z0updatevars: attempt to change the kindselector "r­  ri  zupdatevars:z*: attempt to change empty charselector to r¸   z0updatevars: attempt to change the charselector "rl  z/updatevars: attempt to change the typename of "rg  rþ   r.  r,  r  rV   ÚarrayÚinitÚ2r   r  r   r  zupdatevars: "z" is mapped to "r/  z)"
rk  z6updatevars: attempt to change the init expression of "ú
dimension(r0  ºNé	   Nrý   z: attempt to change r«  z?updatevars: could not crack entity declaration "%s". Ignoring.
r£  )rV   r0  r1  ©r±  r5   r  r3   r   )rÜ  r   r!  r£   r¼   r½   rÏ   rÐ   rž   rV   r"  r$  r-  rÍ   rÒ  r1   rÔ   rp   r7  r   rÌ  ro  rp  rm   rz  ÚlenarraypatternrP  r  re  ) r2   rò  rg  Ú
entitydeclrõ  rþ  rÿ  rl  rë  ré   r¹   r$  rñ   ÚsÚelÚel1r°  Úe1Úenamerô  Únot_has_typespecÚcurrent_typespecrw  Úcurrent_kindrZ  Úd1ÚlkÚ
array_specÚcurrent_initÚnew_initÚdmÚdm1s    &&&&                            r(   rÐ  rÐ  z  sç  € ð €IÜ'4°XÓ'HÑ$€J˜HçÜ'5°hÓ'?×'EÑ'EÀeÔ'LÓMÑ'L !—G‘G–IÑ'LˆÐMØˆÜ�JŠJÐ.Ó/ˆÛˆAßÙØ—‘˜“
ˆAßØ—G‘G˜GÓ$×*Ñ*Ó,�Øœ#˜a›&˜'˜
•N�Ø�H‰H�QŽKñ ð ˆÜ+¨JÓ7×=Ñ=¸eÔDÓ	EÑD˜�'‰'Ž)ÑD€BÐ	EØ
€CÛˆÜ&4´\Ä/ÐRSÓBTÓ5UÐ]`Ô&a×&gÑ&gÐhmÔ&nÓoÑ&n —7‘7–9Ñ&nÔoˆBß‰rØ—
‘
˜2Ÿ:™: e¨SÓ1Ö2ó pñ ô ˆÜ×Ñ˜aÓ ˆßÜØ?ÄÀQÃ¸yÈÐVôXáÜ˜1Ÿ7™7 6›?Ó+ˆØˆØ”Jœ|Õ,¨VÕ4Õ4Üœ|Õ,¨VÕ4°UÕ;×@Ñ@ÓBˆEØ)°Ñ6ÐßØ$,��jÒ!ß 8¨u°ZÕ/@Ô#@Ø#(¨Õ#4Ð ÜÐEÀeÀWð MØ-Ð.¨g°h°Z¸~ðOô Pà UÔ*Ü(,¯	ª	°*Ó(=��nÒ%ßÜ˜jŸo™oÓ/Ö0�AØ˜E .Õ1Ô1¸:Àa½=ÈEÐR`ÕLaÐbcÕLdÔ;dØ',¨^Õ'<¸QÕ'?˜Üð !$Ø$% 3 f¨U¨G°4¸°~ð F$Ø$.¨q¥M ?°.ð!Bö Cô 48·9²9¸ZÈ½]Ó3K˜˜nÕ-¨aÓ0ñ 1ð  UÔ*¯zß#Ø,6�E˜.Ò)ä˜k¨%¨ð 1"Ø",¡¨}ð>õ ?çÜ˜jŸo™oÓ/Ö0�AØ˜E .Õ1Ô1¸:Àa½=ÈEÐR`ÕLaÐbcÕLdÔ;dÜÐ"RÐSTÐRUð V'Ø', g¨T°%¸Õ2GÈÕ2JÐ1Kð L$Ø$.¨q¥M ?°.ð!Bö Cô 48·9²9¸ZÈ½]Ó3K˜˜nÕ-¨aÓ0ñ 1ð  Ô&Ø$,��jÒ!ß 5¨Õ#4¸Ô#@ÜÐIÈ%Èð QØ" :Õ.Ð/¨w°x°jÀðPô Qà Ô&Ü$(§I¢I¨hÓ$7��jÒ!ßÛ!�AØ  jÕ 1Ö1Ø˜jÕ)×0Ñ0°Ö3ñ "øô !%§	¢	¨(Ó 3ˆE�*ÑÜ$(§I¢I¨jÓ$9ˆE�.Ñ!Ü$(§I¢I¨jÓ$9ˆE�.Ñ!Ø (ˆE�*ÑÜ $§	¢	¨(Ó 3ˆE�*ÑØ˜%Ÿ)™) JÓ/×5Ð5°2Ô6¸1Ä
Ì<Õ@XÐY_Õ@`Ô;`Ø¤*¬\Õ":Ô:Ø8:”
œ<Õ(¨Ñ5Ü”|Õ$ [Õ1×8Ñ8¸Ô;Ø�7‰7�7×ÓÜ ×&Ñ&¤~°a·g±g¸gÓ6FÓ'GÓHˆBßˆrØ—\‘\“^�Û2�BØ˜"˜s�(•|Ô/Ø!# B¨¥H¥˜˜2™Ø˜r C�xšLñ 3ô ˜bŸg™g›iž�AØ˜!•uÒ(Ü 0°°AµÓ 7˜˜1›à˜qšEñ	 )ð ˜B”; 7¨b¤=Ø˜%•y B”Ø$& w¥K˜˜5™	Ø˜w™KØ! [Ô0Ø*°%Ô7ÀÀ~×AVÔAVØ46˜E .Ñ1Ø  E¨.Õ$9Ô9Ø % nÕ 5°eÐ <Ø57¸µY˜˜nÕ-¨cÑ2Ø˜u™Ià&(¨¥k°CÕ&7¸"¸U½)Õ&C˜˜7™Ø˜u˜IØ%'¨¥[˜
Ü -°¨z¸¸1¸#ð >$Ø$, :¨Q¨u¨g°Q°z°lÀ$ð!Hô Ið ˜B”;ØÐ#LÔLØ*°%Ô7ÀÀ~×AVÔAVØ46˜E .Ñ1Ø57¸µY˜˜nÕ-¨cÑ2Ø˜u™IØ! [Ô0Ø*°%Ô7ÀÀ~×AVÔAVØ46˜E .Ñ1Ø  E¨.Õ$9Ô9Ø % nÕ 5°eÐ <Ø57¸µY˜˜nÕ-¨cÑ2Ø˜u˜Ià˜R”<Ø˜e”|¨U°3­Z¸2¸f½:Ô-EØ',¨S¥z˜Ø#% f¥:˜Üð !$Ø$) 7¨$¨|¨n¸GÀHÀ:ð N.ð!/õ 0ð &(¨¥Z˜˜c™
à˜b”=Ø% b¨¥k ]°!Ð4�BØ!¨Ô.°u¸Z×7HÔ7HØ-/¨D˜˜jÒ)à˜jÕ)×0Ñ0°Ô4Ø#(¨×#4Ð#4˜CØ" 2�w¨+Ö5¸#À¾)Ø$)¨*Õ$5°bÐ$9Ü '¨+°e°WÐ<PØ+.©'°°b±V¸=ð)Jô !Ká %ñ $5øô ÐZØ˜AŸG™G GÓ,Õ,õ.ô /ä�e—j‘j“lÖ#ˆAØ˜—8–8Ø˜!’Hñ $ð 38Œ
”<Õ  Õ(¨Ñ/Øœ¤LÕ1Ô1Ü”|Õ$ ZÕ0×7Ñ7¸Ô>Ø‹	ñ[ ð\ ÐùòA Nùò 
Fùò ps   µfÃ5fÅfc                 óR  € R pR pR pV'       Ed–   V R9   dº   \         P                  V4      pV'       g   \        R\        V4       R24       R # VP	                  4       pVR,          VR&   VR \        VP                  4       4       F  pW%,          '       d   K  W% K  	  \        VP                  4       4       F  w  rV\        V4      W%&   K  	  EMÕV R8X  EdY   \        P                  V4      pV'       g   \        R\        V4       R24       R # VP	                  4       pVR,          VR&   VR VR,          '       d�   \        P                  \        VR,          4      4      pVP	                  4       pR F<  pWxR	,           ,          '       d   WxR	,           ,          Wx&   Wx,          W8&   WxR	,            K>  	  VR
,          e   VR
,          VR
&   VR \        VP                  4       4       F  pW5,          '       d   K  W5 K  	  \        VP                  4       4       F  w  rV\        V4      W5&   K  	  MuV R8X  dW   \        P                  ! RV\        P                  4      pV'       d   VP                  R4      pM.\        RW,            R24       M\        R\        V4       R24       W#V3# )Nz1cracktypespec: no kindselector pattern found for rµ   Úkind2r   r  z1cracktypespec: no charselector pattern found for ÚcharlenÚlenkindr2  Úf2py_lenrf   z\s*\(\s*(?P<name>\w+)\s*\)ro   z$cracktypespec: no typename found in z$cracktypespec: no selector used for r6  )rV   Úkind)rh  rÏ   r1   rÔ   r  ro  rp  Úitemsrp   ri  Úlenkindpatternr   r¼   r¾   rÐ   )	r2   rò  rþ  rÿ  rl  rw  rö  rK  rB  s	   &&       r(   rÜ  rÜ  +  s^  € Ø€JØ€JØ€Hß€xØÐ@Ô@Ü%×+Ñ+¨HÓ5ˆJßÜØGÌÈXËÐGWÐWYÐZô\áØ#×-Ñ-Ó/ˆJØ(¨Õ1ˆJ�s‰OØ˜7Ð#Ü˜*Ÿ/™/Ó+Ö,�Ø!—}–}Ø"šñ -ô ˜Z×-Ñ-Ó/Ö0‘�Ü *¨1£�
“ó 1à˜Õ$Ü%×+Ñ+¨HÓ5ˆJßÜØGÌÈXËÐGWÐWYÐZô\áØ#×-Ñ-Ó/ˆJØ(¨Õ3ˆJ�s‰OØ˜9Ð%Ø˜)×$Ô$Ü(×.Ñ.Ü" :¨iÕ#8Ó9ó;�à!×+Ñ+Ó-�Û)�BØ C�x×(Ô(Ø&-°3­hÕ&7˜™Ø%,¥[�J‘NØ S¥Ò)ñ	 *ð
 ˜:Õ&Ò2à-4°ZÕ-@�J˜zÑ*Ø˜9Ð%Ü˜*Ÿ/™/Ó+Ö,�Ø!—}–}Ø"šñ -ô ˜Z×-Ñ-Ó/Ö0‘�Ü *¨1£�
“ò 1à˜ÔÜ—x’xÐ =¸xÌÏÉÓNˆHßØ#Ÿ>™>¨&Ó1‘äÐ>¸xÕ?RÐ>SÐSUÐVÕWäÐ:¼4À»>Ð:JÈ"ÐMÔNØ 8Ð+Ð+r'   c                 óR  € V '       g   / p V'       g   V # R V 9  d	   V.V R &   V # V'       d   V R ,          P                  V4       WR ,          9   d   V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # V R ,          P                  V4       V # )rg  rH   Ú	automaticr  r  r  )rt  ró  rv  s   &&&r(   rq  rq  e  s+  € ßØˆßØˆØ˜ÔØ ˜6ˆˆZÑØˆßØˆZÕ×Ñ Ô%Ø�JÕÔØˆØˆxÔ˜K¨t°JÕ/?Ô?ØˆZÕ×Ñ Ô%ð €Kð 
�Ô	 °°jÕ1AÔ!AØˆZÕ×Ñ Ô%ð €Kð 
�Ô	Ø˜D Õ,Ô,Ø�Õ×#Ñ# DÔ)ð €Kð 
�Ô	Ø˜4 
Õ+Ô+Ø�Õ×#Ñ# DÔ)ð €Kð 	ˆZÕ×Ñ Ô%Ø€Kr'   c                 óÚ   € V '       g   / p V'       g   V # R V 9  d   WR &   V # \        VP                  4       4       F,  pV'       g   W0R ,          9  g   K  W,          V R ,          V&   K.  	  V # )rh  ©ro  rp  ©rt  Úselrv  rw  s   &&& r(   rr  rr  €  sa   € ßØˆßØˆØ˜TÔ!Ø"ˆ^ÑØˆÜ�#—(‘(“*Öˆß�A .Õ1Ö1Ø&)¥fˆD�Õ  Ó#ñ ð €Kr'   c                 óÚ   € V '       g   / p V'       g   V # R V 9  d   WR &   V # \        VP                  4       4       F,  pV'       g   W0R ,          9  g   K  W,          V R ,          V&   K.  	  V # )ri  rS  rT  s   &&& r(   rs  rs  Ž  sa   € ßØˆßØˆØ˜TÔ!Ø"ˆ^ÑØˆä�#—(‘(“*Öˆß�A .Õ1Ö1Ø&)¥fˆD�Õ  Ó#ñ ð €Kr'   c                 ó&   € R V 9   d
   V R ,          # V# rn   r&   )r+  Úunknowns   &&r(   ÚgetblocknamerY  �  s   € Ø�„Ø�V�}ÐØ€Nr'   c                 óZ   €  R V R,           RV R,           R2s R#   \         d     R# i ; i)zIn: r–  r   ro   rµ   N)r   rÄ   )r+  s   &r(   Úsetmesstextr[  ¥  s6   € ðØ! %¨¥- °°%¸µ-°ÀÐCÒøÜô Úðús   ‚ ›*©*c                 óz   € / pR V 9   d   \        V R ,          4      pRV 9   d   VP                  V R,          4       V# )Úparent_blockr  )Úget_usedictÚupdate)r+  Úusedicts   & r(   r^  r^  ®  s:   € Ø€GØ˜ÔÜ˜e NÕ3Ó4ˆØ�„~Ø�‰�u˜U•|Ô$Ø€Nr'   c           	      óî  € Vf   / p\        V 4      pV'       g   V# \        VP                  4       4       F¼  w  r4VP                  4       pV\        9  d$   \        RV RV P                  R4       R24       KC  \        V,          p\        V4      pV'       g   Ke  V'       d   \        RV R24       \        VP                  4       4       F#  w  rxWq9   d   \        RV: RV: R24       W�V&   K%  	  K¾  	  V# )	Nzget_useparameters: no module z info used by ro   rµ   zget_useparameters: mapping for z not impl.
z(get_useparameters: overriding parameter z with value from module )	r^  ro  rN  rž   r   r1   rz  rÓ  rm   )	r+  Ú	param_mapr`  ÚusenameÚmappingÚmvarsr€  rw  rü  s	   &&       r(   Úget_useparametersrf  ·  sò   € ð ÒØˆ	Ü˜%Ó €GßØÐÜ  §¡£Ö1ÑˆØ—-‘-“/ˆØœ-Ô'ÜÐ3°G°9¸NØ—y‘y Ó(Ð)¨ð-ô .áÜ˜gÕ&ˆÜ Ó&ˆßÙçÜÐ5°g°Y¸lÐKÔLÜ˜Ÿ™›Ö(‰DˆAØŒ~ÜÐBÀ1Á%ð H.Ø.5©[¸ð<ô =à�a‹Ló	 )ñ 2ð& Ðr'   c           	      óT  € \         '       g   V # \        V \        4      '       d&   V  Uu. uF  p\        W1R ,           VR7      NK  	  ppV# \	        V 4       \        V RV R,           R2^ 4       Vf   \        V 4      pVep   RV 9   di   V R,          p\        VP                  4       4       FB  pWV,          pRV9   g   K  VR,          pRV9   g   K&  VR,          p	W’9   g   K7  W),          VR&   KD  	  V R,           U
u. uF  p
\        W¡R ,           VR7      NK  	  pp
W°R&   V # u upi u up
i )	r˜   )Útabrb  úBlock: ro   rµ   r*  rh  rM  r)  )r   rç  ro  Ú
postcrack2r[  r1   rf  rp  )r+  rh  rb  ÚgÚretr*  r§   ÚvarrM  ÚvalÚbÚnew_bodys   &&&         r(   rj  rj  Õ  s)  € ÷ ‹=ØˆÜ�%œ×ÒáóÙ�1ô ˜! t¥°y×AÙð 	ð àˆ
Ü�ÔÜˆsˆe�7˜5 �=˜/¨Ð,¨aÔ0àÒÜ% eÓ,ˆ	àÒ ¨5¤Ø�V�}ˆÜ�d—i‘i“kÖ"ˆAØ•'ˆCØ Ö$Ø˜>Õ*�Ø˜T–>Ø˜v�,�CØÖ'Ø'0¥~˜˜V›ñ #ð ˜vžó(Ù&�Aô ˜1¨¥*¸	×BÙ&ð ð (àˆ&�Mà€Lùò/ùò&(s   ©D Ã;D%c                óŽ  € \        V \        4      '       dm   . p. pV  FZ  p\        V4       \        WRR,           R7      pRV9   d"   RVR,          9   d   VP	                  V4       KI  VP	                  V4       K\  	  WC,           # \        V 4       \        V \
        4      '       g#   RV 9  d   \        R\        V 4      ,           4      hRV 9   d(   V R,          R8X  g   \        V RV R,           R	2^ 4       \        V 4      p \        V 4      p \        V 4      V R
&   \        V R
,          4      V R&   V P                  R4      '       d
   V R,          p\        WVR7      V R&   . pRV 9   dE   V R,          p\        VP                  4       4       F  pRV9   g   K  VP	                  V4       K  	  M/ pRp	RV 9   d
   V R,          p	V P                  R4      '       Edä   . p
RV 9   d
   V R,          p
\         P                   ! V R
,          4      pV	'       d   V	R,           pMRpWÆ9   d!   ^pV RV 2V9   d   V^,           pK  V RV 2pRRR. R
/ RV	R,           /pV R,           EF  pWú9   dÐ   . pRpV R,           F¤  pV^,           pVR,          R8X  g   K  RpVR,           FE  pV^,           pRV9   g   K  VR,          V8X  g   K%  \         P                   ! V4      pVR,          V  M	  V'       g   Kz  VR,          '       g   V R,          V WªP#                  V4        M	  VR,          P	                  V4       KÙ  Wû9   g   Ká  \%        W¿,          4      '       d   Kú  W¿,          VR
,          V&   EK  	  VR
,          '       g   VR,          '       d2   W R&   RRRV.R
/ RVRV R,          /p/ W|&   \&        P	                  V4       V'       d   WpR&   V # )zY
TODO:
      function return values
      determine expression types if in argument list
r˜   ©rh  ro   rª  r+  z0postcrack: Expected block dictionary instead of rŸ  ri  rµ   r*  Úsortvarsr.  r)  r  r   r,  r-  Ú__user__routinesÚunknown__user__routinesrî   r›  Ú_user_interfacer˜  r   )rç  ro  r[  Ú	postcrackr"  ÚdictrÄ   rÀ   r1   ÚanalyzeargsÚanalyzecommonÚanalyzevarsÚsortvarnamesrz  Úanalyzebodyrp  rÌ  rY   Ú
isexternalr   )r+  r.  rh  ÚgretÚuretrk  ÚuserisdefinedÚuseblockrw  ro   r-  re  Úmnamerö  r›  r°  ÚedefÚjro  ÚbbÚmblocks   &&&                  r(   rw  rw  õ  s�  € ô �%œ×ÒØˆØˆÛˆAÜ˜ŒNÜ˜! t¥Ô,ˆAà˜Œ{˜z¨Q¨v­YÔ6Ø—‘˜A–à—‘˜A–ñ ð �{ÐÜ�ÔÜ�eœT×"Ò" w°eÔ';ÜÐJÜ˜E›
õ#ó $ð 	$à�„˜u V�}Ð0CÔCÜ�3�%�w˜u V�}˜o¨RÐ0°!Ô4Ü˜Ó€EÜ˜%Ó €EÜ Ó&€Eˆ&�MÜ$ U¨6¥]Ó3€Eˆ*ÑØ‡y�y�×ÒØ�V�}ˆÜ °Ô5€Eˆ&�Mà€MØ�„~Ø˜•<ˆÜ�h—m‘m“oÖ&ˆAØ˜QŽØ×$Ñ$ QÖ'ò 'ð ˆØ€DØ�„Ø�V�}ˆà‡y�y�×ÓØˆ
Ø˜5Ô Ø˜|Õ,ˆJÜ—	’	˜% �-Ó(ˆßØÐ-Õ-‰Eà-ˆEØÔ!ØˆAØ�G˜1˜Q˜C�. MÔ1Ø˜•E’Ø�g˜Q˜q˜c�NˆEØ˜k¨6°2Ø˜R ¨Ð0AÕ)AðCˆ	à�{×#Ñ#ˆAØŒØ�Ø�Ø˜vŸ˜�AØ˜A��AØ˜•z [Ö0Ø˜Ø"# F§) )˜BØ ! A¥˜AØ%¨ž|°°6µ
¸a¶Ü'+§y¢y°£} Ø$% f¥I¨a LÙ %ñ #,÷  ™4Ø#$ V§9¤9Ø$)¨&¥M°!Ð$4Ø *×+;Ñ+;¸AÓ+>Ð ?Ù!ñ 'ð ˜&Õ!×(Ñ(¨Ö.Ø–¤J¨u­x×$8Ô$8Ø',¥x�	˜&Õ! !Ô$ñ+ $ð, �V×Ô 	¨&× 1Ô 1Ø",�,ÑØ˜°Øð9Ø" B¨°°|ÀUÈ;ÕEWðYˆFà ˆH‰OÜ×Ñ˜vÔ&ßØˆe‰Ø€Lr'   c                 óv  € . p. p\        V P                  4       4       FI  pR W,          9   d)   W,          R ,          '       d   VP                  V4       K8  VP                  V4       KK  	  \        V4      p^ pV'       dº   V^ ,          p^ pVR,           F  pWpV,          R ,          9   g   K  ^p M	  V'       dV   VR,          V.,           pV^,           pWT8”  d4   \	        RRP                  V4      ,           R,           4       W,           p V# K˜  VP                  V4       VR,          p\        V4      p^ pKÁ  V# )rn  r(  zTsortvarnames: failed to compute dependencies because of cyclic dependencies between r·  rµ   )ro  rp  r"  rV   rm   rÙ   )r*  ÚindepÚdeprü  r§   rö  rW  Úws   &       r(   r|  r|  T  s  € Ø€EØ
€CÜ�$—)‘)“+ÖˆØ�t•wÔ 4¥7¨8×#4Ô#4Ø�J‰J�qŽMà�L‰L˜ŽOñ	 ô
 	ˆC‹€AØ	€Aß
Ø��FˆØˆØ�R—�ˆAØ˜•G˜HÕ%Ö%Ø�Ùñ ÷ Ø�b•'˜Q˜C•-ˆCØ�A•ˆAØŒuÜð ;àŸ)™) C›.õ)à+/õ0ô 1ð ��Øð €Lñ ð �L‰L˜ŒOØ�b•'ˆCÜ�C“ˆAØŠAØ€Lr'   c           	      ót  € \        V 4      '       g   V # . p\        V R ,          P                  4       4       EFØ  p. pV R ,          V,           EF²  p\        P                  ! RV\        P
                  4      pV'       Ed[   . pVP                  R4      '       dG   \        VP                  R4      4      P                  R4       Uu. uF  pVP                  4       NK  	  pp\        VP                  R4      P                  4       4      pW€R,          9   dx   RV R,          V,          9   d;   V R,          V,          R,          P                  RRP                  V4       R	24       M_RRP                  V4       R	2.V R,          V,          R&   M7V'       d$   RRRP                  V4       R	2./V R,          V&   M/ V R,          V&   W�9  d   VP                  V4       MTp\        R
V RV R24       VP                  V4       EKµ  	  W0R ,          V&   EKÛ  	  RV 9  d   WR&   V # V R,          V,           V R&   V # u upi )r
  z2\A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\ZÚdimsr  ro   r*  rg  r3  r  r0  z:analyzecommon: failed to extract "<name>[(<dims>)]" from "z" in common /z/.
Ú
commonvars)Ú	hascommonro  rp  r¼   rÏ   r¾   rÐ   r   r!  r£   rp   r"  rÙ   rm   )	r+  rŽ  rw  Úcomvarsr°  rñ   r�  rë  r§   s	   &        r(   rz  rz  v  s  € Ü�U×ÒØˆØ€JÜ�%˜•/×&Ñ&Ó(×)ˆØˆØ�x• ×#Ñ#ˆAÜ—’ØEÀqÌ"Ï$É$óPˆAçˆqØ�Ø—7‘7˜6—?’?ä%3°A·G±G¸F³OÓ%D×%JÑ%JÈ5Ô%QóSÙ%Q ð ŸG™GžIÙ%Qð ð Sä˜qŸw™w v›×4Ñ4Ó6Ó7�Ø˜f�Ô%Ø! U¨6¥]°1Õ%5Ô5Ø˜f� aÕ(¨Õ4×;Ñ;Ø(¨¯©°$«Ð(8¸Ð:õ<ð )¨¯©°$«Ð(8¸Ð:ð8<˜˜f� aÕ(¨Ò4çà" z°#·(±(¸4³.Ð1AÀÐ%CÐ$Dð(F�E˜&•M !Ò$ð (*�E˜&•M !Ñ$ØÔ&Ø×%Ñ% aÔ(øà�ÜØPÐQRÐPSÐS`ÐabÐ`cÐcgÐhôjà�N‰N˜1×ñ7 $ð8 %ˆh�˜Ôñ= *ð> ˜5Ô Ø(ˆlÑð €Lð $ LÕ1°JÕ>ˆˆlÑØ€Lùò7Ss   ÃH5c                 ó¬  € \        V 4       V R ,          P                  4        UUu/ uF  w  r4RV9  g   RVR,          9  g   K  W4bK   	  ppp. pV R,           EFq  pWR&   VR,          R9   dœ   Ve   VR,          V9  d   K*  VR,          pVR,          VP                  4       9   d   \        P	                  VR,          4       VR,          \        9   d   K  \
        '       d   VR,          \
        9  d   KŸ  \        VRR	R
7      VR&   MTp\        WxVR,           R7      pVR,          R9   d1   VR,          '       g"   VP                  R4      '       g   RV9  d   EK  VR,          P                  RR4      R8X  d   \        P	                  V4       EK;  VR,          R8X  d   VR ,          \        VR,          &   VP	                  V4       EKt  	  V# u uppi )r*  rg  r  r)  r]  r+  ro   r.  rª   T©Úas_interfaceÚsaved_interfacer˜   rr  r¬  r  r   Úpythonmodulerž  rÆ  z
      rÅ  )r[  rN  rp  r"   r"  r#   Úcrack2fortrangenrw  rz  rÍ   r   r   )	r+  r.  rh  Úkeyr  Úmaybe_privater)  ro  Úas_s	   &&&      r(   r}  r}     s¡  € ô �Ôð   �-×-Ñ-Ô/ôá/‰JˆCØ˜UÔ" h°e¸JÕ6GÑ&Gô 	ˆŠ
Ù/ð ñ ð €DØ�6�]‰]ˆØ!ˆ.ÑØˆW�:Ð3Ô3ØÒ A f¥I°TÔ$9Ùà˜•i�à��y˜M×.Ñ.Ó0Ô0Ü× Ñ   6¥Ô+Ø��yœIÔ%Ùß‹y˜Q˜v�Y¬iÔ7ÙÜ#3Ø�>°ô$6ˆAÐÒ ð ˆCÜ�a #¨¥*Ô-ˆØˆW�:Ð<Ô<Ø��yŒy §¡ ×!7Ò!7Ø!¨Ô*ÚØˆW�:×Ñ˜c 2Ó&¨.Ô8Ü×Ñ˜q×!à��z˜XÔ%Ø+,¨V­9”˜a �iÑ(Ø�K‰K˜�Nñ; ð< €KùóKs   ¦GÁGc                 ó   € \        V 4       \        p/ pR V 9   d³   V R ,          f0   Rp\        ^8”  d    \        R\	        V R,          4       R24       W3# \        V R ,          P                  4       4       FT  pV R ,          V,          P                  R4      R9  d   V R ,          V,          W&   K;  V R ,          V,          R,          W#&   KV  	  W3# )rü   Nz2buildimplicitrules: no implicit rules for routine ro   r1  r2   )rH   rQ  )r[  Údefaultimplicitrulesr   r1   rÔ   ro  rp  rz  )r+  ÚimplicitrulesÚ	attrrulesrw  s   &   r(   Úbuildimplicitrulesrž  Í  sÏ   € Ü�ÔÜ(€MØ€IØ�UÔØ�ÕÒ$Ø ˆMÜ˜Œ{ÜØHÌÈeÐTZÍmÓI\ÐH]Ð]`Ðaôcð Ð#Ð#ô ˜% 
Õ+×0Ñ0Ó2Ö3�Ø˜Õ$ QÕ'×+Ñ+¨JÓ7Ð?VÔVØ',¨ZÕ'8¸Õ';�MÓ$à#(¨Õ#4°QÕ#7¸
Õ#C�I“Lñ	 4ð
 Ð#Ð#r'   c                óp   € \        WV4      p\        V4      \        \        39   d   V# \	        RV: 24      h)z1Like `eval` but returns only integers and floats zr=)r×  rf   r6   r8   rÓ   )r°  rk  ré   r–   s   &&& r(   Úmyevalr   à  s3   € äˆQ�1‹€AÜˆAƒw”3œ�,ÔØˆÜ
�r˜!™�ZÓ
 Ð r'   z\A\b\w+\b\Zc                ó€  €  \        \        V / / 4      4      p^ VR3#   \         d     Mi ; i\        P	                  T 4      '       d   ^^ T 3# \        T 4      pT EF^  p\        T4      T8”  d   K  \        P                  ! RT,           R,           T 4      '       d   KC  \        P                  ! RT,           R,           \        P                  4      pTP	                  T 4      pT'       g   K‘   TP	                  T 4      pT'       d<   TP                  R4       R^  RTP                  R	4       2pTP	                  T4      pKC  \        X/ / 4      p	TP	                  T 4      pT'       d<   TP                  R4       R^ RTP                  R	4       2pTP	                  T4      pKC  \        T/ / 4      T	,
          p
TP	                  T 4      pT'       d<   TP                  R4       RR
 RTP                  R	4       2pTP	                  T4      pKC  \        T/ / 4      pTP	                  T 4      pT'       d<   TP                  R4       RR RTP                  R	4       2pTP	                  T4      pKC  \        T/ / 4      pT
R
,          T	,           T8X  d   T
R,          T	,           T8X  d   Y©T3u # M  \         d     Mi ; i M	  R# )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')
Nz\w\s*\([^)]*\bú\bú(?P<before>.*?)\bú\b(?P<after>.*)r  r/  r0  r  g      à?g      ø?)NNN)r6   r   rÄ   Úgetlincoef_re_1rÏ   rV   r¼   r†  r½   r¾   rÐ   )r°  Úxsetr¹   Úlen_erë  rY  rñ   rZ  Úeero  r$  Úc2s   &&          r(   Ú
getlincoefrª  ë  sk  € ð*Ü”�q˜"˜bÓ!Ó"ˆØ�!�TˆzÐøÜô Ùðúä×Ñ˜Q×ÒØ�!�QˆwˆÜ�‹F€EÜˆÜˆq‹6�EŒ>ÙÜ�9Š9Ð&¨Õ*¨UÕ2°A×6Ò6áÜ�zŠzÐ.°Õ2Ð5GÕGÌÏÉÓNˆØ�J‰J�q‹Mˆß‰1ðØ—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°1°R·X±X¸gÓ5FÐ4GÐH�BØŸ™ B›’BÜ˜2˜r 2Ó&�Ø—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°1°R·X±X¸gÓ5FÐ4GÐH�BØŸ™ B›’BÜ˜2˜r 2Ó&¨Õ*�Ø—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°Q°r·x±xÀÓ7HÐ6IÐJ�BØŸ™ B›’BÜ˜2˜r 2Ó&�à—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°Q°r·x±xÀÓ7HÐ6IÐJ�BØŸ™ B›’BÜ˜B  BÓ'�Ø˜•G˜a•K 1Ô$¨¨S­°1­¸Ô):Ø ˜7’NùÜô ÙðúáñG ðH Ðs:   ‚ �+ª+Ã-J)ÄA J)Å'A'J)ÇA J)È0A5J)Ê)J7Ê6J7z\b[a-z][\w$]*\bc                 ó  € W9   dæ   W,          P                  R . 4      pRW,          9   dj   \        W,          4      '       gS   \        P                  W,          R,          4       F,  pWC9  g   K  WA9   g   K  W@8w  g   K  VP	                  V4       K.  	  VR,           FI  pVP                  V. 4      ;'       g    \        WAV4       F  pWS9  g   K  VP	                  V4       K  	  KK  	  M\        R\        V 4       R24       . pW2V &   V# )rn  rk  ºNNNz)_get_depend_dict: no dependence info for rµ   )rz  ÚisstringÚword_patternrã  r"  Ú_get_depend_dictr1   rÔ   )ro   r*  ÚdepsÚwordsÚwordr‹  s   &&&   r(   r¯  r¯  2	  sß   € Ø„|Ø•
—‘˜x¨Ó,ˆà�$•*Ô¤X¨d­j×%9Ò%9Ü$×,Ñ,¨T­Z¸­_Ö=�ð Ö$¨®¸$¾,Ø—L‘L Ö&ñ	 >ð
 ˜!—H�HˆDØ—X‘X˜d BÓ'÷ :ð :Ü'¨°DÓ9ò:�à–>Ø—L‘L –Oó:ò ô 	Ð;¼DÀ»J¸<ÀrÐJÔKØˆØˆ�JØ€Lr'   c                 óf   € \        V P                  4       4      p/ pV F  p\        W0V4       K  	  V# r+   )ro  rp  r¯  )r*  rs   Údepend_dictr§   s   &   r(   Ú_calc_depend_dictrµ  H	  s1   € Ü�—‘“Ó€EØ€KÛˆÜ˜ +Ö.ñ àÐr'   c                 ó¶  € \        V 4      p. p\        VP                  4       4       F&  pW,          '       d   K  VP                  V4       W K(  	  V'       d_   \        VP	                  4       4       F?  w  r4V Uu. uF  qUV9   g   K  VNK  	  ppV'       g   VP                  V4       W K;  WaV&   KA  	  Kf  V Uu. uF  q3V 9   g   K  VNK  	  up# u upi u upi r+   )rµ  ro  rp  r"  rN  )r*  r´  rs   ro   Úlstr§   Únew_lsts   &      r(   Úget_sorted_namesr¹  P	  sÂ   € Ü# DÓ)€KØ€EÜ�[×%Ñ%Ó'Ö(ˆØ× Ö Ø�L‰L˜ÔØÒ!ñ )÷ Ü˜k×/Ñ/Ó1Ö2‰IˆDÙ"%Ó:¡#˜Q¨kÑ)9—q�q¡#ˆGÐ:ßØ—‘˜TÔ"ØÒ%à$+˜DÓ!ó 3ñ #Ó3™U�T¨d¡l�DˆD™UÑ3Ð3ùò ;ùò 4s   Á;CÂCÂ;CÃCc                 ó¼   € V ^ ,          R9   d   V ^R p \         P                  V 4      '       d   ^# \        P                  V 4      '       d   ^# RV ,           R,           # )é    ú'"zkind(r0  r   )rÕ  rÏ   Úreal8pattern)ra   s   &r(   Ú
_kind_funcr¾  b	  sQ   € àˆa…y�EÔØ˜˜"�ˆÜ×Ñ˜6×"Ò"ÙÜ	×	Ñ	˜F×	#Ò	#ÙØ�VÕ˜cÕ!Ð!r'   c                 ó€   € ^
V ,          pVR8:  d   ^# VR8:  d   ^# VR8:  d   ^# VR8:  d   ^# V^^€,          8:  d   ^# R# )é
   é   i   l        l            r   r&   )r–   rñ   s   & r(   Ú_selected_int_kind_funcrÂ  m	  sF   € à
ˆa�€AØˆF„{ÙØˆG„|ÙØˆG„|ÙØˆG„|ÙØˆA��H„}ÙØ€Ir'   c                 óÚ   € V ^8  d   ^# V ^8  d   ^# \         P                  ! 4       P                  4       pVP                  R4      '       d   V ^!8:  d   ^#  R# V ^8  d   ^
# V ^!8:  d   ^# R# )é   )
Úaarch64ÚalphaÚarm64Ú	loongarchÚmipsÚpowerÚppcÚriscvÚs390xÚsparcr   )ÚplatformÚmachinerž   rˆ   )Úpr–   ÚradixrÐ  s   &&& r(   Ú_selected_real_kind_funcrÓ  }	  sr   € ð 	ˆ1„uÙØˆ2„vÙÜ×ÒÓ ×&Ñ&Ó(€GØ×ÑÐw×xÒxØ�Œ7Ùð ð €Ið	 
ˆRŒÙØ	
ˆbŒÙØ€Ir'   c           	      óÆ	  € \         P                   ! V4      p\         P                   ! V4      pR \        3R\        3R\        33 F  w  rEWC9  g   K  WSV&   K  	  . p\	        V 4       F9  pRW,          9   g   K  RW,          R,          9   g   K(  VP                  V4       K;  	  \        P                  ! R\        P                  4      p\        P                  ! R\        P                  4      p	\        P                  ! R\        P                  4      p
V EF”  pRW,          9   Edb   W,          R,          p\        W,          4      '       d*   VP                  4       pR F  pVP                  ! V!  pK  	  VP                  R	V4      pV	P                  R
V4      pRpRW,          9   d[   R W,          R,          9   dG   \        V4      pVP                  RW,          R,          R ,          ,           R4      p\        V4      V8  pV'       g€   V
P                  V4      '       gi   VP                  R4      p\        V4      ^8”  dH   RP!                  VRR 4      P                  4       P                  VR,          P                  4       R4      p\#        W,          4      '       d¡   \%        V4      p\&        P)                  V4       Fj  p\%        VVP+                  4       VP-                  4        P                  4       P                  RR4      4      VVP+                  4       VP-                  4       % Kl  	  RP!                  V4      pM&\/        W,          4      '       d   \1        RV R24       W,          R,           Uu. uF;  pVP3                  R4      '       g   K  VP5                  R4      P7                  4       NK=  	  up;'       g    R.^ ,          p\&        P9                  V4      '       d   ^pM\:        P9                  V4      '       d   ^p \=        W³VVR7      W'&   \A        W,          4      '       d0   \C        W',          \D        4      '       d   \G        W',          4      W'&   VP                  4       pVV8w  d   W',          VV&   EKp  EKs  \I        W,          4       \1        RV: R24       EK—  	  V# u upi   \>         d"   pY²T&   \1        RT RT: R24        Rp?LÂRp?ii ; i)rM  Úselected_int_kindÚselected_real_kindrg  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*\)rk  z
kind("\1")zselected_int_kind(\1)Frh  rî   r   Nr  r°  zAget_parameters[TODO]: implement evaluation of complex expression rµ   rý   )Údimspeczget_parameters: got "ú" on zget_parameters:parameter z does not have value?!
))z.false.ÚFalse)z.true.ÚTruer   )%rÌ  r¾  rÂ  rÓ  r¹  r"  r¼   r½   r¾   Ú	islogicalrž   rÍ   ÚsubrV   rÏ   r!  rÙ   Úisdoublero  rÕ  rÖ  r‡  rù   Ú	iscomplexr1   rˆ   rß  r£   r†  r½  Ú
param_evalrÄ   r­  rç  r6   rÞ  r‚  )r*  Úglobal_paramsr€  Úg_paramsro   ÚfuncÚparam_namesr§   Úkind_reÚselected_int_kind_reÚselected_kind_rerü  ÚreplÚis_replacedÚ
orig_v_lenÚv_rû  rñ   r9  r×  rê   Únls   &&                    r(   rÓ  rÓ  �	  s  € Ü�YŠY�}Ó%€FÜ�yŠy˜Ó'€HØ¤
Ð+Ø+Ô-DÐEØ,Ô.FÐGóK‰
ˆð ÖØ!�T‹Nñ	Kð
 €KÜ˜dÖ#ˆØ˜�Ö  [°DµG¸JÕ4GÖ%GØ×Ñ˜qÖ!ñ $ô �jŠjÐ<¼b¿d¹dÓC€GÜŸ:š:Ø8¼"¿$¹$ó@Ðä—z’zØ?ÄÇÁóGÐäˆØ�$•'�>Ø•˜•ˆAÜ˜�×!Ò!Ø—G‘G“I�ó�Dð
 Ÿ	š	 4Ñ(’Añð —‘˜M¨1Ó-ˆAØ$×(Ñ(Ð)AÀ1ÓEˆAð  ˆKà ¥Ô(ð ˜T�W ^Õ4Ô4Ü!$ Q£�JØŸ	™	 #¨­°Õ(?ÀÕ(GÕ"GÈÓL�Aô #& a£&¨:Ñ"5�KçØ'×-Ñ-¨a×0Ò0ØŸ™ ›�Bä˜2“w ”{ØŸG™G B s¨ GÓ,×2Ñ2Ó4×<Ñ<¸RÀ½V¿\¹\»^ÈRÓP˜ô ˜�× Ò Ü˜!“W�Ü&×/Ñ/°Ö2�AÜ,0Ø˜!Ÿ'™'›) A§E¡E£GÐ,×2Ñ2Ó4×<Ñ<¸SÀ#ÓFó-H�B�q—w‘w“y §¡£Ò)ñ 3ð —G‘G˜B“K‘ä˜4�7×#Ò#Üð FØFGÀSÈðLô Mð "&¥¨Ö!4ó5Ù!4˜AØŸ,™, {×3ô <˜Ÿ™ {Ó3×9Ñ9Ö;Ù!4ñ5÷ ?ð ?à9=¸ÀõCˆGô ×#Ñ# A×&Ò&Ø‘Ü×$Ñ$ Q×'Ò'Ø�ðCÜ& q°FÀGÔL�‘	ô
 ˜�× Ò ¤Z°µ	¼3×%?Ò%?Ü ¥	›N�‘	Ø—‘“ˆBØ�QŒwØ#�Y��r”
ò ô �$•'ŒNÜÐ/°©uÐ4LÐM×Nña ðb €Mùò15øô ô CØ�q‘	ÜÐ/°¨u°E¸!¹¸bÐA×BÑBûðCús$   Í7R/Î#R/Ð	R4Ò4S Ò?SÓS c                 ó*   € V R9   d   R# \        W4      # )ú(:)ú(*))rí  rî  r   )Ú_eval_scalar)Úlengthr€  s   &&r(   Ú_eval_lengthrñ  ô	  s   € ØÐ$Ô$ÙÜ˜Ó'Ð'r'   z\d+_c                 óf  € \        V 4      '       d   V P                  R 4      ^ ,          p  \        V / V4      p \        V \        4      '       d   \
        M\        ! V 4      p V #   \        \        \        3 d    T u # \         d+   p\        RT RT : R\        T4       R24        Rp?T # Rp?ii ; i)rî   r(  z" in evaluating z (available names: r­   N)Ú_is_kind_numberr!  r×  rç  rÀ   rÔ   rÙ  rØ  rÚ  rÄ   rm   ro  )r  r€  rê   s   && r(   rï  rï  ý	  s¯   € Ü�u×ÒØ—‘˜CÓ  Õ#ˆð8ä�U˜B Ó'ˆÜ# E¬3×/Ò/•´SÐ8¸%Ó@ˆð €Løô ”{¤IÐ.ô ØŠÜô 8Ü�!�C�5Ð(¨©	ð 2%Ü%)¨&£\ N°#ð7÷ 	8ð 	8à€Lûð8ús#   «5A" Á"B0Á<B0ÂB0ÂB+Â+B0c                óü)  a@aA€ \        V 4       \        V 4      w  r\        P                  ! V R,          4      pV R,          R8X  d   V R,          V9  d   / W0R,          &   RV R,          9   d•   VR RV R,          R,          9   d}   V R,          R,          R,          p\        V4      V R,           Uu0 uF  qUR,          kK  	  up,           F2  pRI F)  pWt9   g   K  \	        VP                  V/ 4      V4      W6&   K+  	  K4  	  . pV R,          p	V	 F  p
 W:,           VP                  V
4       K  	  \        VP                  4       4       F  pWi9  g   K  VP                  V4       K  	  \        V\        V 4      4      p/ p\        P                  ! R	4      P                  p\        VP                  4       4       F>  pV! V4      pV'       g   K  WïP                  4       VP!                  4        p WÆ,           K@  	  V EF�  pV^ ,          \        VP                  4       4      9   d"   \	        W6,          W&^ ,          ,          4      W6&   RW6,          9  Ed
   RW6,          9   d   RW6,          R,          9   gé   V'       dº   V^ ,          P%                  4       p\        VV,          P                  4       4       F}  pVR8X  d   VV,          V,          R8X  d   K!  WsV,          9  d   VV,          V,          W6,          V&   KI  VR8X  g   KR  VV,          V,           F  p\	        W6,          V4      W6&   K  	  K  	  M'W`R,          9   d   \'        RV: RV R,           R24       RW6,          9   dT   RW6,          R,          9   d@   W6,          R,          R,          p \)        \+        V/ V4      4      pVW6,          R,          R&   RW6,          9   dT   RW6,          R,          9   d@   W6,          R,          R,          p \)        \+        V/ V4      4      pVW6,          R,          R&   / pRW6,          9   Ed¯   W6,          R,          pVP/                  4        . W6,          R&   RJw  pppppV EF   p
V
R,          R8X  d   V
R,          P1                  4       ^RK pM¸V
R,          R8X  d   V
R,          P1                  4       ^RK pM�V
R,          R8X  d   V
R,          P1                  4       ^RK pMfV
R,          R8X  d   V
R ,          P1                  4       ^RK pM=V
R!,          R"8X  d   V
R#,          P1                  4       ^RK pM\	        W6,          V
4      W6&   V'       d    RW6,          9  d   . W6,          R&   \3        V4      P5                  R$4       Uu. uF  pVP1                  4       NK  	  up FI  pVP7                  R%R4      pVW6,          R,          9  g   K+  W6,          R,          P                  V4       KK  	  RpV'       d_   VP7                  R&R'4      pVP7                  R(R)4      pR"W6,          9  d   V.W6,          R"&   MW6,          R",          P                  V4       RpVe—   RW6,          9  d   . W6,          R&   \9        \3        V4      P5                  R$4       Uu. uF  pVP1                  4       NK  	  up4       F7  pVW6,          R,          9  g   K  W6,          R,          P                  V4       K9  	  RpVf   EK“  RW6,          9  d   . W6,          R&   \3        V4      P5                  R$4       Uu. uF  pVP1                  4       NK  	  up F7  pVW6,          R,          9  g   K  W6,          R,          P                  V4       K9  	  RpEK#  	  V'       EdM   RW6,          9  Ed?   . W6,          R&   \9        \3        V4      P5                  R$4       Uu. uF  pVP1                  4       NK  	  up4       EFí  p \;        VV4      pVR+8X  d   R+MR,pVV8X  d   V.pM\3        VR+4      P5                  R-4      p\A        V4      ^8X  d   R,V9   d   R,.pR,p\A        V4      ^8X  d   V^ ,          V8w  d   R.V^ ,          .p\A        V4      ^8X  Ed8   \C        \D        PF                  PH                  V4      w  pp V V,
          ^,           p!V!PK                  \D        PL                  PN                  R/7      p/ p"V R,           FÂ  p\D        PP                  ! V4      p#V!PS                  V#4      '       g   K2   V!PU                  V#4      w  r¥W¥3R0 lp$\        V
PW                  4       4      p%V%PY                  VPW                  4       4       V% U#u0 uF"  p#V#P\                  V9   g   K  V#P\                  kK$  	  p'p#V$\        V'4      3V"V&   KÄ  	  V"VV&   W6,          R,          P                  V4       EKð  	  RW6,          9  Edf   RV 9   Ed^   W`R,          9   EdP   W6,          P                  R. 4      p(. p)\_        \`        \b        \d        4      ! W6,          4      p*\g        W6,          4      '       Ed    \i        W6,          R,          4       EFá  w  p+pVP                  V4      o@S@f   EMÎV*'       EdÆ   S@Pk                  4        EF°  w  pw  p,p-V@VA3R1 loA\        4       p.SA! VV.4       VV(9   g   R2W>,          9   g   RW>,          9   d   KG  V,e˜   VV.9  d‘   R3p/V,! \D        PP                  ! R4V R5V+ R624      4      p0V0PK                  \D        PL                  PN                  R/7      p0V0W>,          R2&   V.V-,           W>,          R&   RW>,          9  d   R4V R5V+ R7V 2.W>,          R&   MwR8p/RW>,          9  d   . W>,          R&   R9W>,          R,          9  d   W>,          R,          P                  R94       V(P                  V4       V)P                  R4V R5V+ R7V 24       W>,          P                  R. 4      p1R:V19   g#   R;V19   g   T1P                  V/'       d   R;MR:4       V1'       g   EK¥  V1W>,          R&   EK³  	  S@f   EKó  S@Pk                  4        FÚ  w  pw  p,p-W>,          P                  R. 4      p'W>,          P                  R. 4       F^  p2V2Pm                  R4      '       g   K  RPo                  V2P5                  4       4      p2V'Pq                  V2^RK P5                  R<4      4       K`  	  V''       d   \        \        V'4      4      W>,          R&   VV'9  g   KÉ  V(P                  V4       KÜ  	  EKä  	  MÁ\s        W6,          4      '       d«   RW6,          9   dž   R,W6,          R,          9   d4   \u        W6,          R,          R,,          V4      p3V3W6,          R,          R,&   MVRW6,          R,          9   dC   \u        W6,          R,          R,          V4      p3W6,          R,          R V3W6,          R,          R,&   V)'       d   V)W6,          R&   V('       d   \        \        V(4      4      W6,          R&   R2W6,          9   g   EKb  RW6,          9  d   . W6,          R&   R:W6,          R,          9  d3   R;W6,          R,          9  d   W6,          R,          P                  R:4       RW6,          9  d‡   . W6,          R&   \        VPk                  4       4       F@  w  rïV! W6,          R2,          4      '       g   K"  W6,          R,          P                  V4       KB  	  W6,          R,          '       g
   W6,          R \w        W6,          4      '       g   EKm  \y        W6,          R2,          V4      W6,          R2&   EK’  	  \        VP                  4       4       EF   pW`R,          8X  g   K  R"W6,          9   d   W6,          R",          V R"&   V R,          R8X  g   KB  R=V 9   d0   V R=,          V9   d"   \{        W6,          W0R=,          ,          4      W6&   R>V 9   g   K�  V R>,          p4V4P7                  R?R4      p5V4V58X  * p6V5P7                  R@R4      p4V4V58X  * p7\|        ^ ,          P                  V44      pV'       Ed   \        VP�                  RA4      VP�                  RB4      4      w  p8p9pp:\ƒ        V8V94      w  p;p<p=V8W6,          R&    V R=,          '       d   V8W0R=,          ,          R&   T;'       d+   RT;9   d    \+        T;R,          / T4      T;R&   T;Y6,          R&   T<'       d   T<Y6,          R&   T='       d   T=Y6,          RC&   T6'       d   \	        Y6,          R?4      Y6&   T7'       d   \	        Y6,          R@4      Y6&   EKÞ  EKá  \'        RD\…        V R>,          4       RE24       EK  	  V R,          RL9  Ed   RFV 9   d-   \        P                  ! V R,          V RF,          ,           4      p>M\        P                  ! V R,          4      p>\        VP                  4       4       F<  p\_        \†        \ˆ        4      ! W6,          4      '       g   K+  V>P                  V4       K>  	  RGV 9   dˆ   V>Pq                  \        V RG,          P                  4       4      4       \        V RG,          P                  4       4       F4  pV RG,          V,           F  pVV>9  g   K  V>P                  V4       K  	  K6  	  V R,          R8X  d9   R=V 9   d   V>P                  V R=,          4       MV>P                  V R,          4       V R,          RM9   d2   V R,          p?V?V9   d"   RVV?,          9   d   VV?,          R,          V R&   V R,          RH8X  d)   V>Pq                  \        VP                  4       4      4       \        VP                  4       4       F  pVV>9  g   K  W6 K  	  V# u upi   \         d     EKâ  i ; i  \         d;    \        P                  ! R
T R2\        P"                  4      P                  YÆ&    EK€  i ; i  \,         d     ELŸi ; i  \,         d     ELQi ; iu upi u upi u upi u upi   \<        \>        \        3 d    \'        R*T: R)24        EL£i ; i  \Z         d'   p&Rp$\        T!PW                  4       4      p% Rp&?&EL\Rp&?&ii ; iu up#i   \,         d     ELôi ; i  \,         d     ELßi ; i)Nz@
Sets correct dimension information for each variable/parameter
r*  r+  r�  ro   r   rg  r)  r.  z[A-Za-z][\w$]*z.*\br¢  r2   rþ   Ú	undefinedz"analyzevars: typespec of variable z is not defined in routine r1  ri  rV   rh  rM  Nr4  rý   :r5  NN:Nr³   Nr  r²   rn  r™   rm  r¯   :Né   Nrj  :rö  NNr  rª   z\n\nz

z\n rµ   z4analyzevars: could not parse dimension for variable r   r   z@:@Ú1)Úlanguagec                 ó    € W,
          V,          # r+   r&   )r9  r$  ro  s   &&&r(   Úsolve_vÚanalyzevars.<locals>.solve_v¸
  s   € Ø01µ¸­{Ð(:r'   c                 óŽ   <€ SP                  V R . .4      ^,           F$  pW!9  g   K  VP                  V4       S! W!4       K&  	  R # r+   )rz  Úadd)rü  r°  Úv1Úcoeffs_and_depsÚcompute_depss   && €€r(   r   Ú!analyzevars.<locals>.compute_depsæ
  s?   ø€ Ø*9×*=Ñ*=¸aÀ$ÈÀÓ*LÈQ×*OÐ*O BØ')¦~Ø(,¯©°¬Ù(4°RÖ(>ó +Pr'   rk  Fzshape(r·  r0  z) == TÚinrÿ   r   r  r¦   r¢  ÚpureÚ	recursiver2  r  rl  zanalyzevars: prefix (z) were not used
rŽ  r  rf   rÇ  )NNNNNr   )rž  r•  r˜  r—  )rœ  r�  )Er[  rž  rÌ  r  rq  rz  r"  ÚKeyErrorro  rp  rÓ  rf  r¼   r½   rÏ   r‡  rù   r¾   rž   r1   rÀ   r×  rÄ   Úreverser£   r   r!  rÍ   ru   Úparam_parserÓ   rä  rV   rÂ  r   ÚExprÚparseÚtostringÚLanguagerº   Ú	as_symbolr  Úlinear_solveÚsymbolsr_  ÚRuntimeErrorr  Úl_orÚisintent_inÚisintent_inoutÚisintent_inplaceÚisarrayrà  rN  rˆ   rÙ   ræ  r­  rñ  Úisscalarrï  rx  rH  rÏ  rÐ   rÜ  rÔ   Úisintent_callbackÚisintent_aux)Br+  rœ  r�  r*  Úgenro  r§   rw  Úsvarsr.  r$  r€  Údep_matchesÚ
name_matchrü  rñ   Úln0ré   Údimension_exprsró  Údimr  rn  rm  rj  rë  r¹   Útmpr  Údim_charr  rA  Úd2ÚdsizeÚsolver_and_depsr9  rú  Úall_symbolsrê   Úv_depsÚn_depsÚn_checksÚ
n_is_inputrö  Úsolverr°  Úall_depsÚis_requiredr1  Úv_attrÚaarð  ÚprÚpr1ÚispureÚisrecr2   rò  rô  rþ  rÿ  rl  Ú
neededvarsro   rÿ  r   sB   &                                                               @@r(   r{  r{  
  s¾  ù€ ô �ÔÜ1°%Ó8Ñ€MÜ�9Š9�U˜6•]Ó#€DØˆW…~˜Ô#¨¨f­¸TÔ(AØ ˆ�6�]ÑØ	ˆU�6�]ÔØ�ˆHØ˜˜v� rÕ*Ô*Ø˜•- Õ# JÕ/ˆCÜ˜“Y°U¸6¶]Ó!C±]° F§) )±]Ñ!C×CÐC�Û.�AØ–xÜ"-¨d¯h©h°q¸"«o¸qÓ"A˜›ó /ñ Dð €EØ��=€DÛˆð	ØŽGØ�L‰L˜ŽOñ ô �$—)‘)“+ÖˆØŽ=Ø�L‰L˜ŽOñ ô ˜DÔ"3°EÓ":Ó;€Fð €KÜ—’Ð-Ó.×4Ñ4€JÜ�$—)‘)“+ÖˆÙ�q‹Mˆß‰1Ø—'‘'“)˜AŸE™E›GÐ$ˆAðGØ—�ñ ô ˆØˆQ�4”4˜	Ÿ™Ó(Ó)Ô)Ü! $¥'¨9°qµT­?Ó;ˆD‰GØ˜T�WÕ$Ø $¥'Ô)¨j¸D½GÀJÕ<OÔ.Oß Ø˜A�$Ÿ*™*›,�CÜ! -°Õ"4×"9Ñ"9Ó";Ö<˜Ø 
œ?¨}¸SÕ/AÀ!Õ/DÈÔ/SÙ$Ø¨¥GÔ+Ø)6°sÕ);¸AÕ)>˜D�G A›JØ *ž_Ø%2°3Õ%7¸×%:Ð%: Ü*5°dµg¸qÓ*A £ó &;ò =ð  �-Ô'ÜÐ@ÀÁð F*Ø*/°­-¨¸ð=ô >à˜T�WÔ$Ø˜� Õ/Ô/Ø•G˜NÕ+¨EÕ2�ðÜœD  B¨Ó/Ó0�Að 23�•˜Õ'¨Ñ.à˜T�WÔ$Ø˜� Õ0Ô0Ø•G˜NÕ+¨FÕ3�ðÜœD  B¨Ó/Ó0�Að 34�•˜Õ'¨Ñ/àˆØ˜�Õ Ø•7˜:Õ&ˆDØ�L‰LŒNØ"$ˆD�G�JÑØ/KÑ,ˆC�˜ ¨Ü�Ø�R•5˜KÔ'Ø˜R�5Ÿ;™;›=¨!¨BÐ/‘CØ�r•U˜hÔ&Ø �eŸk™k›m¨Q¨rÐ2‘FØ�r•U˜hÔ&Ø �eŸk™k›m¨Q¨rÐ2‘FØ�r•U˜gÔ%Ø˜r�UŸ[™[›]¨A¨bÐ1‘EØ�r•U˜f”_Ø˜b�EŸK™K›M¨1¨RÐ0‘Dä)¨$­'°1Ó5�D‘GßØ t¥wÔ.Ø,.˜� Ñ)Ü1?ÀÓ1G×1MÑ1MÈeÔ1TÓUÑ1T¨A˜aŸg™gžiÑ1TÔU˜àŸi™i¨¨RÓ0˜Ø d¥g¨hÕ&7Ö7Ø �G HÕ-×4Ñ4°SÖ9ñ	 Vð
 "�FßØŸ<™<¨°&Ó9�DØŸ<™<¨°Ó5�DØ T¥WÔ,Ø+/¨&˜� šà� �×.Ñ.¨tÔ4Ø�DØÒ%Ø t¥wÔ.Ø,.˜� Ñ)Ü&¼>È&Ó;Q×;WÑ;WÐX]Ô;^Ó'_Ñ;^°a¨¯©®	Ñ;^Ñ'_Ö`˜Ø D¥G¨HÕ$5Ö5Ø �G HÕ-×4Ñ4°QÖ7ñ að "�FØÕ$Ø d¥gÔ-Ø+-˜� Ñ(Ü1?ÀÓ1F×1LÑ1LÈUÔ1SÓTÑ1S¨A˜aŸg™gžiÑ1SÔT˜Ø D¥G¨GÕ$4Ö4Ø �G GÕ,×3Ñ3°AÖ6ñ Uð !“EñW ÷X ˆs�{¨$­'Õ1Ø')�•˜Ñ$Ü"Ü,:¸3Ó,?×,EÑ,EÀeÔ,LÓMÑ,L q˜Ÿ™žÑ,LÑM÷�Að
ô (¨¨6Ó2˜ð '(¨3¤h™s°C�HØ˜H”}Ø&˜Z™ä+¨A¨sÓ3×9Ñ9¸%Ó@˜Ü˜2“w !”|¨¨r¬	Ø!˜U˜Ø˜Ü˜2“w !”|¨¨1­°Ô(9Ø! 2 a¥5˜\˜Ü˜2“w !•|Ü!$¤X§]¡]×%8Ñ%8¸"Ó!=™˜˜BØ " R¥¨!¥˜Ø!ŸN™N´H×4EÑ4E×4GÑ4G˜NÓH˜ð +-˜Ø!& v§ ˜AÜ (× 2Ò 2°1Ó 5˜AØ$Ÿ~™~¨a×0Ô0ð!GØ+0×+=Ñ+=¸aÓ+@¡D Aà56ô %;ô 36°a·i±i³kÓ2B KØ$/×$6Ñ$6°q·y±y³{Ô$Cñ 5@ó*7Ù4?¨qØ'(§v¡v°¡~ô %+ A§F¤F±Kð !'ð *7ð 6=¼dÀ6»lÐ5J °Ó 2ñ- "/ð: .=˜¨Ñ*Ø•G˜KÕ(×/Ñ/°×2ñðB ˜$�'Õ! f°¥o¸!ÀV½}Õ:Lð
 •W—[‘[ ¨2Ó.ˆFØˆHÜœk¬>Ü.ô0Ø04µó9ˆJä�t•w×ÓÜ% d¥g¨kÕ&:×;‘D�A�qØ&5×&9Ñ&9¸!Ó&<�OØ&Ò.áß#˜ð 2A×1FÑ1F×1HÑ-˜A™~ ¨ö?ô
 (+£u˜HÙ(¨¨HÔ5Ø ! V¤Ø$'¨4­7¤NØ$,°µÔ$7ñ
 !)Ø%Ò1°a¸xÔ6Gð /4 Ù'-¬h×.@Ò.@Ø&,¨Q¨C¨r°!°°AÐ$6ó/8ó (9 à'+§}¡}Ü-5×->Ñ->×-@Ñ-@ð (5ó (B à/3 ¥¨¡ð 67°C¸$µJ ¥¨Ñ 1Ø#*°$µ'Ô#9ð +1°°°2°a°S¸¸a¸SÐ(Að8C D¥G¨GÑ$4øð /3 Ø#+°4µ7Ô#:Ø8: D¥G¨HÑ$5Ø#'¨t­w°xÕ/@Ô#@Ø$(¥G¨HÕ$5×$<Ñ$<¸TÔ$Bà &§¡¨aÔ 0Ø (§¡Ø&,¨Q¨C¨r°!°°E¸!¸Ð$=ô!?à%)¥W§[¡[°¸RÓ%@˜FØ$.°&Ô$8Ø'1°VÔ';Ø &§¡ß2=¡JÀ:ô!Oç%švØ6< ¥¨
Ô 3ñm 2Iðn 'Õ2à1@×1FÑ1FÖ1HÑ-˜A™~ ¨Ø%)¥W§[¡[°¸2Ó%>˜FØ&*¥g§k¡k°*¸bÖ&A Ø#%§=¡=°×#:Ô#:Ø)+¯©°·±³Ó)< BØ$*§M¡M°"°Q°r°(·.±.ÀÓ2EÖ$Fñ 'B÷  &Ü48¼¸V»Ó4E ¥¨Ñ 1Ø ¨žØ &§¡¨aÖ 0ô 2IòE <ôX ˜$�'×"Ò"Ø! T¥WÔ,Ø˜d�g nÕ5Ô5Ü!-¨d­g°nÕ.EÀcÕ.JØ.4ó"6˜à7=˜� Õ/°Ò4Ø $¥'¨.Õ"9Ô9Ü!-¨d­g°nÕ.EÀeÕ.LØ.4ó"6˜à �G NÕ3°EÐ:Ø7=˜� Õ/°Ñ4ßØ#+�•˜Ñ ßÜ$(¬¨V«Ó$5�•˜Ñ!à�$•'�>Ø ¥Ô(Ø&(�•˜
Ñ#Ø $¥'¨*Õ"5Ô5Ø $¥'¨*Õ"5Ô5Ø•˜
Õ#×*Ñ*¨:Ô6Ø˜t�wÔ&Ø$&�•˜Ñ!Ü  ×!2Ñ!2Ó!4Ö5‘D�AÙ˜� �—”Ø� Õ)×0Ñ0°Ö3ñ 6ð •w˜x×(Ô(Ø� Ð)Ü˜�× Õ Ü+¨D­G°C­L¸&ÓA�•˜”ñ[ ô^ �$—)‘)“+×ˆØ�f•ÖØ˜�Ô Ø $¥¨¥��f‘Ø�W�~ Ö+Ø˜uÔ$¨¨x­¸DÔ)@Ü(¨­°$¸XµÕ2GÓH�D‘GØ˜uÖ$Ø˜x��BØŸ*™* V¨RÓ0�CØ"$¨šm�FØŸ™ [°"Ó5�BØ!# sš]�EÜ$ Q�×-Ñ-¨bÓ1�Aß�qÜ:HØŸG™G F›O¨Q¯W©W°WÓ-=ó;?Ñ7˜ (¨D°%ä;HØ$ hó<0Ñ8˜
 J°à.6˜� 
Ñ+ð!Ø$ XŸœØDL ¨8¥_Õ 5°jÑ A÷ &Ø%¨Ô3ð!)Ü9=Ø(2°6Õ(:¸BÀó:H J¨vÑ$6ð 7A˜D�G NÑ3ß%Ø6@˜D�G NÑ3ß#Ø2:˜D�G JÑ/ß!Ü&1°$µ'¸6Ó&B˜D™Gß Ü&1°$µ'¸;Ó&G˜DœGò !ô  Ø3´D¸¸x½Ó4IÐ3JÐJ[Ð\÷^ñU ðX ˆW…~ÐVÕVØ˜5Ô ÜŸš 5¨¥=°5¸Õ3FÕ#FÓG‰JäŸš 5¨¥=Ó1ˆJÜ�d—i‘i“kÖ"ˆAÜÔ%¤|Ô4°TµW×=Ô=Ø×!Ñ! !Ö$ñ #ð �eÔØ×Ñœd 5¨¥>×#6Ñ#6Ó#8Ó9Ô:Ü˜% �.×-Ñ-Ó/Ö0�Ø˜w�¨×*Ð*�AØ 
Ö*Ø"×)Ñ)¨!Ö,ó +ñ 1ð ��>˜ZÔ'Ø˜5Ô Ø×!Ñ! %¨¥/Õ2à×!Ñ! %¨¥-Ô0Ø��>Ð7Ô7Ø˜•=ˆDØ�tŒ| ¨D°­JÔ 6Ø"& t¥*¨XÕ"6��h‘Ø��>˜VÔ#Ø×Ñœd 4§9¡9£;Ó/Ô0Ü�d—i‘i“kÖ"ˆAØ˜
Ö"Ø’Gñ #ð €Kùòi "Døô ô 	Ûð	ûô" ô GÜ!#§¢¨t°A°3°b¨M¼2¿4¹4Ó!@×!FÑ!F�•ðGûô2 !ô Úðûô !ô Úðüò4 Vùò" (`ùò Uùò Nøô '¬
´HÐ=ô Üð(Ø()¡u¨Bð0÷ðûôF (4ô !Gð /3 GÜ25°e·m±m³oÓ2F¦Kûð!Güò*7øôt  )ô !Ú ð!ûô (1ô !)Ú$(ð!)úsõ   Â1AOÄAO!Ç.AO4ÎAP<Ï5AQÖAQ ÚAQ%Ü(AQ*ß	AQ/
ß.AQ4ä AAR!å5AS
æAS
ÁC!ASÁDAS,ÁO!AO1ÁO0AO1ÁO4A AP9ÁP8AP9ÁP<AQÁQ
AQÁQAQÁQAQÁQ4&ARÁRARÁR!AS	ÁR,AS	ÁSAS	ÁSAS)ÁS(AS)ÁS,AS;ÁS:AS;z\A[a-z]+[\w$]*\Zc           	     óà  € Vf    \        WV4      pV# \        V4      ^8  g"   VRR\        V4      ^,
          1,          R8w  d   \	        RV R24      hV^R P                  R4      p\        V4      ^8X  d¥   V^ ,          P                  R	4      p\        V4      ^8X  d1   \        V^ ,          V4      p\        ^\        V4      ^,           4      pM[\        V^ ,          V4      p\        V^,          V4      p	\        \        V4      \        V	4      ^,           4      pM\	        R
V R24      hV P                  R4      '       d   V ^R MT P                  R4      p . p
V  F!  p \        W±V4      pV
P                  V4       K#  	  \        \        Wj4      4      pV#   \         d!   pT p\        RT RT : R24        Rp?T# Rp?ii ; i  \         d   p\        RT RT: R24        Rp?L|Rp?ii ; i)a‡  
Creates a dictionary of indices and values for each parameter in a
parameter array to be evaluated later.

WARNING: It is not possible to initialize multidimensional array
parameters e.g. dimension(-3:1, 4, 3:5) at this point. This is because in
Fortran initialization through array constructor requires the RESHAPE
intrinsic function. Since the right-hand side of the parameter declaration
is not executed in f2py, but rather at the compiled c/fortran extension,
later, it is not possible to execute a reshape of a parameter array.
One issue remains: if the user wants to access the array parameter from
python, we should either
1) allow them to access the parameter array using python standard indexing
   (which is often incompatible with the original fortran indexing)
2) allow the parameter array to be accessed in python as a dictionary with
   fortran indices as keys
We are choosing 2 for now.
Nzparam_eval: got "rØ  rµ   ra  zparam_eval: dimension z can't be parsedr  r   z.param_eval: multidimensional array parameters z not supportedr¶  r   rœ   )r×  rÄ   r1   rV   rÓ   r!  r  r¿   r6   rˆ   r"  rx  Úzip)rü  rá  r€  r×  rÑ  rê   ÚdimrangeÚboundÚlboundÚuboundÚv_evalÚitems   &&&&        r(   rß  rß  –  sê  € ð& ‚ð	;Ü�Q &Ó)ˆAð ˆô ˆ7ƒ|�aÔ˜7Ñ#5¤S¨£\°AÕ%5Ð#5Õ6¸$Ô>ÜÐ1°'°Ð:KÐLÓMÐMØ�q˜ˆ}×"Ñ" 3Ó'€HÜ
ˆ8ƒ}˜Ôà˜A•;×$Ñ$ SÓ)ˆäˆx‹=˜AÔÜ ¨¥¨VÓ4ˆEÜ˜Q¤ E£
¨Q¥Ó/‰Hä  ¨!¥¨fÓ5ˆFÜ  ¨!¥¨fÓ5ˆFÜœS ›[¬#¨f«+¸­/Ó:‰HäÐIØ#˜9 Nð4ó 5ð 	5ð —L‘L ×&Ò&ˆˆ1ˆR‰¨A×4Ñ4°SÓ9€AØ€FÛˆð	>Ü˜¨Ó/ˆDð 	�‰�dÖñ ô 	ŒS�Ó"Ó#€Aà€HøôK ô 	;ØˆAÜÐ'¨ u¨E°!±°bÐ9×:Ð:Øˆûð	;ûô> ô 	>ÜÐ'¨ u¨E°$±¸Ð<×=Ñ=ûð	>ús/   †F Å GÆGÆ"F=Æ=GÇG-ÇG(Ç(G-c                ó^  € RV 9   dj   V RV P                  R4       pW P                  R4      ^,           V P                  R4       p\        \        W14      4      p\	        W,          V,          4      # W9   d   \	        W,          4      # V FŸ  p\
        P                  ! RV,           R,           \
        P                  4      pVP                  V 4      pV'       g   KQ  VP                  R4      \	        W,          4      ,           VP                  R4      ,           p VP                  V 4      pKZ  	  V # )aç  Recursively parse array dimensions.

Parses the declaration of an array variable or parameter
`dimension` keyword, and is called recursively if the
dimension for this array is a previously defined parameter
(found in `params`).

Parameters
----------
d : str
    Fortran expression describing the dimension of an array.
params : dict
    Previously parsed parameters declared in the Fortran source file.

Returns
-------
out : str
    Parsed dimension expression.

Examples
--------

* If the line being analyzed is

  `integer, parameter, dimension(2) :: pa = (/ 3, 5 /)`

  then `d = 2` and we return immediately, with

>>> d = '2'
>>> param_parse(d, params)
2

* If the line being analyzed is

  `integer, parameter, dimension(pa) :: pb = (/1, 2, 3/)`

  then `d = 'pa'`; since `pa` is a previously parsed parameter,
  and `pa = 3`, we call `param_parse` recursively, to obtain

>>> d = 'pa'
>>> params = {'pa': 3}
>>> param_parse(d, params)
3

* If the line being analyzed is

  `integer, parameter, dimension(pa(1)) :: pb = (/1, 2, 3/)`

  then `d = 'pa(1)'`; since `pa` is a previously parsed parameter,
  and `pa(1) = 3`, we call `param_parse` recursively, to obtain

>>> d = 'pa(1)'
>>> params = dict(pa={1: 3, 2: 5})
>>> param_parse(d, params)
3
r/  Nr0  r£  r¤  r  r  )
rÑ  Úrfindr6   r  rÀ   r¼   r½   r¾   rÏ   rÐ   )r  r€  ÚdnameÚddimsrY   rÑ  rY  rñ   s   &&      r(   r  r  Ô  sò   € ðr ˆa„xà�,�1—6‘6˜#“;�ˆØ—&‘&˜“+ •/ !§'¡'¨#£,Ð/ˆô ”K Ó.Ó/ˆÜ�6•= Õ'Ó(Ð(Ø	
ŒÜ�6•9‹~ÐãˆAÜ—:’:Ø$ qÕ(Ð+=Õ=¼r¿t¹tóˆDð —
‘
˜1“ˆAß‘!Ø—G‘G˜HÓ%Ü˜�	“Nõ#Ø%&§W¡W¨WÓ%5õ6�à—J‘J˜q“M’ñ ð ˆr'   c                 óL  € T p\         P                  V 4      '       * pV'       d¸   \        V4      w  rV\        WR ,          V4      pRpV  FG  p	V	P	                  4       p	V	\
        P                  \
        P                  ,           9  d   Rp	W‰,           pKI  	  VR
,          R8X  d   VR,           pM	VR,           pTp WR ,          9   g   WR,          9   d   V R,           p K%  W9   d7   ^p
V \        V
4      ,           V9   d   V
^,           p
K"  V \        V
4      ,           p V'       d   XVR ,          V &   V # WR ,          9  d$   VR ,          P                  V/ 4      VR ,          V &   RV9   d@   W1R,          VR,          ,           9   d%   \        VR ,          V ,          R	4      VR ,          V &   V # )r*  Úe_rî   r°  Ú_er.  r–   r,  r-  rþ   r   )Úanalyzeargs_re_1rÏ   rž  rÔ  rž   ra   Úascii_lowercaseÚdigitsrÀ   rz  rq  )r$  r+  r.  Úorig_aÚ	a_is_exprrœ  r�  ÚatÚnar¹   rw  s   &&&        r(   Ú	expr2namerI  $  si  € Ø€FÜ$×*Ñ*¨1Ó-Ô-€IßÜ#5°eÓ#<Ñ ˆÜ˜q¨¥-°Ó?ˆØˆÛˆAØ—‘“	ˆAØœ×.Ñ.´·±Õ>Ô>Ø�Ø•ŠBñ	 ð
 ˆb�6�SŒ=Ø�c•‰Bà�d•ˆBØˆØ˜•=Ô  A¨v­Ô$6Ø�C•ŠAØ„yØˆØ”#�a“&�j˜DÔ Ø�A•ŠAØ”�A“�JˆßØˆˆf��aÑð €Hð	 ˜&•MÔ!Ø$ V�}×0Ñ0°¸Ó<ˆE�&�M˜!ÑØ˜%Ô F°KÕ.@À5ÈÕCVÕ.VÔ$VÜ*¨5°­=¸Õ+;¸ZÓHˆE�&�M˜!ÑØ€Hr'   c                 ó~  € \        V 4       \        V 4      w  rR V 9  d   . V R &   . pV R ,           F   p\        W@V4      pVP                  V4       K"  	  W0R &   RV 9   dN   \	        V R,          P                  4       4       F)  w  rVV F  pW@R,          9  g   K  / V R,          V&   K   	  K+  	  V R,           FU  pVR,          V9   g   K  RV 9  d   . V R&   VR,          V R,          9  g   K6  V R,          P                  VR,          4       KW  	  RV 9   d)   V R,          V R,          9  d   / V R,          V R,          &   V # )r.  r  r*  r)  ro   r,  r¦   )r[  rž  rI  r"  ro  rN  )r+  rœ  rî   r.  r$  rw  Úargs1ro  s   &       r(   ry  ry  F  s-  € Ü�ÔÜ)¨%Ó0Ñ€MØ�UÔØˆˆf‰Ø€DØ�6�]ˆ]ˆÜ�a Ó%ˆØ�‰�AŽñ ð ˆ&�MØ�%ÔÜ˜U 7�^×1Ñ1Ó3Ö4‰HˆAÛ�Ø &�MÖ)Ø')�E˜&•M !Ó$ó ñ 5ð
 �6�]ˆ]ˆØˆV�9˜ÖØ %Ô'Ø%'��kÑ"Ø��y  kÕ 2Ö2Ø�kÕ"×)Ñ)¨!¨F­)Ö4ñ ð �5Ô˜U 8�_°E¸&µMÔ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                 óö   € \        V \        4      '       d   R R/# \        V \        4      '       d   R R/# \        V \        4      '       d   R R/# \        V \        4      '       d   V # \        \        V 4      4      h)r2   r5   r3   r±  )rç  r6   r8   r±  rx  ÚAssertionErrorrÔ   )r–   s   &r(   Ú_ensure_exprdictrN  i  sk   € Ü�!”S×ÒØ˜IÐ&Ð&Ü�!”U×ÒØ˜FÐ#Ð#Ü�!”W×ÒØ˜IÐ&Ð&Ü�!”T×ÒØˆÜ
œ˜a›Ó
!Ð!r'   c                 óê  € W9   d   \        W,          4      # V P                  4       p \        P                  V 4      '       d   R R/# \        P                  V 4      pV'       dI   RVP                  4       9   d0   VP                  R4      '       d   \        R\        V 4       R24       R R/# \        P                  V 4      pV'       dI   RVP                  4       9   d0   VP                  R4      '       d   \        R\        V 4       R24       R R/# R Fk  p\        WR7      P                  R	V,           R	,           4       Uu. uF  qUP                  4       NK  	  up F  pWa9   g   K  \        W,          4      u u # 	  Km  	  / p\        P                  V 4      '       d   \        V ^R W4      pM‰\        P                  V 4      pV'       dm   VP                  R4      p\        VP                  R4      W4      pV'       d   R
V9   d   VR
 V'       g'   V^ ,          V9   d   \        W(^ ,          ,          4      # V ^ ,          R9   d	   R RRRR//# V'       g   \        R\        V 4       R24       V# u upi )r2   r±  ro   z6determineexprtype: selected kind types not supported (r­   r5   r3   r   r/  rb  rg  r¼  r  ri  z4determineexprtype: could not determine expressions (z) type.
)Ú+r³  r   rµ  r   )rN  r£   Údetermineexprtype_re_1rÏ   Údetermineexprtype_re_2r  rÐ   r1   rÔ   Údetermineexprtype_re_3r   r!  Údetermineexprtype_re_4rÔ  Údetermineexprtype_re_5)	r"  r*  Úrulesrñ   Úoprë  r°  rñ  Úrns	   &&&      r(   rÔ  rÔ  u  s  € Ø„|Ü ¥
Ó+Ð+Ø�:‰:‹<€DÜ×#Ñ# D×)Ò)Ø˜IÐ&Ð&Ü×$Ñ$ TÓ*€AßØ�Q—[‘[“]Ô" q§w¡w¨v§¢ÜØHÌÈdËÈÐTWÐXôZà˜IÐ&Ð&Ü×$Ñ$ TÓ*€AßØ�Q—[‘[“]Ô" q§w¡w¨v§¢ÜØHÌÈdËÈÐTWÐXôZà˜FÐ#Ð#Û"ˆÜ%3°DÔ%C×%IÑ%IÈ#ÐPRÍ(ÐUXÍ.Ô%YÓZÑ%Y —'‘'–)Ñ%YÔZˆAØŽyÜ'¨­Ó0Ô0ó [ñ #ð 	€AÜ×#Ñ# D×)Ò)Ü˜d 1 R˜j¨$Ó6‰ä"×(Ñ(¨Ó.ˆßØ—‘˜“ˆBÜ! !§'¡'¨&£/°4Ó?ˆAß�Z 1”_Ø�j�MßØ�a•5˜E”>Ü+¨E°Qµ%­LÓ9Ð9ØˆA…w�%ÔØ˜K¨¸#¸s¸ÐDÐDßÜØBÄ4ÈÃ:À,ÈiÐXô	Zà€Hùò+ [s   ÅI0rµ   c                 óö  € \        V 4       R p\        V \        4      '       dj   V  Fa  pV'       dC   VR,          R9   d5   VR,          \        9   d   K-  \        '       d   VR,          \        9  d   KM  V\        WAVR7      ,           pKc  	  V# R pR pR pV R,          pVR8X  d   R # . p	RV 9   d
   V R,          pRV 9   d{   V R,          p
V R,           F9  p\        W°V	4      p\        W«,          4      '       d   K(  V	P                  V4       K;  	  V R,          R8X  g	   V	'       d   RR	P                  V	4       R
2pR pRV 9   dL   \        V R,          P                  4       4       F'  pV V\        ,            V RV R,          V,           2pK)  	  V P                  R. 4      R,          pVR8X  d   RV9   d   VP                  R4       V'       d'   V V\        ,            RR	P                  V4       RV 2pR pRV 9   d   \        V R,          V\        ,           4      pR pRV 9   d   \        V R,          V\        ,           4      pVR8X  d   R pR pRV 9   d4   RV R,           R
2pV R,          V	9  d   V	P                  V R,          4       \        V R,          V\        ,           VR7      p\!        W R,          W‘\        ,           VR7      p
R pRV 9   d   V'       g   RV R,           2pRV 9   d]   R p\        V R,          P#                  4       4       F-  w  ppV V\        ,            RV RR	P                  V4       R
2pK/  	  VV,           pVR8X  d
   VR8X  d   R pV V V RV V V RV V V V
 V V V RV RV 2pV# ) r   r+  r�  ro   r’  r”  r.  r*  r/  r  r0  r  rª   r  r¬  Úcallbackúintent(z) r  r
  rŸ  r¦   z	 result (r)  r–  z! in r  zentry r—  rš  zend rÆ  )r[  rç  ro  r"   r#   r–  rI  r  r"  rÙ   rp  r   rz  rË  Úuse2fortranÚcommon2fortranÚvars2fortranrN  )r+  rh  r“  rl  rk  r¢  ro   r.  Ú	blocktypeÚargslr*  r$  r  rw  Ú
intent_lstr  r
  r¦   r)  ÚmessÚentry_stmtsrö  s   &&&                   r(   r–  r–  ¢  sw  € ô �ÔØ
€CÜ�%œ×ÒÛˆAß�Q�w•ZÐ#=Ô=Ø�V•9¤	Ô)Ùß“9  6¥´)Ô!;ÙØÔ(¨¸lÔKÕKŠCñ ð ˆ
Ø€FØ€DØ€DØ�g•€IØ�IÔÙØ€EØ�„Ø�V�}ˆØ�„Ø�V�}ˆØ�v—�ˆAÜ˜! EÓ*ˆAÜ$ T¥W×-Ô-Ø—‘˜Q–ñ ð ��>˜ZÔ'¯5Ø�s—x‘x “Ð' qÐ)ˆDØÐØ˜UÔ"Ü�eÐ.Õ/×4Ñ4Ó6Ö7ˆAØ#3Ð"4°S¼7µ]°OÀAÀ3ÀaØ#(Ð);Õ#<¸QÕ#?Ð"@ð!BÒñ 8ð —‘˜8 RÓ(¨Õ+€JØ�JÔ :°Ô#;Ø×Ñ˜*Ô%ßØ/Ð0°´wµ°Ø% c§h¡h¨zÓ&:Ð%;¸2¸d¸VðEÐà
€CØ�„~Ü˜% �,¨¬g­Ó6ˆØ€FØ�5ÔÜ  h¥°´wµÓ?ˆØÐ"Ô"ØˆØ€FØ�5ÔØ˜U 8�_Ð-¨QÐ/ˆØ��? %Ô'Ø�L‰L˜˜x�Ô)Ü˜E &�M¨3´­=À|ÔT€DÜØ�V�}˜e¬7¥]ÀôO€Dà€DØ�„Ÿ|Ø�u˜V•}�oÐ&ˆØ�%ÔØˆÜ˜˜w�×-Ñ-Ó/Ö0‰DˆAˆqØ(˜M¨#´­-¨¸¸q¸cÀÀ3Ç8Á8ÈAÃ;À-ÈqÐQŠKñ 1à�kÕ!ˆØ�LÔ  T¨^Ô%;ØˆØˆU�6�(˜9˜+ Q t f¨T¨F°6°(¸!ØˆVÐ$Ð% c U¨4¨&°°¸¸¸s¸eÀ4Øˆ[˜˜$˜ð!€Cð €Jr'   c           
      óÚ   € R p\        V P                  4       4       FK  pVR8X  d!   V V RRP                  W,          4       2pK*  V V RV RRP                  W,          4       2pKM  	  V# )r   r¾  zcommon r  zcommon /z/ )ro  rp  rÙ   )r
  rh  rl  rw  s   &&  r(   r]  r]  ì  sp   € Ø
€CÜ�&—+‘+“-Ö ˆØ�Œ=Ø�E˜#˜˜g c§h¡h¨v­yÓ&9Ð%:Ð;ŠCà�E˜#˜˜h q c¨¨C¯H©H°VµYÓ,?Ð+@ÐAŠCñ	 !ð
 €Jr'   c                 óx  € R p\        V P                  4       4       EF  pV V RV R2pW,          / 8X  d   V'       d   VR	,          R8X  d   VRR	 pK8  RW,          9   d   W,          R,          '       d   V R2pRW,          9   d�   W,          R,          '       dx   Rp\        W,          R,          P                  4       4       FK  pWPV,          R,          V,          8X  d   V V V 2pRpK*  V V V RW,          R,          V,           2pRpKM  	  V'       g   EK  VR	,          R8X  g   EK  VRR	 pEK  	  V# )
r   zuse r  NrÀ  z only:rÂ  rª   z=>r   rS  )r  rh  rl  rñ   r¹   rw  s   &&    r(   r\  r\  ö  s   € Ø
€CÜ�#—(‘(“*×ˆØ��c�U˜$˜q˜c Ð#ˆØ�6�RŒ<ß�s˜2•w #”~Ø˜#˜2�h�ÙØ�S•VÔ ¥ v§¤Ø�E˜�.ˆCØ�C•FŒ?˜s�v eŸ}œ}ØˆAÜ˜#�& �-×,Ñ,Ó.Ö/�Ø˜A�˜u� aÕ(Ô(Ø ˜E !  Q C˜.�CØ’Aà ˜E !  Q C r¨#­&°­-¸Õ*:Ð);Ð<�CØ’Añ 0÷ Š3�3�r•7˜c—>Ø�c�r�(‹Cñ% ð& €Jr'   c                 ó¾   € V R ,          p. pV F9  p \        4       RV 2,          pV! V 4      '       d   VP                  V4       K9  K;  	  V#   \         d     KM  i ; i)r  Ú	isintent_)Úglobalsr"  r  )rm  r·  rl  r  r_  s   &    r(   Útrue_intent_listri    si   € Ø
ˆh�-€CØ
€CÛˆð	#Ü“	˜I f XÐ.Õ/ˆAñ ��vŠvØ—
‘
˜6Ö"ñ ñ ð €Jøô ô 	Úð	ús   ’AÁAÁAc           	      ó  € \        V 4       R p. pV F#  pWpR,          9   g   K  VP                  V4       K%  	  RV 9   dA   V R,           F3  pWq9   d   Wv9  d   VP                  V4       K"  K$  \        RV R24       K5  	  RV 9   d   VP                  V R,          4       V'       g:   \	        VP                  4       4       F  pWv9  g   K  VP                  V4       K  	  V EF�  pRW,          9   dV   W,          R,           FB  pW�9   g   K  RW,          9   g   K  WqV,          R,          9   g   K0  \        RV RV R	24       KD  	  R
V 9   dª   WpR
,          9   d�   \        W,          4      '       d
   V V RV 2pV V RV 2p\        W,          4      '       d
   V V RV 2pWq9   d   RW,          9  d   KØ  ^p	V R,           F$  p
WzR,          8X  g   K  V
R,          R8X  g   K"  ^ p	 M	  V	'       d   EK  Wq9  d   \        V4       \        RV R24       EK9  WpR,          8X  d)   V R,          R8w  g   V P                  R4      '       d   EKn  RW,          9  dW   RW,          9   d'   RW,          R,          9   d   Wr9   d
   V V RV 2pEK®  \        W,          4       \        RV R24       EKÑ  W,          R,          pVR8X  d#   RW,          9   d   V RW,          R,           R2p/ pRW,          9   d   W,          R,          pMRW,          9   d   W,          R,          pRV9   d.   VR,          R49   d   V R VR,           R2pMWV RVR,           2pMHR!V9   d,   V R"VR!,           2pR#V9   d   V R$VR#,           R2pMV R2pMR#V9   d   V R%VR#,           R2pR&pRW,          9   do   W,          R,           Uu. uF  pVR59  g   K  VNK  	  ppV'       d    R'V9   d   R(V9   d   VP                  R(4       V'       d   V R)R*P                  V4       2pR*pR+W,          9   d)   V V R,R*P                  W,          R+,          4       R2pR*pR-W,          9   d5   \        W,          4      pV'       d   V V R.R*P                  V4       R2pR*pR/W,          9   d)   V V R0R*P                  W,          R/,          4       R2pR*pRW,          9   d)   V V R1R*P                  W,          R,          4       R2pR*pR2W,          9   dX   W,          R2,          pW,          R,          R69   d*    \        V4      pRVP                   R*VP                    R2pV R3V R2V 2pMV R3V 2pV V V 2pEK“  	  V# u upi   \"         d     L3i ; i)7r   r*  rŽ  zvars2fortran: Confused?!: "z" is not defined in vars.
r£  rn  z;vars2fortran: Warning: cross-dependence between variables "z" and "r®  r,  zintent(callback) z	external z	optional r2   r)  ro   r+  r�  z*vars2fortran: No definition for argument "rk   r¦   rg  rþ   z(vars2fortran: No typespec for argument "rf   rl  r/  r0  rh  ri  r   z*(rV   z(len=rM  z,kind=z(kind=rª   z
intent(in)zintent(out)r·  r  rý   r3  r  r[  rm  zcheck(zdepend(rk  z :: )r   r   )rþ   )r±  r  )r[  r"  rm   ræ  ro  rp  r  Ú
isoptionalÚshowr1   rz  rË  rÙ   ri  r×  r3   ÚimagrÄ   )r+  r*  r.  rh  r“  rl  Únoutr$  r  rß   ro  Úvardefrò  r¹   ré   ró  r·  rü  s   &&&&&             r(   r^  r^    sš  € Ü�ÔØ
€CØ€DÛˆØ�f•ÖØ�K‰K˜ŽNñ ð �uÔØ�|×$Ð$ˆAØŒyØ”=Ø—K‘K –Nñ !ô Ø1°!°Ð4OÐPöRñ %ð �UÔØ�‰�E˜*Õ%Ô&ßÜ�d—i‘i“kÖ"ˆAØŽ}Ø—‘˜A–ñ #ô ˆØ�t•wÔØ•W˜X×&Ð&�Ø–9 ¨T­WÖ!4¸À1½gÀhÕ>OÖ9OÜØUÐVWÐUXÐX_Ð`aÐ_bÐbfÐgöiñ 'ð ˜%Ô A¨{Õ);Ô$;Ü  ¥×)Ò)Ø˜˜c˜UÐ"3°A°3Ð7�Ø�E˜#˜˜i¨ sÐ+ˆCÜ˜$�'×"Ò"Ø˜˜c˜U )¨A¨3Ð/�ØŒy˜Z¨t­wÔ6ÙØˆDØ˜6—]�]�Ø˜&�	–> a¨¥j°JÖ&>Ø�DÙñ #÷ ÚØŒ=Ü�ŒJÜÐ@ÀÀÀ4ÐHÔIÚØ�f•ÔØ�W�~ Ô+¨u¯y©y¸×/BÒ/Bò
 Ø˜T�WÔ$Ø˜T�WÔ$¨°tµw¸zÕ7JÔ)JØ”9Ø ˜E #  i°¨sÐ3�CÚÜ�•ŒMÜÐ>¸q¸cÀÐFÔGÚØ•˜Õ$ˆØ�VÔ 
¨d­gÔ 5Ø�x˜q ¥¨Õ!4Ð 5°QÐ7ˆFØˆØ˜T�WÔ$Ø•w˜~Õ.‰HØ˜t�wÔ&Ø•w˜~Õ.ˆHØ�(Œ?Ø˜�} 
Ô*Ø"˜8 2 h¨s¥m _°AÐ6‘à"˜8 1 X¨c¥] OÐ4‘Ø�hÔØ�x˜u X¨e¥_Ð$5Ð6ˆFØ˜Ô!Ø"˜8 6¨(°6Õ*:Ð);¸1Ð=‘à"˜8 1˜‘Ø�xÔØ�x˜v h¨vÕ&6Ð%7°qÐ9ˆFØˆØ˜�Ô Ø#�w zÖ2ó .Ñ2˜!Ø Ñ,÷ �AÑ2ˆDð .ç °Ô 4¸È$Ô9Nð —‘˜MÔ*ßØ"˜8 2 c§h¡h¨t£nÐ%5Ð6�Ø�Ø˜$�'Ô!Ø�x ˜s *¨S¯X©X°dµg¸kÕ6JÓ-KÐ,LÈAÐNˆFØˆAØ�t•wÔÜ" 4¥7Ó+ˆCßØ"˜8 A 3 g¨c¯h©h°s«m¨_¸AÐ>�ØˆAØ�d•gÔØ�x ˜s &¨¯©°$µ'¸'Õ2BÓ)CÐ(DÀAÐFˆFØˆAØ�t•wÔØ�x ˜s '¨#¯(©(°4µ7¸8Õ3DÓ*EÐ)FÀaÐHˆFØˆAØ�$•'Œ>Ø•˜•ˆAØ�w�zÕ"Ð&CÔCðÜ˜Q›�AØ˜AŸF™F˜8 1 Q§V¡V H¨AÐ.�Að �x˜t A 3 a¨ sÐ+‰Fà�x˜t A 3Ð'ˆFØ��c�U˜6˜(Ð#‹ñI ðJ €JùòM.øô@ !ô Ùðús   Ï	U9ÏU9Ô0(U>Õ>VÖVc                 óF  € \        R ^ 4       \        V \        4       \        R^ 4       . s\	        \
        ^ ,          4      p\        R^ 4       \         F(  p\        RVP                   R2^ 4       \        W4      pK*  	  \        R^ 4       \        V4      p\        V,           # )zReading fortran codes...
zPost-processing...
z"Applying post-processing hooks...
z  rµ   zPost-processing (stage 2)...
)
r1   r×   r5  r   rw  r   Úpost_processing_hooksÚ__name__Útraverserj  )ÚfilesÚpostlistÚhooks   &  r(   Úcrackfortranrw  Ÿ  s�   € ô Ð(¨!Ô,Ü�Eœ9Ô%ÜÐ" AÔ&Ø€KÜœ 1�Ó&€HÜÐ1°1Ô5ß%ˆÜ�"�T—]‘]�O 2Ð&¨Ô*Ü˜HÓ+Šñ &ô Ð,¨aÔ0Ü˜(Ó#€HÜ˜Õ!Ð!r'   c                 ó\   € \        V 4      R ,           pRpR\         R2pW!,           V,           # )rµ   zE!    -*- f90 -*-
! Note: the context of this file is case sensitive.
z3
! This file was auto-generated with f2py (version:zZ).
! See:
! https://web.archive.org/web/20140822061353/http://cens.ioc.ee/projects/f2py2e
)r–  Úf2py_version)r+  ÚpyfÚheaderÚfooters   &   r(   Úcrack2fortranr}  °  s@   € ô ˜5Ó
! DÕ
(€Cð€Fð3Ü3?°.ð Að€Fð
 �<˜&Õ Ð r'   c                 ó˜   € \        V \        4      ;'       d4    \        V 4      ^8H  ;'       d    \        V ^ ,          \        \        34      # )rÄ  )rç  ÚtuplerV   r6   rÀ   )Úobjs   &r(   Ú_is_visit_pairr�  ¿  sB   € Ü�sœEÓ"÷ /ð /Ü�C“˜A‘÷/ð /ä˜3˜q�6¤C¬ :Ó.ð0r'   c                ó0  € \        V 4      '       d>   V ^ ,          R8X  d   V # V! WV.VO5/ VB pVe   \        V4      '       g   Q hV# T pV w  r€MRV 3pRp\        V \        4      '       dK   . p\        V 4       F8  w  rš\	        Wš3VW'.,           V.VO5/ VB w  r¼Vf   K'  VP                  V4       K:  	  MZ\        V \        4      '       dC   / pV P                  4        F+  w  rÚ\	        WÚ3VW'.,           V.VO5/ VB w  rïVf   K'  WöV&   K-  	  MT pVf   V# W†3# )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]  N)r�  rç  ro  rà  rs  r"  rx  rN  )r€  ÚvisitÚparentsr¦   r.  ÚkwargsÚ
new_resultÚparentÚ
result_keyrY   r  Ú	new_indexÚnew_itemr—  Únew_keyÚ	new_values   &&&&*,          r(   rs  rs  Å  sS  € ô8 �c×ÒØˆq�6�^Ô#àˆJÙ˜3¨ÐA°$ÒA¸&ÑAˆ
ØÒ!Ü! *×-Ò-Ð-Ð-ØÐØˆØ‰ˆ
�Cà˜�ˆØˆ
ä�#”t×ÒØˆ
Ü% cžN‰LˆEÜ"*¨E¨>¸5Ø+2°XÕ+=¸vð#<à,0ò#<à4:ñ#<ÑˆIð Ô$Ø×!Ñ! (Ö+ò +ô 
�Cœ×	Ò	Øˆ
ØŸ)™)ž+‰JˆCÜ!)¨3¨,¸Ø*1°HÕ*<¸fð";à+/ò";à39ñ";ÑˆGð Ô"Ø&/˜7Ó#ò &ð ˆ
àÒØÐØÐ!Ð!r'   c                ó¢  € VR,          w  rVV w  rxR p	VR9   d)   VR,          ^ ,          R8X  g   Q hVR,          ^,          p
M1VR8X  d)   VR,          ^ ,          R8X  g   Q hVR,          ^,          p
MRp
RpV
e8   TpV
P                  4        F   w  rÍ\        V4      '       g   K  V	! WË4      pK"  	  MyVR8X  ds   VR,          ^,          R,          p
TpV
P                  4        FE  w  rÍ\        V4      '       g   K  \        P                  ! RV,           R,           RV,           V4      pKG  	  Ve#   W¸8w  d   \	        R	V R
V RV RV R2	^4       W{3# R# )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.

c                 óš   € \         P                  ! R V ,           R,           W4      p\         P                  ! RV ,           R,           W4      pV# )z[*]\s*\br¢  z\b\s*[\[]\s*0\s*[\]])r¼   rÜ  )Úvarnamer  s   &&r(   Ú	fix_usageÚ8character_backward_compatibility_hook.<locals>.fix_usage  s>   € Ü—’�{ WÕ,¨uÕ4°gÓEˆÜ—’�u˜w•Ð)@Õ@Øó'ˆàˆr'   r*  rk  NÚcallstatementz
(?<![&])\br¢  r›   zcharacter_bc_hook[r“  z]: replaced `z` -> `z`
r   )rý   rm  éýÿÿÿrœ   )rN  Úischaracterr¼   rÜ  r1   )r:  r„  r¦   r.  r…  Ú
parent_keyÚparent_valuer—  r  r�  Ú	vars_dictrŒ  r�  Úvds   &&&*,         r(   Ú%character_backward_compatibility_hookr™    s`  € ð  ' r�{Ñ€JØ�J€Còð Ð+Ô+Ø�r�{˜1�~ Ô'Ð'Ð'Ø˜B•K •N‰	Ø	�ŒØ�r�{˜1�~ Ô'Ð'Ð'Ø˜B•K •N‰	àˆ	à€IØÒØˆ	Ø$Ÿ?™?Ö,‰KˆGÜ˜2�ŒÙ% gÓ9’	ò -ð 
�Ô	Ø˜B•K •N 6Õ*ˆ	Øˆ	Ø$Ÿ?™?Ö,‰KˆGÜ˜2�Œô ŸFšFØ! GÕ+¨eÕ3°S¸7µ]ÀIóO’	ñ	 -ð ÒØÔô
 Ð(¨¨°A°c°Uð ;"Ø"' ¨¨y¨k¸ð>Ø?@ôBàÐÐñ r'   Ú__main__r(  r   z-quietz-verbosez-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 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 r‹  r
   r   )r	   )z.f90z.f95z.f03z.f08)z.forz.ftnz.f77z.f)z([a-z]+[\w\s(=*+-/)]*?|)r�  r�  r÷   )z	[a-z\s]*?rœ  rœ  r÷   )r   rü   rü   r÷   )r   údimension|virtualr›  r÷   )r   rþ   rþ   r÷   )r   rÿ   rÿ   r÷   )r   r   r   r÷   )r   r  r  r÷   )r   r  r  r÷   )r   r  r  r÷   )r   úintent|depend|note|checkrœ  z\s*\(.*?\).*)r   r  r  z\s*\(.*)r   r  r  r÷   )r   r  r  r÷   )r   r  r  r÷   )r   r	  r	  r÷   )r   r
  r
  r÷   )r   r  r  r÷   )r   r  r  r   )r   r  r  r÷   )r   úKthreadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddefr�  r÷   )r»  )r  )rX  r+   )r   N)Nr   )r   )NN)r»  r»  )rµ   F)r   F)ÖÚ__doc__r‰   rÌ  rÁ   rƒ   rÏ  r¼   ra   r,   Úpathlibr   r€   ÚImportErrorr   r   r   ÚauxfuncsÚversionry  r   r   r   r   r   r   r   r   r   r   r   r»   r    r   r   r   r   r7  r   r   r6  r$   r   r#   r%   r   r"   r!   r   r)   r1   r›  r¹   rl   rx   r§   rp   ru   ry   r{   r½   r¾   r†  r¡   r¢   rÉ   rÏ   r¤   rŸ   rÈ   r”   r¨   rl  r×   ÚbeforethisafterÚfortrantypesrH  rÛ  rE  rF  Úgroupbegins77rÊ   Úgroupbegins90rË   Ú	groupendsrC  ÚendifsrB  ÚmoduleproceduresrN  rG  r8  r9  r;  r<  r?  r@  rA  r:  r=  r>  rJ  rM  rQ  rI  rK  rL  rD  ÚSr3  r4  rÎ   r%  rO  Úcrackline_bind_1rÎ  r5  rP  r   re  rx  r   r�  r�  rŽ  r�  rÕ  r½  r{  r}  r„  rŠ  r‘  rR  rè  rÏ  rÒ  rh  ri  rO  r7  r$  r-  rÐ  rÜ  rq  rr  rs  rY  r[  r^  rf  rj  rw  r|  rz  r}  rž  r   r¥  rª  r®  r¯  rµ  r¹  r¾  rÂ  rÓ  rÓ  rñ  ró  rï  r{  rB  rß  r  rI  ry  rQ  rR  rS  rT  rU  rN  rÔ  r–  r]  r\  ri  r^  rq  rw  r}  r�  rs  r™  r"  rr  rt  Úfuncsr_  Úf2Úf3ÚshowblocklistÚargvré   rm   rÔ   r†   rÛ   ÚOSErrorÚdetailru  rz  r.   r&   r'   r(   Ú<module>r³     s%  ðñLóZ Û Û Û 	Û Û 	Û Û 
Ý ðÛ÷ $ô
 à×"Ñ"€ð €	Ø€Ø	€Ø
€Ø
€Ø€Ø€Ø€Ø€Ø€Ø
€ð €Ø€Ø€Ø€ØÐ Ø€Ø€
Ø€Ü˜2Ð€	Ø€	Ø€Ø€Ø€	ØÐ Ø€Ø€	Ø€Ø€ò#ôLð Ð Û	!€AØ)¨6Ð2Ð˜Óñ 
"ã	€AØ)¨9Ð5Ð˜Óñ 
à€Ø€ð
ˆ%ð 
�ð 
˜7ð 
 Fð 
¨Gð 
°Vð 
¸Vð 
ÀVð 
ÈWð 
Ø
ð
Øð
Ø(ð
Ø*.ð
Ø05ð
Ø7@ð
ØBJð
ØLSð
à
ð
àð
à(ð
à*/ð
à18ð
à:>ð
à@Fð
àHPð
ð ð
ð ð
ð 'ð
ð )1ð
ð 3;ð
ð =Dð
ð FLð
ð ð	
ð ð	
ð !ð	
ð #*ð	
ð ,2ð	
ð 4:ð	
ð <@ð	
ð
 ð
ð
 ð
ð ð
ð ð
ð ð
ð %ð
ð '5ð
ð 7>ð
ð @Hð
ð JRð
ð ð
ð ó
€Að �e•)€HˆQ�KØ€K��E•	Óñ
òò,òò1ð —
’
Ð3°R·T±TÓ:×AÑA€Ø—*’*Ð1°2·4±4Ó8×?Ñ?€Ø—*’*Ð1°2·4±4Ó8×?Ñ?€Ø—*’*Ð1°2·4±4Ó8×>Ñ>€ò :Ð Ú8Ð ò3ò>ð4 '+°!ô ]DðB€ð D€Ø�zŠzØ�r˜<¨°tÐ<Õ<¸b¿d¹dóDØEKðL€àŸ
š
 ?ØˆÐ4Õ4°lÐEbÕ6bÐdhð6jõ $jØkm×koÑkoóqÐ ð —*’*˜_ð 0?õ ?Ø@BÇÁóFØGNðO€à—J’J˜ð 24õ  4Ø57·T±Tó;Ø<CðDÐ ð (€Ø—’Ø�r˜=¨-¸Ð>Õ>ÀÇÁóFØGNðO€àðõ€ð —’Ø�r˜=¨-¸Ð>Õ>ÀÇÁóFØGNðO€ð7€	à�ZŠZØ�r˜9 i°Ð6Õ6¸¿¹ó>Ø?DðE€
ð
 €à�zŠzØ�y &¨&°$Ð7Õ7¸¿¹ó?Ø@GðH€ð )Ð ØŸšØ�rÐ+Ð-=¸tÐDÕDÀbÇdÁdóLàðÐ ð —*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—:’:˜oð 18õ 8Ø9;¿¹ó?Ø@KðLÐ à—*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—
’
ØÐ4Õ4°b·d±dó<Ø=EðF€à—’ØÐ6Õ6¸¿¹ó>Ø?HðI€à—:’:ØÐ:Õ:¸B¿D¹DóBØCNðOÐ à—
’
˜?ð .Qõ QØRT×RVÑRVóXØYaðb€à—:’:ØÐ@Õ@À"Ç$Á$óHØITðUÐ à�jŠjØÐ0Õ0°"·$±$ó8Ø9?ð@€à�jŠjØÐ0Õ0°"·$±$ó8Ø9?ð@€à�zŠzØÐ2Õ2°B·D±Dó:Ø;BðC€à—’ØÐ6Õ6¸¿¹ó>Ø?HðI€à—
’
ØÐ4Õ4°b·d±dó<Ø=EðF€à�ZŠZØÐ.Õ.°·±ó6Ø7<ð=€
à—*’*ØÐ6Õ6¸¿¹ó>Ø?IðJ€à—
’
ØÐ4Õ4°b·d±dó<Ø=EðF€ð Ÿ*š* _ð 8Mõ &Mð OQ÷  OSñ  OSð  VX÷  VZñ  VZõ  OZó[ð ]oðoÐ à—:’:Ø9¸2¿4¹4óAØBMðNÐ òò(ð —’ÐAÀ2Ç4Á4ÓH€Ø—:’:ÐAÀ2Ç4Á4ÓHÐ Ø—Z’ZÐ kÐmo×mqÑmqÓrÐ ôX%òvô$ò&ô
ð@ —
’
ØKÈRÏTÉTóS€à—’ð%Ø&(§d¡dó,€ð —*’*ð rð  tv÷  txñ  txóy€à—*’*ð*Ø+-¯4©4ó1€ð —j’jØ@À"Ç$Á$óHÐ à—
’
Ø;ó=€à�zŠzØHóJ€ð ŸšÐ$AÀ2Ç4Á4ÓHÐ òòò ò ò t@ònò(ð8 �jŠjÐEÀrÇtÁtÓL€Ø�zŠzØIÈ2Ï4É4óQ€à�zŠzØ9¸2¿4¹4óA€à—’ð2à35·4±4ó9€ð —*’*ð Gð  IK÷  IMñ  IMóN€òò"òJnòb6,ôtô6ôôòòôô<ô@\ò~òD'ôT*òZ$ô&!ð —*’*˜^¨R¯T©TÓ2€òAðH �zŠzÐ,¨b¯d©dÓ3€òò,ò4ò$"òô ð$ (*ô bòJ(ð —*’*˜WÓ%×+Ñ+€òòDðN —:’:Ð1°2·4±4Ó8Ð ô;ò|Mð`  ô òDð6 ŸšÐ$6¸¿¹Ó=Ð ØŸšÐ$DÀbÇdÁdÓKÐ ØŸšØ1°2·4±4ó9Ð àŸš M°2·4±4Ó8Ð ØŸšÐ$EÀrÇtÁtÓLÐ ò	"ð )+ô (ôZGôTôò0ôzð@ Ð ò"ò"!ò0ð "$¨Dô ?"òD9 õx × Ò ÐBÔ Cð ˆzÕØ€EØ€EØ	€AØ	
€BØ	
€BØ€MØ�XŠX�b�\‰\ˆØ�Œ7ÙØˆq�T�SŒ[ØŠAØ�(Œ]ØˆEØŠGØ�*Œ_ØˆGØŠEØ�&Œ[ß‹yÙØVÐXYô[àˆMØ"ŠNØÐ"Ô"ØŠMØÐ%Ô%ØŠNØ�&Œ[ØˆIØ"ŠNØ�&Œ[ØˆIØ#ˆNØŠMØ�$ŒYØŠBØ�'Œ\ØŠMØ�$ŒYØŠBØˆq�T�SŒ[Ù�o¡d¨1£g Y¨bÐ1Ö2ßØˆBØŠKßØˆBØŠMßð2Ù�Q“—’”Ø—’˜Q—ð �LŠL˜�Oñc ÷d ‹9Ÿ›¯}«}Ùð ð ô	ñ ˜EÓ"€Hßƒ{ÙÐ/±´[Ó0AÐ/BÀ"ÐEÀqÔIÙ˜HÓ%ˆÙ”+˜s×#Ô# qØ�GŠG�CŒL÷ $çÙˆXŽñ ñQ øðYm ô ØÓðûðBo ô 2Ù˜) F¡:¨RÐ0×1Ó1ûð2ú÷" $×#ús5   ªq í$)qðr ñ	qñqñq=ñ$q8ñ8q=ò r	