î
mÐR\Ûq ã            @   @   s»(  d  Z  d d l m Z d d l Z d d l m Z d d l Td d l m Z m	 Z	 m
 Z
 m Z m Z m Z d d	 d
 d d d d d d d d d d d d d d d d d d d d d g Z d Z d  Z d! Z d" Z d# Z d$ Z d% Z i d& d 6d' d  6d( d! 6d) d" 6d* d# 6d+ d$ 6Z i e e d 6e e d  6e e e d, 6e e e d# 6e e e d- 6e e e d$ 6e d. 6e e e d/ 6e e e d0 6e e e d1 6e e d2 6e e d3 6j Z d4 Z d! Z d5 Z d  Z d Z d  Z d Z d Z  i d d  6d d 6d d 6d d 6d
 d  6d d4 6d	 d! 6d6 d5 6Z! d7 Z" d  d! d! d d d d d d d d d d d d d d d d d d d d d d  d d" d! d  d  d4 d8 d" d  d4 d" d! d9 d5 d5 d5 d  d! d9 d! d9 d  d  d  d  d  d  d  d  d  d  d4 d  d  d  d  d  d  d  g@ Z# d  d5 d5 d d d d d d d d d d d d d d d d d d d d d d  d d: d5 d  d  d4 d8 d8 d  d4 d: d! d9 d9 d9 d9 d4 d! d9 d! d9 d4 d4 d  d  d  d  d  d  d  d  d4 d  d  d  d  d  d  d  g@ Z$ d  d5 d5 d d d d d d d d d d d d d d d d d d d d d d  d d: d5 d  d  d4 d8 d8 d4 d! d: d! d9 d9 d9 d9 d4 d! d9 d! d9 d4 d4 d  d  d  d  d  d  d  d  d  d  d  d  d  d  d  d  g@ Z% d  d5 d5 d d d d d d d d d d d d d d d d d d d d d d  d d  d  d  d  d4 d8 d8 d4 d! d, d! d9 d9 d9 d9 d4 d! d9 d! d9 d4 d4 d  d  d  d  d  d  d  d  d  d; d< d= d< d= d  d  g@ Z& d  d5 d5 d d d d d d d d d d d d d d d d d d d d d d d d  d  d  d  d4 d8 d8 d4 d! d5 d5 d8 d9 d9 d9 d4 d5 d8 d5 d8 d4 d4 d  d  d  d  d  d  d  d  d  d9 d9 d: d9 d: d  d  g@ Z' i e# d> 6e# d= 6e$ d? 6e% d@ 6e% d3 6e& dA 6e& dB 6e' dC 6Z( dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d` da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt dt dt dt dt dt dt dt du dv dw dx dy dz dt dt g@ Z) id{ d d? d! d d| d} f d 6d~ d  d4 d! d4 d| d f d 6d€ d d d  d d| d| f d  6d d d d  d d| d| f d4 6d‚ d d? d! d d| d} f d! 6dƒ d d? d! d d| d} f d5 6d„ d d? d! d d| d} f d… 6d† d d? d! d d| d} f d9 6d‡ d d d! d d| d} f d" 6dˆ d d d! d d| d} f d8 6d‰ d d d  d d| dt f dŠ 6d‹ d  d? d! d  d| dŒ f d: 6d d d? d! d d| d} f dŽ 6d d d  d! d d| d| f d 6d‘ d  d4 d! d4 d| d’ f d“ 6d” d d d  d d| d| f d, 6d• d d d  d d| d| f d# 6d– d d d  d d| d| f d- 6d— d d d  d d| d| f d< 6d˜ d d d  d d| dt f d™ 6dš d d d  d d| d| f d> 6d› d d d  d d| d| f d= 6dœ d d d  d d| d| f d 6dž d d d  d d| d| f dŸ 6d  d d d  d d| d| f d¡ 6d¢ d d d  d d| d| f d; 6d£ d d d  d d| d| f d¤ 6d¥ d  d  d  d  d| d¦ f d§ 6d¨ d  d4 d! d  d| dŒ f d© 6dª d  d! dŽ d! d} d« f d¬ 6d­ d  d  d  d  d| d¦ f d? 6d® d4 d4 d  d4 d| d’ f d¯ 6d° d d d  d d| d| f d$ 6d± d d d  d d| d| f d² 6d³ d d d  d d| dt f d´ 6dµ d d d  d d| dt f d. 6d¶ d d? d! d d| d} f d· 6d¸ d d? d! d d| d} f d¹ 6dº d d d  d d| d| f d» 6d¼ d  d  d  d  d| d¦ f d½ 6d¾ d4 d4 d  d4 d| d¿ f d@ 6dÀ d4 d4 d  d4 d| d¿ f dÁ 6dÂ d4 d4 d  d4 d| d¿ f dÃ 6dÄ d4 d4 d  d4 d| d¿ f dÅ 6dÆ d4 d4 d  d4 d| d¿ f d2 6dÇ d4 d4 d  d4 d| d¿ f d3 6dÈ d d? d! d d| d} f dÉ 6dÊ d4 d4 d  d4 d| d¿ f dË 6dÌ d  d  d  d  d| d¦ f dÍ 6dÎ d d! d! d! dÏ dÐ f dÑ 6dÒ d d! d! d! dÏ dÓ f dA 6dÔ d d! d! d! dÏ dÐ f dÕ 6dÖ d d! d! d! dÏ dÓ f d× 6dØ d4 d5 d! d5 d| dÙ f dÚ 6dÛ d4 d5 d! d5 d| dÙ f d/ 6dÜ d4 d5 d! d5 d| dÙ f d0 6dÝ d4 d5 d! d5 d| dÙ f d1 6dÞ d4 d… d! d… d| dß f dà 6dá d4 d4 d  d4 d| dâ f dã 6dä d d  d! d  d| då f dæ 6dç d d dŠ d d| dt f d% 6dè d  d4 d! d4 d| d f dé 6dê d4 d4 d  d4 d| d’ f dë 6dì d4 d4 d  d4 d| d’ f dí 6dî d d d  d d| d| f dï 6dð d d d  d d| d| f dñ 6dò d d d  d d| d| f dó 6dô d d  d! d  d| d¦ f dB 6dõ d d d  d d| d| f dö 6d÷ d d d  d d| d| f dø 6dù d d d  d d| d| f dú 6dû d d dŠ d d| dt f dü 6dý d d d  d d| d} f dþ 6dÿ d d d  d d| d} f d 6dd d d  d d| d} f d6dd4 d5 d! d5 d} df d6dd  d4 d! d4 d| d’ f d6dd d d  d dÏ dÏ f d	6d
d d d  d d| d| f d6dd! d! d  d! d| df d6dd  d  d  d  d| d¦ f d6dd d d  d d| d| f d6dd d d  d d| d| f d6dd  d? d! d  d| dŒ f d6dd4 d! d! d! d| df d6dd4 d! d! d! d| df d6dd d d  d d| d} f d6dd d  d! d  d| d¦ f d6d d d d  d d| d| f d!6d"d d d  d d| d| f d#6d$d d d  d d| d| f d%6d&d d d  d d| d| f d'6d(d d  d! d  d| d¦ f d)6d*d d  d! d  d| d¦ f d+6d,d  d  d  d  d| d¦ f d-6d.d d d  d d| d| f d/6d0d! d! d  d! d| d1f d26d3d4 d! d! d! d| d1f d46d5d d d  d d| d| f d66d7d  d4 d! d4 d| d’ f d86d& d d  dŽ d  d| dŒ f d96d:d d d  d d| d| f d;6d<d d d  d d| d| f d=6d>d d d  d d| d| f d?6d@d d d  d d| d| f dA6dBd d d  d d| d} f dC6dDd d d  d d| d} f dE6dFd d d  d d| d| f dG6dHd d d  d d| d| f dI6dJd4 d4 d  d4 d| d’ f dK6dLd! d! d  d! d| d1f dM6dNd! d5 d! d5 d| dÙ f dO6dPd d  dŽ d  d} d¦ f dQ6dRd d d  d d| d| f dS6dTd d d  d d| dÏ f dU6dVd d d  d dÏ dÏ f dW6dXd  d  d  d  dÏ dYf dZ6d[d! d… d! d… d| dß f d\6d]d! d… d! d… d| dß f d^6d_d d? d! d d| d} f d`6dad d? d! d d| d} f db6dcd d d  d d| d| f dd6ded4 d4 d  d4 d| d¿ f df6dgd d d  d d| d| f dh6did d? d! d d| d} f dj6dkd d? d! d d| d} f dl6dmd4 d4 d  d4 d| d¿ f dn6dod4 d4 d  d4 d| d¿ f dp6dqd d  d! d  d| d¦ f dr6dsd d d  d d| d| f dt6dud4 d4 d  d4 d| d¿ f dv6dwd d  d! d  d| d¦ f dx6dyd  d4 d! d4 d| d’ f dz6d{d  d4 d! d4 d| d’ f d|6d}d! d! d  d! d| d1f d~6dd d  d! d  d| d¦ f d€6dd d  d! d  d| d¦ f d‚6dƒd4 d4 d  d4 d| d’ f d„6d…d d d  d d| d| f d†6d‡d  d  d  d  d| d¦ f dˆ6d‰d  d  d  d  d| d¦ f dŠ6d‹d d d  d d| d| f dŒ6dd d d  d d| d| f dŽ6dd  d4 d! d4 d| df d‘6d’d  d5 d! d5 d| dÙ f d“6d”d  d4 d! d4 d| d’ f d•6d–d d dŠ d d| dt f d—6d˜d5 d9 d! d9 d| d™f dš6d›d d? d! d d| d} f dœ6dd d? d! d d| dÏ f dž6dŸd d d  d d| d| f d 6d¡d d d  d d| d| f d¢6d£d d d  d d| d| f d¤6d¥d d d  d d| d| f d¦6d§d d d  d d| d| f d¨6d©d d d  d d| d| f dª6d«d4 d4 d  d4 d| d¿ f d¬6d­d d d  d d| d| f d®6d¯d! d5 d! d5 d| dÙ f d°6d±d  d  d  d  dÏ d²f d³6d´d d d  d d| d| f dµ6d¶d d? d! d d| d} f d·6d¸d4 d5 d! d d| d| f d¹6dºd d d  d d| d| f d»6d¼d4 d5 d! d d| d| f d½6d¾d! d! d  d! d| d1f d¿6dÀd  d  d  d  d| d¦ f dÁ6dÂd  d  d  d  d| d¦ f dÃ6dÄd  d  d  d  d| d¦ f dÅ6dÆd4 d4 d  d4 d| d’ f dÇ6dÈd4 d4 d  d4 d| d’ f dÉ6dÊd d d  d d| d| f dË6dÌd4 d4 d  d4 d| d’ f dÍ6dÎd4 d4 d  d4 d| d’ f dÏ6dÐd4 d4 d  d4 d| d’ f dÑ6dÒd d d  d d| d| f dÓ6dÔd d d  d d| d| f dÕ6dÖd  d  d  d  d| d¦ f d×6dØd! d! d  d! d| d1f dÙ6dÚd4 d4 d  d4 d| d’ f dÛ6dÜd  d  d  d  d| d¦ f dÝ6dÞd! d! d  d! d| d1f dß6dàd4 d4 d  d4 d| d’ f dá6dâd4 d4 d  d4 d| d’ f dã6däd4 d4 d  d4 d| d’ f då6dæd! d! d  d! d| d1f dç6dèd d d  d d| d| f dé6dêd4 d4 d  d4 d| d’ f dë6dìd d d  d d| d| f dí6dîd4 d4 d  d4 d| d’ f dï6dðd d d  d d| d| f dñ6dòd  d  d  d  d| d¦ f dó6dôd4 d4 d  d4 d| d’ f dõ6död4 d4 d  d4 d| d’ f d÷6død! d! d  d! d| d1f dù6dúd  d  d  d  d| dYf dû6düd  d  d  d  d| dYf dý6dþd  d  d  d  d| dYf dÿ6d d  d  d  d  d| dYf d6dd  d  d  d  d| dYf d6dd  d  d  d  d| dYf d6dd4 d4 d  d4 d| df d6d	d  d  d  d  d| dYf d
6dd  d  d  d  d| dYf d6dd  d  d  d  d| dYf d6dd  d  d  d  d| dYf d6dd  d  d  d  d| dYf d6dd  d  d  d  d| dYf d6dd! d! d  d! d| df d6dd4 d! d! d4 d| df d6dd d? d! d d| d} f d6dd d? d! d d| d} f d6dd d? d! d d| d} f d 6d!d d? d! d d| d} f d"6d#d d? d! d d| d} f d$6d%d d? d! d d| d} f d&6d'd  d4 d! d  d| då f d(6d)d  d  d  d  d| då f d*6d+d  d  d  d  d| då f d,6d-d  d  d  d  d| då f d.6d/d  d  d  d  d| då f d06d1d  d4 d! d  d| då f d26d3d d? d! d d| dÏ f d46d5d  d  d  d  d| då f d66d7d  d  d  d  d| d¦ f d86d9d d? d! d d| d| f d:6d;d  d  d  d  d| d¦ f d<6d=d d d  d d| d| f d>6d?d d d  d d| d| f d@6dAd  d? d! d  d| dŒ f dB6dCd  d4 d! d4 d| dDf dE6dFd  d  d  d  d| då f dG6dHd d d  d d| d} f dI6dJd! d! d  d! d| d1f dK6dLd4 d4 d  d4 d| d’ f dM6dNd d d  d d| d| f dO6dPd  d  d  d  d| d¦ f dQ6dRd d  d! d  d| d¦ f dS6dTd  d  d  d  d| då f dU6dVd d  d! d  d| d¦ f dW6dXd d d  d d| d| f dY6dZd d? d! d d| d} f d[6d\d d? d! d d| d} f d]6d^d d? d! d d| d} f d_6d`d d? d! d d| d} f da6dbd d? d! d d| d} f dc6ddd d? d! d d| d} f de6dfd d? d! d d| d} f dg6dhd d d  d d| d| f di6djd d d  d d| d| f dk6dld d d  d d| d| f dm6dnd d d  d d| d| f do6dpd d d  d d| d| f dq6drd d d  d d| d| f ds6dtd d d  d d| d| f du6dvd d d  d d| d| f dw6dxd d d  d d| d| f dy6dzd d d  d d| d| f d{6d|d d d  d d| d| f d}6d~d  d5 d! d d| d| f d6Z* i	 d€d 6dd 6d‚d  6dƒd! 6d„d" 6d…d# 6d†d$ 6d‡dé 6dˆdë 6Z+ e, d9 d" dŠ d: d© d¬ dË g ƒ Z- e. e/ e. e/ e. e/ f Z0 e/ e. e/ e. e/ e. f Z1 d‰dŠ„  Z2 d d d‹dŒ„ Z3 d d ddŽ„ Z4 d d dd„ Z5 d d d‘d’„ Z6 d d“d”„ Z7 d d•d–„ Z8 Gd—d˜„  d˜e9 ƒ Z: Gd™d „  d e; ƒ Z< Gdšd „  d e= ƒ Z> d4 Z? d! Z@ d5 ZA d… ZB d9 ZC d" ZD eE d8 d, ƒ \ ZF ZG ZH ZI ZJ ZK d d lL ZM d›dœ„  ZN ddž„  ZO dŸd „  ZP d¡d¢„  ZQ d£d¤„  ZR d¥d¦„  ZS d§d¨„  ZT d©dª„  ZU d«d¬„  ZV i eN e 6eW e 6ZX i eN e 6eN e 6ZY i eV e 6eN e 6ZZ i eX e eM j[ d? d­f e? 6eX e eM j\ d? d®f e@ 6eX e eM j] d@ d¯f eA 6eX e eM j^ d@ d°f eB 6eX e eO dA d±f eC 6eZ e eM j[ d> d²f eD 6eY e eP dŠ d³f eF 6eY e eQ dŠ d´f eG 6eY e eR dŠ dµf eH 6eY e eS dŠ d¶f eI 6eY e eT dŠ d·f eJ 6eY e eU dŠ d¸f eK 6Z_ i d¹dº„  dB d®dt f d™ 6d»dº„  dB d­dt f d< 6d¼dº„  dà dt d½f d> 6Z` d¾Za d¾Zb d5 Zc dŠ Zd d d d¿d „ Ze d d d d d d dÀd „ Zf d d dÁd „ Zg d d dÂdÃ„ Zh d d dÄdÅ„ Zi dÆd „  Zj d dÇd „ Zk d d d dÈdÉ„ Zl dÊd „  Zm d dËdÌ„ Zn d d d dÍdÎ„ Zo dÏd „  Zp d d d dÐd „ Zq dÑdÒ„  Zr dÓdÔ„  Zs dÕdÖ„  Zt d S(×  z9
Module for parsing/evaluating Microsoft Excel formulas.
é    )Úprint_functionN)Úunpacké   )Ú*)Úunpack_unicode_update_posÚunpack_string_update_posÚ	XLRDErrorÚhex_char_dumpÚerror_text_from_codeÚ
BaseObjectÚoBOOLÚoERRÚoNUMÚoREFÚoRELÚoSTRGÚoUNKÚdecompile_formulaÚdump_formulaÚevaluate_name_formulaÚ
okind_dictÚrangename3dÚrangename3drelÚcellnameÚcellnameabsÚcolnameÚFMLA_TYPE_CELLÚFMLA_TYPE_SHAREDÚFMLA_TYPE_ARRAYÚFMLA_TYPE_COND_FMTÚFMLA_TYPE_DATA_VALÚFMLA_TYPE_NAMEÚOperandÚRef3Dé   é   é   é   é    é?   ZCELLZSHAREDÚARRAYzCOND-FMTzDATA-VALÚNAMEé   é   é#   é9   é:   é;   é,   é-   é   é   ÚoMSNGú,é	   é   é   é   é   é   é   é   é(   é2   éF   éP   ZUnk00ZExpZTblÚAddÚSubZMulÚDivZPowerZConcatÚLTZLEZEQZGEÚGTZNEZIsectÚListZRangeZUplusZUminusZPercentZParenZMissArgÚStrZExtendedZAttrZSheetZEndSheetZErrZBoolZIntÚNumÚArrayZFuncZFuncVarÚNameZRefZAreaZMemAreaZMemErrZMemNoMemZMemFuncZRefErrZAreaErrZRefNZAreaNZMemAreaNZ	MemNoMemNÚ ZFuncCEZNameXZRef3dZArea3dZRefErr3dZ	AreaErr3dZCOUNTÚVÚRZIFZVRRZISNAZISERRORZSUMZAVERAGEZMINé   ÚMAXZROWZCOLUMNZNAé
   ZNPVZVRZSTDEVé   ZDOLLARé   ZFIXEDZVVVé   ZSINZCOSZTANZATANÚPIé   ZSQRTZEXPÚLNé   ZLOG10é   ZABSé   ÚINTZSIGNé   ZROUNDZVVé   ZLOOKUPé   ZINDEXZRVVVé   ZREPTZMIDé   ZLENZVALUEé!   ÚTRUEé"   ÚFALSEZANDé$   ZORé%   ZNOTé&   ZMODé'   ZDCOUNTZRRRZDSUMé)   ZDAVERAGEé*   ZDMINé+   ZDMAXZDSTDEVZVARé.   ZDVARé/   ZTEXTé0   ZLINESTÚAZRRVVé1   ZTRENDZRRRVZLOGESTé3   ZGROWTHé4   ZPVZVVVVVé8   ZFVZNPERZPMTZRATEZVVVVVVé<   ZMIRRZRVVé=   ZIRRZRVé>   ZRANDZMATCHé@   ZDATEéA   ZTIMEéB   ZDAYéC   ZMONTHéD   ZYEARéE   ZWEEKDAYZHOURéG   ZMINUTEéH   ZSECONDéI   ZNOWéJ   ZAREASéK   ZROWSéL   ÚCOLUMNSéM   ZOFFSETZRVVVVéN   ZSEARCHéR   Z	TRANSPOSEéS   ZTYPEéV   Z	SERIESSUMZVVVAé\   ZATAN2éa   ZASINéb   ZACOSéc   ZCHOOSEéd   ZHLOOKUPZVRRVée   ZVLOOKUPéf   ZISREFéi   ZLOGém   ZCHARéo   ZLOWERép   ZUPPERéq   ZPROPERér   ZLEFTés   ZRIGHTét   ZEXACTéu   ZTRIMév   ZREPLACEZVVVVéw   Z
