
    ,h                        d dl mZ d dlZd dlZddlmZmZmZ ddl ddl	 ddl
 	 d dlmZ d dlZej                   Zej"                  Zd ZdZd Z	 d dlZdZeZdZ ed	      \  ZZZZZd
ZdddddddddddddddZ i Z!i Z"e jG                         D ]  \  Z$Z% e&e$      Z$ e&e%      Z%e%e"e$<   e$e!e%<   ! [$[%[ dejN                  d edddddf	dZ( G d de)      Z* G d de)      Z+d  Z,d$d!Z-d" Z.d# Z/y# e$ r	 d dlmZ Y w xY w# e$ r d ZY w xY w)%    )print_functionN   )compdoc
formattingsheet)*)perf_counter)clocki    )P   F   2   -   (             	
)Consolidate_Area	Auto_Open
Auto_CloseExtractDatabaseCriteria
Print_AreaPrint_TitlesRecorder	Data_FormAuto_ActivateAuto_DeactivateSheet_Title_FilterDatabaseFc	                 .   t               }	t        r*t        j                         }
|
rt        j                          t               }	 |j                  | ||||||||	       t               }||	z
  |_        |j                  t              }|st        d      |t        vrt        dt        |   z        ||_        |dk  r2|rt        |j                  d       dx|_        }|j#                          nx|dk(  r2|j%                          |rat        |j                  d       dx|_        }nA|j%                          |j&                  D cg c]  }d  c}|_        |s|j+                          t-        |j(                        |_        |dk(  r0|j.                  dkD  r!t        |j                  d	|j.                         t        r
rt        j0                          t               }||z
  |_        |s|j5                          |S c c}w #  |j5                           xY w)
N)	filenamefile_contentslogfile	verbosityuse_mmapencoding_overrideformatting_info	on_demandragged_rowsz#Can't determine file's BIFF versionz BIFF version %s is not supportedr   z`*** WARNING: on_demand is not supported for this Excel version.
*** Setting on_demand to False.
Fr   r   z|*** WARNING: Excel 4.0 workbook (.XLW) file contains %d worksheets.
*** Book-level data will be that of the last worksheet.
)r	   	TOGGLE_GCgc	isenableddisableBookbiff2_8_loadload_time_stage_1getbofXL_WORKBOOK_GLOBALS	XLRDErrorSUPPORTED_VERSIONSbiff_text_from_numbiff_versionfprintfr3   r8   fake_globals_get_sheetparse_globals_sheet_names_sheet_list
get_sheetslennsheetsenableload_time_stage_2release_resources)r1   r3   r4   r5   r2   r6   r7   r8   r9   t0orig_gc_enabledbkt1rF   sht2s                   K/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/xlrd/book.pyopen_workbook_xlsrY   F   s   
 
B,,.JJL	B7
]y8/+# 	 	
 ^!Bwyy!45ABB112$\23  '2

89 ,10y%%'R

 %H I+00y-/__=rd=BN(
2"**q.

L

	 		^!Bw
 
I- > 
s    D H 	G<BH <H Hc                   h    e Zd ZdZdgZdZdZdZdZdZ	dZ
dZdZdZdZ ed      ZdZdZdZd Zd
d	Zy)Namez
    Information relating to a named reference, formula, macro, etc.

    .. note::

      Name information is **not** extracted from files older than
      Excel 5.0 (``Book.biff_version < 50``)
    stackNr        c                 <   | j                   }|r|j                  }|j                  }|t        k(  rt	        |      dk(  r|d   }d|j
                  cxk  r|j                  dz
  k(  rn n|j                  |j                  dz
  k(  rg|j                  |j                  dz
  k(  rK| j                  j                  |j
                        }|j                  |j                  |j                        S | j                  | j                  j                  dd       t!        d      )a:  
        This is a convenience method for the frequent use case where the name
        refers to a single cell.

        :returns: An instance of the :class:`~xlrd.sheet.Cell` class.

        :raises xlrd.biffh.XLRDError:
          The name is not a constant absolute reference
          to a single cell.
        r   r   === Dump of Name object ========== End of dump =======headerfooterz2Not a constant absolute reference to a single cell)resultkindvalueoREFrM   shtxloshtxhirowxlorowxhicolxlocolxhibooksheet_by_indexcelldumpr3   rC   )selfresrg   rh   ref3drV   s         rX   rr   z	Name.cell   s     kk88DIIEt|E
aa9)99q(88q(8811%,,?B775<<>>		II00 	 	

 LMMr^   c                    | j                   }|r|j                  }|j                  }|t        k(  rlt	        |      dk(  r]|d   }d|j
                  cxk  r|j                  dz
  k(  r5n n1| j                  j                  |j
                        }|s/||j                  |j                  |j                  |j                  fS t        |j                  |j                        }t        |t        |j                  |j                              }t        |j                  |j                         }	t        |	t        |j                  |j                               }
d|cxk  r|cxk  r|j                  k  sJ  J d|	cxk  r|
cxk  r|j                   k  sJ  J ||||	|
fS | j#                  | j                  j$                  dd       t'        d      )a  
        This is a convenience method for the use case where the name
        refers to one rectangular area in one worksheet.

        :param clipped:
          If ``True``, the default, the returned rectangle is clipped
          to fit in ``(0, sheet.nrows, 0, sheet.ncols)``.
          it is guaranteed that ``0 <= rowxlo <= rowxhi <= sheet.nrows`` and
          that the number of usable rows in the area (which may be zero) is
          ``rowxhi - rowxlo``; likewise for columns.

        :returns: a tuple ``(sheet_object, rowxlo, rowxhi, colxlo, colxhi)``.

        :raises xlrd.biffh.XLRDError:
           The name is not a constant absolute reference
           to a single area in a single sheet.
        r   r   ra   rb   rc   zDNot a constant absolute reference to a single area in a single sheet)rf   rg   rh   ri   rM   rj   rk   rp   rq   rl   rm   rn   ro   minnrowsmaxncolsrs   r3   rC   )rt   clippedru   rg   rh   rv   rV   rl   rm   rn   ro   s              rX   area2dzName.area2d   sq   $ kk88DIIEt|E
