2016-12-31 08:20:45 +00:00
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
2017-03-28 22:03:03 +00:00
! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) { JSZip = e ( ) ; define ( [ ] , e ) } else { var f ; "undefined" != typeof window ? f = window : "undefined" != typeof global ? f = global : "undefined" != typeof $ && $ . global ? f = $ . global : "undefined" != typeof self && ( f = self ) , f . JSZip = e ( ) } } ( function ( ) { var define , module , exports ; return function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; throw new Error ( "Cannot find module '" + o + "'" ) } var f = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( f . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , f , f . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ( { 1 : [ function ( _dereq _ , module , exports ) { "use strict" ; var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; exports . encode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 , enc1 , enc2 , enc3 , enc4 ; var i = 0 ; while ( i < input . length ) { chr1 = input . charCodeAt ( i ++ ) ; chr2 = input . charCodeAt ( i ++ ) ; chr3 = input . charCodeAt ( i ++ ) ; enc1 = chr1 >> 2 ; enc2 = ( chr1 & 3 ) << 4 | chr2 >> 4 ; enc3 = ( chr2 & 15 ) << 2 | chr3 >> 6 ; enc4 = chr3 & 63 ; if ( isNaN ( chr2 ) ) { enc3 = enc4 = 64 } else if ( isNaN ( chr3 ) ) { enc4 = 64 } output = output + _keyStr . charAt ( enc1 ) + _keyStr . charAt ( enc2 ) + _keyStr . charAt ( enc3 ) + _keyStr . charAt ( enc4 ) } return output } ; exports . decode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 ; var enc1 , enc2 , enc3 , enc4 ; var i = 0 ; input = input . replace ( /[^A-Za-z0-9\+\/\=]/g , "" ) ; while ( i < input . length ) { enc1 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc2 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc3 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc4 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; chr1 = enc1 << 2 | enc2 >> 4 ; chr2 = ( enc2 & 15 ) << 4 | enc3 >> 2 ; chr3 = ( enc3 & 3 ) << 6 | enc4 ; output = output + String . fromCharCode ( chr1 ) ; if ( enc3 != 64 ) { output = output + String . fromCharCode ( chr2 ) } if ( enc4 != 64 ) { output = output + String . fromCharCode ( chr3 ) } } return output } } , { } ] , 2 : [ function ( _dereq _ , module , exports ) { "use strict" ; function CompressedObject ( ) { this . compressedSize = 0 ; this . uncompressedSize = 0 ; this . crc32 = 0 ; this . compressionMethod = null ; this . compressedContent = null } CompressedObject . prototype = { getContent : function ( ) { return null } , getCompressedContent : function ( ) { return null } } ; module . exports = CompressedObject } , { } ] , 3 : [ function ( _dereq _ , module , exports ) { "use strict" ; exports . STORE = { magic : "\0\0" , compress : function ( content ) { return content } , uncompress : function ( content ) { return content } , compressInputType : null , uncompressInputType : null } ; exports . DEFLATE = _dereq _ ( "./flate" ) } , { "./flate" : 8 } ] , 4 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "./utils" ) ; var table = [ 0 , 1996959894 , 3993919788 , 2567524794 , 124634137 , 1886057615 , 3915621685 , 2657392035 , 249268274 , 2044508324 , 3772115230 , 2547177864 , 162941995 , 2125561021 , 3887607047 , 2428444049 , 498536548 , 1789927666 , 4089016648 , 2227061214 , 450548861 , 1843258603 , 4107580753 , 2211677639 , 325883990 , 1684777152 , 4251122042 , 2321926636 , 335633487 , 1661365465 , 4195302755 , 2366115317 , 997073096 , 1281953886 , 3579855332 , 2724688242 , 1006888145 , 1258607687 , 3524101629 , 2768942443 , 901097722 , 1119000684 , 3686517206 , 2898065728 , 853044451 , 1172266101 , 3705015759 , 2882616665 , 651767980 , 1373503546 , 3369554304 , 3218104598 , 565507253 , 1454621731 , 3485111705 , 3099436303 , 671266974 , 1594198024 , 3322730930 , 2970347812 , 795835527 , 1483230225 , 3244367275 , 3060149565 , 1994146192 , 31158534 , 2563907772 , 4023717930 , 1907459465 , 112637215 , 2680153253 , 3904427059 , 2013776290 , 251722036 , 2517215374 , 3775830040 , 2137656763 , 141376813 , 2439277719 , 3865271297 , 1802195444 , 476864866 , 2238001368 , 4066508878 , 1812370925 , 453092731 , 2181625025 , 4111451223 , 1706088902 , 314042704 , 2344532202 , 4240017532 , 1658658271 , 366619977 , 2362670323 , 4224994405 , 1303535960 , 984961486 , 2747007092 , 3569037538 , 1256170817 , 1037604311 , 2765210733 , 3554079995 , 1131014506 , 879679996 , 2909243462 , 3663771856 , 1141124467 , 855842277 , 2852801631 , 3708648649 , 1342533948 , 654459306 , 3188396048 , 3373015174 , 1466479909 , 544179635 , 3110523913 , 3462522015 , 1591671054 , 702138776 , 2966460450 , 3352799412 , 1504918807 , 783551873 , 3082640443 , 3233442989 , 3988292384 , 2596254646 , 62317068 , 1957810842 , 3939845945 , 2647816111 , 81470997 , 1943803523 , 3814918930 , 2489596804 , 2
} return res } ; exports . findCompression = function ( compressionMethod ) { for ( var method in compressions ) { if ( ! compressions . hasOwnProperty ( method ) ) { continue } if ( compressions [ method ] . magic === compressionMethod ) { return compressions [ method ] } } return null } ; exports . isRegExp = function ( object ) { return Object . prototype . toString . call ( object ) === "[object RegExp]" } } , { "./compressions" : 3 , "./nodeBuffer" : 11 , "./support" : 17 } ] , 22 : [ function ( _dereq _ , module , exports ) { "use strict" ; var StringReader = _dereq _ ( "./stringReader" ) ; var NodeBufferReader = _dereq _ ( "./nodeBufferReader" ) ; var Uint8ArrayReader = _dereq _ ( "./uint8ArrayReader" ) ; var utils = _dereq _ ( "./utils" ) ; var sig = _dereq _ ( "./signature" ) ; var ZipEntry = _dereq _ ( "./zipEntry" ) ; var support = _dereq _ ( "./support" ) ; var jszipProto = _dereq _ ( "./object" ) ; function ZipEntries ( data , loadOptions ) { this . files = [ ] ; this . loadOptions = loadOptions ; if ( data ) { this . load ( data ) } } ZipEntries . prototype = { checkSignature : function ( expectedSignature ) { var signature = this . reader . readString ( 4 ) ; if ( signature !== expectedSignature ) { throw new Error ( "Corrupted zip or bug : unexpected signature " + "(" + utils . pretty ( signature ) + ", expected " + utils . pretty ( expectedSignature ) + ")" ) } } , readBlockEndOfCentral : function ( ) { this . diskNumber = this . reader . readInt ( 2 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 2 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 2 ) ; this . centralDirRecords = this . reader . readInt ( 2 ) ; this . centralDirSize = this . reader . readInt ( 4 ) ; this . centralDirOffset = this . reader . readInt ( 4 ) ; this . zipCommentLength = this . reader . readInt ( 2 ) ; this . zipComment = this . reader . readString ( this . zipCommentLength ) ; this . zipComment = jszipProto . utf8decode ( this . zipComment ) } , readBlockZip64EndOfCentral : function ( ) { this . zip64EndOfCentralSize = this . reader . readInt ( 8 ) ; this . versionMadeBy = this . reader . readString ( 2 ) ; this . versionNeeded = this . reader . readInt ( 2 ) ; this . diskNumber = this . reader . readInt ( 4 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 4 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 8 ) ; this . centralDirRecords = this . reader . readInt ( 8 ) ; this . centralDirSize = this . reader . readInt ( 8 ) ; this . centralDirOffset = this . reader . readInt ( 8 ) ; this . zip64ExtensibleData = { } ; var extraDataSize = this . zip64EndOfCentralSize - 44 , index = 0 , extraFieldId , extraFieldLength , extraFieldValue ; while ( index < extraDataSize ) { extraFieldId = this . reader . readInt ( 2 ) ; extraFieldLength = this . reader . readInt ( 4 ) ; extraFieldValue = this . reader . readString ( extraFieldLength ) ; this . zip64ExtensibleData [ extraFieldId ] = { id : extraFieldId , length : extraFieldLength , value : extraFieldValue } } } , readBlockZip64EndOfCentralLocator : function ( ) { this . diskWithZip64CentralDirStart = this . reader . readInt ( 4 ) ; this . relativeOffsetEndOfZip64CentralDir = this . reader . readInt ( 8 ) ; this . disksCount = this . reader . readInt ( 4 ) ; if ( this . disksCount > 1 ) { throw new Error ( "Multi-volumes zip are not supported" ) } } , readLocalFiles : function ( ) { var i , file ; for ( i = 0 ; i < this . files . length ; i ++ ) { file = this . files [ i ] ; this . reader . setIndex ( file . localHeaderOffset ) ; this . checkSignature ( sig . LOCAL _FILE _HEADER ) ; file . readLocalPart ( this . reader ) ; file . handleUTF8 ( ) } } , readCentralDir : function ( ) { var file ; this . reader . setIndex ( this . centralDirOffset ) ; while ( this . reader . readString ( 4 ) === sig . CENTRAL _FILE _HEADER ) { file = new ZipEntry ( { zip64 : this . zip64 } , this . loadOptions ) ; file . readCentralPart ( this . reader ) ; this . files . push ( file ) } } , readEndOfCentral : function ( ) { var offset = this . reader . lastIndexOfSignature ( sig . CENTRAL _DIRECTORY _END ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find end of central directory" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . CENTRAL _DIRECTORY _END ) ; this . readBlockEndOfCentral ( ) ; if ( this . diskNumber === utils . MAX _VALUE _16BITS || this . diskWithCentralDirStart === utils . MAX _VALUE _16BITS || this . centralDirRecordsOnThisDisk === utils . MAX _VALUE _16BITS || this . centralDirRecords === utils . MAX _VALUE _16BITS || this . centralDirSize === utils . MAX _VALUE _32BITS || this . centralDirOffset === utils . MAX _VALUE _32BITS ) { this . zip64 = true ; offset = this . reader . lastIndexOfSignature ( sig . ZIP64 _CENTRAL _DIRECTORY _LOCATOR ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find the ZIP64 end of central directory locator" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . ZIP64 _CENTRAL _D
var bflush ; for ( ; ; ) { if ( s . lookahead === 0 ) { fill _window ( s ) ; if ( s . lookahead === 0 ) { if ( flush === Z _NO _FLUSH ) { return BS _NEED _MORE } break } } s . match _length = 0 ; bflush = trees . _tr _tally ( s , 0 , s . window [ s . strstart ] ) ; s . lookahead -- ; s . strstart ++ ; if ( bflush ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } } s . insert = 0 ; if ( flush === Z _FINISH ) { flush _block _only ( s , true ) ; if ( s . strm . avail _out === 0 ) { return BS _FINISH _STARTED } return BS _FINISH _DONE } if ( s . last _lit ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } return BS _BLOCK _DONE } var Config = function ( good _length , max _lazy , nice _length , max _chain , func ) { this . good _length = good _length ; this . max _lazy = max _lazy ; this . nice _length = nice _length ; this . max _chain = max _chain ; this . func = func } ; var configuration _table ; configuration _table = [ new Config ( 0 , 0 , 0 , 0 , deflate _stored ) , new Config ( 4 , 4 , 8 , 4 , deflate _fast ) , new Config ( 4 , 5 , 16 , 8 , deflate _fast ) , new Config ( 4 , 6 , 32 , 32 , deflate _fast ) , new Config ( 4 , 4 , 16 , 16 , deflate _slow ) , new Config ( 8 , 16 , 32 , 32 , deflate _slow ) , new Config ( 8 , 16 , 128 , 128 , deflate _slow ) , new Config ( 8 , 32 , 128 , 256 , deflate _slow ) , new Config ( 32 , 128 , 258 , 1024 , deflate _slow ) , new Config ( 32 , 258 , 258 , 4096 , deflate _slow ) ] ; function lm _init ( s ) { s . window _size = 2 * s . w _size ; zero ( s . head ) ; s . max _lazy _match = configuration _table [ s . level ] . max _lazy ; s . good _match = configuration _table [ s . level ] . good _length ; s . nice _match = configuration _table [ s . level ] . nice _length ; s . max _chain _length = configuration _table [ s . level ] . max _chain ; s . strstart = 0 ; s . block _start = 0 ; s . lookahead = 0 ; s . insert = 0 ; s . match _length = s . prev _length = MIN _MATCH - 1 ; s . match _available = 0 ; s . ins _h = 0 } function DeflateState ( ) { this . strm = null ; this . status = 0 ; this . pending _buf = null ; this . pending _buf _size = 0 ; this . pending _out = 0 ; this . pending = 0 ; this . wrap = 0 ; this . gzhead = null ; this . gzindex = 0 ; this . method = Z _DEFLATED ; this . last _flush = - 1 ; this . w _size = 0 ; this . w _bits = 0 ; this . w _mask = 0 ; this . window = null ; this . window _size = 0 ; this . prev = null ; this . head = null ; this . ins _h = 0 ; this . hash _size = 0 ; this . hash _bits = 0 ; this . hash _mask = 0 ; this . hash _shift = 0 ; this . block _start = 0 ; this . match _length = 0 ; this . prev _match = 0 ; this . match _available = 0 ; this . strstart = 0 ; this . match _start = 0 ; this . lookahead = 0 ; this . prev _length = 0 ; this . max _chain _length = 0 ; this . max _lazy _match = 0 ; this . level = 0 ; this . strategy = 0 ; this . good _match = 0 ; this . nice _match = 0 ; this . dyn _ltree = new utils . Buf16 ( HEAP _SIZE * 2 ) ; this . dyn _dtree = new utils . Buf16 ( ( 2 * D _CODES + 1 ) * 2 ) ; this . bl _tree = new utils . Buf16 ( ( 2 * BL _CODES + 1 ) * 2 ) ; zero ( this . dyn _ltree ) ; zero ( this . dyn _dtree ) ; zero ( this . bl _tree ) ; this . l _desc = null ; this . d _desc = null ; this . bl _desc = null ; this . bl _count = new utils . Buf16 ( MAX _BITS + 1 ) ; this . heap = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . heap ) ; this . heap _len = 0 ; this . heap _max = 0 ; this . depth = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . depth ) ; this . l _buf = 0 ; this . lit _bufsize = 0 ; this . last _lit = 0 ; this . d _buf = 0 ; this . opt _len = 0 ; this . static _len = 0 ; this . matches = 0 ; this . insert = 0 ; this . bi _buf = 0 ; this . bi _valid = 0 } function deflateResetKeep ( strm ) { var s ; if ( ! strm || ! strm . state ) { return err ( strm , Z _STREAM _ERROR ) } strm . total _in = strm . total _out = 0 ; strm . data _type = Z _UNKNOWN ; s = strm . state ; s . pending = 0 ; s . pending _out = 0 ; if ( s . wrap < 0 ) { s . wrap = - s . wrap } s . status = s . wrap ? INIT _STATE : BUSY _STATE ; strm . adler = s . wrap === 2 ? 0 : 1 ; s . last _flush = Z _NO _FLUSH ; trees . _tr _init ( s ) ; return Z _OK } function deflateReset ( strm ) { var ret = deflateResetKeep ( strm ) ; if ( ret === Z _OK ) { lm _init ( strm . state ) } return ret } function deflateSetHeader ( strm , head ) { if ( ! strm || ! strm . state ) { return Z _STREAM _ERROR } if ( strm . state . wrap !== 2 ) { return Z _STREAM _ERROR } strm . state . gzhead = head ; return Z _OK } function deflateInit2 ( strm , level , method , windowBits , memLevel , strategy ) { if ( ! strm ) { return Z _STREAM _ERROR } var wrap = 1 ; if ( level === Z _DEFAULT _COMPRESSION ) { level = 6 } if ( windowBits < 0 ) { wrap = 0 ; windowBits = - windowBits } else if ( windowBits > 15 ) { wrap = 2 ; windowBits -= 16 } if ( memLevel < 1 || memLevel > MAX _MEM _LEVEL || method !== Z _DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z _FIXED ) { return err ( strm , Z _STREAM _ERROR ) } if ( windowBits === 8 ) { windowBits = 9 } var s = new DeflateState ; strm . state = s ; s . strm = strm ; s . wrap = wrap ; s . gzhead = null ; s . w _bits = windowBits ; s . w _size = 1 << s . w _bits ; s . w _mask = s . w _size - 1 ; s . hash _bits = memLevel + 7 ; s . hash _size = 1 << s . hash _bits ; s . hash _mask = s . hash _size - 1 ; s . hash _shift = ~ ~ ( ( s . hash _b
2017-05-11 18:23:21 +00:00
exports . inflateInfo = "pako inflate (from Nodeca project)" } , { "../utils/common" : 27 , "./adler32" : 29 , "./crc32" : 31 , "./inffast" : 34 , "./inftrees" : 36 } ] , 36 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var MAXBITS = 15 ; var ENOUGH _LENS = 852 ; var ENOUGH _DISTS = 592 ; var CODES = 0 ; var LENS = 1 ; var DISTS = 2 ; var lbase = [ 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 15 , 17 , 19 , 23 , 27 , 31 , 35 , 43 , 51 , 59 , 67 , 83 , 99 , 115 , 131 , 163 , 195 , 227 , 258 , 0 , 0 ] ; var lext = [ 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 17 , 17 , 17 , 17 , 18 , 18 , 18 , 18 , 19 , 19 , 19 , 19 , 20 , 20 , 20 , 20 , 21 , 21 , 21 , 21 , 16 , 72 , 78 ] ; var dbase = [ 1 , 2 , 3 , 4 , 5 , 7 , 9 , 13 , 17 , 25 , 33 , 49 , 65 , 97 , 129 , 193 , 257 , 385 , 513 , 769 , 1025 , 1537 , 2049 , 3073 , 4097 , 6145 , 8193 , 12289 , 16385 , 24577 , 0 , 0 ] ; var dext = [ 16 , 16 , 16 , 16 , 17 , 17 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 22 , 22 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , 27 , 27 , 28 , 28 , 29 , 29 , 64 , 64 ] ; module . exports = function inflate _table ( type , lens , lens _index , codes , table , table _index , work , opts ) { var bits = opts . bits ; var len = 0 ; var sym = 0 ; var min = 0 , max = 0 ; var root = 0 ; var curr = 0 ; var drop = 0 ; var left = 0 ; var used = 0 ; var huff = 0 ; var incr ; var fill ; var low ; var mask ; var next ; var base = null ; var base _index = 0 ; var end ; var count = new utils . Buf16 ( MAXBITS + 1 ) ; var offs = new utils . Buf16 ( MAXBITS + 1 ) ; var extra = null ; var extra _index = 0 ; var here _bits , here _op , here _val ; for ( len = 0 ; len <= MAXBITS ; len ++ ) { count [ len ] = 0 } for ( sym = 0 ; sym < codes ; sym ++ ) { count [ lens [ lens _index + sym ] ] ++ } root = bits ; for ( max = MAXBITS ; max >= 1 ; max -- ) { if ( count [ max ] !== 0 ) { break } } if ( root > max ) { root = max } if ( max === 0 ) { table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; opts . bits = 1 ; return 0 } for ( min = 1 ; min < max ; min ++ ) { if ( count [ min ] !== 0 ) { break } } if ( root < min ) { root = min } left = 1 ; for ( len = 1 ; len <= MAXBITS ; len ++ ) { left <<= 1 ; left -= count [ len ] ; if ( left < 0 ) { return - 1 } } if ( left > 0 && ( type === CODES || max !== 1 ) ) { return - 1 } offs [ 1 ] = 0 ; for ( len = 1 ; len < MAXBITS ; len ++ ) { offs [ len + 1 ] = offs [ len ] + count [ len ] } for ( sym = 0 ; sym < codes ; sym ++ ) { if ( lens [ lens _index + sym ] !== 0 ) { work [ offs [ lens [ lens _index + sym ] ] ++ ] = sym } } if ( type === CODES ) { base = extra = work ; end = 19 } else if ( type === LENS ) { base = lbase ; base _index -= 257 ; extra = lext ; extra _index -= 257 ; end = 256 } else { base = dbase ; extra = dext ; end = - 1 } huff = 0 ; sym = 0 ; len = min ; next = table _index ; curr = root ; drop = 0 ; low = - 1 ; used = 1 << root ; mask = used - 1 ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } var i = 0 ; for ( ; ; ) { i ++ ; here _bits = len - drop ; if ( work [ sym ] < end ) { here _op = 0 ; here _val = work [ sym ] } else if ( work [ sym ] > end ) { here _op = extra [ extra _index + work [ sym ] ] ; here _val = base [ base _index + work [ sym ] ] } else { here _op = 32 + 64 ; here _val = 0 } incr = 1 << len - drop ; fill = 1 << curr ; min = fill ; do { fill -= incr ; table [ next + ( huff >> drop ) + fill ] = here _bits << 24 | here _op << 16 | here _val | 0 } while ( fill !== 0 ) ; incr = 1 << len - 1 ; while ( huff & incr ) { incr >>= 1 } if ( incr !== 0 ) { huff &= incr - 1 ; huff += incr } else { huff = 0 } sym ++ ; if ( -- count [ len ] === 0 ) { if ( len === max ) { break } len = lens [ lens _index + work [ sym ] ] } if ( len > root && ( huff & mask ) !== low ) { if ( drop === 0 ) { drop = root } next += min ; curr = len - drop ; left = 1 << curr ; while ( curr + drop < max ) { left -= count [ curr + drop ] ; if ( left <= 0 ) { break } curr ++ ; left <<= 1 } used += 1 << curr ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } low = huff & mask ; table [ low ] = root << 24 | curr << 16 | next - table _index | 0 } } if ( huff !== 0 ) { table [ next + huff ] = len - drop << 24 | 64 << 16 | 0 } opts . bits = root ; return 0 } } , { "../utils/common" : 27 } ] , 37 : [ function ( _dereq _ , module , exports ) { "use strict" ; module . exports = { 2 : "need dictionary" , 1 : "stream end" , 0 : "" , "-1" : "file error" , "-2" : "stream error" , "-3" : "data error" , "-4" : "insufficient memory" , "-5" : "buffer error" , "-6" : "incompatible version" } } , { } ] , 38 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var Z _FIXED = 4 ; var Z _BINARY = 0 ; var Z _TEXT = 1 ; var Z _UNKNOWN = 2 ; function zero ( buf ) { var len = buf . length ; while ( -- len >= 0 ) { buf [ len ] = 0 } } var STORED _BLOCK = 0 ; var STATIC _TREES = 1 ; var DYN _TREES = 2 ; var MIN _MATCH = 3 ; var MAX _MATCH = 258 ; var LENGTH _CODES = 29 ; var LITERALS = 256 ; var L _CODES = LITERALS + 1 + LENGTH _CODES ; var D _CODES = 30 ; var BL _CODES = 19 ; var HEAP _SIZE = 2 * L _CODES + 1 ; var MAX _BITS = 15 ; var Buf _size = 16 ; var MAX _BL _BITS = 7 ; var END _BLOCK = 256 ; var REP _3 _6 = 16 ; var REPZ _3 _10 = 17 ; var REPZ _11 _138 = 18 ; var extra _lbits = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 0 ] ; var extra _dbits = [ 0 , 0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , 11 , 11 , 12 , 12 , 13 , 13 ] ; var extra _blbits = [ 0 , 0 , 0
if ( fmt . indexOf ( "E" ) !== - 1 ) return write _num _exp2 ( fmt , val ) ; if ( fmt . charCodeAt ( 0 ) === 36 ) return "$" + write _num _int ( type , fmt . substr ( fmt . charAt ( 1 ) == " " ? 2 : 1 ) , val ) ; var o ; var r , ri , ff , aval = Math . abs ( val ) , sign = val < 0 ? "-" : "" ; if ( fmt . match ( /^00+$/ ) ) return sign + pad0 ( aval , fmt . length ) ; if ( fmt . match ( /^[#?]+$/ ) ) { o = "" + val ; if ( val === 0 ) o = "" ; return o . length > fmt . length ? o : hashq ( fmt . substr ( 0 , fmt . length - o . length ) ) + o } if ( r = fmt . match ( frac1 ) ) return write _num _f2 ( r , aval , sign ) ; if ( fmt . match ( /^#+0+$/ ) ) return sign + pad0 ( aval , fmt . length - fmt . indexOf ( "0" ) ) ; if ( r = fmt . match ( dec1 ) ) { o = ( "" + val ) . replace ( /^([^\.]+)$/ , "$1." + r [ 1 ] ) . replace ( /\.$/ , "." + r [ 1 ] ) ; o = o . replace ( /\.(\d*)$/ , function ( $$ , $1 ) { return "." + $1 + fill ( "0" , r [ 1 ] . length - $1 . length ) } ) ; return fmt . indexOf ( "0." ) !== - 1 ? o : o . replace ( /^0\./ , "." ) } fmt = fmt . replace ( /^#+([0.])/ , "$1" ) ; if ( r = fmt . match ( /^(0*)\.(#*)$/ ) ) { return sign + ( "" + aval ) . replace ( /\.(\d*[1-9])0*$/ , ".$1" ) . replace ( /^(-?\d*)$/ , "$1." ) . replace ( /^0\./ , r [ 1 ] . length ? "0." : "." ) } if ( r = fmt . match ( /^#{1,3},##0(\.?)$/ ) ) return sign + commaify ( "" + aval ) ; if ( r = fmt . match ( /^#,##0\.([#0]*0)$/ ) ) { return val < 0 ? "-" + write _num _int ( type , fmt , - val ) : commaify ( "" + val ) + "." + fill ( "0" , r [ 1 ] . length ) } if ( r = fmt . match ( /^#,#*,#0/ ) ) return write _num _int ( type , fmt . replace ( /^#,#*,/ , "" ) , val ) ; if ( r = fmt . match ( /^([0#]+)(\\?-([0#]+))+$/ ) ) { o = _strrev ( write _num _int ( type , fmt . replace ( /[\\-]/g , "" ) , val ) ) ; ri = 0 ; return _strrev ( _strrev ( fmt . replace ( /\\/g , "" ) ) . replace ( /[0#]/g , function ( x ) { return ri < o . length ? o . charAt ( ri ++ ) : x === "0" ? "0" : "" } ) ) } if ( fmt . match ( phone ) ) { o = write _num _int ( type , "##########" , val ) ; return "(" + o . substr ( 0 , 3 ) + ") " + o . substr ( 3 , 3 ) + "-" + o . substr ( 6 ) } var oa = "" ; if ( r = fmt . match ( /^([#0?]+)( ?)\/( ?)([#0?]+)/ ) ) { ri = Math . min ( r [ 4 ] . length , 7 ) ; ff = frac ( aval , Math . pow ( 10 , ri ) - 1 , false ) ; o = "" + sign ; oa = write _num ( "n" , r [ 1 ] , ff [ 1 ] ) ; if ( oa . charAt ( oa . length - 1 ) == " " ) oa = oa . substr ( 0 , oa . length - 1 ) + "0" ; o += oa + r [ 2 ] + "/" + r [ 3 ] ; oa = rpad _ ( ff [ 2 ] , ri ) ; if ( oa . length < r [ 4 ] . length ) oa = hashq ( r [ 4 ] . substr ( r [ 4 ] . length - oa . length ) ) + oa ; o += oa ; return o } if ( r = fmt . match ( /^# ([#0?]+)( ?)\/( ?)([#0?]+)/ ) ) { ri = Math . min ( Math . max ( r [ 1 ] . length , r [ 4 ] . length ) , 7 ) ; ff = frac ( aval , Math . pow ( 10 , ri ) - 1 , true ) ; return sign + ( ff [ 0 ] || ( ff [ 1 ] ? "" : "0" ) ) + " " + ( ff [ 1 ] ? pad _ ( ff [ 1 ] , ri ) + r [ 2 ] + "/" + r [ 3 ] + rpad _ ( ff [ 2 ] , ri ) : fill ( " " , 2 * ri + 1 + r [ 2 ] . length + r [ 3 ] . length ) ) } if ( r = fmt . match ( /^[#0?]+$/ ) ) { o = "" + val ; if ( fmt . length <= o . length ) return o ; return hashq ( fmt . substr ( 0 , fmt . length - o . length ) ) + o } if ( r = fmt . match ( /^([#0]+)\.([#0]+)$/ ) ) { o = "" + val . toFixed ( Math . min ( r [ 2 ] . length , 10 ) ) . replace ( /([^0])0+$/ , "$1" ) ; ri = o . indexOf ( "." ) ; var lres = fmt . indexOf ( "." ) - ri , rres = fmt . length - o . length - lres ; return hashq ( fmt . substr ( 0 , lres ) + o + fmt . substr ( fmt . length - rres ) ) } if ( r = fmt . match ( /^00,000\.([#0]*0)$/ ) ) { return val < 0 ? "-" + write _num _int ( type , fmt , - val ) : commaify ( "" + val ) . replace ( /^\d,\d{3}$/ , "0$&" ) . replace ( /^\d*$/ , function ( $$ ) { return "00," + ( $$ . length < 3 ? pad0 ( 0 , 3 - $$ . length ) : "" ) + $$ } ) + "." + pad0 ( 0 , r [ 1 ] . length ) } switch ( fmt ) { case "###,###" : case "##,###" : case "#,###" : var x = commaify ( "" + aval ) ; return x !== "0" ? sign + x : "" ; default : if ( fmt . match ( /\.[0#?]*$/ ) ) return write _num _int ( type , fmt . slice ( 0 , fmt . lastIndexOf ( "." ) ) , val ) + hashq ( fmt . slice ( fmt . lastIndexOf ( "." ) ) ) } throw new Error ( "unsupported format |" + fmt + "|" ) } return function write _num ( type , fmt , val ) { return ( val | 0 ) === val ? write _num _int ( type , fmt , val ) : write _num _flt ( type , fmt , val ) } } ( ) ; function split _fmt ( fmt ) { var out = [ ] ; var in _str = false ; for ( var i = 0 , j = 0 ; i < fmt . length ; ++ i ) switch ( fmt . charCodeAt ( i ) ) { case 34 : in _str = ! in _str ; break ; case 95 : case 42 : case 92 : ++ i ; break ; case 59 : out [ out . length ] = fmt . substr ( j , i - j ) ; j = i + 1 } out [ out . length ] = fmt . substr ( j ) ; if ( in _str === true ) throw new Error ( "Format |" + fmt + "| unterminated string " ) ; return out } SSF . _split = split _fmt ; var abstime = /\[[HhMmSs]*\]/ ; function fmt _is _date ( fmt ) { var i = 0 , c = "" , o = "" ; while ( i < fmt . length ) { switch ( c = fmt . charAt ( i ) ) { case "G" : if ( isgeneral ( fmt , i ) ) i += 6 ; i ++ ; break ; case '"' : for ( ; fmt . charCodeAt ( ++ i ) !== 34 && i < fmt . length ; ) ++ i ; ++ i ; break ; case "\\" : i += 2 ; break ; case "_" : i += 2 ; break ; case "@" : ++ i ; break ; case "B" : case "b" : if ( fmt . charAt ( i + 1 ) === "1" || fmt . charAt ( i + 1 ) === "2" ) return true ; case "M" : case "D" : case "Y" : case "H" : case "S" : case "E" : case "m" : case "d" : case "y" : case "h" : case "s" : case "e" : case "g" : return true ; case "A" : if ( fmt . substr ( i , 3 ) === "A/P" ) return true ; if ( fmt . substr ( i , 5 ) === "AM/PM" ) r
var XLMLNS = { o : "urn:schemas-microsoft-com:office:office" , x : "urn:schemas-microsoft-com:office:excel" , ss : "urn:schemas-microsoft-com:office:spreadsheet" , dt : "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" , mv : "http://macVmlSchemaUri" , v : "urn:schemas-microsoft-com:vml" , html : "http://www.w3.org/TR/REC-html40" } ; function read _double _le ( b , idx ) { var s = 1 - 2 * ( b [ idx + 7 ] >>> 7 ) ; var e = ( ( b [ idx + 7 ] & 127 ) << 4 ) + ( b [ idx + 6 ] >>> 4 & 15 ) ; var m = b [ idx + 6 ] & 15 ; for ( var i = 5 ; i >= 0 ; -- i ) m = m * 256 + b [ idx + i ] ; if ( e == 2047 ) return m == 0 ? s * Infinity : NaN ; if ( e == 0 ) e = - 1022 ; else { e -= 1023 ; m += Math . pow ( 2 , 52 ) } return s * Math . pow ( 2 , e - 52 ) * m } function write _double _le ( b , v , idx ) { var bs = ( v < 0 || 1 / v == - Infinity ? 1 : 0 ) << 7 , e = 0 , m = 0 ; var av = bs ? - v : v ; if ( ! isFinite ( av ) ) { e = 2047 ; m = isNaN ( v ) ? 26985 : 0 } else { e = Math . floor ( Math . log ( av ) * Math . LOG2E ) ; m = v * Math . pow ( 2 , 52 - e ) ; if ( e <= - 1023 && ( ! isFinite ( m ) || m < Math . pow ( 2 , 52 ) ) ) { e = - 1022 } else { m -= Math . pow ( 2 , 52 ) ; e += 1023 } } for ( var i = 0 ; i <= 5 ; ++ i , m /= 256 ) b [ idx + i ] = m & 255 ; b [ idx + 6 ] = ( e & 15 ) << 4 | m & 15 ; b [ idx + 7 ] = e >> 4 | bs } var _ _toBuffer , _ _ _toBuffer ; _ _toBuffer = _ _ _toBuffer = function toBuffer _ ( bufs ) { var x = [ ] ; for ( var i = 0 ; i < bufs [ 0 ] . length ; ++ i ) { x . push . apply ( x , bufs [ 0 ] [ i ] ) } return x } ; var _ _utf16le , _ _ _utf16le ; _ _utf16le = _ _ _utf16le = function utf16le _ ( b , s , e ) { var ss = [ ] ; for ( var i = s ; i < e ; i += 2 ) ss . push ( String . fromCharCode ( _ _readUInt16LE ( b , i ) ) ) ; return ss . join ( "" ) } ; var _ _hexlify , _ _ _hexlify ; _ _hexlify = _ _ _hexlify = function hexlify _ ( b , s , l ) { return b . slice ( s , s + l ) . map ( function ( x ) { return ( x < 16 ? "0" : "" ) + x . toString ( 16 ) } ) . join ( "" ) } ; var _ _utf8 , _ _ _utf8 ; _ _utf8 = _ _ _utf8 = function ( b , s , e ) { var ss = [ ] ; for ( var i = s ; i < e ; i ++ ) ss . push ( String . fromCharCode ( _ _readUInt8 ( b , i ) ) ) ; return ss . join ( "" ) } ; var _ _lpstr , _ _ _lpstr ; _ _lpstr = _ _ _lpstr = function lpstr _ ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf8 ( b , i + 4 , i + 4 + len - 1 ) : "" } ; var _ _lpwstr , _ _ _lpwstr ; _ _lpwstr = _ _ _lpwstr = function lpwstr _ ( b , i ) { var len = 2 * _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf8 ( b , i + 4 , i + 4 + len - 1 ) : "" } ; var _ _lpp4 , _ _ _lpp4 ; _ _lpp4 = _ _ _lpp4 = function lpp4 _ ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf16le ( b , i + 4 , i + 4 + len ) : "" } ; var _ _8lpp4 , _ _ _8lpp4 ; _ _8lpp4 = _ _ _8lpp4 = function lpp4 _8 ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf8 ( b , i + 4 , i + 4 + len ) : "" } ; var _ _double , _ _ _double ; _ _double = _ _ _double = function ( b , idx ) { return read _double _le ( b , idx ) } ; var is _buf = function is _buf _a ( a ) { return Array . isArray ( a ) } ; if ( has _buf ) { _ _utf16le = function utf16le _b ( b , s , e ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _utf16le ( b , s , e ) ; return b . toString ( "utf16le" , s , e ) } ; _ _hexlify = function ( b , s , l ) { return Buffer . isBuffer ( b ) ? b . toString ( "hex" , s , s + l ) : _ _ _hexlify ( b , s , l ) } ; _ _lpstr = function lpstr _b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _lpstr ( b , i ) ; var len = b . readUInt32LE ( i ) ; return len > 0 ? b . toString ( "utf8" , i + 4 , i + 4 + len - 1 ) : "" } ; _ _lpwstr = function lpwstr _b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _lpwstr ( b , i ) ; var len = 2 * b . readUInt32LE ( i ) ; return b . toString ( "utf16le" , i + 4 , i + 4 + len - 1 ) } ; _ _lpp4 = function lpp4 _b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _lpp4 ( b , i ) ; var len = b . readUInt32LE ( i ) ; return b . toString ( "utf16le" , i + 4 , i + 4 + len ) } ; _ _8lpp4 = function lpp4 _8b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _8lpp4 ( b , i ) ; var len = b . readUInt32LE ( i ) ; return b . toString ( "utf8" , i + 4 , i + 4 + len ) } ; _ _utf8 = function utf8 _b ( b , s , e ) { return b . toString ( "utf8" , s , e ) } ; _ _toBuffer = function ( bufs ) { return bufs [ 0 ] . length > 0 && Buffer . isBuffer ( bufs [ 0 ] [ 0 ] ) ? Buffer . concat ( bufs [ 0 ] ) : _ _ _toBuffer ( bufs ) } ; bconcat = function ( bufs ) { return Buffer . isBuffer ( bufs [ 0 ] ) ? Buffer . concat ( bufs ) : [ ] . concat . apply ( [ ] , bufs ) } ; _ _double = function double _ ( b , i ) { if ( Buffer . isBuffer ( b ) ) return b . readDoubleLE ( i ) ; return _ _ _double ( b , i ) } ; is _buf = function is _buf _b ( a ) { return Buffer . isBuffer ( a ) || Array . isArray ( a ) } } if ( typeof cptable !== "undefined" ) { _ _utf16le = function ( b , s , e ) { return cptable . utils . decode ( 1200 , b . slice ( s , e ) ) } ; _ _utf8 = function ( b , s , e ) { return cptable . utils . decode ( 65001 , b . slice ( s , e ) ) } ; _ _lpstr = function ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? cptable . utils . decode ( current _codepage , b . slice ( i + 4 , i + 4 + len - 1 ) ) : "" } ; _ _lpwstr = function ( b , i ) { var len = 2 * _ _readUInt32LE ( b , i ) ; return len > 0 ? cptable . utils . decode ( 1200 , b . slice ( i + 4 , i + 4 + len - 1 ) ) : "" } ; _ _lpp4 = function ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? cptable . utils . decode ( 1200 , b . slice ( i + 4 , i + 4 + len ) ) : "" } ; _ _8lpp4 = function ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? cpta
} var RELS = { WB : "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" , SHEET : "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument" , HLINK : "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" , VML : "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" , VBA : "http://schemas.microsoft.com/office/2006/relationships/vbaProject" } ; function get _rels _path ( file ) { var n = file . lastIndexOf ( "/" ) ; return file . substr ( 0 , n + 1 ) + "_rels/" + file . substr ( n + 1 ) + ".rels" } function parse _rels ( data , currentFilePath ) { if ( ! data ) return data ; if ( currentFilePath . charAt ( 0 ) !== "/" ) { currentFilePath = "/" + currentFilePath } var rels = { } ; var hash = { } ; ( data . match ( tagregex ) || [ ] ) . forEach ( function ( x ) { var y = parsexmltag ( x ) ; if ( y [ 0 ] === "<Relationship" ) { var rel = { } ; rel . Type = y . Type ; rel . Target = y . Target ; rel . Id = y . Id ; rel . TargetMode = y . TargetMode ; var canonictarget = y . TargetMode === "External" ? y . Target : resolve _path ( y . Target , currentFilePath ) ; rels [ canonictarget ] = rel ; hash [ y . Id ] = rel } } ) ; rels [ "!id" ] = hash ; return rels } XMLNS . RELS = "http://schemas.openxmlformats.org/package/2006/relationships" ; var RELS _ROOT = writextag ( "Relationships" , null , { xmlns : XMLNS . RELS } ) ; function write _rels ( rels ) { var o = [ XML _HEADER , RELS _ROOT ] ; keys ( rels [ "!id" ] ) . forEach ( function ( rid ) { o [ o . length ] = writextag ( "Relationship" , null , rels [ "!id" ] [ rid ] ) } ) ; if ( o . length > 2 ) { o [ o . length ] = "</Relationships>" ; o [ 1 ] = o [ 1 ] . replace ( "/>" , ">" ) } return o . join ( "" ) } function add _rels ( rels , rId , f , type , relobj ) { if ( ! relobj ) relobj = { } ; if ( ! rels [ "!id" ] ) rels [ "!id" ] = { } ; if ( rId < 0 ) for ( rId = 1 ; rels [ "!id" ] [ "rId" + rId ] ; ++ rId ) { } relobj . Id = "rId" + rId ; relobj . Type = type ; relobj . Target = f ; if ( relobj . Type == RELS . HLINK ) relobj . TargetMode = "External" ; if ( rels [ "!id" ] [ relobj . Id ] ) throw new Error ( "Cannot rewrite rId " + rId ) ; rels [ "!id" ] [ relobj . Id ] = relobj ; rels [ ( "/" + relobj . Target ) . replace ( "//" , "/" ) ] = relobj ; return rId } var CT _ODS = "application/vnd.oasis.opendocument.spreadsheet" ; function parse _manifest ( d , opts ) { var str = xlml _normalize ( d ) ; var Rn ; var FEtag ; while ( Rn = xlmlregex . exec ( str ) ) switch ( Rn [ 3 ] ) { case "manifest" : break ; case "file-entry" : FEtag = parsexmltag ( Rn [ 0 ] , false ) ; if ( FEtag . path == "/" && FEtag . type !== CT _ODS ) throw new Error ( "This OpenDocument is not a spreadsheet" ) ; break ; case "encryption-data" : case "algorithm" : case "start-key-generation" : case "key-derivation" : throw new Error ( "Unsupported ODS Encryption" ) ; default : if ( opts && opts . WTF ) throw Rn } } function write _manifest ( manifest , opts ) { var o = [ XML _HEADER ] ; o . push ( '<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">\n' ) ; o . push ( ' <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>\n' ) ; for ( var i = 0 ; i < manifest . length ; ++ i ) o . push ( ' <manifest:file-entry manifest:full-path="' + manifest [ i ] [ 0 ] + '" manifest:media-type="' + manifest [ i ] [ 1 ] + '"/>\n' ) ; o . push ( "</manifest:manifest>" ) ; return o . join ( "" ) } function write _rdf _type ( file , res , tag ) { return [ ' <rdf:Description rdf:about="' + file + '">\n' , ' <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/' + ( tag || "odf" ) + "#" + res + '"/>\n' , " </rdf:Description>\n" ] . join ( "" ) } function write _rdf _has ( base , file ) { return [ ' <rdf:Description rdf:about="' + base + '">\n' , ' <ns0:hasPart xmlns:ns0="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#" rdf:resource="' + file + '"/>\n' , " </rdf:Description>\n" ] . join ( "" ) } function write _rdf ( rdf , opts ) { var o = [ XML _HEADER ] ; o . push ( '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\n' ) ; for ( var i = 0 ; i != rdf . length ; ++ i ) { o . push ( write _rdf _type ( rdf [ i ] [ 0 ] , rdf [ i ] [ 1 ] ) ) ; o . push ( write _rdf _has ( "" , rdf [ i ] [ 0 ] ) ) } o . push ( write _rdf _type ( "" , "Document" , "pkg" ) ) ; o . push ( "</rdf:RDF>" ) ; return o . join ( "" ) } var write _meta _ods = function ( ) { var payload = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink" office:version="1.2"><office:meta><meta:generator>Sheet' + "JS " + XLSX . vers
return out } function parse _BoolErr ( blob , length , opts ) { var cell = parse _XLSCell ( blob , 6 ) ; if ( opts . biff == 2 ) ++ blob . l ; var val = parse _Bes ( blob , 2 ) ; cell . val = val ; cell . t = val === true || val === false ? "b" : "e" ; return cell } function parse _Number ( blob , length ) { var cell = parse _XLSCell ( blob , 6 ) ; var xnum = parse _Xnum ( blob , 8 ) ; cell . val = xnum ; return cell } var parse _XLHeaderFooter = parse _OptXLUnicodeString ; function parse _SupBook ( blob , length , opts ) { var end = blob . l + length ; var ctab = blob . read _shift ( 2 ) ; var cch = blob . read _shift ( 2 ) ; var virtPath ; if ( cch >= 1 && cch <= 255 ) virtPath = parse _XLUnicodeStringNoCch ( blob , cch ) ; var rgst = blob . read _shift ( end - blob . l ) ; opts . sbcch = cch ; return [ cch , ctab , virtPath , rgst ] } function parse _ExternName ( blob , length , opts ) { var flags = blob . read _shift ( 2 ) ; var body ; var o = { fBuiltIn : flags & 1 , fWantAdvise : flags >>> 1 & 1 , fWantPict : flags >>> 2 & 1 , fOle : flags >>> 3 & 1 , fOleLink : flags >>> 4 & 1 , cf : flags >>> 5 & 1023 , fIcon : flags >>> 15 & 1 } ; if ( opts . sbcch === 14849 ) body = parse _AddinUdf ( blob , length - 2 , opts ) ; o . body = body || blob . read _shift ( length - 2 ) ; if ( typeof body === "string" ) o . Name = body ; return o } function parse _Lbl ( blob , length , opts ) { var target = blob . l + length ; var flags = blob . read _shift ( 2 ) ; var chKey = blob . read _shift ( 1 ) ; var cch = blob . read _shift ( 1 ) ; var cce = blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ; var itab = 0 ; if ( ! opts || opts . biff >= 5 ) { blob . l += 2 ; itab = blob . read _shift ( 2 ) ; blob . l += 4 } var name = parse _XLUnicodeStringNoCch ( blob , cch , opts ) ; var npflen = target - blob . l ; if ( opts && opts . biff == 2 ) -- npflen ; var rgce = target == blob . l || cce == 0 ? [ ] : parse _NameParsedFormula ( blob , npflen , opts , cce ) ; return { chKey : chKey , Name : name , itab : itab , rgce : rgce } } function parse _ExternSheet ( blob , length , opts ) { if ( opts . biff < 8 ) return parse _ShortXLUnicodeString ( blob , length , opts ) ; var o = [ ] , target = blob . l + length , len = blob . read _shift ( 2 ) ; while ( len -- !== 0 ) o . push ( parse _XTI ( blob , 6 ) ) ; var oo = [ ] ; return o } function parse _NameCmt ( blob , length , opts ) { if ( opts . biff < 8 ) { blob . l += length ; return } var cchName = blob . read _shift ( 2 ) ; var cchComment = blob . read _shift ( 2 ) ; var name = parse _XLUnicodeStringNoCch ( blob , cchName , opts ) ; var comment = parse _XLUnicodeStringNoCch ( blob , cchComment , opts ) ; return [ name , comment ] } function parse _ShrFmla ( blob , length , opts ) { var ref = parse _RefU ( blob , 6 ) ; blob . l ++ ; var cUse = blob . read _shift ( 1 ) ; length -= 8 ; return [ parse _SharedParsedFormula ( blob , length , opts ) , cUse ] } function parse _Array ( blob , length , opts ) { var ref = parse _Ref ( blob , 6 ) ; switch ( opts . biff ) { case 2 : blob . l ++ ; length -= 7 ; break ; case 3 : case 4 : blob . l += 2 ; length -= 8 ; break ; default : blob . l += 6 ; length -= 12 } return [ ref , parse _ArrayParsedFormula ( blob , length , opts , ref ) ] } function parse _MTRSettings ( blob , length ) { var fMTREnabled = blob . read _shift ( 4 ) !== 0 ; var fUserSetThreadCount = blob . read _shift ( 4 ) !== 0 ; var cUserThreadCount = blob . read _shift ( 4 ) ; return [ fMTREnabled , fUserSetThreadCount , cUserThreadCount ] } function parse _NoteSh ( blob , length , opts ) { if ( opts . biff < 8 ) return ; var row = blob . read _shift ( 2 ) , col = blob . read _shift ( 2 ) ; var flags = blob . read _shift ( 2 ) , idObj = blob . read _shift ( 2 ) ; var stAuthor = parse _XLUnicodeString2 ( blob , 0 , opts ) ; if ( opts . biff < 8 ) blob . read _shift ( 1 ) ; return [ { r : row , c : col } , stAuthor , idObj , flags ] } function parse _Note ( blob , length , opts ) { return parse _NoteSh ( blob , length , opts ) } function parse _MergeCells ( blob , length ) { var merges = [ ] ; var cmcs = blob . read _shift ( 2 ) ; while ( cmcs -- ) merges . push ( parse _Ref8U ( blob , length ) ) ; return merges } function parse _Obj ( blob , length , opts ) { if ( opts && opts . biff < 8 ) return parse _BIFF5Obj ( blob , length , opts ) ; var cmo = parse _FtCmo ( blob , 22 ) ; var fts = parse _FtArray ( blob , length - 22 , cmo [ 1 ] ) ; return { cmo : cmo , ft : fts } } var parse _BIFF5OT = [ ] ; parse _BIFF5OT [ 8 ] = function ( blob , length , opts ) { var tgt = blob . l + length ; blob . l += 10 ; var cf = blob . read _shift ( 2 ) ; blob . l += 4 ; var cbPictFmla = blob . read _shift ( 2 ) ; blob . l += 2 ; var grbit = blob . read _shift ( 2 ) ; blob . l += 4 ; var cchName = blob . read _shift ( 1 ) ; blob . l += cchName ; blob . l = tgt ; return { fmt : cf } } ; function parse _BIFF5Obj ( blob , length , opts ) { var cnt = blob . read _shift ( 4 ) ; var ot = blob . read _shift ( 2 ) ; var id = blob . read _shift ( 2 ) ; var grbit = blob . read _shift ( 2 ) ; var colL = blob . read _shift ( 2 ) ; var dxL = blob . read _shift ( 2 ) ; var rwT = blob . read _shift ( 2 ) ; var dyT = blob . read _shift ( 2 ) ; var colR = blob . read _shift ( 2 ) ; var dxR = blob . read _shift ( 2 ) ; var rwB = blob . read _shift ( 2 ) ; var dyB = blob . read _shift ( 2 ) ; var cbMacro = blob . read _shift ( 2 ) ; blob . l += 6 ; lengt
} throw "Unsupported type " + opts . type } function lotus _to _workbook _buf ( d , opts ) { if ( ! d ) return d ; var o = opts || { } ; if ( DENSE != null && o . dense == null ) o . dense = DENSE ; var s = o . dense ? [ ] : { } , n = "Sheet1" , sidx = 0 ; var sheets = { } , snames = [ n ] ; var refguess = { s : { r : 0 , c : 0 } , e : { r : 0 , c : 0 } } ; if ( d [ 2 ] == 2 ) o . Enum = WK1Enum ; else if ( d [ 2 ] == 26 ) o . Enum = WK3Enum ; else if ( d [ 2 ] == 14 ) { o . Enum = WK3Enum ; o . qpro = true ; d . l = 0 } else throw new Error ( "Unrecognized LOTUS BOF " + d [ 2 ] ) ; lotushopper ( d , function ( val , Rn , RT ) { if ( d [ 2 ] == 2 ) switch ( RT ) { case 0 : o . vers = val ; if ( val >= 4096 ) o . qpro = true ; break ; case 6 : refguess = val ; break ; case 15 : if ( ! o . qpro ) val [ 1 ] . v = val [ 1 ] . v . substr ( 1 ) ; case 13 : case 14 : case 16 : case 51 : if ( o . dense ) { if ( ! s [ val [ 0 ] . r ] ) s [ val [ 0 ] . r ] = [ ] ; s [ val [ 0 ] . r ] [ val [ 0 ] . c ] = val [ 1 ] } else s [ encode _cell ( val [ 0 ] ) ] = val [ 1 ] ; break } else switch ( RT ) { case 22 : val [ 1 ] . v = val [ 1 ] . v . substr ( 1 ) ; case 23 : case 24 : case 25 : case 37 : case 39 : case 40 : if ( val [ 3 ] > sidx ) { s [ "!ref" ] = encode _range ( refguess ) ; sheets [ n ] = s ; s = o . dense ? [ ] : { } ; refguess = { s : { r : 0 , c : 0 } , e : { r : 0 , c : 0 } } ; sidx = val [ 3 ] ; n = "Sheet" + ( sidx + 1 ) ; snames . push ( n ) } s [ encode _cell ( val [ 0 ] ) ] = val [ 1 ] ; if ( refguess . e . c < val [ 0 ] . c ) refguess . e . c = val [ 0 ] . c ; if ( refguess . e . r < val [ 0 ] . r ) refguess . e . r = val [ 0 ] . r ; break ; default : break } } , o ) ; s [ "!ref" ] = encode _range ( refguess ) ; sheets [ n ] = s ; return { SheetNames : snames , Sheets : sheets } } function parse _RANGE ( blob , length ) { var o = { s : { c : 0 , r : 0 } , e : { c : 0 , r : 0 } } ; o . s . c = blob . read _shift ( 2 ) ; o . s . r = blob . read _shift ( 2 ) ; o . e . c = blob . read _shift ( 2 ) ; o . e . r = blob . read _shift ( 2 ) ; if ( o . s . c == 65535 ) o . s . c = o . e . c = o . s . r = o . e . r = 0 ; return o } function parse _cell ( blob , length , opts ) { var o = [ { c : 0 , r : 0 } , { t : "n" , v : 0 } , 0 ] ; if ( opts . qpro && opts . vers != 20768 ) { o [ 0 ] . c = blob . read _shift ( 1 ) ; blob . l ++ ; o [ 0 ] . r = blob . read _shift ( 2 ) ; blob . l += 2 } else { o [ 2 ] = blob . read _shift ( 1 ) ; o [ 0 ] . c = blob . read _shift ( 2 ) ; o [ 0 ] . r = blob . read _shift ( 2 ) } return o } function parse _LABEL ( blob , length , opts ) { var tgt = blob . l + length ; var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . t = "s" ; if ( opts . vers == 20768 ) { blob . l ++ ; var len = blob . read _shift ( 1 ) ; o [ 1 ] . v = blob . read _shift ( len , "utf8" ) ; return o } if ( opts . qpro ) blob . l ++ ; o [ 1 ] . v = blob . read _shift ( tgt - blob . l , "cstr" ) ; return o } function parse _INTEGER ( blob , length , opts ) { var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . v = blob . read _shift ( 2 , "i" ) ; return o } function parse _NUMBER ( blob , length , opts ) { var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . v = blob . read _shift ( 8 , "f" ) ; return o } function parse _FORMULA ( blob , length , opts ) { var tgt = blob . l + length ; var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . v = blob . read _shift ( 8 , "f" ) ; if ( opts . qpro ) blob . l = tgt ; else { var flen = blob . read _shift ( 2 ) ; blob . l += flen } return o } function parse _cell _3 ( blob , length ) { var o = [ { c : 0 , r : 0 } , { t : "n" , v : 0 } , 0 ] ; o [ 0 ] . r = blob . read _shift ( 2 ) ; o [ 3 ] = blob [ blob . l ++ ] ; o [ 0 ] . c = blob [ blob . l ++ ] ; return o } function parse _LABEL _16 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; o [ 1 ] . t = "s" ; o [ 1 ] . v = blob . read _shift ( length - 4 , "cstr" ) ; return o } function parse _NUMBER _18 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; o [ 1 ] . v = blob . read _shift ( 2 ) ; var v = o [ 1 ] . v >> 1 ; if ( o [ 1 ] . v & 1 ) { switch ( v & 7 ) { case 1 : v = ( v >> 3 ) * 500 ; break ; case 2 : v = ( v >> 3 ) / 20 ; break ; case 4 : v = ( v >> 3 ) / 2e3 ; break ; case 6 : v = ( v >> 3 ) / 16 ; break ; case 7 : v = ( v >> 3 ) / 64 ; break ; default : throw "unknown NUMBER_18 encoding " + ( v & 7 ) } } o [ 1 ] . v = v ; return o } function parse _NUMBER _17 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; var v1 = blob . read _shift ( 4 ) ; var v2 = blob . read _shift ( 4 ) ; var e = blob . read _shift ( 2 ) ; if ( e == 65535 ) { o [ 1 ] . v = 0 ; return o } var s = e & 32768 ; e = ( e & 32767 ) - 16446 ; o [ 1 ] . v = ( e > 0 ? v2 << e : v2 >>> - e ) + ( e > - 32 ? v1 << e + 32 : v1 >>> - ( e + 32 ) ) ; return o } function parse _FORMULA _19 ( blob , length ) { var o = parse _NUMBER _17 ( blob , 14 ) ; blob . l += length - 14 ; return o } function parse _NUMBER _25 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; var v1 = blob . read _shift ( 4 ) ; o [ 1 ] . v = v1 >> 6 ; return o } function parse _NUMBER _27 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; var v1 = blob . read _shift ( 8 , "f" ) ; o [ 1 ] . v = v1 ; return o } function parse _FORMULA _28 ( blob , length ) { var o = parse _NUMBER _27 ( blob , 14 ) ; blob . l += length - 10 ; return o } var WK1Enum = { 0 : { n : "BOF" , f : parseuint16 } , 1 : { n : "EOF" , f : parsenoop } , 2 : { n : "CALCMODE" , f : parsenoop } , 3 : { n : "CALCORDER" , f : parsenoop } , 4 : { n : "SPLIT" , f : parsenoop } , 5 : { n : "SYNC" , f : parsenoop } , 6 : { n : "RANGE" , f : parse _RANGE } , 7 : { n : "WINDOW1" , f : parsenoop } , 8 : { n : "COLW1" , f : parsenoop } , 9 : { n : "WINTWO" , f : parsenoop } , 10 : { n : "COLW2" , f : parsenoop } , 11 : { n : "NAME" , f : parsenoop } , 12 : { n : "BLANK" , f : parseno
var family = data . read _shift ( 1 ) ; if ( family > 0 ) out . family = family ; var bCharSet = data . read _shift ( 1 ) ; if ( bCharSet > 0 ) out . charset = bCharSet ; data . l ++ ; out . color = parse _BrtColor ( data , 8 ) ; switch ( data . read _shift ( 1 ) ) { case 1 : out . scheme = "major" ; break ; case 2 : out . scheme = "minor" ; break } out . name = parse _XLWideString ( data , length - 21 ) ; return out } function write _BrtFont ( font , o ) { if ( ! o ) o = new _buf ( 25 + 4 * 32 ) ; o . write _shift ( 2 , font . sz * 20 ) ; write _FontFlags ( font , o ) ; o . write _shift ( 2 , font . bold ? 700 : 400 ) ; var sss = 0 ; if ( font . vertAlign == "superscript" ) sss = 1 ; else if ( font . vertAlign == "subscript" ) sss = 2 ; o . write _shift ( 2 , sss ) ; o . write _shift ( 1 , font . underline || 0 ) ; o . write _shift ( 1 , font . family || 0 ) ; o . write _shift ( 1 , font . charset || 0 ) ; o . write _shift ( 1 , 0 ) ; write _BrtColor ( font . color , o ) ; var scheme = 0 ; if ( font . scheme == "major" ) scheme = 1 ; if ( font . scheme == "minor" ) scheme = 2 ; o . write _shift ( 1 , scheme ) ; write _XLWideString ( font . name , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } var XLSBFillPTNames = [ "none" , "solid" , "mediumGray" , "darkGray" , "lightGray" , "darkHorizontal" , "darkVertical" , "darkDown" , "darkUp" , "darkGrid" , "darkTrellis" , "lightHorizontal" , "lightVertical" , "lightDown" , "lightUp" , "lightGrid" , "lightTrellis" , "gray125" , "gray0625" ] ; var rev _XLSBFillPTNames = evert ( XLSBFillPTNames ) ; function write _BrtFill ( fill , o ) { if ( ! o ) o = new _buf ( 4 * 3 + 8 * 7 + 16 * 1 ) ; var fls = rev _XLSBFillPTNames [ fill . patternType ] ; if ( fls == null ) fls = 40 ; o . write _shift ( 4 , fls ) ; var j = 0 ; if ( fls != 40 ) { write _BrtColor ( { auto : 1 } , o ) ; write _BrtColor ( { auto : 1 } , o ) ; for ( ; j < 12 ; ++ j ) o . write _shift ( 4 , 0 ) } else { for ( ; j < 4 ; ++ j ) o . write _shift ( 4 , 0 ) ; for ( ; j < 12 ; ++ j ) o . write _shift ( 4 , 0 ) } return o . length > o . l ? o . slice ( 0 , o . l ) : o } function parse _BrtXF ( data , length ) { var ixfeParent = data . read _shift ( 2 ) ; var ifmt = data . read _shift ( 2 ) ; parsenoop ( data , length - 4 ) ; return { ixfe : ixfeParent , ifmt : ifmt } } function write _BrtXF ( data , ixfeP , o ) { if ( ! o ) o = new _buf ( 16 ) ; o . write _shift ( 2 , ixfeP || 0 ) ; o . write _shift ( 2 , data . numFmtId || 0 ) ; o . write _shift ( 2 , 0 ) ; o . write _shift ( 2 , 0 ) ; o . write _shift ( 2 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; return o } function write _Blxf ( data , o ) { if ( ! o ) o = new _buf ( 10 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 4 , 0 ) ; o . write _shift ( 4 , 0 ) ; return o } function write _BrtBorder ( border , o ) { if ( ! o ) o = new _buf ( 51 ) ; o . write _shift ( 1 , 0 ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function write _BrtStyle ( style , o ) { if ( ! o ) o = new _buf ( 12 + 4 * 10 ) ; o . write _shift ( 4 , style . xfId ) ; o . write _shift ( 2 , 1 ) ; o . write _shift ( 1 , + style . builtinId ) ; o . write _shift ( 1 , 0 ) ; write _XLNullableWideString ( style . name || "" , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function write _BrtBeginTableStyles ( cnt , defTableStyle , defPivotStyle ) { var o = new _buf ( 4 + 256 * 2 * 4 ) ; o . write _shift ( 4 , cnt ) ; write _XLNullableWideString ( defTableStyle , o ) ; write _XLNullableWideString ( defPivotStyle , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function parse _sty _bin ( data , themes , opts ) { var styles = { } ; styles . NumberFmt = [ ] ; for ( var y in SSF . _table ) styles . NumberFmt [ y ] = SSF . _table [ y ] ; styles . CellXf = [ ] ; styles . Fonts = [ ] ; var state = [ ] ; var pass = false ; recordhopper ( data , function hopper _sty ( val , R _n , RT ) { switch ( RT ) { case 44 : styles . NumberFmt [ val [ 0 ] ] = val [ 1 ] ; SSF . load ( val [ 1 ] , val [ 0 ] ) ; break ; case 43 : styles . Fonts . push ( val ) ; if ( val . color . theme != null && themes && themes . themeElements && themes . themeElements . clrScheme ) { val . color . rgb = rgb _tint ( themes . themeElements . clrScheme [ val . color . theme ] . rgb , val . color . tint || 0 ) } break ; case 1025 : break ; case 45 : break ; case 46 : break ; case 47 : if ( state [ state . length - 1 ] == "BrtBeginCellXFs" ) { styles . CellXf . push ( val ) } break ; case 48 : case 507 : case 572 : case 475 : break ; case 1171 : case 2102 : case 1130 : case 512 : case 2095 : break ; case 35 : pass = true ; break ; case 36 : pass = false ; break ; case 37 : state . push ( R _n ) ; break ; case 38 : state . pop ( ) ; break ; default : if ( ( R _n || "" ) . indexOf ( "Begin" ) > 0 ) state . push ( R _n ) ; else if ( ( R _n || "" ) . indexOf ( "End" ) > 0 ) state . pop ( ) ; else if ( ! pass || opts . WTF ) throw new Error ( "Unexpected record " + RT + " " + R _n ) } } ) ; return styles } function write _FMTS _bin ( ba , NF ) { if ( ! NF ) return ; var cnt = 0 ; [ [ 5 , 8 ] , [ 23 , 26 ] , [ 41 , 44 ] , [ 57 , 392 ] ] . forEach ( function ( r ) { for ( var i = r [ 0 ] ; i <= r [ 1 ] ; ++ i ) if ( NF [ i ] != null ) ++ cnt } ) ; if ( cnt == 0 ) return ; write _record ( ba , "BrtBeginFmts" , wri
var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; var ixti = blob . read _shift ( 2 , "i" ) ; var w = 8 ; if ( opts ) switch ( opts . biff ) { case 5 : blob . l += 12 ; w = 6 ; break ; case 12 : w = 12 ; break } var area = parse _RgceArea ( blob , w , opts ) ; return [ type , ixti , area ] } function parse _PtgAreaErr ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; blob . l += opts && opts . biff > 8 ? 12 : 8 ; return [ type ] } function parse _PtgAreaErr3d ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; var ixti = blob . read _shift ( 2 ) ; var w = 8 ; if ( opts ) switch ( opts . biff ) { case 5 : blob . l += 12 ; w = 6 ; break ; case 12 : w = 12 ; break } blob . l += w ; return [ type , ixti ] } function parse _PtgAreaN ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; var area = parse _RgceAreaRel ( blob , opts && opts . biff > 8 ? 12 : 8 , opts ) ; return [ type , area ] } function parse _PtgArray ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; blob . l += opts . biff == 2 ? 6 : opts . biff == 12 ? 14 : 7 ; return [ type ] } function parse _PtgAttrBaxcel ( blob , length ) { var bitSemi = blob [ blob . l + 1 ] & 1 ; var bitBaxcel = 1 ; blob . l += 4 ; return [ bitSemi , bitBaxcel ] } function parse _PtgAttrChoose ( blob , length , opts ) { blob . l += 2 ; var offset = blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ; var o = [ ] ; for ( var i = 0 ; i <= offset ; ++ i ) o . push ( blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ) ; return o } function parse _PtgAttrGoto ( blob , length , opts ) { var bitGoto = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += 2 ; return [ bitGoto , blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ] } function parse _PtgAttrIf ( blob , length , opts ) { var bitIf = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += 2 ; return [ bitIf , blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ] } function parse _PtgAttrIfError ( blob , length ) { var bitIf = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += 2 ; return [ bitIf , blob . read _shift ( 2 ) ] } function parse _PtgAttrSemi ( blob , length , opts ) { var bitSemi = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += opts && opts . biff == 2 ? 3 : 4 ; return [ bitSemi ] } function parse _PtgAttrSpaceType ( blob , length ) { var type = blob . read _shift ( 1 ) , cch = blob . read _shift ( 1 ) ; return [ type , cch ] } function parse _PtgAttrSpace ( blob , length ) { blob . read _shift ( 2 ) ; return parse _PtgAttrSpaceType ( blob , 2 ) } function parse _PtgAttrSpaceSemi ( blob , length ) { blob . read _shift ( 2 ) ; return parse _PtgAttrSpaceType ( blob , 2 ) } function parse _PtgRef ( blob , length , opts ) { var ptg = blob [ blob . l ] & 31 ; var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var loc = parse _RgceLoc ( blob , 0 , opts ) ; return [ type , loc ] } function parse _PtgRefN ( blob , length , opts ) { var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var loc = parse _RgceLocRel ( blob , 0 , opts ) ; return [ type , loc ] } function parse _PtgRef3d ( blob , length , opts ) { var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var ixti = blob . read _shift ( 2 ) ; var loc = parse _RgceLoc ( blob , 0 , opts ) ; return [ type , ixti , loc ] } function parse _PtgFunc ( blob , length , opts ) { var ptg = blob [ blob . l ] & 31 ; var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var iftab = blob . read _shift ( opts && opts . biff <= 3 ? 1 : 2 ) ; return [ FtabArgc [ iftab ] , Ftab [ iftab ] , type ] } function parse _PtgFuncVar ( blob , length , opts ) { blob . l ++ ; var cparams = blob . read _shift ( 1 ) , tab = opts && opts . biff <= 3 ? [ 0 , blob . read _shift ( 1 ) ] : parsetab ( blob ) ; return [ cparams , ( tab [ 0 ] === 0 ? Ftab : Cetab ) [ tab [ 1 ] ] ] } function parsetab ( blob , length ) { return [ blob [ blob . l + 1 ] >> 7 , blob . read _shift ( 2 ) & 32767 ] } function parse _PtgAttrSum ( blob , length , opts ) { blob . l += opts && opts . biff == 2 ? 3 : 4 ; return } var parse _PtgConcat = parseread1 ; function parse _PtgExp ( blob , length , opts ) { blob . l ++ ; if ( opts && opts . biff == 12 ) return [ blob . read _shift ( 4 , "i" ) , 0 ] ; var row = blob . read _shift ( 2 ) ; var col = blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ; return [ row , col ] } function parse _PtgErr ( blob , length ) { blob . l ++ ; return BErr [ blob . read _shift ( 1 ) ] } function parse _PtgInt ( blob , length ) { blob . l ++ ; return blob . read _shift ( 2 ) } function parse _PtgBool ( blob , length ) { blob . l ++ ; return blob . read _shift ( 1 ) !== 0 } function parse _PtgNum ( blob , length ) { blob . l ++ ; return parse _Xnum ( blob , 8 ) } function parse _PtgStr ( blob , length , opts ) { blob . l ++ ; return parse _ShortXLUnicodeString ( blob , length - 1 , opts ) } function parse _SerAr ( blob , biff ) { var val = [ blob . read _shift ( 1 ) ] ; if ( biff == 12 ) switch ( val [ 0 ] ) { case 2 : val [ 0 ] = 4 ; break ; case 4 : val [ 0 ] = 16 ; break ; case 0 : val [ 0 ] = 1 ; break ; case 1 : val [ 0 ] = 2 ; break } switch ( val [ 0 ] ) { case 4 : val [ 1 ] = parsebool ( blob , 1 ) ? "TRUE" : "FALSE" ; blob . l += 7 ; break ; case 16 : val [ 1 ] = BErr [ blob [ blob . l ] ] ; blob . l += 8 ; break ; case 0 : blob . l += 8 ; break ; case 1 : val [ 1 ] = parse _Xnum ( blob , 8 ) ; break ; case 2 : val [ 1 ] = parse _XLUnicodeString2 ( blob , 0 , { biff : biff > 0 && biff < 8 ? 2 : biff } ) ; break } return val } function parse
41 : 3 , 42 : 3 , 43 : 3 , 44 : 3 , 45 : 3 , 47 : 3 , 48 : 2 , 53 : 1 , 61 : 3 , 65 : 3 , 66 : 3 , 67 : 1 , 68 : 1 , 69 : 1 , 70 : 1 , 71 : 1 , 72 : 1 , 73 : 1 , 75 : 1 , 76 : 1 , 77 : 1 , 79 : 2 , 80 : 2 , 83 : 1 , 85 : 0 , 86 : 1 , 90 : 1 , 97 : 2 , 98 : 1 , 99 : 1 , 101 : 3 , 102 : 3 , 105 : 1 , 111 : 1 , 112 : 1 , 113 : 1 , 114 : 1 , 117 : 2 , 118 : 1 , 119 : 4 , 121 : 1 , 126 : 1 , 127 : 1 , 128 : 1 , 129 : 1 , 130 : 1 , 131 : 1 , 133 : 1 , 134 : 1 , 135 : 1 , 136 : 2 , 137 : 2 , 138 : 2 , 140 : 1 , 141 : 1 , 142 : 3 , 143 : 4 , 144 : 4 , 162 : 1 , 163 : 1 , 164 : 1 , 165 : 2 , 172 : 1 , 175 : 2 , 176 : 2 , 177 : 3 , 178 : 2 , 179 : 1 , 184 : 1 , 189 : 3 , 190 : 1 , 195 : 3 , 196 : 3 , 197 : 1 , 198 : 1 , 199 : 3 , 201 : 1 , 207 : 4 , 210 : 3 , 211 : 1 , 212 : 2 , 213 : 2 , 214 : 1 , 215 : 1 , 229 : 1 , 230 : 1 , 231 : 1 , 232 : 1 , 233 : 1 , 234 : 1 , 235 : 3 , 244 : 1 , 247 : 4 , 252 : 2 , 257 : 1 , 261 : 1 , 271 : 1 , 273 : 4 , 274 : 2 , 275 : 2 , 276 : 2 , 277 : 3 , 278 : 3 , 279 : 1 , 280 : 3 , 281 : 3 , 282 : 3 , 283 : 1 , 284 : 1 , 285 : 2 , 286 : 4 , 287 : 3 , 288 : 2 , 289 : 4 , 290 : 3 , 291 : 3 , 292 : 3 , 293 : 4 , 294 : 1 , 295 : 3 , 296 : 1 , 297 : 3 , 298 : 1 , 299 : 2 , 300 : 3 , 301 : 3 , 302 : 4 , 303 : 2 , 304 : 2 , 305 : 2 , 306 : 2 , 307 : 2 , 308 : 2 , 309 : 3 , 310 : 2 , 311 : 2 , 312 : 2 , 313 : 2 , 314 : 2 , 315 : 2 , 316 : 4 , 325 : 2 , 326 : 2 , 327 : 2 , 328 : 2 , 331 : 2 , 332 : 2 , 337 : 2 , 342 : 1 , 343 : 1 , 346 : 2 , 347 : 1 , 350 : 4 , 351 : 3 , 352 : 1 , 353 : 2 , 360 : 1 , 368 : 1 , 369 : 1 , 370 : 1 , 371 : 1 , 372 : 1 , 373 : 1 , 374 : 1 , 375 : 1 , 376 : 1 , 377 : 1 , 378 : 1 , 382 : 3 , 385 : 1 , 392 : 1 , 393 : 1 , 396 : 2 , 397 : 2 , 398 : 2 , 399 : 1 , 400 : 1 , 401 : 1 , 402 : 1 , 403 : 1 , 404 : 1 , 405 : 1 , 406 : 1 , 407 : 1 , 408 : 1 , 409 : 1 , 410 : 1 , 414 : 4 , 415 : 1 , 416 : 1 , 417 : 2 , 420 : 1 , 421 : 1 , 422 : 2 , 424 : 1 , 425 : 2 , 426 : 2 , 427 : 2 , 428 : 2 , 430 : 3 , 438 : 3 , 439 : 3 , 440 : 3 , 443 : 2 , 444 : 2 , 445 : 2 , 446 : 2 , 447 : 6 , 448 : 6 , 449 : 2 , 450 : 2 , 464 : 2 , 468 : 3 , 476 : 2 , 479 : 1 , 480 : 2 , 65535 : 0 } ; var XLSXFutureFunctions = { "_xlfn.ACOT" : "ACOT" , "_xlfn.ACOTH" : "ACOTH" , "_xlfn.AGGREGATE" : "AGGREGATE" , "_xlfn.ARABIC" : "ARABIC" , "_xlfn.AVERAGEIF" : "AVERAGEIF" , "_xlfn.AVERAGEIFS" : "AVERAGEIFS" , "_xlfn.BASE" : "BASE" , "_xlfn.BETA.DIST" : "BETA.DIST" , "_xlfn.BETA.INV" : "BETA.INV" , "_xlfn.BINOM.DIST" : "BINOM.DIST" , "_xlfn.BINOM.DIST.RANGE" : "BINOM.DIST.RANGE" , "_xlfn.BINOM.INV" : "BINOM.INV" , "_xlfn.BITAND" : "BITAND" , "_xlfn.BITLSHIFT" : "BITLSHIFT" , "_xlfn.BITOR" : "BITOR" , "_xlfn.BITRSHIFT" : "BITRSHIFT" , "_xlfn.BITXOR" : "BITXOR" , "_xlfn.CEILING.MATH" : "CEILING.MATH" , "_xlfn.CEILING.PRECISE" : "CEILING.PRECISE" , "_xlfn.CHISQ.DIST" : "CHISQ.DIST" , "_xlfn.CHISQ.DIST.RT" : "CHISQ.DIST.RT" , "_xlfn.CHISQ.INV" : "CHISQ.INV" , "_xlfn.CHISQ.INV.RT" : "CHISQ.INV.RT" , "_xlfn.CHISQ.TEST" : "CHISQ.TEST" , "_xlfn.COMBINA" : "COMBINA" , "_xlfn.CONFIDENCE.NORM" : "CONFIDENCE.NORM" , "_xlfn.CONFIDENCE.T" : "CONFIDENCE.T" , "_xlfn.COT" : "COT" , "_xlfn.COTH" : "COTH" , "_xlfn.COUNTIFS" : "COUNTIFS" , "_xlfn.COVARIANCE.P" : "COVARIANCE.P" , "_xlfn.COVARIANCE.S" : "COVARIANCE.S" , "_xlfn.CSC" : "CSC" , "_xlfn.CSCH" : "CSCH" , "_xlfn.DAYS" : "DAYS" , "_xlfn.DECIMAL" : "DECIMAL" , "_xlfn.ECMA.CEILING" : "ECMA.CEILING" , "_xlfn.ERF.PRECISE" : "ERF.PRECISE" , "_xlfn.ERFC.PRECISE" : "ERFC.PRECISE" , "_xlfn.EXPON.DIST" : "EXPON.DIST" , "_xlfn.F.DIST" : "F.DIST" , "_xlfn.F.DIST.RT" : "F.DIST.RT" , "_xlfn.F.INV" : "F.INV" , "_xlfn.F.INV.RT" : "F.INV.RT" , "_xlfn.F.TEST" : "F.TEST" , "_xlfn.FILTERXML" : "FILTERXML" , "_xlfn.FLOOR.MATH" : "FLOOR.MATH" , "_xlfn.FLOOR.PRECISE" : "FLOOR.PRECISE" , "_xlfn.FORMULATEXT" : "FORMULATEXT" , "_xlfn.GAMMA" : "GAMMA" , "_xlfn.GAMMA.DIST" : "GAMMA.DIST" , "_xlfn.GAMMA.INV" : "GAMMA.INV" , "_xlfn.GAMMALN.PRECISE" : "GAMMALN.PRECISE" , "_xlfn.GAUSS" : "GAUSS" , "_xlfn.HYPGEOM.DIST" : "HYPGEOM.DIST" , "_xlfn.IFNA" : "IFNA" , "_xlfn.IFERROR" : "IFERROR" , "_xlfn.IMCOSH" : "IMCOSH" , "_xlfn.IMCOT" : "IMCOT" , "_xlfn.IMCSC" : "IMCSC" , "_xlfn.IMCSCH" : "IMCSCH" , "_xlfn.IMSEC" : "IMSEC" , "_xlfn.IMSECH" : "IMSECH" , "_xlfn.IMSINH" : "IMSINH" , "_xlfn.IMTAN" : "IMTAN" , "_xlfn.ISFORMULA" : "ISFORMULA" , "_xlfn.ISO.CEILING" : "ISO.CEILING" , "_xlfn.ISOWEEKNUM" : "ISOWEEKNUM" , "_xlfn.LOGNORM.DIST" : "LOGNORM.DIST" , "_xlfn.LOGNORM.INV" : "LOGNORM.INV" , "_xlfn.MODE.MULT" : "MODE.MULT" , "_xlfn.MODE.SNGL" : "MODE.SNGL" , "_xlfn.MUNIT" : "MUNIT" , "_xlfn.NEGBINOM.DIST" : "NEGBINOM.DIST" , "_xlfn.NETWORKDAYS.INTL" : "NETWORKDAYS.INTL" , "_xlfn.NIGBINOM" : "NIGBINOM" , "_xlfn.NORM.DIST" : "NORM.DIST" , "_xlfn.NORM.INV" : "NORM.INV" , "_xlfn.NORM.S.DIST" : "NORM.S.DIST" , "_xlfn.NORM.S.INV" : "NORM.S.INV" , "_xlfn.NUMBERVALUE" : "NUMBERVALUE" , "_xlfn.PDURATION" : "PDURATION" , "_xlfn.PERCENTILE.EXC" : "PERCENTILE.EXC" , "_xlfn.PERCENTILE.INC" : "PERCENTILE.INC" , "_xlfn.PERCENTRANK.EXC" : "PERCENTRANK.EXC" , "_xlfn.PERCENTRANK.INC" : "PERCENTRANK.INC" , "_xlfn.PERMUTATIONA" : "PERMUTATIONA" , "_xlfn.PHI" : "PHI" , "_xlfn.POISSON.DIST" : "POISSON.DIST" , "_xlfn.QUARTILE.EXC" : "QUARTILE.EXC" , "_xlfn.QUARTILE.INC" : "QUARTILE.INC" , "_xlfn.QUERYSTRING" : "QUERYSTRING" , "_xlfn.RANK.AVG" : "RANK.AVG" , " _x
colinfo [ val . e -- ] = { width : val . w / 256 , hidden : ! ! ( val . flags & 1 ) } ; if ( ! seencol ) { seencol = true ; find _mdw _colw ( val . w / 256 ) } process _col ( colinfo [ val . e + 1 ] ) } break ; case 161 : s [ "!autofilter" ] = { ref : encode _range ( val ) } ; break ; case 476 : s [ "!margins" ] = val ; break ; case 175 : case 644 : case 625 : case 562 : case 396 : case 1112 : case 1146 : case 471 : case 1050 : case 649 : case 1105 : case 49 : case 589 : case 607 : case 564 : case 1055 : case 168 : case 174 : case 1180 : case 499 : case 64 : case 1053 : case 550 : case 171 : case 167 : case 1177 : case 169 : case 1181 : case 551 : case 552 : case 661 : case 639 : case 478 : case 151 : case 537 : case 477 : case 536 : case 1103 : case 680 : case 1104 : case 1024 : case 152 : case 663 : case 535 : case 678 : case 504 : case 1043 : case 428 : case 170 : case 50 : case 2070 : case 485 : case 1045 : case 147 : break ; case 35 : pass = true ; break ; case 36 : pass = false ; break ; case 37 : break ; case 38 : break ; default : if ( ( R _n || "" ) . indexOf ( "Begin" ) > 0 ) { } else if ( ( R _n || "" ) . indexOf ( "End" ) > 0 ) { } else if ( ! pass || opts . WTF ) throw new Error ( "Unexpected record " + RT + " " + R _n ) } } , opts ) ; delete opts . supbooks ; delete opts [ "!row" ] ; if ( ! s [ "!ref" ] && ( refguess . s . r < 2e6 || ref && ( ref . e . r > 0 || ref . e . c > 0 || ref . s . r > 0 || ref . s . c > 0 ) ) ) s [ "!ref" ] = encode _range ( ref || refguess ) ; if ( opts . sheetRows && s [ "!ref" ] ) { var tmpref = safe _decode _range ( s [ "!ref" ] ) ; if ( opts . sheetRows < + tmpref . e . r ) { tmpref . e . r = opts . sheetRows - 1 ; if ( tmpref . e . r > refguess . e . r ) tmpref . e . r = refguess . e . r ; if ( tmpref . e . r < tmpref . s . r ) tmpref . s . r = tmpref . e . r ; if ( tmpref . e . c > refguess . e . c ) tmpref . e . c = refguess . e . c ; if ( tmpref . e . c < tmpref . s . c ) tmpref . s . c = tmpref . e . c ; s [ "!fullref" ] = s [ "!ref" ] ; s [ "!ref" ] = encode _range ( tmpref ) } } if ( mergecells . length > 0 ) s [ "!merges" ] = mergecells ; if ( colinfo . length > 0 ) s [ "!cols" ] = colinfo ; if ( rowinfo . length > 0 ) s [ "!rows" ] = rowinfo ; return s } function write _ws _bin _cell ( ba , cell , R , C , opts , ws ) { if ( cell . v === undefined ) return "" ; var vv = "" ; var olddate = null ; switch ( cell . t ) { case "b" : vv = cell . v ? "1" : "0" ; break ; case "d" : cell . z = cell . z || SSF . _table [ 14 ] ; olddate = cell . v ; cell . v = datenum ( cell . v ) ; cell . t = "n" ; break ; case "n" : case "e" : vv = "" + cell . v ; break ; default : vv = cell . v ; break } var o = { r : R , c : C } ; o . s = get _cell _style ( opts . cellXfs , cell , opts ) ; if ( cell . l ) ws [ "!links" ] . push ( [ encode _cell ( o ) , cell . l ] ) ; if ( cell . c ) ws [ "!comments" ] . push ( [ encode _cell ( o ) , cell . c ] ) ; switch ( cell . t ) { case "s" : case "str" : if ( opts . bookSST ) { vv = get _sst _id ( opts . Strings , cell . v ) ; o . t = "s" ; o . v = vv ; write _record ( ba , "BrtCellIsst" , write _BrtCellIsst ( cell , o ) ) } else { o . t = "str" ; write _record ( ba , "BrtCellSt" , write _BrtCellSt ( cell , o ) ) } return ; case "n" : if ( cell . v == ( cell . v | 0 ) && cell . v > - 1e3 && cell . v < 1e3 ) write _record ( ba , "BrtCellRk" , write _BrtCellRk ( cell , o ) ) ; else write _record ( ba , "BrtCellReal" , write _BrtCellReal ( cell , o ) ) ; if ( olddate ) { cell . t = "d" ; cell . v = olddate } return ; case "b" : o . t = "b" ; write _record ( ba , "BrtCellBool" , write _BrtCellBool ( cell , o ) ) ; return ; case "e" : o . t = "e" ; break } write _record ( ba , "BrtCellBlank" , write _BrtCellBlank ( cell , o ) ) } function write _CELLTABLE ( ba , ws , idx , opts , wb ) { var range = safe _decode _range ( ws [ "!ref" ] || "A1" ) , ref , rr = "" , cols = [ ] ; write _record ( ba , "BrtBeginSheetData" ) ; var dense = Array . isArray ( ws ) ; for ( var R = range . s . r ; R <= range . e . r ; ++ R ) { rr = encode _row ( R ) ; write _row _header ( ba , ws , range , R ) ; for ( var C = range . s . c ; C <= range . e . c ; ++ C ) { if ( R === range . s . r ) cols [ C ] = encode _col ( C ) ; ref = cols [ C ] + rr ; var cell = dense ? ( ws [ R ] || [ ] ) [ C ] : ws [ ref ] ; if ( ! cell ) continue ; write _ws _bin _cell ( ba , cell , R , C , opts , ws ) } } write _record ( ba , "BrtEndSheetData" ) } function write _MERGECELLS ( ba , ws ) { if ( ! ws || ! ws [ "!merges" ] ) return ; write _record ( ba , "BrtBeginMergeCells" , write _BrtBeginMergeCells ( ws [ "!merges" ] . length ) ) ; ws [ "!merges" ] . forEach ( function ( m ) { write _record ( ba , "BrtMergeCell" , write _BrtMergeCell ( m ) ) } ) ; write _record ( ba , "BrtEndMergeCells" ) } function write _COLINFOS ( ba , ws , idx , opts , wb ) { if ( ! ws || ! ws [ "!cols" ] ) return ; write _record ( ba , "BrtBeginColInfos" ) ; ws [ "!cols" ] . forEach ( function ( m , i ) { if ( m ) write _record ( ba , "BrtColInfo" , write _BrtColInfo ( i , m ) ) } ) ; write _record ( ba , "BrtEndColInfos" ) } function write _HLINKS ( ba , ws , rels ) { ws [ "!links" ] . forEach ( function ( l ) { if ( ! l [ 1 ] . Target ) return ; var rId = add _rels ( rels , - 1 , l [ 1 ] . Target . replace ( /#.*$/ , "" ) , RELS . HLINK ) ; write _record ( ba , "BrtHLink" , write _BrtHLink ( l , rId ) ) } ) ; delete ws [ "!links" ] } function write _LEGACYDRAWING ( ba , ws , idx , rels ) { if ( ws [ "!comments" ] . length > 0 ) { var rId = add _rels ( rels , - 1 , "../drawings/vmlDrawing" + ( idx + 1 ) + ".vml" ,
case "DataValidation" : case "Sorting" : case "Schema" : case "data" : case "ConditionalFormatting" : case "SmartTagType" : case "SmartTags" : case "ExcelWorkbook" : case "WorkbookOptions" : case "WorksheetOptions" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw new Error ( "Bad state: " + tmp . join ( "|" ) ) } else if ( Rn [ 0 ] . charAt ( Rn [ 0 ] . length - 2 ) !== "/" ) state . push ( [ Rn [ 3 ] , true ] ) ; break ; default : if ( state . length == 0 && Rn [ 3 ] == "document" ) return parse _fods ( str , opts ) ; if ( state . length == 0 && Rn [ 3 ] == "UOF" ) return parse _fods ( str , opts ) ; var seen = true ; switch ( state [ state . length - 1 ] [ 0 ] ) { case "OfficeDocumentSettings" : switch ( Rn [ 3 ] ) { case "AllowPNG" : break ; case "RemovePersonalInformation" : break ; case "DownloadComponents" : break ; case "LocationOfComponents" : break ; case "Colors" : break ; case "Color" : break ; case "Index" : break ; case "RGB" : break ; case "PixelsPerInch" : break ; case "TargetScreenSize" : break ; case "ReadOnlyRecommended" : break ; default : seen = false } break ; case "ComponentOptions" : switch ( Rn [ 3 ] ) { case "Toolbar" : break ; case "HideOfficeLogo" : break ; case "SpreadsheetAutoFit" : break ; case "Label" : break ; case "Caption" : break ; case "MaxHeight" : break ; case "MaxWidth" : break ; case "NextSheetNumber" : break ; default : seen = false } break ; case "ExcelWorkbook" : switch ( Rn [ 3 ] ) { case "WindowHeight" : break ; case "WindowWidth" : break ; case "WindowTopX" : break ; case "WindowTopY" : break ; case "TabRatio" : break ; case "ProtectStructure" : break ; case "ProtectWindows" : break ; case "ActiveSheet" : break ; case "DisplayInkNotes" : break ; case "FirstVisibleSheet" : break ; case "SupBook" : break ; case "SheetName" : break ; case "SheetIndex" : break ; case "SheetIndexFirst" : break ; case "SheetIndexLast" : break ; case "Dll" : break ; case "AcceptLabelsInFormulas" : break ; case "DoNotSaveLinkValues" : break ; case "Date1904" : break ; case "Iteration" : break ; case "MaxIterations" : break ; case "MaxChange" : break ; case "Path" : break ; case "Xct" : break ; case "Count" : break ; case "SelectedSheets" : break ; case "Calculation" : break ; case "Uncalced" : break ; case "StartupPrompt" : break ; case "Crn" : break ; case "ExternName" : break ; case "Formula" : break ; case "ColFirst" : break ; case "ColLast" : break ; case "WantAdvise" : break ; case "Boolean" : break ; case "Error" : break ; case "Text" : break ; case "OLE" : break ; case "NoAutoRecover" : break ; case "PublishObjects" : break ; case "DoNotCalculateBeforeSave" : break ; case "Number" : break ; case "RefModeR1C1" : break ; case "EmbedSaveSmartTags" : break ; default : seen = false } break ; case "WorkbookOptions" : switch ( Rn [ 3 ] ) { case "OWCVersion" : break ; case "Height" : break ; case "Width" : break ; default : seen = false } break ; case "WorksheetOptions" : switch ( Rn [ 3 ] ) { case "Visible" : if ( Rn [ 0 ] . slice ( - 2 ) === "/>" ) { } else if ( Rn [ 1 ] === "/" ) switch ( str . slice ( pidx , Rn . index ) ) { case "SheetHidden" : wsprops . Hidden = 1 ; break ; case "SheetVeryHidden" : wsprops . Hidden = 2 ; break } else pidx = Rn . index + Rn [ 0 ] . length ; break ; case "Header" : if ( ! cursheet [ "!margins" ] ) default _margins ( cursheet [ "!margins" ] = { } , "xlml" ) ; cursheet [ "!margins" ] . header = parsexmltag ( Rn [ 0 ] ) . Margin ; break ; case "Footer" : if ( ! cursheet [ "!margins" ] ) default _margins ( cursheet [ "!margins" ] = { } , "xlml" ) ; cursheet [ "!margins" ] . footer = parsexmltag ( Rn [ 0 ] ) . Margin ; break ; case "PageMargins" : var pagemargins = parsexmltag ( Rn [ 0 ] ) ; if ( ! cursheet [ "!margins" ] ) default _margins ( cursheet [ "!margins" ] = { } , "xlml" ) ; if ( pagemargins . Top ) cursheet [ "!margins" ] . top = pagemargins . Top ; if ( pagemargins . Left ) cursheet [ "!margins" ] . left = pagemargins . Left ; if ( pagemargins . Right ) cursheet [ "!margins" ] . right = pagemargins . Right ; if ( pagemargins . Bottom ) cursheet [ "!margins" ] . bottom = pagemargins . Bottom ; break ; case "Unsynced" : break ; case "Print" : break ; case "Panes" : break ; case "Scale" : break ; case "Pane" : break ; case "Number" : break ; case "Layout" : break ; case "PageSetup" : break ; case "Selected" : break ; case "ProtectObjects" : break ; case "EnableSelection" : break ; case "ProtectScenarios" : break ; case "ValidPrinterInfo" : break ; case "HorizontalResolution" : break ; case "VerticalResolution" : break ; case "NumberofCopies" : break ; case "ActiveRow" : break ; case "ActiveCol" : break ; case "ActivePane" : break ; case "TopRowVisible" : break ; case "TopRowBottomPane" : break ; case "LeftColumnVisible" : break ; case "LeftColumnRightPane" : break ; case "FitToPage" : break ; case "RangeSelection" : break ; case "PaperSizeIndex" : break ; case "PageLayoutZoom" : break ; case "PageBreakZoom" : break ; case "FilterOn" : break ; case "DoNotDisplayGridlines" : break ; case "SplitHorizontal" : break ; case " SplitVerti
case "EndBlock" : case "Frame" : case "Area" : case "Axis" : case "AxisLine" : case "Tick" : break ; case "AxesUsed" : case "CrtLayout12" : case "CrtLayout12A" : case "CrtLink" : case "CrtLine" : case "CrtMlFrt" : case "CrtMlFrtContinue" : break ; case "LineFormat" : case "AreaFormat" : case "Chart" : case "Chart3d" : case "Chart3DBarShape" : case "ChartFormat" : case "ChartFrtInfo" : break ; case "PlotArea" : case "PlotGrowth" : break ; case "SeriesList" : case "SerParent" : case "SerAuxTrend" : break ; case "DataFormat" : case "SerToCrt" : case "FontX" : break ; case "CatSerRange" : case "AxcExt" : case "SerFmt" : break ; case "ShtProps" : break ; case "DefaultText" : case "Text" : case "CatLab" : break ; case "DataLabExtContents" : break ; case "Legend" : case "LegendException" : break ; case "Pie" : case "Scatter" : break ; case "PieFormat" : case "MarkerFormat" : break ; case "StartObject" : case "EndObject" : break ; case "AlRuns" : case "ObjectLink" : break ; case "SIIndex" : break ; case "AttachedLabel" : case "YMult" : break ; case "Line" : case "Bar" : break ; case "Surf" : break ; case "AxisParent" : break ; case "Pos" : break ; case "ValueRange" : break ; case "SXViewEx9" : break ; case "SXViewLink" : break ; case "PivotChartBits" : break ; case "SBaseRef" : break ; case "TextPropsStream" : break ; case "LnExt" : break ; case "MkrExt" : break ; case "CrtCoopt" : break ; case "Qsi" : case "Qsif" : case "Qsir" : case "QsiSXTag" : break ; case "TxtQry" : break ; case "FilterMode" : break ; case "AutoFilter" : case "AutoFilterInfo" : break ; case "AutoFilter12" : break ; case "DropDownObjIds" : break ; case "Sort" : break ; case "SortData" : break ; case "ShapePropsStream" : break ; case "MsoDrawing" : case "MsoDrawingGroup" : case "MsoDrawingSelection" : break ; case "WebPub" : case "AutoWebPub" : break ; case "HeaderFooter" : case "HFPicture" : case "PLV" : case "HorizontalPageBreaks" : case "VerticalPageBreaks" : break ; case "Backup" : case "CompressPictures" : case "Compat12" : break ; case "Continue" : case "ContinueFrt12" : break ; case "FrtFontList" : case "FrtWrapper" : break ; default : switch ( R . n ) { case "ExternCount" : break ; case "TabIdConf" : case "Radar" : case "RadarArea" : case "DropBar" : case "Intl" : case "CoordList" : case "SerAuxErrBar" : break ; case "BIFF2FONTCLR" : case "BIFF2FMTCNT" : case "BIFF2FONTXTRA" : break ; case "BIFF2XF" : case "BIFF3XF" : case "BIFF4XF" : break ; case "BIFF4FMTCNT" : case "BIFF2ROW" : case "BIFF2WINDOW2" : break ; case "SCENARIO" : case "DConBin" : case "PicF" : case "DataLabExt" : case "Lel" : case "BopPop" : case "BopPopCustom" : case "RealTimeData" : case "Name" : break ; default : if ( options . WTF ) throw "Unrecognized Record " + R . n } } } } } else blob . l += length } var sheetnamesraw = Object . keys ( Directory ) . sort ( function ( a , b ) { return Number ( a ) - Number ( b ) } ) . map ( function ( x ) { return Directory [ x ] . name } ) ; var sheetnames = sheetnamesraw . slice ( ) ; wb . Directory = sheetnamesraw ; wb . SheetNames = sheetnamesraw ; if ( ! options . bookSheets ) wb . Sheets = Sheets ; if ( wb . Sheets ) FilterDatabases . forEach ( function ( r , i ) { wb . Sheets [ wb . SheetNames [ i ] ] [ "!autofilter" ] = r } ) ; wb . Preamble = Preamble ; wb . Strings = sst ; wb . SSF = SSF . get _table ( ) ; if ( opts . enc ) wb . Encryption = opts . enc ; wb . Metadata = { } ; if ( country !== undefined ) wb . Metadata . Country = country ; if ( supbooks . names . length > 0 ) Workbook . Names = supbooks . names ; wb . Workbook = Workbook ; return wb } function parse _props ( cfb ) { var DSI = cfb . find ( "!DocumentSummaryInformation" ) ; if ( DSI ) try { cfb . DocSummary = parse _PropertySetStream ( DSI , DocSummaryPIDDSI ) } catch ( e ) { } var SI = cfb . find ( "!SummaryInformation" ) ; if ( SI ) try { cfb . Summary = parse _PropertySetStream ( SI , SummaryPIDSI ) } catch ( e ) { } } function parse _xlscfb ( cfb , options ) { if ( ! options ) options = { } ; fix _read _opts ( options ) ; reset _cp ( ) ; var CompObj , Summary , Workbook ; if ( cfb . FullPaths ) { CompObj = cfb . find ( "!CompObj" ) ; Summary = cfb . find ( "!SummaryInformation" ) ; Workbook = cfb . find ( "/Workbook" ) } else { prep _blob ( cfb , 0 ) ; Workbook = { content : cfb } } if ( ! Workbook ) Workbook = cfb . find ( "/Book" ) ; var CompObjP , SummaryP , WorkbookP ; if ( CompObj ) CompObjP = parse _compobj ( CompObj ) ; if ( options . bookProps && ! options . bookSheets ) WorkbookP = { } ; else { if ( Workbook ) WorkbookP = parse _workbook ( Workbook . content , options , ! ! Workbook . find ) ; else if ( cfb . find ( "PerfectOffice_MAIN" ) ) WorkbookP = WK _ . to _workbook ( cfb . find ( "PerfectOffice_MAIN" ) . content , options ) ; else if ( cfb . find ( "NativeContent_MAIN" ) ) WorkbookP = WK _ . to _workbook ( cfb . find ( "NativeContent_MAIN" ) . content , options ) ; else throw new Error ( "Cannot find Workbook stream" ) } if ( cfb . FullPaths ) parse _props ( cfb ) ; var props = { } ; for ( var y in cfb . Summary ) props [ y ] = cfb . Summary [ y ] ; for (
n : "BrtBeginColorScale14" , f : parsenoop } , 1158 : { n : "BrtEndColorScale14" , f : parsenoop } , 1159 : { n : "BrtBeginSxrules14" , f : parsenoop } , 1160 : { n : "BrtEndSxrules14" , f : parsenoop } , 1161 : { n : "BrtBeginPRule14" , f : parsenoop } , 1162 : { n : "BrtEndPRule14" , f : parsenoop } , 1163 : { n : "BrtBeginPRFilters14" , f : parsenoop } , 1164 : { n : "BrtEndPRFilters14" , f : parsenoop } , 1165 : { n : "BrtBeginPRFilter14" , f : parsenoop } , 1166 : { n : "BrtEndPRFilter14" , f : parsenoop } , 1167 : { n : "BrtBeginPRFItem14" , f : parsenoop } , 1168 : { n : "BrtEndPRFItem14" , f : parsenoop } , 1169 : { n : "BrtBeginCellIgnoreECs14" , f : parsenoop } , 1170 : { n : "BrtEndCellIgnoreECs14" , f : parsenoop } , 1171 : { n : "BrtDxf14" , f : parsenoop } , 1172 : { n : "BrtBeginDxF14s" , f : parsenoop } , 1173 : { n : "BrtEndDxf14s" , f : parsenoop } , 1177 : { n : "BrtFilter14" , f : parsenoop } , 1178 : { n : "BrtBeginCustomFilters14" , f : parsenoop } , 1180 : { n : "BrtCustomFilter14" , f : parsenoop } , 1181 : { n : "BrtIconFilter14" , f : parsenoop } , 1182 : { n : "BrtPivotCacheConnectionName" , f : parsenoop } , 2048 : { n : "BrtBeginDecoupledPivotCacheIDs" , f : parsenoop } , 2049 : { n : "BrtEndDecoupledPivotCacheIDs" , f : parsenoop } , 2050 : { n : "BrtDecoupledPivotCacheID" , f : parsenoop } , 2051 : { n : "BrtBeginPivotTableRefs" , f : parsenoop } , 2052 : { n : "BrtEndPivotTableRefs" , f : parsenoop } , 2053 : { n : "BrtPivotTableRef" , f : parsenoop } , 2054 : { n : "BrtSlicerCacheBookPivotTables" , f : parsenoop } , 2055 : { n : "BrtBeginSxvcells" , f : parsenoop } , 2056 : { n : "BrtEndSxvcells" , f : parsenoop } , 2057 : { n : "BrtBeginSxRow" , f : parsenoop } , 2058 : { n : "BrtEndSxRow" , f : parsenoop } , 2060 : { n : "BrtPcdCalcMem15" , f : parsenoop } , 2067 : { n : "BrtQsi15" , f : parsenoop } , 2068 : { n : "BrtBeginWebExtensions" , f : parsenoop } , 2069 : { n : "BrtEndWebExtensions" , f : parsenoop } , 2070 : { n : "BrtWebExtension" , f : parsenoop } , 2071 : { n : "BrtAbsPath15" , f : parsenoop } , 2072 : { n : "BrtBeginPivotTableUISettings" , f : parsenoop } , 2073 : { n : "BrtEndPivotTableUISettings" , f : parsenoop } , 2075 : { n : "BrtTableSlicerCacheIDs" , f : parsenoop } , 2076 : { n : "BrtTableSlicerCacheID" , f : parsenoop } , 2077 : { n : "BrtBeginTableSlicerCache" , f : parsenoop } , 2078 : { n : "BrtEndTableSlicerCache" , f : parsenoop } , 2079 : { n : "BrtSxFilter15" , f : parsenoop } , 2080 : { n : "BrtBeginTimelineCachePivotCacheIDs" , f : parsenoop } , 2081 : { n : "BrtEndTimelineCachePivotCacheIDs" , f : parsenoop } , 2082 : { n : "BrtTimelineCachePivotCacheID" , f : parsenoop } , 2083 : { n : "BrtBeginTimelineCacheIDs" , f : parsenoop } , 2084 : { n : "BrtEndTimelineCacheIDs" , f : parsenoop } , 2085 : { n : "BrtBeginTimelineCacheID" , f : parsenoop } , 2086 : { n : "BrtEndTimelineCacheID" , f : parsenoop } , 2087 : { n : "BrtBeginTimelinesEx" , f : parsenoop } , 2088 : { n : "BrtEndTimelinesEx" , f : parsenoop } , 2089 : { n : "BrtBeginTimelineEx" , f : parsenoop } , 2090 : { n : "BrtEndTimelineEx" , f : parsenoop } , 2091 : { n : "BrtWorkBookPr15" , f : parsenoop } , 2092 : { n : "BrtPCDH15" , f : parsenoop } , 2093 : { n : "BrtBeginTimelineStyle" , f : parsenoop } , 2094 : { n : "BrtEndTimelineStyle" , f : parsenoop } , 2095 : { n : "BrtTimelineStyleElement" , f : parsenoop } , 2096 : { n : "BrtBeginTimelineStylesheetExt15" , f : parsenoop } , 2097 : { n : "BrtEndTimelineStylesheetExt15" , f : parsenoop } , 2098 : { n : "BrtBeginTimelineStyles" , f : parsenoop } , 2099 : { n : "BrtEndTimelineStyles" , f : parsenoop } , 2100 : { n : "BrtBeginTimelineStyleElements" , f : parsenoop } , 2101 : { n : "BrtEndTimelineStyleElements" , f : parsenoop } , 2102 : { n : "BrtDxf15" , f : parsenoop } , 2103 : { n : "BrtBeginDxfs15" , f : parsenoop } , 2104 : { n : "brtEndDxfs15" , f : parsenoop } , 2105 : { n : "BrtSlicerCacheHideItemsWithNoData" , f : parsenoop } , 2106 : { n : "BrtBeginItemUniqueNames" , f : parsenoop } , 2107 : { n : "BrtEndItemUniqueNames" , f : parsenoop } , 2108 : { n : "BrtItemUniqueName" , f : parsenoop } , 2109 : { n : "BrtBeginExtConn15" , f : parsenoop } , 2110 : { n : "BrtEndExtConn15" , f : parsenoop } , 2111 : { n : "BrtBeginOledbPr15" , f : parsenoop } , 2112 : { n : "BrtEndOledbPr15" , f : parsenoop } , 2113 : { n : "BrtBeginDataFeedPr15" , f : parsenoop } , 2114 : { n : "BrtEndDataFeedPr15" , f : parsenoop } , 2115 : { n : "BrtTextPr15" , f : parsenoop } , 2116 : { n : "BrtRangePr15" , f : parsenoop } , 2117 : { n : "BrtDbCommand15" , f : parsenoop } , 2118 : { n : "BrtBeginDbTables15" , f : parsenoop } , 2119 : { n : "BrtEndDbTables15" , f : parsenoop } , 2120 : { n : "BrtDbTable15" , f : parsenoop } , 2121 : { n : "BrtBeginDataModel" , f : parsenoop } , 2122 : { n : "BrtEndDataModel" , f : parsenoop } , 2123 : { n : "BrtBeginModelTables" , f : parsenoop } , 2124 : { n : "BrtEndModelTables" , f : parsenoop } , 2125 : { n : "BrtModelTable" , f : parsenoop } , 2126 : { n : "BrtBeginModelRelationships" , f : parsenoop } , 2127 : { n : "BrtEndModelRelationships" , f : parsenoop } , 2128 : { n : "BrtModelRelationship" , f : parsenoop } , 2129 : { n : " BrtBeginE
case "graphic-properties" : break ; case "calculation-settings" : break ; case "named-expressions" : break ; case "named-range" : break ; case "named-expression" : break ; case "sort" : break ; case "sort-by" : break ; case "sort-groups" : break ; case "span" : break ; case "line-break" : break ; case "p" : case "文本串" : if ( Rn [ 1 ] === "/" ) textp = ( textp . length > 0 ? textp + "\n" : "" ) + parse _text _p ( str . slice ( textpidx , Rn . index ) , textptag ) ; else { textptag = parsexmltag ( Rn [ 0 ] , false ) ; textpidx = Rn . index + Rn [ 0 ] . length } break ; case "database-range" : if ( Rn [ 1 ] === "/" ) break ; try { var AutoFilter = ods _to _csf _range _3D ( parsexmltag ( Rn [ 0 ] ) [ "target-range-address" ] ) ; Sheets [ AutoFilter [ 0 ] ] [ "!autofilter" ] = { ref : AutoFilter [ 1 ] } } catch ( e ) { } break ; case "s" : break ; case "date" : break ; case "object" : break ; case "title" : case "标题" : break ; case "desc" : break ; case "table-source" : break ; case "iteration" : break ; case "content-validations" : break ; case "content-validation" : break ; case "error-message" : break ; case "database-ranges" : break ; case "filter" : break ; case "filter-and" : break ; case "filter-or" : break ; case "filter-condition" : break ; case "list-level-style-bullet" : break ; case "list-level-style-number" : break ; case "list-level-properties" : break ; case "sender-firstname" : case "sender-lastname" : case "sender-initials" : case "sender-title" : case "sender-position" : case "sender-email" : case "sender-phone-private" : case "sender-fax" : case "sender-company" : case "sender-phone-work" : case "sender-street" : case "sender-city" : case "sender-postal-code" : case "sender-country" : case "sender-state-or-province" : case "author-name" : case "author-initials" : case "chapter" : case "file-name" : case "template-name" : case "sheet-name" : break ; case "event-listener" : break ; case "initial-creator" : case "creation-date" : case "generator" : case "document-statistic" : case "user-defined" : break ; case "config-item" : break ; case "page-number" : break ; case "page-count" : break ; case "time" : break ; case "data-pilot-table" : case "source-cell-range" : case "source-service" : case "data-pilot-field" : case "data-pilot-level" : case "data-pilot-subtotals" : case "data-pilot-subtotal" : case "data-pilot-members" : case "data-pilot-member" : case "data-pilot-display-info" : case "data-pilot-sort-info" : case "data-pilot-layout-info" : case "data-pilot-field-reference" : case "data-pilot-groups" : case "data-pilot-group" : case "data-pilot-group-member" : break ; case "rect" : break ; case "dde-connection-decls" : case "dde-connection-decl" : case "dde-link" : case "dde-source" : break ; case "properties" : break ; case "property" : break ; case "a" : break ; case "table-protection" : break ; case "data-pilot-grand-total" : break ; default : if ( Rn [ 2 ] === "dc:" ) break ; if ( Rn [ 2 ] === "draw:" ) break ; if ( Rn [ 2 ] === "style:" ) break ; if ( Rn [ 2 ] === "calcext:" ) break ; if ( Rn [ 2 ] === "loext:" ) break ; if ( Rn [ 2 ] === "uof:" ) break ; if ( Rn [ 2 ] === "表:" ) break ; if ( Rn [ 2 ] === "字:" ) break ; if ( opts . WTF ) throw new Error ( Rn ) } var out = { Sheets : Sheets , SheetNames : SheetNames } ; return out } } ( ) ; function parse _ods ( zip , opts ) { opts = opts || { } ; var ods = ! ! safegetzipfile ( zip , "objectdata" ) ; if ( ods ) var manifest = parse _manifest ( getzipdata ( zip , "META-INF/manifest.xml" ) , opts ) ; var content = getzipstr ( zip , "content.xml" ) ; if ( ! content ) throw new Error ( "Missing content.xml in " + ( ods ? "ODS" : "UOF" ) + " file" ) ; return parse _content _xml ( ods ? content : utf8read ( content ) , opts ) } function parse _fods ( data , opts ) { return parse _content _xml ( data , opts ) } var write _styles _ods = function ( ) { var payload = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><office:document-styles xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" office:version="1.2"></office:document-styles>' ; return function wso ( wb , opts ) { return payload } } ( ) ; var write _content _ods = function ( ) { var null _cell _xml = " < table : t
utils . consts [ a [ 0 ] ] = a [ 1 ] } ) } function get _default ( x , y , z ) { return x [ y ] != null ? x [ y ] : x [ y ] = z } function ws _get _cell _stub ( ws , R , C ) { if ( typeof R == "string" ) return ws [ R ] || ( ws [ R ] = { t : "z" } ) ; if ( typeof R != "number" ) return ws _get _cell _stub ( ws , encode _cell ( R ) ) ; return ws _get _cell _stub ( ws , encode _cell ( { r : R , c : C } ) ) } function wb _sheet _idx ( wb , sh ) { if ( typeof sh == "number" ) { if ( sh >= 0 && wb . SheetNames . length > sh ) return sh ; throw new Error ( "Cannot find sheet # " + sh ) } else if ( typeof sh == "string" ) { var idx = wb . SheetNames . indexOf ( sh ) ; if ( idx > - 1 ) return idx ; throw new Error ( "Cannot find sheet name |" + sh + "|" ) } else throw new Error ( "Cannot find sheet |" + sh + "|" ) } utils . book _new = function ( ) { return { SheetNames : [ ] , Sheets : { } } } ; utils . book _append _sheet = function ( wb , ws , name ) { if ( ! name ) for ( var i = 1 ; i <= 65535 ; ++ i ) if ( wb . SheetNames . indexOf ( "Sheet" + i ) == - 1 ) break ; check _ws _name ( name ) ; if ( wb . SheetNames . indexOf ( name ) >= 0 ) throw new Error ( "Worksheet with name |" + name + "| already exists!" ) ; wb . SheetNames . push ( name ) ; wb . Sheets [ name ] = ws } ; utils . book _set _sheet _visibility = function ( wb , sh , vis ) { get _default ( wb , "Workbook" , { } ) ; get _default ( wb . Workbook , "Sheets" , [ ] ) ; var idx = wb _sheet _idx ( wb , sh ) ; get _default ( wb . Workbook . Sheets , idx , { } ) ; switch ( vis ) { case 0 : case 1 : case 2 : break ; default : throw new Error ( "Bad sheet visibility setting " + vis ) } wb . Workbook . Sheets [ idx ] . Hidden = vis } ; add _consts ( [ [ "SHEET_VISIBLE" , 0 ] , [ "SHEET_HIDDEN" , 1 ] , [ "SHEET_VERY_HIDDEN" , 2 ] ] ) ; utils . cell _set _number _format = function ( cell , fmt ) { cell . z = fmt ; return cell } ; utils . cell _set _hyperlink = function ( cell , target , tooltip ) { if ( ! target ) { delete cell . l } else { cell . l = { Target : target } ; if ( tooltip ) cell . l . Tooltip = tooltip } return cell } ; utils . cell _add _comment = function ( cell , text , author ) { if ( ! cell . c ) cell . c = [ ] ; cell . c . push ( { t : text , a : author || "SheetJS" } ) } ; utils . sheet _set _array _formula = function ( ws , range , formula ) { var rng = typeof range != "string" ? range : safe _decode _range ( range ) ; var rngstr = typeof range == "string" ? range : encode _range ( range ) ; for ( var R = rng . s . r ; R <= rng . e . r ; ++ R ) for ( var C = rng . s . c ; C <= rng . e . c ; ++ C ) { var cell = ws _get _cell _stub ( ws , R , C ) ; cell . t = "n" ; cell . F = rngstr ; delete cell . v ; if ( R == rng . s . r && C == rng . s . c ) cell . f = formula } return ws } ; return utils } ) ( utils ) ; if ( has _buf && typeof require != "undefined" ) ( function ( ) { var Readable = require ( "stream" ) . Readable ; var write _csv _stream = function ( sheet , opts ) { var stream = Readable ( ) ; var out = "" ; var o = opts == null ? { } : opts ; if ( sheet == null || sheet [ "!ref" ] == null ) { stream . push ( null ) ; return stream } var r = safe _decode _range ( sheet [ "!ref" ] ) ; var FS = o . FS !== undefined ? o . FS : "," , fs = FS . charCodeAt ( 0 ) ; var RS = o . RS !== undefined ? o . RS : "\n" , rs = RS . charCodeAt ( 0 ) ; var endregex = new RegExp ( ( FS == "|" ? "\\|" : FS ) + "+$" ) ; var row = "" , cols = [ ] ; o . dense = Array . isArray ( sheet ) ; for ( var C = r . s . c ; C <= r . e . c ; ++ C ) cols [ C ] = encode _col ( C ) ; var R = r . s . r ; stream . _read = function ( ) { if ( R > r . e . r ) return stream . push ( null ) ; while ( R <= r . e . r ) { row = make _csv _row ( sheet , r , R , cols , fs , rs , FS , o ) ; if ( row == null ) { ++ R ; continue } if ( o . strip ) row = row . replace ( endregex , "" ) ; stream . push ( row + RS ) ; ++ R ; break } } ; return stream } ; var HTML _BEGIN = "<html><body><table>" ; var HTML _END = "</table></body></html>" ; var write _html _stream = function ( sheet , opts ) { var stream = Readable ( ) ; var o = [ ] ; var r = decode _range ( sheet [ "!ref" ] ) , cell ; o . dense = Array . isArray ( sheet ) ; stream . push ( HTML _BEGIN ) ; var R = r . s . r ; var end = false ; stream . _read = function ( ) { if ( R > r . e . r ) { if ( ! end ) { end = true ; stream . push ( HTML _END ) } return stream . push ( null ) } while ( R <= r . e . r ) { stream . push ( HTML _ . _row ( sheet , r , R , o ) ) ; ++ R ; break } } ; return stream } ; XLSX . stream = { to _html : write _html _stream , to _csv : write _csv _stream } } ) ( ) ; XLSX . parse _xlscfb = parse _xlscfb ; XLSX . parse _ods = parse _ods ; XLSX . parse _fods = parse _fods ; XLSX . write _ods = write _ods ; XLSX . parse _zip = parse _zip ; XLSX . read = readSync ; XLSX . readFile = readFileSync ; XLSX . readFileSync = readFileSync ; XLSX . write = writeSync ; XLSX . writeFile = writeFileSync ; XLSX . writeFileSync = writeFileSync ; XLSX . writeFileAsync = writeFileAsync ; XLSX . utils = utils ; XLSX . CFB = CFB ; XLSX . SSF = SSF } ) ( typeof exports !== "undefined" ? exports : XLSX ) ; var XLS = XLSX ; var ODS = XLSX ;