SUBSTITUTEéx   ZCODEéy   ZFINDé|   é}   ZISERRé~   ZISTEXTé   ZISNUMBERé€   ZISBLANKé   ÚTé‚   ÚNéƒ   Z	DATEVALUEéŒ   Z	TIMEVALUEé   ZSLNéŽ   ZSYDé   ZDDBé   ZINDIRECTé”   ZCLEANé¢   ZMDETERMé£   ZMINVERSEé¤   ZMMULTZAAé¥   ZIPMTé§   ZPPMTé¨   ZCOUNTAé©   ZPRODUCTé·   ZFACTé¸   ZDPRODUCTé½   Z	ISNONTEXTé¾   ZSTDEVPéÁ   ZVARPéÂ   ZDSTDEVPéÃ   ZDVARPéÄ   ZTRUNCéÅ   Z	ISLOGICALéÆ   ZDCOUNTAéÇ   ZUSDOLLARéÌ   ZFINDBéÍ   ZSEARCHBéÎ   ZREPLACEBéÏ   ZLEFTBéÐ   ZRIGHTBéÑ   ZMIDBéÒ   ZLENBéÓ   ZROUNDUPéÔ   Z	ROUNDDOWNéÕ   ZASCéÖ   ZDBCSé×   ZRANKZVRVéØ   ZADDRESSéÛ   ZDAYS360éÜ   ZTODAYéÝ   ZVDBZVVVVVVVéÞ   ZMEDIANéã   Z
SUMPRODUCTéä   ZSINHéå   ZCOSHéæ   ZTANHéç   ZASINHéè   ZACOSHéé   ZATANHéê   ZDGETéë   ÚINFOéô   ZDBé÷   Z	FREQUENCYZRRéü   z
ERROR.TYPEi  ZAVEDEVi  ZBETADISTi  ZGAMMALNi  ZBETAINVi  Z	BINOMDISTi  ZCHIDISTi  ZCHIINVi  ZCOMBINi  Z
CONFIDENCEi  Z	CRITBINOMi  ZEVENi  Z	EXPONDISTi  ZFDISTi  ZFINVi  ZFISHERi  Z	FISHERINVi  ZFLOORi  Z	GAMMADISTi  ZGAMMAINVi  ZCEILINGi   ZHYPGEOMDISTi!  ZLOGNORMDISTi"  ZLOGINVi#  ZNEGBINOMDISTi$  ZNORMDISTi%  Z	NORMSDISTi&  ZNORMINVi'  ZNORMSINVi(  ZSTANDARDIZEi)  ZODDi*  ZPERMUTi+  ZPOISSONi,  ZTDISTi-  ZWEIBULLi.  ZSUMXMY2i/  ZSUMX2MY2i0  ZSUMX2PY2i1  ZCHITESTi2  ZCORRELi3  ZCOVARi4  ZFORECASTZVAAi5  ZFTESTi6  Z	INTERCEPTi7  ZPEARSONi8  ZRSQi9  ZSTEYXi:  ZSLOPEi;  ZTTESTZAAVVi<  ZPROBZAAVi=  ZDEVSQi>  ZGEOMEANi?  ZHARMEANi@  ZSUMSQiA  ZKURTiB  ZSKEWiC  ZZTESTiD  ZLARGEiE  ZSMALLiF  ZQUARTILEiG  Z
PERCENTILEiH  ZPERCENTRANKiI  ZMODEiJ  ZTRIMMEANiK  ZTINViL  ZCONCATENATEiP  ZPOWERiQ  ZRADIANSiV  ZDEGREESiW  ZSUBTOTALiX  ZSUMIFZRVRiY  ZCOUNTIFiZ  Z
COUNTBLANKi[  ZISPMTi^  ZDATEDIFi_  Z
DATESTRINGi`  ZNUMBERSTRINGia  ZROMANib  ZGETPIVOTDATAif  Z	HYPERLINKig  ZPHONETICih  ZAVERAGEAii  ZMAXAij  ZMINAik  ZSTDEVPAil  ZVARPAim  ZSTDEVAin  ZVARAio  ZBAHTTEXTip  ZTHAIDAYOFWEEKiq  Z	THAIDIGITir  ZTHAIMONTHOFYEARis  ZTHAINUMSOUNDit  ZTHAINUMSTRINGiu  ZTHAISTRINGLENGTHiv  ZISTHAIDIGITiw  ZROUNDBAHTDOWNix  ZROUNDBAHTUPiy  ZTHAIYEARiz  ZRTDi{  zSkip??ZVolatileÚIfZChooseZSkipZSumÚAssignZSpaceZSpaceVolatilec             C   s)   t  d d „  t |  | j | j ƒ Dƒ ƒ S)Nc             s   s'   |  ] \ } } } | | | ƒ Vq d  S)N© )Ú.0ÚfuncZnumaZnumbrá   rá   ú0/var/www/dbchiro/venv/build/xlrd/xlrd/formula.pyú	<genexpr>  s   zdo_box_funcs.<locals>.<genexpr>)ÚtupleÚzipÚcoords)Z	box_funcsZboxaZboxbrá   rá   rä   Údo_box_funcs  s    	ré   c       	      C   s©   | d ?d @} | d ?d @} |  } | d @} | rs | rQ | d k rQ | d 8} n  | r™ | d k r™ | d 8} q™ n& | r† | | 8} n  | r™ | | 8} n  | | | | f S)	Nr,   r   rV   éÿ   i €  i   r£   é   rá   )	ÚrowvalÚcolvalÚreldeltaÚbrowxÚbcolxÚrow_relÚcol_relÚrowxÚcolxrá   rá   rä   Úadjust_cell_addr_biff8“  s    
rõ   c       	      C   s©   |  d ?d @} |  d ?d @} |  d @} | } | rs | rQ | d k rQ | d 8} n  | r™ | d k r™ | d 8} q™ n& | r† | | 8} n  | r™ | | 8} n  | | | | f S)	Nr,   r   rV   iÿ?  i    i @  r£   rë   rá   )	rì   rí   rî   rï   rð   rñ   rò   ró   rô   rá   rá   rä   Úadjust_cell_addr_biff_le7¤  s    
rö   c             C   s‚   | d k rE t  d |  | | d … ƒ \ } } t | | | | | ƒ St  d |  | | d … ƒ \ } } t | | | | | ƒ Sd  S)NrC   z<HHr%   z<HBr4   )r   rõ   rö   )ÚdataÚposÚbvrî   rï   rð   rì   rí   rá   rá   rä   Úget_cell_addr¶  s    ##rú   c             C   sÖ   | d k ro t  d |  | | d … ƒ \ } } } }	 t | | | | | ƒ }
 t | |	 | | | ƒ } |
 | f St  d |  | | d … ƒ \ } } } }	 t | | | | | ƒ }
 t | |	 | | | ƒ } |
 | f Sd  S)NrC   z<HHHHr&   z<HHBBrQ   )r   rõ   rö   )r÷   rø   rù   rî   rï   rð   Zrow1valZrow2valZcol1valZcol2valÚres1Úres2rá   rá   rä   Úget_cell_range_addrÁ  s    )
)rý   c       
      C   s7  y |  j  | } Wn< t k
 rO t d | t |  j  ƒ f d |  j ƒd SYn X| \ } } } | |  j k rº | r” t d | | f d |  j ƒn  | d k o« | k n s¶ t ‚ d S| |  j k ró | rï t d | | f d |  j ƒn  d S| d k o
| k n r9| r5t d	 | | f d |  j ƒn  d S| d k oP| k n r|| rxt d | f d |  j ƒn  d! St |  j ƒ } d | k o­| k o­| k  n só| rït d | | f d |  j ƒt d | d |  j ƒn  d$ S|  j | } |  j | }	 d | k o$|	 k n s-d' S| |	 f S)(Nz:!!! get_externsheet_local_range: refx=%d, not in range(%d)Úfiler   z5/// get_externsheet_local_range(refx=%d) -> addins %riþÿ  r5   z7/// get_externsheet_local_range(refx=%d) -> external %rr%   z@/// get_externsheet_local_range(refx=%d) -> unspecified sheet %rr   iÿÿ  z</// get_externsheet_local_range(refx=%d) -> deleted sheet(s)r$   r   z./// get_externsheet_local_range(refx=%d) -> %rz%--- first/last sheet not in range(%d)r‘   r4   é›ÿÿÿé›ÿÿÿ)rÿ   r   éûÿÿÿr  )r  r  éüÿÿÿr  )r  r  éÿÿÿÿr  )r  r  éþÿÿÿr  )r  r  éšÿÿÿéšÿÿÿ)r  r  éýÿÿÿr  )r  r  )	Z_externsheet_infoÚ
IndexErrorÚprintÚlenÚlogfileZ_supbook_addins_inxÚAssertionErrorZ_supbook_locals_inxÚ_all_sheets_map)
ÚbkÚrefxÚblahÚinfoZref_recordxÚref_first_sheetxÚref_last_sheetxÚnsheetsÚxlrd_sheetx1Úxlrd_sheetx2rá   rá   rä   Úget_externsheet_local_rangeÓ  sF     	 "  'r  c             C   s
  | d k r0 | r, t  d | d |  j ƒn  d S| d k rL | d k rL d St |  j ƒ } d | k o} | k o} | k  n sÆ | rÂ t  d | | | f d |  j ƒt  d | d |  j ƒn  d S|  j | } |  j | } d | k o÷ | k n s d S| | f S)Nr   z?/// get_externsheet_local_range_b57(raw_extshtx=%d) -> externalrþ   r%   r   r$   z6/// get_externsheet_local_range_b57(%d, %d, %d) -> ???z%--- first/last sheet not in range(%d)ég   r4   r  r  )r  r  r  r  r  r  )r  r  é™ÿÿÿé™ÿÿÿ)r  r  r  r  )r  r  )r	  r  r
  r  )r  Úraw_extshtxr  r  r  r  r  r  rá   rá   rä   Úget_externsheet_local_range_b57ø  s$    'r  c               @   s   e  Z d  Z d S)ÚFormulaErrorN)Ú__name__Ú
__module__Ú__qualname__rá   rá   rá   rä   r    s   r  c               @   sL   e  Z d  Z d Z d Z e Z d Z d d d d d d „ Z d d „  Z	 d S)	r"   a·  
    Used in evaluating formulas.
    The following table describes the kinds and how their values
    are represented.

    .. raw:: html

        <table border="1" cellpadding="7">
        <tr>
        <th>Kind symbol</th>
        <th>Kind number</th>
        <th>Value representation</th>
        </tr>
        <tr>
        <td>oBOOL</td>
        <td align="center">3</td>
        <td>integer: 0 => False; 1 => True</td>
        </tr>
        <tr>
        <td>oERR</td>
        <td align="center">4</td>
        <td>None, or an int error code (same as XL_CELL_ERROR in the Cell class).
        </td>
        </tr>
        <tr>
        <td>oMSNG</td>
        <td align="center">5</td>
        <td>Used by Excel as a placeholder for a missing (not supplied) function
        argument. Should *not* appear as a final formula result. Value is None.</td>
        </tr>
        <tr>
        <td>oNUM</td>
        <td align="center">2</td>
        <td>A float. Note that there is no way of distinguishing dates.</td>
        </tr>
        <tr>
        <td>oREF</td>
        <td align="center">-1</td>
        <td>The value is either None or a non-empty list of
        absolute Ref3D instances.<br>
        </td>
        </tr>
        <tr>
        <td>oREL</td>
        <td align="center">-2</td>
        <td>The value is None or a non-empty list of
        fully or partially relative Ref3D instances.
        </td>
        </tr>
        <tr>
        <td>oSTRG</td>
        <td align="center">1</td>
        <td>A Unicode string.</td>
        </tr>
        <tr>
        <td>oUNK</td>
        <td align="center">0</td>
        <td>The kind is unknown or ambiguous. The value is None</td>
        </tr>
        </table>
    Nú?r   c             C   sF   | d  k	 r | |  _  n  | d  k	 r0 | |  _ n  | |  _ | |  _ d  S)N)ÚkindÚvalueÚrankÚtext)ÚselfZakindZavalueZarankZatextrá   rá   rä   Ú__init__]  s    	zOperand.__init__c             C   s,   t  j |  j d ƒ } d | |  j |  j f S)Nz?Unknown kind?z#Operand(kind=%s, value=%r, text=%r))r   Úgetr"  r#  r%  )r&  Z	kind_textrá   rá   rä   Ú__repr__g  s    zOperand.__repr__)
r  r  r   Ú__doc__r#  r   r"  r%  r'  r)  rá   rá   rá   rä   r"     s   =
c               @   s.   e  Z d  Z d Z d d „  Z d d „  Z d S)r#   aõ  
    Represents an absolute or relative 3-dimensional reference to a box
    of one or more cells.

    The ``coords`` attribute is a tuple of the form::

      (shtxlo, shtxhi, rowxlo, rowxhi, colxlo, colxhi)

    where ``0 <= thingxlo <= thingx < thingxhi``.

    .. note::
      It is quite possible to have ``thingx > nthings``; for example
      ``Print_Titles`` could have ``colxhi == 256`` and/or ``rowxhi == 65536``
      irrespective of how many columns/rows are actually used in the worksheet.
      The caller will need to decide how to handle this situation.
      Keyword: :class:`IndexError` :-)

    The components of the coords attribute are also available as individual
    attributes: ``shtxlo``, ``shtxhi``, ``rowxlo``, ``rowxhi``, ``colxlo``, and
    ``colxhi``.

    The ``relflags`` attribute is a 6-tuple of flags which indicate whether
    the corresponding (sheet|row|col)(lo|hi) is relative (1) or absolute (0).

    .. note::
      There is necessarily no information available as to what cell(s)
      the reference could possibly be relative to. The caller must decide what
      if any use to make of ``oREL`` operands.

    .. note:
      A partially relative reference may well be a typo.
      For example, define name ``A1Z10`` as ``$a$1:$z10`` (missing ``$`` after
      ``z``) while the cursor is on cell ``Sheet3!A27``.

      The resulting :class:`Ref3D` instance will have
      ``coords = (2, 3, 0, -16, 0, 26)``
      and ``relflags = (0, 0, 0, 1, 0, 0).<br>

      So far, only one possibility of a sheet-relative component in
      a reference has been noticed: a 2D reference located in the
      "current sheet".

      This will appear as ``coords = (0, 1, ...)`` and
      ``relflags = (1, 1, ...)``.

    .. versionadded:: 0.6.0
    c             C   sl   | d d … |  _  | d d … |  _ |  j s; d |  _ n  |  j  \ |  _ |  _ |  _ |  _ |  _ |  _ d  S)Nr   rQ   rT   )r   r   r   r   r   r   )rè   ÚrelflagsZshtxloZshtxhiZrowxloZrowxhiZcolxloZcolxhi)r&  Zatuplerá   rá   rä   r'  ž  s
    	zRef3D.__init__c             C   s?   |  j  s |  j  d k r' d |  j f Sd |  j |  j  f Sd  S)Nr   zRef3D(coords=%r)zRef3D(coords=%r, relflags=%r))r   r   r   r   r   r   )r+  rè   )r&  rá   rá   rä   r)  §  s    zRef3D.__repr__N)r  r  r   r*  r'  r)  rá   rá   rá   rä   r#   m  s   /	c             C   s   |  S)Nrá   )Úxrá   rá   rä   Únop¸  s    r-  c             C   s   |  | S)Nrá   )r,  Úyrá   rá   rä   Ú_opr_pow»  s    r/  c             C   s
   |  | k  S)Nrá   )r,  r.  rá   rá   rä   Ú_opr_lt½  s    r0  c             C   s
   |  | k S)Nrá   )r,  r.  rá   rá   rä   Ú_opr_le¾  s    r1  c             C   s
   |  | k S)Nrá   )r,  r.  rá   rá   rä   Ú_opr_eq¿  s    r2  c             C   s
   |  | k S)Nrá   )r,  r.  rá   rá   rä   Ú_opr_geÀ  s    r3  c             C   s
   |  | k S)Nrá   )r,  r.  rá   rá   rä   Ú_opr_gtÁ  s    r4  c             C   s
   |  | k S)Nrá   )r,  r.  rá   rá   rä   Ú_opr_neÂ  s    r5  c             C   s2   t  |  ƒ } | j d ƒ r. | d d … } n  | S)zN
    Attempt to emulate Excel's default conversion from number to string.
    z.0Nr$   r  )ÚstrÚendswith)ÚnumÚsrá   rá   rä   Únum2strgÄ  s    r:  ú+ú-r   ú/ú^ú&ú<z<=ú=z>=ú>z<>c             C   s   |  S)Nrá   )r,  rá   rá   rä   Ú<lambda>á  s    rC  c             C   s   |  S)Nrá   )r,  rá   rá   rä   rC  â  s    c             C   s   |  d S)Ng      Y@rá   )r,  rá   rá   rä   rC  ã  s    ú%éZ   c       W      C   s'!  | t  k r d } n  | j } | j } |  j } d } | r„ t d | | j | | | | f d |  j ƒt | d | d |  j ƒn  | t k rŸ t	 d ƒ ‚ n  t
 | }	 d }
 g  } d } d } d } t t d  ƒ } t t d  ƒ } | j } d d „  } d	 d
 „  } d d „  } | d k r*| g } n  x7d |
 k oD| k  n rc t | |
 ƒ } | d @} | d @d ?} | r„| d } n | } t | } |	 | } | ræt d |
 | | | | | f d |  j ƒt d | d |  j ƒn  | dy k rd | | | f } t | ƒ ‚ n  | sTd | k o1d k n rF| | | ƒ nßd | k o]d k n rr| | | ƒ n³| d k rs| rt d | d |  j ƒn  t | ƒ d k sµt ‚ | j ƒ  } | j ƒ  } d } d } d j d d  | j | k  … | j d d  | j | k  … | d d  | j | k  … | j d d  | j | k  … g ƒ }  t t ƒ }! |  |! _ | j t k s‚| j t k rŽt |! _ n¹| j t k sG| j t k r¯n˜| j t k oÌ| j k n r]| j d  k	 rG| j d  k	 rGt | j ƒ d k s
t ‚ t | j ƒ d k s%t ‚ t t | j d | j d ƒ }" t |" ƒ g |! _ qGnê | j t k oz| j k n rGt |! _ | j d  k	 rG| j d  k	 rGt | j ƒ d k sÁt ‚ t | j ƒ d k sÜt ‚ t t | j d | j d ƒ }" | j d j }# | j d j }$ |# |$ k rDt |" |# ƒ g |! _ qDqGn  | |! ƒ | r%t d | d |  j ƒq%n²| d k r…| ržt d  | d |  j ƒn  t | ƒ d k s¶t ‚ | j ƒ  } | j ƒ  } d! } d } d j d d  | j | k  … | j d d  | j | k  … | d d  | j | k  … | j d d  | j | k  … g ƒ }  t t d  | |  ƒ }! | j t k sƒ| j t k rt |! _ nÊ | j t t f k rY| j t t f k rYt |! _ | j t k sà| j t k rìt |! _ n  | j d  k	 rY| j d  k	 rYt | j ƒ d k s%t ‚ t | j ƒ d k s@t ‚ | j | j |! _ qYn  | |! ƒ | r%t d" | d |  j ƒq%n | d# k rb
| r°t d$ | d |  j ƒn  t | ƒ d k sÈt ‚ | j ƒ  } | j ƒ  } d% } d } d j d d  | j | k  … | j d d  | j | k  … | d d  | j | k  … | j d d  | j | k  … g ƒ }  t t d  | |  ƒ }! | j t k s•| j t k ržt }! n˜| j t k o»| j k n rL	| j d  k	 r6
| j d  k	 r6
t | j ƒ d k sùt ‚ t | j ƒ d k s	t ‚ t t  | j d | j d ƒ }" t |" ƒ g |! _ q6
nê | j t k oi	| j k n r6
t |! _ | j d  k	 r6
| j d  k	 r6
t | j ƒ d k s°	t ‚ t | j ƒ d k sË	t ‚ t t  | j d | j d ƒ }" | j d j }# | j d j }$ |# |$ k r3
t |" |# ƒ g |! _ q3
q6
n  | |! ƒ | r%t d& | d |  j ƒq%nÃd' | k oy
d( k n r‘
| | t! | ƒ n”| d) k r 
n…| d* k rÈ
| t t" d  t# d ƒ ƒ n]| d+ k r| d, k rt$ | |
 d |  j% d- d ƒ\ }% }& n t& | |
 d d- d ƒ\ }% }& |& |
 } | rWt d. | |% f d |  j ƒn  d/ |% j' d/ d0 ƒ d/ }' | t t( |% t# |' ƒ ƒ n˜| d1 k rº| d k s«t ‚ t d2 ƒ ‚ nk| d3 k rÍt) d4 | |
 d |
 d5 … ƒ \ }( }) t* j+ |( d6 ƒ }* |( d5 k r|) d d7 } n‚ |( d k r˜d5 } | rMt d8 | d |  j ƒn  t | ƒ d k set ‚ | dz } d9 | j }  t t! d  t, |  ƒ | d{ <n d5 } | r%t d: |( |* | |) f d |  j ƒq%nXd; | k oäd< k n r
| d= k  sût ‚ t d> ƒ ‚ nd? | k o!d k n r| d? }+ d d d d@ g |+ }, t t- t! t! g |+ }- t) dA dB |+ | |
 d |
 d |, … ƒ \ }. |+ d k r³t. |. ƒ }. t/ |. ƒ }' nF |+ d k rÎt/ |. ƒ }' n+ |+ d k rçd| |. }' n d/ t0 |. d/ }' | t |- |. t# |' ƒ ƒ n t dE | ƒ ‚ | d k rDt dF | ƒ ‚ n  |
 | 7}
 q-n  | d k rm| | ƒ nÎ| d k rÍd t1 | dG k ƒ }, t) dA dH |, | |
 d |
 d |, … ƒ d }/ t2 j+ |/ d  ƒ }0 |0 süt dI |/ d |  j ƒ| | ƒ q; |0 d  d … \ }1 }2 | r;t dJ |/ |1 |2 f d |  j ƒn  t | ƒ |2 k sSt ‚ |2 r¡t3 j dK dL „  | |2 d  … Dƒ ƒ }3 dM |1 |3 f }  | |2 d  … =n
 |1 dN }  t t d  t, |  ƒ }! | |! ƒ nn| d k r•d t1 | dG k ƒ }, t) dO dH |, | |
 d |
 d |, … ƒ \ }2 }/ t4 |2 dP ƒ \ }4 }2 t4 |/ dQ ƒ \ }5 }/ | rxt dR |/ |2 |5 |4 f d |  j ƒn  t2 j+ |/ d  ƒ }0 |0 s´t dS |/ d |  j ƒ| | ƒ q; |0 d  d … \ }1 }6 }7 | röt dT |1 |6 |7 f d |  j ƒn  |6 |2 k o|7 k n st ‚ t | ƒ |2 k s0t ‚ t | ƒ |2 k sHt ‚ t3 j dU dL „  | |2 d  … Dƒ ƒ }3 dM |1 |3 f }  t t d  t, |  ƒ }! |/ d k rÖ| |2 }8 |8 j t! t- f k rî| rÓ|8 j t k rÓt dV d |  j ƒqÓqz|8 j d} k r+| rÓ|8 j d  k	 rÓt dW d |  j ƒqÓqz|2 d k rW|8 j rWt- d |! _ |! _ n` |2 d t1 |8 j ƒ }9 | |9 }: |: j t" k ržt! d |! _ |! _ n |: j |: j |! _ |! _ | rzt dX d |  j ƒqzn¤ |/ dY k rz| |2 }8 |8 j t! k rzd |8 j k o|2 k  n rw| |2 t1 |8 j ƒ }: |: j t" k rXt! d |! _ |! _ qt|: j |: j |! _ |! _ qwqzn  | |2 d  … =| |! ƒ n¦| d k rLt) dZ | |
 d |
 d … ƒ d d }; | rêt d[ |; d |  j ƒn  |  j5 |; }< |< j6 st7 |  |< |; | | d ƒ n  |< j8 s8|< j9 s8|< j: rŸ| r]|< j; |  j d\ d] d^ d_ ƒn  t t d  ƒ }! | pŠ|< j8 pŠ|< j9 pŠ|< j: } | p™|< j< } n1 t |< j= ƒ d k sºt ‚ t> j? |< j= d ƒ }! t# |! _ |< j@ d~ k r÷|< j |! _ n  d` |  jA |< j@ |< j f |! _ | r?t da tB |! j ƒ d |  j ƒn  | |! ƒ nï