aa8q(8811%,,?B"!5<<u||U\\YY rxx8F U\\288)DEF rxx8F U\\288)DEF<&<BHH<<<<<&<BHH<<<<vvvv==		II00 	 	

 ^__r^   T)__name__
__module____qualname____doc___repr_theserp   hiddenfuncvbasicmacrocomplexbuiltin	funcgroupbinary
name_indexUNICODE_LITERALnameraw_formulascoperf   rr   r}    r^   rX   r[   r[      s     )KD F D F E
 G G I
 F J 2D K E FN<)`r^   r[   c            	       v   e Zd ZdZdZdZdZg ZdZdZ	dZ
 ed      Zg Zg Zg Zi Zi Zi Zg ZdZdZd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zi Zi Z d Z!dde"jF                  de$ddddf	dZ%d Z&d Z'd Z(d Z)d.dZ*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d  Z3d! Z4d" Z5d# Z6d$ Z7d% Z8d& Z9d' Z:d( Z;d) Z<d* Z=d+ Z>d, Z?d- Z@y)/r>   z
    Contents of a "workbook".

    .. warning::

      You should not instantiate this class yourself. You use the :class:`Book`
      object that was returned when you called :func:`~xlrd.open_workbook`.
    r   Nr   r   r]   g      c                     t        | j                        D ]#  }| j                  |   r| j                  |       % | j                  dd S )zt
        :returns: A list of all sheets in the book.

        All sheets not already loaded will be loaded.
        N)xrangerN   rK   	get_sheetrt   sheetxs     rX   sheetszBook.sheets  sI     T\\* 	'F##F+v&	' ""r^   c                 F    | j                   |   xs | j                  |      S )zr
        :param sheetx: Sheet index in ``range(nsheets)``
        :returns: A :class:`~xlrd.sheet.Sheet`.
        )rK   r   r   s     rX   rq   zBook.sheet_by_index  s#    
 'A4>>&+AAr^   c                     	 | j                   j                  |      }| j	                  |      S # t        $ r t        d|z        w xY w)zp
        :param sheet_name: Name of the sheet required.
        :returns: A :class:`~xlrd.sheet.Sheet`.
        No sheet named <%r>)rJ   index
ValueErrorrC   rq   )rt   
sheet_namer   s      rX   sheet_by_namezBook.sheet_by_name  sU    
	@&&,,Z8F ""6**  	@1J>??	@s	   . Ac                      | j                   dd S )z
        :returns:
          A list of the names of all the worksheets in the workbook file.
          This information is available even when no sheets have yet been
          loaded.
        N)rJ   rt   s    rX   sheet_nameszBook.sheet_names  s       ##r^   c                     t        |t              r|}n	 | j                  j                  |      }t        | j                  |         S # t        $ r t        d|z        w xY w)z
        :param sheet_name_or_index: Name or index of sheet enquired upon
        :returns: ``True`` if sheet is loaded, ``False`` otherwise.

        .. versionadded:: 0.7.1
        r   )
isinstanceintrJ   r   r   rC   boolrK   rt   sheet_name_or_indexr   s      rX   sheet_loadedzBook.sheet_loaded  sn     )3/(FM**001DE D$$V,--  M 58K KLLMs   A A c                     t        |t              r|}n	 | j                  j                  |      }d| j                  |<   y# t        $ r t        d|z        w xY w)zu
        :param sheet_name_or_index: Name or index of sheet to be unloaded.

        .. versionadded:: 0.7.1
        r   N)r   r   rJ   r   r   rC   rK   r   s      rX   unload_sheetzBook.unload_sheet  sh     )3/(FM**001DE $(   M 58K KLLMs   A   Ac                 
   d| _         t        | j                  d      r| j                  j                          d| _        t        | j                  d      r| j                  j                          d| _        d| _        d| _        y)a_  
        This method has a dual purpose. You can call it to release
        memory-consuming objects and (possibly) a memory-mapped file
        (:class:`mmap.mmap` object) when you have finished loading sheets in
        ``on_demand`` mode, but still require the :class:`Book` object to
        examine the loaded sheets. It is also called automatically (a) when
        :func:`~xlrd.open_workbook`
        raises an exception and (b) if you are using a ``with`` statement, when
        the ``with`` block is exited. Calling this method multiple times on the
        same object has no ill effect.
        r   closeN)_resources_releasedhasattrmemr   filestr_sharedstrings_rich_text_runlist_mapr   s    rX   rQ   zBook.release_resources  sd     $% 488W%HHNN4<<)LL "&*#r^   c                     | S Nr   r   s    rX   	__enter__zBook.__enter__  s    r^   c                 $    | j                          y r   )rQ   )rt   exc_type	exc_valueexc_tbs       rX   __exit__zBook.__exit__!  s     r^   c                    g | _         g | _        g | _        d| _        g | _        g | _        i | _        d| _        d| _        d| _	        | j                          d| _        d| _        d | _        d | _        g | _        g | _        g | _        i | _        i | _        d| _        g | _        d| _        g | _        g | _        i | _        g | _        g | _        i | _        d| _        d| _        y )Nr   Fr_   r^   )rK   rJ   _sheet_visibilityrN   _sh_abs_posnr   r   raw_user_name_sheethdr_countbuiltinfmtcountinitialise_format_info_all_sheets_count_supbook_count_supbook_locals_inx_supbook_addins_inx_all_sheets_map_externsheet_info_externsheet_type_b57_extnsht_name_from_num_sheet_num_from_name_extnsht_count_supbook_typesr   addin_func_namesname_obj_list
colour_mappalette_recordxf_liststyle_name_mapr   r   r   s    rX   __init__zBook.__init__2  s    !# &(#" !##%!"#' #' !!#%'"&(#$&! #$  "  r^   Fc
                    || _         || _        |xr t        | _        || _        || _        || _        |	| _        |st        |d      5 }
|
j                  dd       |
j                         }|
j                  dd       |dk(  rt        d      | j                  rAt        j                  |
j                         |t        j                        | _        || _        n/|
j#                         | _        t%        | j                        | _        d d d        n|| _        t%        |      | _        d| _        | j                  d d t(        j*                  k7  r| j                  | _        n't)        j.                  | j                  | j                         }t0        rMdD ]=  }|j3                  t5        |            \  | _        | _        | _        | j,                  s= ne t        d	      dD ]/  }|j7                  t5        |            | _        | j,                  s/ n t        d	      t%        | j,                        | _        ~| j,                  | j                  ur7t9        | j                  d
      r| j                  j;                          d| _        | j&                  | _        t>        rEtA        dtC        | j,                        | j&                  | j                   fz  | j                          y y # 1 sw Y   xY w)Nrbr      zFile size is 0 bytes)access   )r3   )Workbookr>   z-Can't find workbook in OLE2 compound documentr   r^   zmem: %s, base: %d, len: %dfile)"r3   r4   MMAP_AVAILABLEr5   r6   r7   r8   r9   openseektellrC   mmapfilenoACCESS_READr   
stream_lenreadrM   baser   	SIGNATUREr   CompDocUSE_FANCY_CDlocate_named_streamr   get_named_streamr   r   	_positionDEBUGprinttype)rt   r1   r2   r3   r4   r5   r6   r7   r8   r9   fsizecdqnames                 rX   r?   zBook.biff2_8_loadS  sX    " 3^!2."&h% 8q!vvxq!19#$:;;==#'99QXXZdFVFV#WDL&*DO#$668DL&)$,,&7DO8 8 )DL!-0DO	<<w000||DHt||DB1 UE " 6 6u7M N 9DHdixxU
 $$STT1 UE!22?53IJDHxxU $$STT"%dhh-xxt||+4<<1LL&&(".$txx.$))T__1]]dhdpdpq U8 8s   CK''K1c                     i | _         g | _        d| _        d| _        dt        i| _        d| _        g | _        g | _        y )Nr   )	
format_mapformat_listxfcountactualfmtcountXL_CELL_NUMBER_xf_index_to_xl_type_map_xf_epilogue_doner   	font_listr   s    rX   r   zBook.initialise_format_info  sC    )*N(;%!"r^   c                     | j                   }| j                  ||dz    }t        |      }| xj                   |z  c_         |dk  rt        S |\  }}t	        |      dz  t	        |      z  S )Nr   r   )r   r   rM   MY_EOF	BYTES_ORD)rt   posbuff_twolenbufflohis         rX   	get2byteszBook.get2bytes  sc    nn88CA&h-'!Q;MB""im33r^   c                     | j                   }| j                  }t        d|||dz          \  }}|dz  }||||z    }||z   | _         |||fS )N<HH   r   r   unpack)rt   r  r   codelengthdatas         rX   get_record_partszBook.get_record_parts  s_    nnhheSSU^4fq3s6z"vfd##r^   c                     | j                   }| j                  }t        d|||dz          \  }}||k7  ry|dz  }||||z    }||z   | _         |||fS )Nr  r	  )Nr   r^   r
  )rt   reqd_recordr  r   r  r  r  s          rX   get_record_parts_conditionalz!Book.get_record_parts_conditional  sj    nnhheSSU^4f;!q3s6z"vfd##r^   c                 (   | j                   rt        d      |r| j                  |   | _        | j	                  t
               t        j                  | | j                  | j                  |   |      }|j                  |        || j                  |<   |S )Nz,Can't load sheets after releasing resources.)r   rC   r   r   rA   XL_WORKSHEETr   SheetrJ   r   rK   )rt   	sh_number
update_posrV   s       rX   r   zBook.get_sheet  s    ##JKK!..y9DNL! [[NNi(	
 	&(#	r^   c                 :   t         r-t        d| j                  | j                  | j                         t        t        | j                              D ]G  }t         r.t        d|| j                  | j                  | j                         | j                  |       I y )NzGET_SHEETS:r   zGET_SHEETS: sheetno =)r   r   rJ   r   r3   r   rM   r   )rt   sheetnos     rX   rL   zBook.get_sheets  sw    %t'8'8$:K:KRVR^R^_c$"3"345 	$Ge3Wd>O>OQUQbQbimiuiuvNN7#	$r^   c                     t        j                  |        t        d      }|g| _        dg| _        dg| _        | j                  j                  d        | j                          y )NzSheet 1r   )	r   initialise_bookr   rJ   r   r   rK   appendrL   )rt   fake_sheet_names     rX   rH   zBook.fake_globals_get_sheet  sW    ""4())4,-C"#%r^   c           	      f   | j                   }| j                          t        rt        | j                  d||       |dk(  rVt        |d| j                  d      }d}t        }t        | j                        dk(  r| j                  | j                  z   }nVd}nSt        d|dd       \  }}}|| j                  z   }|t        k  rt        |d| j                  d      }nt        |dd      }t        s| j                  d	k\  r%t        | j                  d
| j                   ||||       | xj                   dz  c_        |t        k7  ra| j"                  j%                  d       ddddj'                  |d      }t        s| j                  dk\  rt        | j                  d|||       y y t        | j(                        }	| j"                  j%                  |	       | j(                  j%                  |       | j                  j%                  |       | j*                  j%                  |       |	| j,                  |<   y )NzBOUNDSHEET: bv=%d data %r
r   r   r   lenlenr_   z<iBB   r   zFBOUNDSHEET: inx=%d vis=%r sheet_name=%r abs_posn=%d sheet_type=0x%02x
zMacro sheetChartzVisual Basic module)r   r   r!  UNKNOWNzANOTE *** Ignoring non-worksheet data named %r (type 0x%02x = %s)
)rF   derive_encodingr   rG   r3   unpack_stringencodingXL_BOUNDSHEET_WORKSHEETrM   r   _sheetsoffsetr   r  BIFF_FIRST_UNICODEunpack_unicoder4   r   r   r  getrJ   r   r   )
rt   r  bvr   
visibility
sheet_typeabs_posnoffsetdescrsnums
             rX   handle_boundsheetzBook.handle_boundsheet  s   DLL"?TJ8 'tQaHJJ0J4$$%*--		9
 -3FD1I-F*FJ
		)H&&*4DMM!L
+D!A>
DNNa'DLLY&&
J*V 	!#00  ''+ ( c*i(	  !+X
E3 ,
 t(()D  ''-$$Z0$$X.""))*548D%%j1r^   c                 p    t        d|dd       d   }t        rt        | j                  d|       || _        y )N<Hr   r   zBUILTINFMTCOUNT: %r
)r  r   rG   r3   r   )rt   r  r   s      rX   handle_builtinfmtcountzBook.handle_builtinfmtcount  s6     !tAay1!4'$,,(?Q.r^   c           
         | j                   r| j                   | _        n| j                  Z| j                  dk  rt	        | j
                  d       d| _        nd| _        | j                  dk\  rt	        | j
                  d       n| j                  }|t        v r
t        |   }n+d|cxk  rdk  rn nd	t        |      z   }nd
t        |      z   }t        s| j                  r'|| j                  k7  rt	        | j
                  d||       || _        | j                  dk7  r	 t        d| j                         | j                  rAt!        | j"                  d| j                  d      }|j%                         }|| _        d| _        | j                  S # t        $ rY}t	        | j
                  d| j                  | j                  t        |      j                  j                  d      d   |        d }~ww xY w)Nr   z?*** No CODEPAGE record, no encoding_override: will use 'ascii'
asciii  r   z2*** No CODEPAGE record; assuming 1200 (utf_16_le)
i,  i  cpunknown_codepage_z%CODEPAGE: codepage %r -> encoding %r
s   trialz/ERROR *** codepage %r -> encoding %r -> %s: %s
.r_   r   r   r  F)r6   r&  codepagerF   rG   r3   r4   encoding_from_codepagestrr   unicodeBaseExceptionr   r   splitr   r%  	user_namerstrip)rt   r<  r&  estrgs        rX   r$  zBook.derive_encoding  s   !! 22DM]]"  2%VX ' $>>Q&DLL*_`}}H111(;(D(#h-/.X>H,E&NPXZbc$DM==D $--0  DMM!LD;;=D "DN!&D}} ! FMM4==$q'2B2B2H2H2Mb2QSTV 	s   F 	G/AG**G/c                 V    t        d|dd       d   }|| _        | j                          y )Nr5  r   r   )r  r<  r$  )rt   r  r<  s      rX   handle_codepagezBook.handle_codepageC  s,    $Qq	*1- r^   c                     t        d|dd       }| j                  rt        d|| j                         | j                  dk(  s| j                  |k(  sJ || _        y )Nr  r   r	  z
Countries:r   r   )r  r4   r   r3   	countries)rt   r  rI  s      rX   handle_countryzBook.handle_countryI  sK    5$q),	>>5yt||L~~'4>>Y+FF"r^   c                     t        d|dd       d   }t        s| j                  rt        | j                  d|       |dv sJ || _        y )Nr5  r   r   zDATEMODE: datemode %r
)r   r   )r  r   r4   rG   r3   datemode)rt   r  rL  s      rX   handle_datemodezBook.handle_datemodeP  sE    $Qq	*1-DNNDLL";XF6!! r^   c           	      ^   t         xs | j                  dk\  }| j                  dk\  rt        d|d d       \  }}d}t	        ||d      \  }}||d  }| j
                  d   t        k(  r| j                  j                  |       |r)t        | j                  d| j
                  d   ||||       y y y )	Nr   r   <HIr!  r   r  r_   zCEXTERNNAME: sbktype=%d oflags=0x%04x oinfo=0x%08x name=%r extra=%r
)r   r4   rF   r  unpack_unicode_update_posr   SUPBOOK_ADDINr   r  rG   r3   )rt   r  blahoption_flags
other_infor  r   extras           rX   handle_externnamezBook.handle_externnameW  s    +!+"&,UD!H&=$L*C1$AFID#JE""2&-7%%,,T2Z''+\:tUT  #r^   c           	         | j                          | xj                  dz  c_        t        xs | j                  dk\  }t        xs | j                  dk\  }| j                  dk\  rt        d|dd       d   }|dz  dz   }t        |      |k  r_|r!t        | j                  d|t        |             | j                         \  }}}|t        k7  rt        d      ||z  }t        |      |k  r_d}	t        |      D ]W  }
t        d	||	|	dz          }|\  }}}| j                  j                  |       |	dz  }	|s>t        | j                  d
|
|||       Y y t        d|d d       \  }}|rmt        d| j                         t!        |dt        |      | j                         dddddj#                  |d      }t        d|||fz  | j                         |dk(  rXt%        |d|dz    | j&                        }|| j(                  | j                  <   |r!t        | j(                  | j                         d|cxk  rdk  sn d}| j*                  j                  |       y )Nr   r   r   r5  r   r!  z*INFO: EXTERNSHEET needs %d bytes, have %d
z)Missing CONTINUE after EXTERNSHEET recordz<HHHzLEXTERNSHEET(b8): k = %2d, record = %2d, first_sheet = %5d, last sheet = %5d
z<BBzEXTERNSHEET(b7-):r   foutzEncoded URLzCurrent sheet!!zSpecific sheet in own doc'tz Nonspecific sheet in own doc't!!)r   r      r	  zNot encodedz   %3d chars, type is %d (%s)rZ  r	  )r$  r   r   r4   rF   r  rM   rG   r3   r  XL_CONTINUErC   r   r   r  r   hex_char_dumpr+  r?  r&  r   r   )rt   r  blah1blah2num_refs
bytes_reqdcode2length2data2r  kinforef_recordxref_first_sheetxref_last_sheetxnctymsgr   s                      rX   handle_externsheetzBook.handle_externsheete  sO   q ,1,,1,"dD1I.q1H!A)Jd)j(E"CI
 )-(=(=(?%wK'#$OPP d)j( CH% 
fd3s1uo6AE>-&&--d3qg;(8/
 E48,FB)=dAs4yt||D$(49	
 #b-(  5REDLLYQw$T!BqD\4==A
CM++D,?,?@% ; ;$,,OLqL&&--b1r^   c                    | j                   dk\  r| j                  }t        |d       t        |dt	        |      d|       | j
                  dk\  rvt        d|d d       \  }|dk(  r+t        d|dd        \  }}t        |d||       t        d      |d	k(  r0t        d|d
d       \  }|d	k(  rd}n
|dk(  rd}nd}t        |d|       t        d      )Nr   z
FILEPASS:
r   )r   rY  r   r5  r  z!weak XOR: key=0x%04x hash=0x%04x
r   r	  r!  z	BIFF8 stdzBIFF8 strongz** UNKNOWN ENCRYPTION METHOD **z%s
zWorkbook is encrypted)r4   r3   rG   r\  rM   rF   r  rC   )rt   r  logfkind1key
hash_valuekind2captions           rX   handle_filepasszBook.handle_filepass  s    >>Q<<DD-($3t914@  B&d2Ah/A:&,UDH&=OCD<Z) /00 aZ#D$q)4FEz"-!"0"CD&'2/00r^   c                    t         xs | j                  dk\  }| j                  }|dk  ry | j                          t	        d|dd       \
  }}}}}}	}
}}}t               }| |_        t        | j                        }||_	        | j                  j                  |       ||_        g d}|D ]  \  }}}t        ||||z  |z	          d|j                     }|dk  rt        |d| j                  |	      \  }}nt!        |d|	      \  }}||_        |	|_        d |_        |rt)        | j*                  d
|||||||	|
       |}|j,                  r2t.        j1                  |d      }|rt3        d|z  | j*                         ||_        ||d  |_        ||_        d|_        |r"|j=                  | j*                  d|z  d       y y )Nr   r   z	<HBBHHH4Br      ))r   r   r   )r   r   r   )r   r	  r   )r   r   rZ  )r      r	  )r       r   )r   i  r!  )r   i      z Mr   )	known_lenzZNAME[%d]:%s oflags=%d, name_len=%d, fmla_len=%d, extsht_index=%d, sheet_index=%d, name=%r