| d5 k rTtC | |
 d | | ƒ }! | rt db |! d |  j ƒn  |! \ }= }> }? }@ d }A }B d } |A |B d |= |= d |> |> d f }" | rõt dc |" d |  j ƒn  t t d  ƒ }! | d k rGd d |? |? |@ |@ f }C t t t |" |C ƒ g ƒ }! n  | |! ƒ nç	| d k rwtD | |
 d | | ƒ \ }D }E | r¡t db |D |E d |  j ƒn  |D \ }F }G }H }I |E \ }J }K }L }M d }A }B d } |A |B d |F |J d |G |K d f }" | rt dc |" d |  j ƒn  t t d  ƒ }! | d k rjd d |H |L |I |M f }C t t t |" |C ƒ g ƒ }! n  | |! ƒ nÄ| d7 k r“| | | ƒ n¨| dd k rçt) dZ | |
 d |
 d … ƒ d }, | r; t de |, d |  j ƒq; nT| df k r| | | ƒ n8| dg k r| | | ƒ n| d; k rL| d k rtC | |
 d | | ƒ }! t) dZ | |
 d |
 d … ƒ d }N tE |  |N | ƒ \ }A }B n† tC | |
 d | | ƒ }! t) dh | |
 d |
 d … ƒ \ }O }P }Q | røt di |O |P |Q d |  j ƒn  tF |  |O |P |Q | ƒ \ }A }B |! \ }= }> }? }@ |? p1|@ }R | p=|R } |A |B d |= |= d |> |> d f }" | |A d k  O} | r“t dc |" d |  j ƒn  t t d  ƒ }! |R rôd d |? |? |@ |@ f }C t |" |C ƒ }S t |! _ tG |  |S dj d ƒ|! _ n' t |" ƒ }S t |! _ tH |  |S ƒ |! _ t# |! _ | d k r?|S g |! _ n  | |! ƒ nï| d< k r£| d k rÃtD | |
 d | | ƒ \ }D }E t) dZ | |
 d |
 d … ƒ d }N tE |  |N | ƒ \ }A }B nŒ tD | |
 d | | ƒ \ }D }E t) dh | |
 d |
 d … ƒ \ }O }P }Q | r1t dk |O |P |Q d |  j ƒn  tF |  |O |P |Q | ƒ \ }A }B | |A d€ k  O} |D \ }F }G }H }I |E \ }J }K }L }M |H p˜|I p˜|L p˜|M }R | p¤|R } |A |B d |F |J d |G |K d f }" | rêt dc |" d |  j ƒn  t t d  ƒ }! |R rKd d |H |L |I |M f }C t |" |C ƒ }S t |! _ tG |  |S dj d ƒ|! _ n' t |" ƒ }S t |! _ tH |  |S ƒ |! _ t# |! _ | d k r–|S g |! _ n  | |! ƒ n˜| d3 k röd }T t t d  ƒ }! | d k r
t) dl | |
 d |
 d … ƒ \ }N }; |; d 8}; |N }U np t) dm | |
 d |
 dg … ƒ \ }N }; |; d 8}; |N }U |N d k rZ|N d 8}N n  |N d k  rt|N d }N n d }T | r¦t dn |U |N |; |T f d |  j ƒn  |; | k rÛ| rÎt do d |  j ƒn  d }T } n  |T sZ| d k rtE |  |N | ƒ \ }A }B qZ|U d k r#dƒ \ }A }B qZ|  jI |N }V |V d5 k rKd† \ }A }B qZd‰ \ }A }B n  |T sl|A dŠ k  r”dq |; |U f }  t t d  t# |  ƒ }! nU|  j5 |; }< |< j6 sÇt7 |  |< |; | | d ƒ n  |< j8 sâ|< j9 sâ|< j: rI| r|< j; |  j d\ dr d^ ds ƒn  t t d  ƒ }! | p4|< j8 p4|< j9 p4|< j: } | pC|< j< } n1 t |< j= ƒ d k sdt ‚ t> j? |< j= d ƒ }! t# |! _ |< j@ d‹ k r¡|< j |! _ n  d` |  jA |< j@ |< j f |! _ | rét dt tB |! j ƒ d |  j ƒn  | |! ƒ nE | tJ k r d } | | ƒ n& | r5 t du | d |  j ƒn  d } | d k rV t dv ƒ ‚ n  |
 | 7}
 q-W| } | rË tK |  j dw | | | | ƒ t | ƒ d k r¸ t dx d |  j ƒn  t d |  j ƒ n  | | _= t | ƒ d k rò d  | _L n | d | _L | | _< | | _: | | _M d | _6 d  S)ŒNr   z1::: evaluate_name_formula %r %r %d %d %r level=%drþ   r   Úfoutz-Excessive indirect references in NAME formulac             S   s¯  t  | ƒ d k s t ‚ | j ƒ  } | j ƒ  } t |  \ } } } } } d j d d  | j | k  … | j d d  | j | k  … | d d  | j | k  … | j d d  | j | k  … g ƒ }	 t | d  | |	 ƒ }
 y | | j } | | j } Wn# t	 k
 r| j
 |
 ƒ d  SYn X| j d  k s6| j d  k rG| j
 |
 ƒ d  S| | j ƒ } | | j ƒ } | | | ƒ } | t k r•| rŒd n d } n  | |
 _ | j
 |
 ƒ d  S)Nr$   rN   ú(ú)r   r   )r
  r  ÚpopÚbinop_rulesÚjoinr$  r%  r"   r"  ÚKeyErrorÚappendr#  r   )ÚopcdÚstkÚbopÚaopÚargdictÚresult_kindrã   r$  ÚsymÚotextÚresopZbconvZaconvZbvalZavalÚresultrá   rá   rä   Údo_binop  s:    		z'evaluate_name_formula.<locals>.do_binopc       
      S   sÅ   t  | ƒ d k s t ‚ | j ƒ  } | j } t |  \ } } } } d j | d d  | j | k  … | j d d  | j | k  … | g ƒ }	 | d  k	 r¥ | | ƒ } n  | j t	 | | | |	 ƒ ƒ d  S)Nr   rN   rG  rH  )