z??Unknown??z    builtin: %sr   z--- handle_name: name[%d] ---z-------------------rc   )r   r4   rF   r$  r  r[   rp   rM   r   r   r  rS  setattrr   unpack_string_update_posr&  rP  extn_sheet_numexcel_sheet_indexr   rG   r3   r   builtin_name_from_coder+  r   r   r   basic_formula_len	evaluatedrs   )rt   r  rR  r,  rS  kb_shortcutname_lenfmla_lenextsht_indexsheet_indexmenu_text_lendescription_text_lenhelp_topic_text_lenstatus_bar_text_lennobjr   attrsattrmasknshift
macro_flaginternal_namer  r   s                           rX   handle_namezBook.handle_name  s   +!+7 ;Qr
+	
+x</1DFYv	++,
$!!$'(	
 #( 	AD$D$!4 ?@	A $**%
7!9$DMM]e!fM3!:4x!XM3*!,
mJh,]	D
 <<)--dMBDU,t3$,,G	:!)II6C,   r^   c                 D   | j                   dk\  }| j                  }|rpt        d|       t        dt        | j                        |       t        dt        | j
                        |       t        dt        | j                        |       t        | j                        }t        |      D ]  }| j                  |   }| j                  dk\  rR|j                  }|dk(  rd	}nd
|cxk  rt        | j                        k  rn n| j                  |d
z
     }|d	k(  r]d}nZd}nWd| j                  cxk  rdk  rBn n?|j                  }|dk(  rd	}n+| j
                  |   }| j                  j                  |d      }|_         t        |      D ]F  }| j                  |   }|j                  s|j                   r+|j"                  r8t%        | |||       H | j                   dk\  rOt        d|       t        |      D ]'  }| j                  |   }|j'                  |d|z         ) t        d|       i }	i }
t        |      D ]  }| j                  |   }|j(                  j+                         }||j                  f}||	v r| j                   rt-        |d|       ||	|<   |j                  ||f}||
v r|
|   j/                  |       |g|
|<    |
j1                         D ]-  }|
|   }|j3                          |D cg c]  }|d   	 c}|
|<   / |	| _        |
| _        y c c}w )Nr   z+++++ names_epilogue +++++r   r   r   r   r   r   r_   r   r   r   )rR  z&---------- name object dump ----------z--- name[%d] ---)rd   z&--------------------------------------z)Duplicate entry %r in name_and_scope_map
)r4   r3   r   REPRr   r   r   rM   r   rangerF   r~  r}  r+  r   r   r   r  evaluate_name_formulars   r   lowerrG   r  keyssortname_and_scope_mapname_map)rt   rR  r   	num_namesnamexr  r  intl_sheet_indexr   r  r  
name_lcaserp  	sort_dataalistxs                   rX   names_epiloguezBook.names_epilogue  s$   ~~"LL.Q7#T$*>*>%?aH*D1L1L,MTUV($t/H/H*IPQR**+	9% 	*E%%e,D
   B&"44!#')$+BT-A-A)BB'+';';KM'J$'2-+-( (*$t((.B."11!#')$!%!<!<[!IJ'+'@'@'D'DZQS'T$)DJ1	*4 9% 	@E%%e,DzzT[[(~~x!$e$?	@ >>Q:Cy) @))%0		!$6$>	?@ :C  9% 	3E%%e,D*Jtzz*C((T^^GM&*s#UD1I X%$++I6(1{$	3 ==? 	2CSMEJJL+01aQqT1HSM	2 #5  2s   :Lc                 (    t        d|dd       \  }}y )NrO  r	  
   )r  )rt   r  obj_typeobj_ids       rX   