r
  r  rI  r#  Ú
unop_rulesrK  r$  r%  rM  r"   )
ÚopcoderS  rO  rQ  Úvalrã   r$  Úsym1Úsym2rU  rá   rá   rä   Ú
do_unaryop#  s    	z)evaluate_name_formula.<locals>.do_unaryopc             S   s    d |  | f } t  | ƒ ‚ d  S)Nz1ERROR *** Token 0x%02x (%s) found in NAME formula)r  )Úop_argÚ	oname_argÚmsgrá   rá   rä   Únot_in_name_formula3  s    z2evaluate_name_formula.<locals>.not_in_name_formularb   é`   r5   r(   z9Pos:%d Op:0x%02x Name:t%s Sz:%d opcode:%02xh optype:%02xhzStack =r$   z9ERROR *** Unexpected token 0x%02x ("%s"); biff_version=%dr4   rV   r,   z
tIsect preú rC   rN   rG  rH  ztIsect postr'   z	tList prer7   z
tList postr-   z
tRange preú:ztRange postr<   r>   r=   rZ   r[   rB   Úlenlenz   sz=%d strg=%rú"z""r\   ztExtended token not implementedr;   z<BHr%   z??Unknown??rQ   ÚtAttrSumzSUM(%s)z)   subop=%02xh subname=t%s sz=%d nc=%02xhr^   r_   rA   z)tSheet & tEndsheet tokens not implementedr`   r&   r@  ÚBBHdrf   rd   zUnhandled opcode: 0x%02xzSize not set for opcode 0x%02xr@   z BHz#*** formula/tFunc unknown FuncID:%dz    FuncID=%d name=%s nargs=%dc             s   s   |  ] } | j  Vq d  S)N)r%  )râ   Úargrá   rá   rä   rå      s    z(evaluate_name_formula.<locals>.<genexpr>z%s(%s)z()z<Br£   i €  z(   FuncID=%d nargs=%d macro=%d prompt=%dz&*** formula/tFuncVar unknown FuncID:%dz!    name: %r, min~max args: %d~%dc             s   s   |  ] } | j  Vq d  S)N)r%  )râ   rj  rá   rá   rä   rå   <  s    zIF testarg kind?zIF testarg value?z$$$$$$ IF => constantr   z<Hz   tgtnamex=%dÚheaderz!!! tgtobj has problems!!!Úfooterz-----------       --------z%s!%sz    tName: setting text toz  z   r8   z  %d bytes of cell ref formularT   rU   z<hxxxxxxxxhhÚtRef3dÚr1c1ÚtArea3dz<HHz<hxxxxxxxxHz+   origrefx=%d refx=%d tgtnamex=%d dodgy=%dz!!!! Self-referential !!!!iš  z$<<Name #%d in external(?) file #%d>>z!!! bad tgtobj !!!z------------------z    tNameX: setting text tozFORMULA: /// Not handled yet: tz!Fatal: token size is not positivez8End of formula. level=%d any_rel=%d any_err=%d stack=%r
z*** Stack has unprocessed argsr  r  r  )zFALSEzTRUE)r   r   r  r  r  r  r  )r  r  r  r  )r  r  éfýÿÿéfýÿÿ)rp  rq  r  r  )NÚSTACK_ALARM_LEVELZraw_formulaZbasic_formula_lenÚbiff_versionr	  Únamer  r	   ÚSTACK_PANIC_LEVELr   Úszdictr"   r   r   rM  Ú	BYTES_ORDÚonamesr  r
  r  rI  rK  r$  r%  r   r"  r#  ré   ÚtIsectFuncsr#   r   r+  ÚtRangeFuncsr   r6   Ú	LEAF_RANKr   Úencodingr   Úreplacer   r   Ú