handle_objzBook.handle_obj5  s     "%a4&r^   c           	         | j                   j                  d        t        xs | j                  dk\  }|r9t	        d| j
                         t        |dt        |      | j
                         t        d|dd       d   }|rt	        d|z  | j
                         | j                  }| xj                  dz  c_	        |dd	 d
k(  rht        | j                   d<   | j                  dz
  | _        |r>t	        d||fz  | j
                         t	        d| j                  | j
                         y |dd	 dk(  rDt        | j                   d<   | j                  dz
  | _        |rt	        d|z  | j
                         y t        |dd      \  }}|dk(  r.t         | j                   d<   |rt#        | j
                  d||       y t$        | j                   d<   |rt#        | j
                  d||       g }t'        |      D ]K  }	 t        ||d      \  }	}|j                  |	       |s)t#        | j
                  d|t        |	      |	|       M y # t(        j*                  $ r- | j                  rt	        d|||fz  | j
                         Y  y w xY w)Nr   zSUPBOOK:r   r   rX  r5  znum_sheets = %dr   r	  s   r_   z(SUPBOOK[%d]: internal 3D refs; %d sheetsz    _all_sheets_maps    :zSUPBOOK[%d]: add-in functionsr  z#SUPBOOK[%d]: DDE/OLE document = %r
zSUPBOOK[%d]: url = %r
zK*** WARNING: unpack failure in sheet %d of %d in SUPBOOK record for file %rz-  sheetx=%d namelen=%d name=%r (next pos=%d)
)r   r  r   r4   r   r3   r\  rM   r  r   SUPBOOK_INTERNALr   r   rQ  r   rP  SUPBOOK_DDEOLErG   SUPBOOK_EXTERNALr  structerror)
rt   r  rR  
num_sheetssbnurlr  r   r  shnames
             rX   handle_supbookzBook.handle_supbook<  s_   ""4(+!+*4<<0$3t94<<@D$q),Q/
(:5DLLI!!q !9#&6D#'+':':Q'>D$@CCTT[_[g[gh+T-A-AU!9++&3D#'+':':Q'>D$U:S@t||T,T1Q?S?&4D#WT\\+QSVX[\"2B'@#sKz" 	zA7c!L v&WT\\+[]^`cdj`kmsuxy	z << 	 >>ej#./!\\
 	s   ;I<JJc                    | j                          t        d|d d       d   }t        |d| j                  d      }| j                  }|| j
                  |   k(  sJ | xj                  dz  c_        | j                  }|dz
  t        |      z
  }t        rt        | j                  d||||       | j                          t        r$t        d| j                  z  | j                         | j                  j                  d        | j!                  |d	
       t        r"t        d| j                  | j                         ||z   | _        y )N<ir	  r   r   r  z'SHEETHDR %d at posn %d: len=%d name=%r
z SHEETHDR: xf epilogue flag is %dr   F)r  z"SHEETHDR: posn after get_sheet() =)r$  r  r%  r&  r   rJ   r   rM   r   rG   r3   r   r   r   rK   r  r   )rt   r  	sheet_lenr   r  BOF_posnposns          rX   handle_sheethdrzBook.handle_sheethdrk  s   
 	4bq*1-	"4DMM!D
&&T..w777!>>!|c$i''$,,(RT[]aclnxy##%%:T=S=SSZ^ZfZfg%w51%<dnnSWS_S_`!I-r^   c                 l    t        d|      d   }t        rt        d|| j                         || _        y )Nr  r   zSHEETSOFFSET:r   )r  r   r   r3   r(  )rt   r  r  s      rX   handle_sheetsoffsetzBook.handle_sheetsoffset  s-    dD!!$%DLLA!r^   c                 @   t         r!t        d| j                         t               }t	        |      }|g}t        d|dd       d   }t         s| j                  dk\  rt        | j                  d|       	 | j                  t              \  }}}|n8||z  }t         dk\  rt        | j                  d	||       |j                  |       Tt        ||      \  | _        }| j                  r|| _        t         r)t               }	t        d
|	z
  fz  | j                         y y )NzSST Processingr   r  r	  r   r   r   zSST: unique strings: %d