tAttrNamesr(  Ú	FUNC_RANKr   Úfloatr6  r
   ÚintÚ	func_defsÚlistsepÚdivmodÚname_obj_listZ	evaluatedr   ÚmacroÚbinaryÚany_errÚdumpÚany_relÚstackÚcopyÚdeepcopyÚscopeÚ_sheet_namesÚreprrú   rý   r  r  r   r   Ú_externsheet_type_b57Úerror_opcodesZfprintfrW  Úany_external)Wr  ZnobjÚnamexr  Úlevelr÷   Úfmlalenrù   rî   Úsztabrø   r‹  rŠ  rˆ  r“  Úunk_opndÚ
error_opndÚspushrX  r^  rb  ÚoprZ  ÚoptypeÚopxÚonameÚszra  rP  rQ  rT  r$  rU  Úresrè   ZrelfaZrelfbÚstrgÚnewposr%  ÚsubopÚncÚsubnameÚinxÚnbr"  r#  ÚfuncxÚ
func_attrsÚ	func_nameÚnargsÚargtextÚpromptr†  ÚminargsÚmaxargsZtestargZresposZchosenÚtgtnamexÚtgtobjró   rô   rñ   rò   Úshx1Úshx2r+  rû   rü   Úrowx1Úcolx1Úrow_rel1Úcol_rel1Úrowx2Úcolx2Úrow_rel2Úcol_rel2r  r  Úraw_shx1Úraw_shx2Úis_relÚref3dÚdodgyÚorigrefxÚextyrá   rá   rä   r   ì  sò   				&
	 


# 	""	
  *	
  	""	
 %
  ' 
#
0
1'
3 "'
") 			
!	" 
$  
$ % %*$ 			%*$ 			'
	'
  			
!	"				c	       Y         sG  | t  k r d } n  ˆ t t t t f k }	 | }
 ˆ  j } | rŠ t d | ˆ | | |	 |
 | f d ˆ  j ƒt |
 d | d ˆ  j ƒn  | t	 k r¥ t
 d ƒ ‚ n  t | } d } g  } d } d } d } t t d  ƒ } t t d  ƒ } | j } d d „  } d	 d
 „  } ‡  ‡ f d d †  } | d k r9| g } n  xqd | k oS| k  n r¬t |
 | ƒ } | d @} | d @d ?} | r“| d } n | } t | } | | } | rõt d | | | | | | f d ˆ  j ƒt d | d ˆ  j ƒn  | ds k r#d | | | f } t | ƒ ‚ n  t | d ƒ ˆ @rF| | | ƒ n  | sã| d k r÷| d k rmd } n d } | d k r’| | k r’| s˜t ‚ t | |
 ƒ \ }  }! d |  |! f }" | t t d  t |" ƒ ƒ ˆ t t B@s´| | | ƒ q´n½d | k od k n r#| | | ƒ n‘| d k rß| rNt d | d ˆ  j ƒn  t | ƒ d k sft ‚ | j ƒ  }# | j ƒ  }$ d }% d }& d j d  d  |$ j |& k  … |$ j d! d  |$ j |& k  … |% d  d  |# j |& k  … |# j d! d  |# j |& k  … g ƒ }' t t ƒ }( |' |( _ |# j t k s3|$ j t k r?t |( _ nt |# j t k s³|$ j t k r`nS |# j t k o}|$ j k n r…n. |# j t  k o¢|$ j k n r³t  |( _ n  | |( ƒ | r´t d" | d ˆ  j ƒq´nÕ| d# k r‡| r
t d$ | d ˆ  j ƒn  t | ƒ d k s"t ‚ | j ƒ  }# | j ƒ  }$ d% }% d }& d j d  d  |$ j |& k  … |$ j d! d  |$ j |& k  … |% d  d  |# j |& k  … |# j d! d  |# j |& k  … g ƒ }' t t d  |& |' ƒ }( |# j t k sï|$ j t k rût |( _ n` |# j t t  f k r[|$ j t t  f k r[t |( _ |$ j t  k sL|# j t  k r[t  |( _ q[n  | |( ƒ | r´t d& | d ˆ  j ƒq´n-| d' k rñ| r²t d( | d ˆ  j ƒn  t | ƒ d k sÊt ‚ | j ƒ  }# | j ƒ  }$ d) }% d }& d j d  d  |$ j |& k  … |$ j d! d  |$ j |& k  … |% d  d  |# j |& k  … |# j d! d  |# j |& k  … g ƒ }' t t d  |& |' ƒ }( |# j t k s—|$ j t k r t }( n% |# j t k o½|$ j k n rÅn  | |( ƒ | r´t d* | d ˆ  j ƒq´nÃd+ | k od, k n r | | t! | ƒ n”| d- k r/n…| d. k rW| t t" d  t d ƒ ƒ n]| d/ k r	| d0 k r—t# |
 | d ˆ  j$ d1 d ƒ\ }) }* n t% |
 | d d1 d ƒ\ }) }* |* | } | ræt d2 | |) f d ˆ  j ƒn  d3 |) j& d3 d4 ƒ d3 }" | t t' d  t |" ƒ ƒ n˜| d5 k rI	| d k s:	t ‚ t d6 ƒ ‚ nk| d7 k r\
t d8 |
 | d | d9 … ƒ \ }+ }, t( j) |+ d: ƒ }- |+ d9 k r«	|, d d; } n‚ |+ d# k r'
d9 } | rÜ	t d< | d ˆ  j ƒn  t | ƒ d k sô	t ‚ | dt }$ d= |$ j }' t t! d  t* |' ƒ | du <n d9 } | r´t d> |+ |- | |, f d ˆ  j ƒq´nXd? | k os
d@ k n r™
| dA k  sŠ
t ‚ t dB ƒ ‚ ndC | k o°
d k n r¤| dC }. d d d dD g |. }/ t t+ t! t! g |. }0 t dE dF |. |
 | d | d |/ … ƒ \ }1 |. d k rBt, |1 ƒ }1 t- |1 ƒ }" nF |. d k r]t- |1 ƒ }" n+ |. d k rvdv |1 }" n d3 t. |1 d3 }" | t |0 d  t |" ƒ ƒ n t dI | ƒ ‚ | d k rÓt dJ | ƒ ‚ n  | | 7} q<n  | d k rü| | ƒ nˆ| d k r\d t/ | dK k ƒ }/ t dE dL |/ |
 | d | d |/ … ƒ d }2 t0 j) |2 d  ƒ }3 |3 s‹t dM |2 d ˆ  j ƒ| | ƒ q„|3 d  d … \ }4 }5 | rÊt dN |2 |4 |5 f d ˆ  j ƒn  t | ƒ |5 k sât ‚ |5 r0t1 j dO dP „  | |5 d  … Dƒ ƒ }6 dQ |4 |6 f }' | |5 d  … =n
 |4 dR }' t t d  t* |' ƒ }( | |( ƒ n(| d k rSd t/ | dK k ƒ }/ t dS dL |/ |
 | d | d |/ … ƒ \ }5 }2 t2 |5 dT ƒ \ }7 }5 t2 |2 dU ƒ \ }8 }2 | rt dV |2 |5 |8 |7 f d ˆ  j ƒn  |2 dW k rdw }3 n t0 j) |2 d  ƒ }3 |3 sXt dY |2 d ˆ  j ƒ| | ƒ q„|3 d  d … \ }4 }9 }: | ršt dZ |4 |9 |: f d ˆ  j ƒn  |9 |5 k o±|: k n s¼t ‚ t | ƒ |5 k sÔt ‚ t | ƒ |5 k sìt ‚ t1 j d[ dP „  | |5 d  … Dƒ ƒ }6 dQ |4 |6 f }' t t d  t* |' ƒ }( | |5 d  … =| |( ƒ n1| d k r4t d\ |
 | d | d … ƒ d d }; | r¨t d] |; d ˆ  j ƒn  ˆ  j3 |; }< |< j4 dx k rÐ|< j5 }' n d^ ˆ  j6 |< j4 |< j5 f }' | rt d_ t7 |' ƒ d ˆ  j ƒn  t t d  t |' ƒ }( | |( ƒ nP| d9 k rñt8 |
 | d | |	 | | ƒ }( | r~t d` |( d ˆ  j ƒn  |( \ }  }! }= }> |= p™|> }? |? r«t  }@ n t }@ t9 |  |! |= |> | | | ƒ }' t |@ d  t |' ƒ }( | |( ƒ n“
| d k rt: |
 | d | |	 | | ƒ \ }A }B | rDt d` |A |B d ˆ  j ƒn  |A \ }C }D }E }F |B \ }G }H }I }J |C |G d |D |H d f }K |E |I |F |J f }L t; |L ƒ r©t  }@ n t }@ | rÑt da |K |L d ˆ  j ƒn  t< |K |L | | | ƒ }' t |@ d  t |' ƒ }( | |( ƒ ny	| d; k r't= | | ƒ n]	| db k r{t d\ |
 | d | d … ƒ d }/ | r„t dc |/ d ˆ  j ƒq„n		| dd k r>t8 |
 | d | |	 | | ƒ }( d } | rËt da |( d ˆ  j ƒn  |( \ }  }! }= }> |= pæ|> }? |? røt  }@ n t }@ t9 |  |! |= |> | | | ƒ }' t |@ d  t |' ƒ }( | |( ƒ nF| de k rXt: |
 | d | |	 | | ƒ \ }A }B | r‘t d` |A |B d ˆ  j ƒn  |A \ }C }D }E }F |B \ }G }H }I }J |C |G d |D |H d f }K |E |I |F |J f }L t; |L ƒ röt  }@ n t }@ | rt da |K |L d ˆ  j ƒn  t< |K |L | | | ƒ }' t |@ d  t |' ƒ }( | |( ƒ n,| d? k r‚| d k rÏt8 |
 | d | |	 | | ƒ }( t d\ |
 | d | d … ƒ d }M t> ˆ  |M | ƒ \ }N }O nŒ t8 |
 | d | |	 | | ƒ }( t df |
 | d | d … ƒ \ }P }Q }R | r=t dg |P |Q |R d ˆ  j ƒn  t? ˆ  |P |Q |R | ƒ \ }N }O |( \ }  }! }= }> |= pv|> }? | p‚|? } |N |O d |  |  d |! |! d f }K | |N dy k  O} | rØt da |K d ˆ  j ƒn  t t d  ƒ }( |? r<d d |= |= |> |> f }L t@ |K |L ƒ }S t  |( _ tA ˆ  |S | | | ƒ |( _ n' t@ |K ƒ }S t |( _ tB ˆ  |S ƒ |( _ t |( _ d  |( _C | |( ƒ n| d@ k rÁ| d k rùt: |
 | d | |	 ƒ \ }A }B t d\ |
 | d | d … ƒ d }M t> ˆ  |M | ƒ \ }N }O nŒ t: |
 | d | |	 ƒ \ }A }B t df |
 | d | d … ƒ \ }P }Q }R | rgt dh |P |Q |R d ˆ  j ƒn  t? ˆ  |P |Q |R | ƒ \ }N }O | |N dz k  O} |A \ }C }D }E }F |B \ }G }H }I }J |E pÎ|F pÎ|I pÎ|J }? | pÚ|? } |N |O d |C |G d |D |H d f }K | r t da |K d ˆ  j ƒn  t t d  ƒ }( |? r„d d |E |I |F |J f }L t@ |K |L ƒ }S t  |( _ tA ˆ  |S | | | ƒ |( _ n' t@ |K ƒ }S t |( _ tB ˆ  |S ƒ |( _ t |( _ | |( ƒ nÃ| d7 k r?d }T t t d  ƒ }( | d k r(t di |
 | d | d … ƒ \ }M }; |; d 8}; |M }U np t dj |
 | d | de … ƒ \ }M }; |; d 8}; |M }U |M d k rx|M d 8}M n  |M d k  r’|M d }M n d }T | rÄt dk |U |M |; |T f d ˆ  j ƒn  |T sC| d k rñt> ˆ  |M | ƒ \ }N }O qC|U d k rd} \ }N }O qCˆ  jD |M }V |V d9 k r4d€ \ }N }O qCdƒ \ }N }O n  t }@ d  }W |N d„ k r‹t' }@ ˆ  jE |; }W d3 |W j& d3 d4 ƒ d3 }' n’ |T s|N d… k  r°dm |; |U f }' nm ˆ  j3 |; }< |< j4 d† k rØ|< j5 }' n d^ ˆ  j6 |< j4 |< j5 f }' | rt dn t7 |( j ƒ d ˆ  j ƒn  t |@ |W t |' ƒ }( | |( ƒ nE | tF k r^d } | | ƒ n& | r~t do | d ˆ  j ƒn  d } | d k rŸt dp ƒ ‚ n  | | 7} q<W| } | rt dq | | | | f d ˆ  j ƒt | ƒ d k rt dr d ˆ  j ƒn  t d ˆ  j ƒ n  t | ƒ d k r6d  }X n | d j }X |X S)‡Nr   zR::: decompile_formula len=%d fmlatype=%r browx=%r bcolx=%r reldelta=%d %r level=%drþ   r   rF  z(Excessive indirect references in formulac             S   så   t  | ƒ d k s t ‚ | j ƒ  } | j ƒ  } t |  \ } } } } } d j d d  | j | k  … | j d d  | j | k  … | d d  | j | k  … | j d d  | j | k  … g ƒ }	 t | d  | |	 ƒ }
 | j |
 ƒ d  S)Nr$   rN   rG  rH  )	r
  r  rI  rJ  rK  r$  r%  r"   rM  )rN  rO  rP  rQ  rR  rS  rã   r$  rT  rU  rV  rá   rá   rä   rX  h  s    z#decompile_formula.<locals>.do_binopc       	      S   s¡   t  | ƒ d k s t ‚ | j ƒ  } t |  \ } } } } d j | d d  | j | k  … | j d d  | j | k  … | g ƒ } | j t | d  | | ƒ ƒ d  S)Nr   rN   rG  rH  )	r
  r  rI  rY  rK  r$  r%  rM  r"   )	rZ  rS  rO  rQ  rã   r$  r\  r]  rU  rá   rá   rä   r^  y  s    z%decompile_formula.<locals>.do_unaryopc                s.   d |  | t  ˆ f } t | d ˆ  j ƒd  S)Nz?ERROR *** Unexpected token 0x%02x (%s) found in formula type %srþ   )ÚFMLA_TYPEDESCR_MAPr	  r  )r_  r`  ra  )r  Úfmlatyperá   rä   Úunexpected_opcode†  s    z,decompile_formula.<locals>.unexpected_opcoderb   rc  r5   r(   z;Pos:%d Op:0x%02x opname:t%s Sz:%d opcode:%02xh optype:%02xhzStack =r$   z9ERROR *** Unexpected token 0x%02x ("%s"); biff_version=%dr?   z<x2Hz<xHBzSHARED FMLA at rowx=%d colx=%dr4   rV   r,   z
tIsect prerd  rC   rN   rG  rH  ztIsect postr'   z	tList prer7   z
tList postr-   z
tRange prere  ztRange postr<   r>   r=   rZ   r[   rB   rf  z   sz=%d strg=%rrg  z""r\   ztExtended token not implementedr;   z<BHr%   z??Unknown??rQ   rh  zSUM(%s)z)   subop=%02xh subname=t%s sz=%d nc=%02xhr^   r_   rA   z)tSheet & tEndsheet tokens not implementedr`   r&   r@  ri  rf   rd   zUnhandled opcode: 0x%02xzSize not set for opcode 0x%02xr@   z BHz#*** formula/tFunc unknown FuncID:%dz    FuncID=%d name=%s nargs=%dc             s   s   |  ] } | j  Vq d  S)N)r%  )râ   rj  rá   rá   rä   rå   \  s    z$decompile_formula.<locals>.<genexpr>z%s(%s)z()z<Br£   i €  z(   FuncID=%d nargs=%d macro=%d prompt=%drê   Ú
CALL_ADDINz&*** formula/tFuncVar unknown FuncID:%dz!    name: %r, min~max args: %d~%dc             s   s   |  ] } | j  Vq d  S)N)r%  )râ   rj  rá   rá   rä   rå   |  s    z<Hz   tgtnamex=%dz%s!%sz    tName: setting text toz  z   r8   z  %d bytes of cell ref formularT   rU   z<hxxxxxxxxhhrm  ro  z<HHz<hxxxxxxxxHz+   origrefx=%d refx=%d tgtnamex=%d dodgy=%diš  z$<<Name #%d in external(?) file #%d>>z    tNameX: setting text tozFORMULA: /// Not handled yet: tz!Fatal: token size is not positivez7End of formula. level=%d any_rel=%d any_err=%d stack=%rz*** Stack has unprocessed argsr  r  r  )zFALSEzTRUE)rÆ  r   r?   r  r  r  r  r  )r  r  r  r  )r  r  éfýÿÿéfýÿÿ)rÇ  rÈ  r  r  r  )Grr  r   r!   r   r    rs  r	  r  r	   ru  r   rv  r"   r   r   rM  rw  rx  r  Ú_TOKEN_NOT_ALLOWEDr  r   r{  r   r   r
  rI  rK  r$  r%  r   r"  r   r   r6   r   r|  r   r}  r   r~  r(  r  r   r€  r6  r
   r  r‚  rƒ  r„  r…  rŽ  rt  r  r  rú   Úcellnamerelrý   ÚsumÚrangename2drelrb  r  r  r#   r   r   r#  r‘  Zaddin_func_namesr’  )Yr  Zfmlar–  rÄ  rï   rð   r  r•  rn  rî   r÷   rù   r—  rø   r‹  rŠ  rˆ  r“  r˜  r™  rš  rX  r^  rÅ  r›  rZ  rœ  r  rž  rŸ  ra  Úfmtró   rô   r%  rP  rQ  rT  r$  rU  r   r¡  r¢  r£  r¤  r¥  r¦  r§  r"  r#  r¨  r©  rª  r«  r¬  r­  r†  r®  r¯  r°  r±  rñ   rò   r¾  Zokindrû   rü   r´  rµ  r¶  r·  r¸  r¹  rº  r»  rè   r+  r  r²  r³  r  r¼  r½  r¿  rÀ  rÁ  rÂ  ZovaluerW  rá   )r  rÄ  rä   r   P  sz   		&
	


#	% 	""
  *	
  	"
 %
  ' 
#
0
1'
3 	"')  	" 	 %  	" 	 %*$ 				%*$ 			'
	'
 "	c       4      C   s±  | rD t  d | | t | ƒ d |  j ƒt | d | d |  j ƒn  | d k sV t ‚ t | } d } g  }	 d }
 d } |	 j } xÖ
d | k o› | k  n rYt | | ƒ } | d @} | d @d ?} | rÛ | d	 } n | } t | } | | } | r't  d
 | | | | | | f d |  j ƒn  | s6d | k oDd k n r˜t	 d | | d | d … ƒ \ } } | r&t  d | | f d |  j ƒq&nŽ| d k r#| rÃt  d |	 d |  j ƒn  t |	 ƒ d k sÛt ‚ |	 j
 ƒ  } |	 j
 ƒ  } | | | ƒ | r&t  d |	 d |  j ƒq&n| d k rô| rNt  d |	 d |  j ƒn  t |	 ƒ d k sft ‚ |	 j
 ƒ  } |	 j
 ƒ  } t | ƒ d k s–t ‚ t | ƒ d k s®t ‚ t t | d | d ƒ } | | ƒ | r&t  d |	 d |  j ƒq&n2| d k rÅ| rt  d |	 d |  j ƒn  t |	 ƒ d k s7t ‚ |	 j
 ƒ  } |	 j
 ƒ  } t | ƒ d k sgt ‚ t | ƒ d k st ‚ t t | d | d ƒ } | | ƒ | r&t  d |	 d |  j ƒq&na| d k r\t	 d | | d | d … ƒ \ } } t j | d ƒ } | d k r'| d d } n d } | r&t  d | | | | f d |  j ƒq&nÊ | d k r| d k r±t | | d ƒ } | | d | d | … } | d } n) t | | d d  d ƒ\ } } | | } | r&t  d! | | f d |  j ƒq&n# | d k r&t  d" d |  j ƒd  S| | 7} q„ n  | d k rEnä| d k r·d t | d# k ƒ } t	 d$ d% | | | d | d | … ƒ } | r)t  d& | d |  j ƒq)nr| d k red t | d# k ƒ } t	 d' d% | | | d | d | … ƒ \ } } t | d( ƒ \ }  } t | d) ƒ \ }! } | r)t  d* | | |! |  f d |  j ƒq)nÄ| d+ k rµt	 d, | | d | d+ … ƒ }" | r)t  d- |" d |  j ƒq)nt| d k rüt | | d | | ƒ }# | r)t  d |# d |  j ƒq)n-| d k rCt | | d | | ƒ }# | r)t  d |# d |  j ƒq)næ| d. k r—t	 d, | | d | d+ … ƒ d } | r)t  d/ | d |  j ƒq)n’| d0 k rçt | | d | d1 d ƒ}# d }
 | r)t  d2 |# d |  j ƒq)nB| d3 k r7t | | d | d1 d ƒ}# d }
 | r)t  d2 |# d |  j ƒq)nò| d4 k rQ	t	 d, | | d | d+ … ƒ d }$ t | | d+ | | ƒ }# | r£t  d |$ |# d |  j ƒn  |# \ } } }% }& |
 pÄ|% pÄ|& }
 t |  |$ | ƒ \ }' }( | |' d: k  O} |' |( d | | d | | d f }) | r2	t  d2 |) d |  j ƒn  | d k r)| |) g ƒ q)nØ| d5 k r’
t	 d, | | d | d+ … ƒ d }$ t | | d+ | | ƒ \ }* }+ | rÆ	t  d |$ |* |+ d |  j ƒn  |* \ }, }- }. }/ |+ \ }0 }1 }2 }3 |
 p
|. p
|/ p
|2 p
|3 }
 t |  |$ | ƒ \ }' }( | |' d; k  O} |' |( d |, |0 d |- |1 d f }) | rs
t  d2 |) d |  j ƒn  | d k r)| |) g ƒ q)n— | d k rî
t	 d | | d | d … ƒ \ }$ }" | r)t  d6 |$ |" f d |  j ƒq)n; | t k rd } n& | r#t  d7 | d |  j ƒn  d } | d k rLt  d" d |  j ƒd  S| | 7} q„ W| r­t  d8 |
 | |	 f d |  j ƒt |	 ƒ d k r­t  d9 d |  j ƒq­n  d  S)<Nr   rþ   r   rF  rC   rb   rc  r5   r(   z9Pos:%d Op:0x%02x Name:t%s Sz:%d opcode:%02xh optype:%02xhr   r$   z<HHz  r'   z	tList prez
tlist postr-   z
tRange preztRange postr,   z
tIsect preztIsect postr;   z<BHr%   z??Unknown??rQ   z)   subop=%02xh subname=t%s sz=%d nc=%02xhr[   rB   rf  z   sz=%d strg=%rz**** Dud size; exiting ****r@   r@  z BHz   FuncID=%dz<Br£   i €  z(   FuncID=%d nargs=%d macro=%d prompt=%dr4   z<Hz   namex=%dr8   z  %d bytes of cell ref formularT   rî   z   rU   r^   r_   z   refx=%d namex=%dzFORMULA: /// Not handled yet: tz.End of formula. any_rel=%d any_err=%d stack=%rz*** Stack has unprocessed argsr  r  )r	  r
  r  r	   r  rv  rM  rw  rx  r   rI  ré   rz  ry  r~  r(  r   r  r„  rú   rý   r  r’  )4r  r÷   r–  rù   rî   r  Úisnamer—  rø   r‹  rŠ  rˆ  rš  r›  rZ  rœ  r  rž  rŸ  ró   rô   rP  rQ  rW  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   a  sR   "
	


&' "   
  
 ' )
 #
- 3 )!   %   % $  % $  ' #	 c             C   se   | d  k r d } n  | s9 | r- d |  d Sd |  d S| rQ |  rM d |  Sd Sd | |  d d S)	NTzR%dr   z$%dzR[%d]rP   z%di   rá   )ró   Úrowxrelrï   rn  rá   rá   rä   Ú
rownamerel  s    	rÐ  c             C   se   | d  k r d } n  | s; | r- d |  d Sd t  |  ƒ S| rS |  rO d |  Sd St  | |  d ƒ S)NTzC%dr   ú$zC[%d]ÚCrë   )r   )rô   Úcolxrelrð   rn  rá   rá   rä   Ú
colnamerel  s    	rÔ  c             C   s   d t  | ƒ |  d f S)z(Utility function: ``(5, 7)`` => ``'H6'``z%s%dr   )r   )ró   rô   rá   rá   rä   r   !  s    c             C   s4   | r d |  d | d f Sd t  | ƒ |  d f S)z*Utility function: ``(5, 7)`` => ``'$H$6'``zR%dC%dr   z$%s$%d)r   )ró   rô   rn  rá   rá   rä   r   %  s    c       	      C   s‹   | r | r t  |  | | ƒ S| r0 | d  k sB | rK | d  k rK d } n  t | | | | ƒ } t |  | | | ƒ } | rƒ | | S| | S)NT)r   rÔ  rÐ  )	ró   rô   rÏ  rÓ  rï   rð   rn  ÚcÚrrá   rá   rä   rÊ  +  s    $	rÊ  c             C   sG   d } |  d k r | |  St  |  d ƒ \ } } | | d | | Sd S)z6Utility function: ``7`` => ``'H'``, ``27`` => ``'AB'``ÚABCDEFGHIJKLMNOPQRSTUVWXYZr;   r^   r   N)r„  )rô   ZalphabetZxdiv26Zxmod26rá   rá   rä   r   7  s
    c             C   sh   | r
 d S| |  d k r: | | d k r: t  |  | | ƒ Sd t  |  | | ƒ t  | d | d | ƒ f S)z( ``(5, 20, 7, 10)`` => ``'$H$6:$J$20'`` Nr   z%s:%s)r   )ÚrloÚrhiÚcloÚchirn  rá   rá   rä   Úrangename2d@  s
     rÜ  c          
   C   s¬   |  \ } } } } | \ }	 }
 } } |	 s0 |
 rE | d  k rE d } n  | sQ | rf | d  k rf d } n  d t  | | |	 | | | | ƒ t  | d | d |
 | | | | ƒ f S)NTz%s:%sr   )rÊ  )Zrlo_rhi_clo_chiZrlorel_rhirel_clorel_chirelrï   rð   rn  rØ  rÙ  rÚ  rÛ  ZrlorelZrhirelZclorelZchirelrá   rá   rä   rÌ  H  s    		rÌ  c             C   s:   | j  } d t |  | d d … Œ t | d d … Œ  f S)z
    Utility function:
    ``Ref3D(1, 4, 5, 20, 7, 10)`` =>
    ``'Sheet2:Sheet3!$H$6:$J$20'``
    (assuming Excel's default sheetnames)
    z%s!%sNr$   rQ   )rè   Ú
sheetrangerÜ  )Úbookr¿  rè   rá   rá   rä   r   U  s    	c       	      C   s|   | j  } | j } t |  | d d … | d d … ƒ } t | d d … | d d … | | | ƒ } | sn | Sd | | f S)zÞ
    Utility function:
    ``Ref3D(coords=(0, 1, -32, -22, -13, 13), relflags=(0, 0, 1, 1, 1, 1))``

    In R1C1 mode => ``'Sheet1!R[-32]C[-13]:R[-23]C[12]'``

    In A1 mode => depends on base cell ``(browx, bcolx)``
    Nr$   rQ   z%s!%s)rè   r+  ÚsheetrangerelrÌ  )	rÞ  r¿  rï   rð   rn  rè   r+  ÚshdescZrngdescrá   rá   rä   r   a  s    			&,c             C   s‹   | d k r |  | } n2 i d d 6d d 6d d 6d d 6j  | d
 | ƒ } d | k ro d | j d d ƒ d Sd | k r‡ d | d S| S)Nr   z?internal; any sheet?r   zinternal; deleted sheetr$   zinternal; macro sheetr4   z<<external>>r%   z
?error %d?ú'z''rd  r  r  r  r  )r(  r}  )ÚshnamesZshxZshnamerá   rá   rä   Úquotedsheetnamer  s    
rã  c             C   sM   |  j  ƒ  } t | | ƒ } | | d k rI | d t | | d ƒ 7} n  | S)Nr   re  )Zsheet_namesrã  )rÞ  ÚsloÚshirâ  rà  rá   rá   rä   rÝ  ‚  s
    rÝ  c             C   sl   | \ } } | \ } } | r6 | r6 t  |  | | ƒ S| d k oQ | d k n rb | rb | sh t ‚ d S)Nr   r   rN   )rÝ  r  )rÞ  ZsrangeZ	srangerelrä  rå  ZslorelZshirelrá   rá   rä   rß  ‰  s    2rß  )ur*  Ú
__future__r   rŒ  Ústructr   ZtimemachineZbiffhr   r   r   r	   r
   r   Ú__all__r   r   r   r   r    r!   ZALL_FMLA_TYPESrÃ  r(  rÉ  r   r   r6   r   r   r   r   r   r   rƒ  Zsztab0Zsztab1Zsztab2Zsztab3Zsztab4rv  rx  r‚  r~  Úsetr’  ÚminÚmaxrz  ry  ré   rõ   rö   rú   rý   r  r  Ú	Exceptionr  Úobjectr"   ræ   r#   ZtAddZtSubZtMulZtDivZtPowerZtConcatÚrangeZtLTZtLEZtEQZtGEZtGTZtNEÚoperatorZoprr-  r/  r0  r1  r2  r3  r4  r5  r:  r€  Z_arith_argdictZ_cmp_argdictZ_strg_argdictÚaddÚsubÚmulÚtruedivrJ  rY  r{  r  rr  ru  r   r   r   rÐ  rÔ  r   r   rÊ  r   rÜ  rÌ  r   r   rã  rÝ  rß  rá   rá   rá   rä   Ú<module>	   sP  
.

ÙÙÚ××
Æ
!&\A!	ÿ ÿ g	ÿ ÿ ¤	