z'CONTINUE: adding %d bytes to SST -> %d
z SST processing took %.2f seconds)r   r   r3   r	   rM   r  r4   rG   r  r[  r  unpack_SST_tabler   r7   r   )
rt   r  rR   nbtstrlistuniquestringsr  nb
rt_runlistrU   s
             rX   
handle_sstzBook.handle_sst  s   "6B$i&tT!AY/2T^^q(DLL"=}M!>>{KND"d|2ICz&PRTVYZNN4   +;7M*R'Z*4D'B4R{BV r^   c                 6   d}| j                   dk  r5| j                  sd| _        || _        y t	        |d| j                  d      }nt        |dd      }|r,t        | j                  dt        |      | j                  |       |j                         }|| _        y )Nr   r   Tr   r  r   z!WRITEACCESS: %d bytes; raw=%s %r
)
rF   r&  r   rB  r%  r*  rG   r3   rM   rC  )rt   r  r   rE  s       rX   handle_writeaccesszBook.handle_writeaccess  s    r!==%)"!% q$--BD!$!4D'$,,(LcRViY]YkYkmqr{{}r^   c                 2   t        j                  |        	 | j                         \  }}}t        rt	        d|z  | j
                         |t        k(  r| j                  |       n|t        k(  s	|t        k(  r| j                  |       n|t        k(  r| j                  |       no|t        k(  r| j                  |       nS|t        k(  r| j!                  |       n7|t"        k(  r| j%                  |       n|t&        k(  r| j)                  |       n|t*        k(  r| j-                  |       n|t.        k(  r| j1                  |       n|t2        k(  r| j5                  |       n|t6        k(  r| j9                  |       n|t:        k(  r| j=                  |       ns|t>        k(  r| jA                  |       nW|tB        k(  r| jE                  |       n;|tF        k(  r| jI                  |       n|tJ        k(  r| jM                  |       n|tN        k(  r| jQ                  |       n|tR        k(  r| jU                  |       n|dz  dk(  r7| jV                  r+tY        | j
                  d| jZ                  |z
  dz
  |||       n|t\        k(  r| j_                          | ja                          | jc                          | jd                  s| jg                          | jh                  dk(  r(t        r"t	        d| jZ                  | j
                         y 	 )	Nz$parse_globals: record code is 0x%04xr      	   z5*** Unexpected BOF at posn %d: 0x%04x len=%d data=%r
r	  r   zglobal EOF: position)5r   r  r  r   r   r3   XL_SSTr  XL_FONTXL_FONT_B3B4handle_font	XL_FORMAThandle_formatXL_XF	handle_xfXL_BOUNDSHEETr3  XL_DATEMODErM  XL_CODEPAGErG  
XL_COUNTRYrJ  XL_EXTERNNAMErV  XL_EXTERNSHEETrl  XL_FILEPASSrt  XL_WRITEACCESSr  XL_SHEETSOFFSETr  XL_SHEETHDRr  
XL_SUPBOOKr  XL_NAMEr  
XL_PALETTEhandle_paletteXL_STYLEhandle_styler4   rG   r   XL_EOFxf_epiloguer  palette_epiloguer&  r$  rF   )rt   rcr  r  s       rX   rI   zBook.parse_globals  sy    	""4(#446BeBRGdll[V|%w""4  &y""4(ut$%&&t,{"$$T*{"$$T*z!##D)}$&&t,~%''-{"$$T*~%''-&((.{"$$T*z!##D)w  &z!##D)x!!$'daDNN&^NNV+a/VTC  "##%%%'}}((*$$*e$:DNNQUQ]Q]^  u r^   c                 P    | j                   |||z    }|t        |      z   | _        |S r   )r   rM   r   )rt   r  r  r  s       rX   r   z	Book.read  s*    xxCJ's4yr^   c           	         t         rt        d|z  | j                         d }| j                  }| j	                         }|t
        k(  r |d       |t        vr |d| j                  ||dz    z         | j	                         }|t
        k(  r |d       d|cxk  rd	k  sn  |d
||fz         dt        dt        |   |z
        z  }| j                  | j                  |      }t         rt        | j                  d|       t        |      |k  r |d       ||z  }|dz	  }t        d|dd       \  }	}
t         rt        d||	|
fz  | j                         | j                  dz
  |z
  }t         rt        d||fz  | j                         dx}x}}|dk(  rGt        d|dd       \  }}|	dk(  rd}n:|	dk(  r|dk  s|dv rd}n)d}n&ddddddj                  |	d      }n|dv r	dddd|   }|dk(  r|
t        k(  rd}t         s| j                   dk\  r t        d ||	|
|||fz  | j                         |
t"        k(  xs |dk(  xr	 |
t        k(  }|t"        k(  r|s|
|k(  r|S |dk  r|
t$        k(  r|S |dk\  r|
d!k(  r |d"        |d#||	|
|||fz         y )$Nzreqd: 0x%04xr   c                     t        d| z         )Nz%Unsupported format, or corrupt file: )rC   )rk  s    rX   	bof_errorzBook.getbof.<locals>.bof_error  s    CcIJJr^   z$Expected BOF record; met end of filezExpected BOF record; found %rr   z)Incomplete BOF record[1]; met end of filer	  r   z.Invalid length (%d) for BOF record type 0x%04x    r   z
getbof(): data=%r
z)Incomplete BOF record[2]; met end of filer  z5getbof(): op=0x%04x version2=0x%04x streamtype=0x%04xz+getbof(): BOF found at offset %d; savpos=%di   r   i   i  )il	  i  i  r   r   r   r   r   )r      i   i   i   )r	  r   r   r   r   zHBOF: op=0x%04x vers=0x%04x stream=0x%04x buildid=%d buildyr=%d -> BIFF%d   z%Workspace file -- no spreadsheet datazXBOF not workbook/worksheet: op=0x%04x vers=0x%04x strm=0x%04x build=%d year=%d -> BIFF%d)r   r   r3   r   r  r   bofcodesr   rz   boflenr   rG   rM   r  r+  XL_WORKBOOK_GLOBALS_4Wr4   rB   r  )rt   
rqd_streamr  savposopcoder  paddingr  version1version2
streamtype
bof_offsetversionbuildyeargot_globalss                   rX   rA   zBook.getbof  s    %3$,,G	K!V<=!5q8QQR!VABV!r!@6"#$ #a&!899yy0'$,,(?Ft9vABQ;%eT!AY7*I8Z017;||E^^a'&0
?v&'-1\\;!"""%$t Qq	2KE46!V#$;%+="= G G  #h"  ++r4X>Gb=Z+AAGDNNa'\8ZgFGMQ\\[ $77 DrMBj,BB 	--+*PZBZNR<J,6Nb=Z61=>fxUD'BC	
r^   r~   )Ar   r   r   r   rN   rL  rF   r   r<  r&  rI  r   rB  r   r   r   r   r   r   r   r@   rP   r   rq   r   r   r   r   rQ   r   r   r  r  r   sysstdoutUSE_MMAPr?   r   r  r  r  r   rL   rH   r3  r6  r$  rG  rJ  rM  rV  rl  rt  r  r  r  r  r  r  r  r  rI   r   rA   r   r^   rX   r>   r>     s    G H
 L M H H I  #I I G K J: N  J N  	#B	+$. (+.!  HB %) ZZ1x'+%*$!&;rz	4$	$*$29h/(T#!T12f1.:xH!T5-z^.*"W2>@
J
r^   r>   c                 l    | }|dz  r|dk\  r|dz  }d}nd}|dz  }|dz  r|dk\  r|dz  }d}nd}||||fS )	Ni   i   r   r   r  i @     r  r   )inrowincoloutrowrelrowoutcolrelcols         rX   expand_cell_addressr  @  sa    Fv~U?eOFT\Fv~S=cMF666))r^   c                 j    | dk\  sJ t        d      }	 t        | d      \  }}||   |z   }|s|S |dz
  } !)Nr   r]   r      )r   divmod)colx_A2Zr   quotrems        rX   colnamer  R  sM    192D
4$	cCy4Kax r^   c                     |rdd| dk     t        |       fz  }n	d| dz   fz  }|rdd|dk     t        |      fz  }||z   S dt        |      z   }||z   S )Nz(*%s%d)z+-r   z$%dr   $)absr  )rowxr  r  r  rowpartcolparts         rX   display_cell_addressr  \  sv    tD1H~s4y9946)#tD1H~s4y99 W %Wr^   c                    d}t        |       }| d   }t        |      }d}g }|j                  }i }	t        }
t        }t        }d}t        |      D ]  } |
d|||dz          d   }|dz  } |||         }|dz  }d}d}|dz  r |
d|||dz          d   }|dz  }|dz  r |
d|||dz          d   }|dz  }t        d	      }d}	 ||z
  }|dz  r3 |||z
  dz	  |      }|||d|z  z    }	 |t        |d
      z  }|d|z  z  }n( |||z
  |      }||||z    }|t        ||      z  }||z  }||z  }||k(  rn#|dz  }| |   }t        |      } ||d         }d}|r_g }t        |      D ]A  }||k(  rd}|dz  }| |   }t        |      }|j                   |
d|||dz                 |dz  }C ||	t        |      <   ||z  }||k\  r*||z
  }|dz  }||k  r| |   }t        |      }n
||dz
  k(  sJ  ||        ||	fS #   xY w)zReturn list of stringsr   r   latin_1r5  r   r   r	  r  r]   	utf_16_ler  )rM   r  r  rx   r   r   r   r?  )datatabnstringsdatainxndatasr  datalenr  strings	strappendrichtext_runslocal_unpack	local_minlocal_BYTES_ORDr  	_unused_incharsoptionsrtcountphoszaccstrgcharsgot	charsneed
charsavailrawstrgrunsrunindexs                             rX   r  r  g  s   G\F1:D$iG
CGIMLIOGH% F	dDSUO4Q7q!$s),qT>"4c#a%9!<G1HCT> tCA7:E1HC!"%)I~&#!';YG
s3q|#34ww<<G q|# 'w}i@
s3z>277G44z!
"H6!qLG7#D$iG%d1g.GC? B D"7O '>CqLG"7+D!$iGLSQ@Aq +/M#g,'u'>-CqLGw'd) HqL00'MFN M!!_ s   )G;;G>)ABCDEFGHIJKLMNOPQRSTUVWXYZ)0
__future__r   r;   r  r]   r   r   r   biffhformulatimemachinetimer	   ImportErrorr
   r  r  
empty_cellr   r   r:   r   r   r  r   r  SUPBOOK_UNKr  r  rQ  r  rD   _code_from_builtin_namer  code_from_builtin_nameitems_bin_bicr   r  rY   
BaseObjectr[   r>   r  r  r  r  r   r^   rX   <module>rA     s  
 & 	 
 ( (   +!
 v
		N 	QVWXQY N/5       )//1 (JD$4 D4 D#'4 #'4 	(
 	$'#!jjA$((,&+u%	FRL`: L`^^
: ^
D!*$	U"m*  +*+$  Ns#   C1 D 1C?>C?DD