diff --git a/Makefile b/Makefile index babd44f..9c0e702 100644 --- a/Makefile +++ b/Makefile @@ -73,18 +73,24 @@ DISTHDR=misc/suppress_export.js .PHONY: dist dist: dist-deps $(TARGET) bower.json ## Prepare JS files for distribution mkdir -p dist - <$(TARGET) sed "s/require('....*')/undefined/g" > dist/$(TARGET) cp LICENSE dist/ uglifyjs shim.js $(UGLIFYOPTS) -o dist/shim.min.js --preamble "$$(head -n 1 bits/00_header.js)" - uglifyjs $(DISTHDR) dist/$(TARGET) $(UGLIFYOPTS) -o dist/$(LIB).min.js --source-map dist/$(LIB).min.map --preamble "$$(head -n 1 bits/00_header.js)" - misc/strip_sourcemap.sh dist/$(LIB).min.js - uglifyjs $(DISTHDR) $(REQS) dist/$(TARGET) $(UGLIFYOPTS) -o dist/$(LIB).core.min.js --source-map dist/$(LIB).core.min.map --preamble "$$(head -n 1 bits/00_header.js)" + @# + <$(TARGET) sed "s/require('.*')/undefined/g;s/ process / undefined /g;s/process.versions/({})/g" > dist/$(TARGET) + <$(MINITGT) sed "s/require('.*')/undefined/g;s/ process / undefined /g;s/process.versions/({})/g" > dist/$(MINITGT) + @# core + uglifyjs $(REQS) dist/$(TARGET) $(UGLIFYOPTS) -o dist/$(LIB).core.min.js --source-map dist/$(LIB).core.min.map --preamble "$$(head -n 1 bits/00_header.js)" misc/strip_sourcemap.sh dist/$(LIB).core.min.js + @# full uglifyjs $(DISTHDR) $(REQS) $(ADDONS) dist/$(TARGET) $(AUXTARGETS) $(UGLIFYOPTS) -o dist/$(LIB).full.min.js --source-map dist/$(LIB).full.min.map --preamble "$$(head -n 1 bits/00_header.js)" - uglifyjs $(DISTHDR) $(MINITGT) $(UGLIFYOPTS) -o dist/$(LIB).mini.min.js --source-map dist/$(LIB).mini.min.map --preamble "$$(head -n 1 bits/00_header.js)" misc/strip_sourcemap.sh dist/$(LIB).full.min.js + @# mini + uglifyjs dist/$(MINITGT) $(UGLIFYOPTS) -o dist/$(LIB).mini.min.js --source-map dist/$(LIB).mini.min.map --preamble "$$(head -n 1 bits/00_header.js)" misc/strip_sourcemap.sh dist/$(LIB).mini.min.js + @# extendscript cat <(head -n 1 bits/00_header.js) shim.js $(DISTHDR) $(REQS) dist/$(TARGET) > dist/$(LIB).extendscript.js + @# + rm dist/$(TARGET) dist/$(MINITGT) .PHONY: dist-deps dist-deps: ## Copy dependencies for distribution @@ -94,10 +100,12 @@ dist-deps: ## Copy dependencies for distribution .PHONY: aux aux: $(AUXTARGETS) -BYTEFILE=dist/xlsx.min.js dist/xlsx.{core,full,mini}.min.js dist/xlsx.extendscript.js +BYTEFILEC=dist/xlsx.{full,core,mini}.min.js +BYTEFILER=dist/xlsx.extendscript.js .PHONY: bytes bytes: ## Display minified and gzipped file sizes - for i in $(BYTEFILE); do printj "%-30s %7d %10d" $$i $$(wc -c < $$i) $$(gzip --best --stdout $$i | wc -c); done + @for i in $(BYTEFILEC); do printj "%-30s %7d %10d" $$i $$(wc -c < $$i) $$(gzip --best --stdout $$i | wc -c); done + @for i in $(BYTEFILER); do printj "%-30s %7d" $$i $$(wc -c < $$i); done .PHONY: graph graph: formats.png legend.png ## Rebuild format conversion graph diff --git a/bits/26_crypto.js b/bits/26_crypto.js deleted file mode 100644 index d989434..0000000 --- a/bits/26_crypto.js +++ /dev/null @@ -1,38 +0,0 @@ -var OFFCRYPTO = {}; - -var make_offcrypto = function(O, _crypto) { - var crypto; - if(typeof _crypto !== 'undefined') crypto = _crypto; - else if(typeof require !== 'undefined') { - try { crypto = require('crypto'); } - catch(e) { crypto = null; } - } - - O.rc4 = function(key, data) { - var S = new Array(256); - var c = 0, i = 0, j = 0, t = 0; - for(i = 0; i != 256; ++i) S[i] = i; - for(i = 0; i != 256; ++i) { - j = (j + S[i] + (key[i%key.length]).charCodeAt(0))&255; - t = S[i]; S[i] = S[j]; S[j] = t; - } - // $FlowIgnore - i = j = 0; var out = new_raw_buf(data.length); - for(c = 0; c != data.length; ++c) { - i = (i + 1)&255; - j = (j + S[i])%256; - t = S[i]; S[i] = S[j]; S[j] = t; - out[c] = (data[c] ^ S[(S[i]+S[j])&255]); - } - return out; - }; - - O.md5 = function(hex) { - if(!crypto) throw new Error("Unsupported crypto"); - return crypto.createHash('md5').update(hex).digest('hex'); - }; -}; -/*:: declare var crypto:any; */ -/*global crypto:true */ -make_offcrypto(OFFCRYPTO, typeof crypto !== "undefined" ? crypto : undefined); - diff --git a/bits/87_read.js b/bits/87_read.js index 6846996..5bd2d4c 100644 --- a/bits/87_read.js +++ b/bits/87_read.js @@ -43,6 +43,7 @@ function read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ { default: throw new Error("Unrecognized type " + o.type); } if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str); + o.type = "binary"; return read_plaintext(str, o); } diff --git a/dist/xlsx.full.min.js.zip b/dist/xlsx.full.min.js.zip deleted file mode 100644 index 8a52784..0000000 Binary files a/dist/xlsx.full.min.js.zip and /dev/null differ diff --git a/dist/xlsx.js b/dist/xlsx.js deleted file mode 100644 index b2593b0..0000000 --- a/dist/xlsx.js +++ /dev/null @@ -1,23847 +0,0 @@ -/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ -/* vim: set ts=2: */ -/*exported XLSX */ -/*global global, exports, module, require:false, process:false, Buffer:false, ArrayBuffer:false */ -var XLSX = {}; -function make_xlsx_lib(XLSX){ -XLSX.version = '0.18.2'; -var current_codepage = 1200, current_ansi = 1252; -/*global cptable:true, window */ -if(typeof module !== "undefined" && typeof require !== 'undefined') { - if(typeof cptable === 'undefined') { - if(typeof global !== 'undefined') global.cptable = undefined; - else if(typeof window !== 'undefined') window.cptable = undefined; - } -} - -var VALID_ANSI = [ 874, 932, 936, 949, 950, 10000 ]; -for(var i = 0; i <= 8; ++i) VALID_ANSI.push(1250 + i); -/* ECMA-376 Part I 18.4.1 charset to codepage mapping */ -var CS2CP = ({ -0: 1252, /* ANSI */ -1: 65001, /* DEFAULT */ -2: 65001, /* SYMBOL */ -77: 10000, /* MAC */ -128: 932, /* SHIFTJIS */ -129: 949, /* HANGUL */ -130: 1361, /* JOHAB */ -134: 936, /* GB2312 */ -136: 950, /* CHINESEBIG5 */ -161: 1253, /* GREEK */ -162: 1254, /* TURKISH */ -163: 1258, /* VIETNAMESE */ -177: 1255, /* HEBREW */ -178: 1256, /* ARABIC */ -186: 1257, /* BALTIC */ -204: 1251, /* RUSSIAN */ -222: 874, /* THAI */ -238: 1250, /* EASTEUROPE */ -255: 1252, /* OEM */ -69: 6969 /* MISC */ -}); - -var set_ansi = function(cp) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; }; -function reset_ansi() { set_ansi(1252); } - -var set_cp = function(cp) { current_codepage = cp; set_ansi(cp); }; -function reset_cp() { set_cp(1200); reset_ansi(); } - -function char_codes(data) { var o = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; } - -function utf16leread(data) { - var o = []; - for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8)); - return o.join(""); -} -function utf16beread(data) { - var o = []; - for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8)); - return o.join(""); -} - -var debom = function(data) { - var c1 = data.charCodeAt(0), c2 = data.charCodeAt(1); - if(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2)); - if(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2)); - if(c1 == 0xFEFF) return data.slice(1); - return data; -}; - -var _getchar = function _gc1(x) { return String.fromCharCode(x); }; -var _getansi = function _ga1(x) { return String.fromCharCode(x); }; -if(typeof cptable !== 'undefined') { - set_cp = function(cp) { current_codepage = cp; set_ansi(cp); }; - debom = function(data) { - if(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return cptable.utils.decode(1200, char_codes(data.slice(2))); } - return data; - }; - _getchar = function _gc2(x) { - if(current_codepage === 1200) return String.fromCharCode(x); - return cptable.utils.decode(current_codepage, [x&255,x>>8])[0]; - }; - _getansi = function _ga2(x) { - return cptable.utils.decode(current_ansi, [x])[0]; - }; -} -var DENSE = null; -var DIF_XL = true; -var Base64 = function() { - var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - return { - encode: function(input) { - var o = ""; - var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; - for (var i = 0; i < input.length; ) { - c1 = input.charCodeAt(i++); - e1 = c1 >> 2; - c2 = input.charCodeAt(i++); - e2 = (c1 & 3) << 4 | c2 >> 4; - c3 = input.charCodeAt(i++); - e3 = (c2 & 15) << 2 | c3 >> 6; - e4 = c3 & 63; - if (isNaN(c2)) { - e3 = e4 = 64; - } else if (isNaN(c3)) { - e4 = 64; - } - o += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4); - } - return o; - }, - decode: function(input) { - var o = ""; - var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; - input = input.replace(/[^\w\+\/\=]/g, ""); - for (var i = 0; i < input.length; ) { - e1 = map.indexOf(input.charAt(i++)); - e2 = map.indexOf(input.charAt(i++)); - c1 = e1 << 2 | e2 >> 4; - o += String.fromCharCode(c1); - e3 = map.indexOf(input.charAt(i++)); - c2 = (e2 & 15) << 4 | e3 >> 2; - if (e3 !== 64) { - o += String.fromCharCode(c2); - } - e4 = map.indexOf(input.charAt(i++)); - c3 = (e3 & 3) << 6 | e4; - if (e4 !== 64) { - o += String.fromCharCode(c3); - } - } - return o; - } - }; -}(); -var has_buf = (typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node); - -var Buffer_from = function(){}; - -if(typeof Buffer !== 'undefined') { - var nbfs = !Buffer.from; - if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } - Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer); - // $FlowIgnore - if(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); }; - // $FlowIgnore - if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); }; -} - -function new_raw_buf(len) { - /* jshint -W056 */ - return has_buf ? Buffer.alloc(len) : typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); - /* jshint +W056 */ -} - -function new_unsafe_buf(len) { - /* jshint -W056 */ - return has_buf ? Buffer.allocUnsafe(len) : typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); - /* jshint +W056 */ -} - -var s2a = function s2a(s) { - if(has_buf) return Buffer_from(s, "binary"); - return s.split("").map(function(x){ return x.charCodeAt(0) & 0xff; }); -}; - -function s2ab(s) { - if(typeof ArrayBuffer === 'undefined') return s2a(s); - var buf = new ArrayBuffer(s.length), view = new Uint8Array(buf); - for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; - return buf; -} - -function a2s(data) { - if(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(""); - var o = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(""); -} - -function a2u(data) { - if(typeof Uint8Array === 'undefined') throw new Error("Unsupported"); - return new Uint8Array(data); -} - -function ab2a(data) { - if(typeof ArrayBuffer == 'undefined') throw new Error("Unsupported"); - if(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data)); -var o = new Array(data.length); - for(var i = 0; i < data.length; ++i) o[i] = data[i]; - return o; -} - -function utf8decode(content) { - var out = [], widx = 0, L = content.length + 250; - var o = new_raw_buf(content.length + 255); - for(var ridx = 0; ridx < content.length; ++ridx) { - var c = content.charCodeAt(ridx); - if(c < 0x80) o[widx++] = c; - else if(c < 0x800) { - o[widx++] = (192|((c>>6)&31)); - o[widx++] = (128|(c&63)); - } else if(c >= 0xD800 && c < 0xE000) { - c = (c&1023)+64; - var d = content.charCodeAt(++ridx)&1023; - o[widx++] = (240|((c>>8)&7)); - o[widx++] = (128|((c>>2)&63)); - o[widx++] = (128|((d>>6)&15)|((c&3)<<4)); - o[widx++] = (128|(d&63)); - } else { - o[widx++] = (224|((c>>12)&15)); - o[widx++] = (128|((c>>6)&63)); - o[widx++] = (128|(c&63)); - } - if(widx > L) { - out.push(o.slice(0, widx)); - widx = 0; - o = new_raw_buf(65535); - L = 65530; - } - } - out.push(o.slice(0, widx)); - return bconcat(out); -} - -var bconcat = function(bufs) { - if(typeof Uint8Array !== "undefined") { - var i = 0, maxlen = 0; - for(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length; - var o = new Uint8Array(maxlen); - var len = 0; - for(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) { - len = bufs[i].length; - if(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen); - else if(typeof bufs[i] == "string") { throw "wtf"; } - else o.set(new Uint8Array(bufs[i]), maxlen); - } - return o; - } - return [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); })); -}; - -var chr0 = /\u0000/g, chr1 = /[\u0001-\u0006]/g; -/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */ -/*jshint -W041 */ -var SSF = ({}); -var make_ssf = function make_ssf(SSF){ -SSF.version = '0.11.2'; -function _strrev(x) { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; } -function fill(c,l) { var o = ""; while(o.length < l) o+=c; return o; } -function pad0(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} -function pad_(v,d){var t=""+v;return t.length>=d?t:fill(' ',d-t.length)+t;} -function rpad_(v,d){var t=""+v; return t.length>=d?t:t+fill(' ',d-t.length);} -function pad0r1(v,d){var t=""+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;} -function pad0r2(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} -var p2_32 = Math.pow(2,32); -function pad0r(v,d){if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); } -function isgeneral(s, i) { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; } -var days = [ - ['Sun', 'Sunday'], - ['Mon', 'Monday'], - ['Tue', 'Tuesday'], - ['Wed', 'Wednesday'], - ['Thu', 'Thursday'], - ['Fri', 'Friday'], - ['Sat', 'Saturday'] -]; -var months = [ - ['J', 'Jan', 'January'], - ['F', 'Feb', 'February'], - ['M', 'Mar', 'March'], - ['A', 'Apr', 'April'], - ['M', 'May', 'May'], - ['J', 'Jun', 'June'], - ['J', 'Jul', 'July'], - ['A', 'Aug', 'August'], - ['S', 'Sep', 'September'], - ['O', 'Oct', 'October'], - ['N', 'Nov', 'November'], - ['D', 'Dec', 'December'] -]; -function init_table(t) { - t[0]= 'General'; - t[1]= '0'; - t[2]= '0.00'; - t[3]= '#,##0'; - t[4]= '#,##0.00'; - t[9]= '0%'; - t[10]= '0.00%'; - t[11]= '0.00E+00'; - t[12]= '# ?/?'; - t[13]= '# ??/??'; - t[14]= 'm/d/yy'; - t[15]= 'd-mmm-yy'; - t[16]= 'd-mmm'; - t[17]= 'mmm-yy'; - t[18]= 'h:mm AM/PM'; - t[19]= 'h:mm:ss AM/PM'; - t[20]= 'h:mm'; - t[21]= 'h:mm:ss'; - t[22]= 'm/d/yy h:mm'; - t[37]= '#,##0 ;(#,##0)'; - t[38]= '#,##0 ;[Red](#,##0)'; - t[39]= '#,##0.00;(#,##0.00)'; - t[40]= '#,##0.00;[Red](#,##0.00)'; - t[45]= 'mm:ss'; - t[46]= '[h]:mm:ss'; - t[47]= 'mmss.0'; - t[48]= '##0.0E+0'; - t[49]= '@'; - t[56]= '"上午/下午 "hh"時"mm"分"ss"秒 "'; -} - -var table_fmt = {}; -init_table(table_fmt); -/* Defaults determined by systematically testing in Excel 2019 */ - -/* These formats appear to default to other formats in the table */ -var default_map = []; -var defi = 0; - -// 5 -> 37 ... 8 -> 40 -for(defi = 5; defi <= 8; ++defi) default_map[defi] = 32 + defi; - -// 23 -> 0 ... 26 -> 0 -for(defi = 23; defi <= 26; ++defi) default_map[defi] = 0; - -// 27 -> 14 ... 31 -> 14 -for(defi = 27; defi <= 31; ++defi) default_map[defi] = 14; -// 50 -> 14 ... 58 -> 14 -for(defi = 50; defi <= 58; ++defi) default_map[defi] = 14; - -// 59 -> 1 ... 62 -> 4 -for(defi = 59; defi <= 62; ++defi) default_map[defi] = defi - 58; -// 67 -> 9 ... 68 -> 10 -for(defi = 67; defi <= 68; ++defi) default_map[defi] = defi - 58; -// 72 -> 14 ... 75 -> 17 -for(defi = 72; defi <= 75; ++defi) default_map[defi] = defi - 58; - -// 69 -> 12 ... 71 -> 14 -for(defi = 67; defi <= 68; ++defi) default_map[defi] = defi - 57; - -// 76 -> 20 ... 78 -> 22 -for(defi = 76; defi <= 78; ++defi) default_map[defi] = defi - 56; - -// 79 -> 45 ... 81 -> 47 -for(defi = 79; defi <= 81; ++defi) default_map[defi] = defi - 34; - -// 82 -> 0 ... 65536 -> 0 (omitted) - -/* These formats technically refer to Accounting formats with no equivalent */ -var default_str = []; - -// 5 -- Currency, 0 decimal, black negative -default_str[5] = default_str[63] = '"$"#,##0_);\\("$"#,##0\\)'; -// 6 -- Currency, 0 decimal, red negative -default_str[6] = default_str[64] = '"$"#,##0_);[Red]\\("$"#,##0\\)'; -// 7 -- Currency, 2 decimal, black negative -default_str[7] = default_str[65] = '"$"#,##0.00_);\\("$"#,##0.00\\)'; -// 8 -- Currency, 2 decimal, red negative -default_str[8] = default_str[66] = '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)'; - -// 41 -- Accounting, 0 decimal, No Symbol -default_str[41] = '_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)'; -// 42 -- Accounting, 0 decimal, $ Symbol -default_str[42] = '_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)'; -// 43 -- Accounting, 2 decimal, No Symbol -default_str[43] = '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)'; -// 44 -- Accounting, 2 decimal, $ Symbol -default_str[44] = '_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'; -function frac(x, D, mixed) { - var sgn = x < 0 ? -1 : 1; - var B = x * sgn; - var P_2 = 0, P_1 = 1, P = 0; - var Q_2 = 1, Q_1 = 0, Q = 0; - var A = Math.floor(B); - while(Q_1 < D) { - A = Math.floor(B); - P = A * P_1 + P_2; - Q = A * Q_1 + Q_2; - if((B - A) < 0.00000005) break; - B = 1 / (B - A); - P_2 = P_1; P_1 = P; - Q_2 = Q_1; Q_1 = Q; - } - if(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } } - if(!mixed) return [0, sgn * P, Q]; - var q = Math.floor(sgn * P/Q); - return [q, sgn*P - q*Q, Q]; -} -function parse_date_code(v,opts,b2) { - if(v > 2958465 || v < 0) return null; - var date = (v|0), time = Math.floor(86400 * (v - date)), dow=0; - var dout=[]; - var out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0}; - if(Math.abs(out.u) < 1e-6) out.u = 0; - if(opts && opts.date1904) date += 1462; - if(out.u > 0.9999) { - out.u = 0; - if(++time == 86400) { out.T = time = 0; ++date; ++out.D; } - } - if(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;} - else if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;} - else { - if(date > 60) --date; - /* 1 = Jan 1 1900 in Gregorian */ - var d = new Date(1900, 0, 1); - d.setDate(d.getDate() + date - 1); - dout = [d.getFullYear(), d.getMonth()+1,d.getDate()]; - dow = d.getDay(); - if(date < 60) dow = (dow + 6) % 7; - if(b2) dow = fix_hijri(d, dout); - } - out.y = dout[0]; out.m = dout[1]; out.d = dout[2]; - out.S = time % 60; time = Math.floor(time / 60); - out.M = time % 60; time = Math.floor(time / 60); - out.H = time; - out.q = dow; - return out; -} -SSF.parse_date_code = parse_date_code; -var basedate = new Date(1899, 11, 31, 0, 0, 0); -var dnthresh = basedate.getTime(); -var base1904 = new Date(1900, 2, 1, 0, 0, 0); -function datenum_local(v, date1904) { - var epoch = v.getTime(); - if(date1904) epoch -= 1461*24*60*60*1000; - else if(v >= base1904) epoch += 24*60*60*1000; - return (epoch - (dnthresh + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000); -} -/* The longest 32-bit integer text is "-4294967296", exactly 11 chars */ -function general_fmt_int(v) { return v.toString(10); } -SSF._general_int = general_fmt_int; - -/* ECMA-376 18.8.30 numFmt*/ -/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */ -var general_fmt_num = (function make_general_fmt_num() { - var trailing_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)$/; - function strip_decimal(o) { - return (o.indexOf(".") == -1) ? o : o.replace(trailing_zeroes_and_decimal, "$1"); - } - - /* General Exponential always shows 2 digits exp and trims the mantissa */ - var mantissa_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)[Ee]/; - var exp_with_single_digit = /(E[+-])(\d)$/; - function normalize_exp(o) { - if(o.indexOf("E") == -1) return o; - return o.replace(mantissa_zeroes_and_decimal,"$1E").replace(exp_with_single_digit,"$10$2"); - } - - /* exponent >= -9 and <= 9 */ - function small_exp(v) { - var w = (v<0?12:11); - var o = strip_decimal(v.toFixed(12)); if(o.length <= w) return o; - o = v.toPrecision(10); if(o.length <= w) return o; - return v.toExponential(5); - } - - /* exponent >= 11 or <= -10 likely exponential */ - function large_exp(v) { - var o = strip_decimal(v.toFixed(11)); - return (o.length > (v<0?12:11) || o === "0" || o === "-0") ? v.toPrecision(6) : o; - } - - function general_fmt_num_base(v) { - var V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o; - - if(V >= -4 && V <= -1) o = v.toPrecision(10+V); - else if(Math.abs(V) <= 9) o = small_exp(v); - else if(V === 10) o = v.toFixed(10).substr(0,12); - else o = large_exp(v); - - return strip_decimal(normalize_exp(o.toUpperCase())); - } - - return general_fmt_num_base; -})(); -SSF._general_num = general_fmt_num; - -/* - "General" rules: - - text is passed through ("@") - - booleans are rendered as TRUE/FALSE - - "up to 11 characters" displayed for numbers - - Default date format (code 14) used for Dates - - TODO: technically the display depends on the width of the cell -*/ -function general_fmt(v, opts) { - switch(typeof v) { - case 'string': return v; - case 'boolean': return v ? "TRUE" : "FALSE"; - case 'number': return (v|0) === v ? v.toString(10) : general_fmt_num(v); - case 'undefined': return ""; - case 'object': - if(v == null) return ""; - if(v instanceof Date) return format(14, datenum_local(v, opts && opts.date1904), opts); - } - throw new Error("unsupported value in General format: " + v); -} -SSF._general = general_fmt; -function fix_hijri(date, o) { - /* TODO: properly adjust y/m/d and */ - o[0] -= 581; - var dow = date.getDay(); - if(date < 60) dow = (dow + 6) % 7; - return dow; -} -//var THAI_DIGITS = "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59".split(""); -/*jshint -W086 */ -function write_date(type, fmt, val, ss0) { - var o="", ss=0, tt=0, y = val.y, out, outl = 0; - switch(type) { - case 98: /* 'b' buddhist year */ - y = val.y + 543; - /* falls through */ - case 121: /* 'y' year */ - switch(fmt.length) { - case 1: case 2: out = y % 100; outl = 2; break; - default: out = y % 10000; outl = 4; break; - } break; - case 109: /* 'm' month */ - switch(fmt.length) { - case 1: case 2: out = val.m; outl = fmt.length; break; - case 3: return months[val.m-1][1]; - case 5: return months[val.m-1][0]; - default: return months[val.m-1][2]; - } break; - case 100: /* 'd' day */ - switch(fmt.length) { - case 1: case 2: out = val.d; outl = fmt.length; break; - case 3: return days[val.q][0]; - default: return days[val.q][1]; - } break; - case 104: /* 'h' 12-hour */ - switch(fmt.length) { - case 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break; - default: throw 'bad hour format: ' + fmt; - } break; - case 72: /* 'H' 24-hour */ - switch(fmt.length) { - case 1: case 2: out = val.H; outl = fmt.length; break; - default: throw 'bad hour format: ' + fmt; - } break; - case 77: /* 'M' minutes */ - switch(fmt.length) { - case 1: case 2: out = val.M; outl = fmt.length; break; - default: throw 'bad minute format: ' + fmt; - } break; - case 115: /* 's' seconds */ - if(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt; - if(val.u === 0 && (fmt == "s" || fmt == "ss")) return pad0(val.S, fmt.length); -if(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100; - else tt = ss0 === 1 ? 10 : 1; - ss = Math.round((tt)*(val.S + val.u)); - if(ss >= 60*tt) ss = 0; - if(fmt === 's') return ss === 0 ? "0" : ""+ss/tt; - o = pad0(ss,2 + ss0); - if(fmt === 'ss') return o.substr(0,2); - return "." + o.substr(2,fmt.length-1); - case 90: /* 'Z' absolute time */ - switch(fmt) { - case '[h]': case '[hh]': out = val.D*24+val.H; break; - case '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break; - case '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break; - default: throw 'bad abstime format: ' + fmt; - } outl = fmt.length === 3 ? 1 : 2; break; - case 101: /* 'e' era */ - out = y; outl = 1; break; - } - var outstr = outl > 0 ? pad0(out, outl) : ""; - return outstr; -} -/*jshint +W086 */ -function commaify(s) { - var w = 3; - if(s.length <= w) return s; - var j = (s.length % w), o = s.substr(0,j); - for(; j!=s.length; j+=w) o+=(o.length > 0 ? "," : "") + s.substr(j,w); - return o; -} -var write_num = (function make_write_num(){ -var pct1 = /%/g; -function write_num_pct(type, fmt, val){ - var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length; - return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul); -} -function write_num_cm(type, fmt, val){ - var idx = fmt.length - 1; - while(fmt.charCodeAt(idx-1) === 44) --idx; - return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); -} -function write_num_exp(fmt, val){ - var o; - var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; - if(fmt.match(/^#+0.0E\+0$/)) { - if(val == 0) return "0.0E+0"; - else if(val < 0) return "-" + write_num_exp(fmt, -val); - var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); - var ee = Math.floor(Math.log(val)*Math.LOG10E)%period; - if(ee < 0) ee += period; - o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); - if(o.indexOf("e") === -1) { - var fakee = Math.floor(Math.log(val)*Math.LOG10E); - if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee); - else o += "E+" + (fakee - ee); - while(o.substr(0,2) === "0.") { - o = o.charAt(0) + o.substr(2,period) + "." + o.substr(2+period); - o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0."); - } - o = o.replace(/\+-/,"-"); - } - o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); - } else o = val.toExponential(idx); - if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.length-1); - if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); - return o.replace("e","E"); -} -var frac1 = /# (\?+)( ?)\/( ?)(\d+)/; -function write_num_f1(r, aval, sign) { - var den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den); - var myn = (rr - base*den), myd = den; - return sign + (base === 0 ? "" : ""+base) + " " + (myn === 0 ? fill(" ", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + "/" + r[3] + pad0(myd,r[4].length)); -} -function write_num_f2(r, aval, sign) { - return sign + (aval === 0 ? "" : ""+aval) + fill(" ", r[1].length + 2 + r[4].length); -} -var dec1 = /^#*0*\.([0#]+)/; -var closeparen = /\).*[0#]/; -var phone = /\(###\) ###\\?-####/; -function hashq(str) { - var o = "", cc; - for(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) { - case 35: break; - case 63: o+= " "; break; - case 48: o+= "0"; break; - default: o+= String.fromCharCode(cc); - } - return o; -} -function rnd(val, d) { var dd = Math.pow(10,d); return ""+(Math.round(val * dd)/dd); } -function dec(val, d) { - var _frac = val - Math.floor(val), dd = Math.pow(10,d); - if (d < ('' + Math.round(_frac * dd)).length) return 0; - return Math.round(_frac * dd); -} -function carry(val, d) { - if (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) { - return 1; - } - return 0; -} -function flr(val) { - if(val < 2147483647 && val > -2147483648) return ""+(val >= 0 ? (val|0) : (val-1|0)); - return ""+Math.floor(val); -} -function write_num_flt(type, fmt, val) { - if(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) { - var ffmt = fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,""); - if(val >= 0) return write_num_flt('n', ffmt, val); - return '(' + write_num_flt('n', ffmt, -val) + ')'; - } - if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val); - if(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val); - if(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val); - if(fmt.charCodeAt(0) === 36) return "$"+write_num_flt(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 + pad0r(aval,fmt.length); - if(fmt.match(/^[#?]+$/)) { - o = pad0r(val,0); if(o === "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_f1(r, aval, sign); - if(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf("0")); - if((r = fmt.match(dec1))) { - o = rnd(val, r[1].length).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])).replace(/\.(\d*)$/,function($$, $1) { return "." + $1 + fill("0", hashq(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 + rnd(aval, r[2].length).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(pad0r(aval,0)); - if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { - return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(""+(Math.floor(val) + carry(val, r[1].length))) + "." + pad0(dec(val, r[1].length),r[1].length); - } - if((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,""),val); - if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { - o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g,""), val)); - ri = 0; - return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val); - return '(' + write_num_int('n', ffmt, -val) + ')'; - } - if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val); - if(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val); - 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."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])); - o = o.replace(/\.(\d*)$/,function($$, $1) { -return "." + $1 + fill("0", hashq(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 -1 || (c=='\\' && fmt.charAt(i+1) == "-" && "0#".indexOf(fmt.charAt(i+2))>-1))){/* empty */} - break; - case '?': while(fmt.charAt(++i) === c){/* empty */} break; - case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; - case '(': case ')': ++i; break; - case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1){/* empty */} break; - case ' ': ++i; break; - default: ++i; break; - } - } - return false; -} -SSF.is_date = fmt_is_date; -function eval_fmt(fmt, v, opts, flen) { - var out = [], o = "", i = 0, c = "", lst='t', dt, j, cc; - var hr='H'; - /* Tokenize */ - while(i < fmt.length) { - switch((c = fmt.charAt(i))) { - case 'G': /* General */ - if(!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt); - out[out.length] = {t:'G', v:'General'}; i+=7; break; - case '"': /* Literal text */ - for(o="";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc); - out[out.length] = {t:'t', v:o}; ++i; break; - case '\\': var w = fmt.charAt(++i), t = (w === "(" || w === ")") ? w : 't'; - out[out.length] = {t:t, v:w}; ++i; break; - case '_': out[out.length] = {t:'t', v:" "}; i+=2; break; - case '@': /* Text Placeholder */ - out[out.length] = {t:'T', v:v}; ++i; break; - case 'B': case 'b': - if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") { - if(dt==null) { dt=parse_date_code(v, opts, fmt.charAt(i+1) === "2"); if(dt==null) return ""; } - out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; - } - /* falls through */ - case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': - c = c.toLowerCase(); - /* falls through */ - case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': - if(v < 0) return ""; - if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } - o = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c; - if(c === 'm' && lst.toLowerCase() === 'h') c = 'M'; - if(c === 'h') c = hr; - out[out.length] = {t:c, v:o}; lst = c; break; - case 'A': case 'a': case '上': - var q={t:c, v:c}; - if(dt==null) dt=parse_date_code(v, opts); - if(fmt.substr(i, 3).toUpperCase() === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} - else if(fmt.substr(i,5).toUpperCase() === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } - else if(fmt.substr(i,5).toUpperCase() === "上午/下午") { if(dt!=null) q.v = dt.H >= 12 ? "下午" : "上午"; q.t = 'T'; i+=5; hr='h'; } - else { q.t = "t"; ++i; } - if(dt==null && q.t === 'T') return ""; - out[out.length] = q; lst = c; break; - case '[': - o = c; - while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i); - if(o.slice(-1) !== ']') throw 'unterminated "[" block: |' + o + '|'; - if(o.match(abstime)) { - if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } - out[out.length] = {t:'Z', v:o.toLowerCase()}; - lst = o.charAt(1); - } else if(o.indexOf("$") > -1) { - o = (o.match(/\$([^-\[\]]*)/)||[])[1]||"$"; - if(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o}; - } - break; - /* Numbers */ - case '.': - if(dt != null) { - o = c; while(++i < fmt.length && (c=fmt.charAt(i)) === "0") o += c; - out[out.length] = {t:'s', v:o}; break; - } - /* falls through */ - case '0': case '#': - o = c; while(++i < fmt.length && "0#?.,E+-%".indexOf(c=fmt.charAt(i)) > -1) o += c; - out[out.length] = {t:'n', v:o}; break; - case '?': - o = c; while(fmt.charAt(++i) === c) o+=c; - out[out.length] = {t:c, v:o}; lst = c; break; - case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // ** - case '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break; - case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - o = c; while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i); - out[out.length] = {t:'D', v:o}; break; - case ' ': out[out.length] = {t:c, v:c}; ++i; break; - case '$': out[out.length] = {t:'t', v:'$'}; ++i; break; - default: - if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt); - out[out.length] = {t:'t', v:c}; ++i; break; - } - } - - /* Scan for date/time parts */ - var bt = 0, ss0 = 0, ssm; - for(i=out.length-1, lst='t'; i >= 0; --i) { - switch(out[i].t) { - case 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break; - case 's': - if((ssm=out[i].v.match(/\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1); - if(bt < 3) bt = 3; - /* falls through */ - case 'd': case 'y': case 'M': case 'e': lst=out[i].t; break; - case 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break; - case 'X': /*if(out[i].v === "B2");*/ - break; - case 'Z': - if(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1; - if(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2; - if(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3; - } - } - /* time rounding depends on presence of minute / second / usec fields */ - switch(bt) { - case 0: break; - case 1: -if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } - if(dt.S >= 60) { dt.S = 0; ++dt.M; } - if(dt.M >= 60) { dt.M = 0; ++dt.H; } - break; - case 2: -if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } - if(dt.S >= 60) { dt.S = 0; ++dt.M; } - break; - } - - /* replace fields */ - var nstr = "", jj; - for(i=0; i < out.length; ++i) { - switch(out[i].t) { - case 't': case 'T': case ' ': case 'D': break; - case 'X': out[i].v = ""; out[i].t = ";"; break; - case 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z': -out[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0); - out[i].t = 't'; break; - case 'n': case '?': - jj = i+1; - while(out[jj] != null && ( - (c=out[jj].t) === "?" || c === "D" || - ((c === " " || c === "t") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === "t" && out[jj+1].v === '/')) || - (out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) || - (c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?')) - )) { - out[i].v += out[jj].v; - out[jj] = {v:"", t:";"}; ++jj; - } - nstr += out[i].v; - i = jj-1; break; - case 'G': out[i].t = 't'; out[i].v = general_fmt(v,opts); break; - } - } - var vv = "", myv, ostr; - if(nstr.length > 0) { - if(nstr.charCodeAt(0) == 40) /* '(' */ { - myv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v); - ostr = write_num('n', nstr, myv); - } else { - myv = (v<0 && flen > 1 ? -v : v); - ostr = write_num('n', nstr, myv); - if(myv < 0 && out[0] && out[0].t == 't') { - ostr = ostr.substr(1); - out[0].v = "-" + out[0].v; - } - } - jj=ostr.length-1; - var decpt = out.length; - for(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(".") > -1) { decpt = i; break; } - var lasti=out.length; - if(decpt === out.length && ostr.indexOf("E") === -1) { - for(i=out.length-1; i>= 0;--i) { - if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; - if(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); } - else if(jj < 0) out[i].v = ""; - else { out[i].v = ostr.substr(0, jj+1); jj = -1; } - out[i].t = 't'; - lasti = i; - } - if(jj>=0 && lasti= 0; --i) { - if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; - j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")-1:out[i].v.length-1; - vv = out[i].v.substr(j+1); - for(; j>=0; --j) { - if(jj>=0 && (out[i].v.charAt(j) === "0" || out[i].v.charAt(j) === "#")) vv = ostr.charAt(jj--) + vv; - } - out[i].v = vv; - out[i].t = 't'; - lasti = i; - } - if(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(".")+1:0; - vv = out[i].v.substr(0,j); - for(; j-1) { - myv = (flen >1 && v < 0 && i>0 && out[i-1].v === "-" ? -v:v); - out[i].v = write_num(out[i].t, out[i].v, myv); - out[i].t = 't'; - } - var retval = ""; - for(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v; - return retval; -} -SSF._eval = eval_fmt; -var cfregex = /\[[=<>]/; -var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/; -function chkcond(v, rr) { - if(rr == null) return false; - var thresh = parseFloat(rr[2]); - switch(rr[1]) { - case "=": if(v == thresh) return true; break; - case ">": if(v > thresh) return true; break; - case "<": if(v < thresh) return true; break; - case "<>": if(v != thresh) return true; break; - case ">=": if(v >= thresh) return true; break; - case "<=": if(v <= thresh) return true; break; - } - return false; -} -function choose_fmt(f, v) { - var fmt = split_fmt(f); - var l = fmt.length, lat = fmt[l-1].indexOf("@"); - if(l<4 && lat>-1) --l; - if(fmt.length > 4) throw new Error("cannot find right format for |" + fmt.join("|") + "|"); - if(typeof v !== "number") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:"@"]; - switch(fmt.length) { - case 1: fmt = lat>-1 ? ["General", "General", "General", fmt[0]] : [fmt[0], fmt[0], fmt[0], "@"]; break; - case 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], "@"]; break; - case 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], "@"]; break; - case 4: break; - } - var ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2]; - if(fmt[0].indexOf("[") === -1 && fmt[1].indexOf("[") === -1) return [l, ff]; - if(fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) { - var m1 = fmt[0].match(cfregex2); - var m2 = fmt[1].match(cfregex2); - return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]]; - } - return [l, ff]; -} -function format(fmt,v,o) { - if(o == null) o = {}; - var sfmt = ""; - switch(typeof fmt) { - case "string": - if(fmt == "m/d/yy" && o.dateNF) sfmt = o.dateNF; - else sfmt = fmt; - break; - case "number": - if(fmt == 14 && o.dateNF) sfmt = o.dateNF; - else sfmt = (o.table != null ? (o.table) : table_fmt)[fmt]; - if(sfmt == null) sfmt = (o.table && o.table[default_map[fmt]]) || table_fmt[default_map[fmt]]; - if(sfmt == null) sfmt = default_str[fmt] || "General"; - break; - } - if(isgeneral(sfmt,0)) return general_fmt(v, o); - if(v instanceof Date) v = datenum_local(v, o.date1904); - var f = choose_fmt(sfmt, v); - if(isgeneral(f[1])) return general_fmt(v, o); - if(v === true) v = "TRUE"; else if(v === false) v = "FALSE"; - else if(v === "" || v == null) return ""; - return eval_fmt(f[1], v, o, f[0]); -} -function load_entry(fmt, idx) { - if(typeof idx != 'number') { - idx = +idx || -1; -for(var i = 0; i < 0x0188; ++i) { -if(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; } - if(table_fmt[i] == fmt) { idx = i; break; } - } -if(idx < 0) idx = 0x187; - } -table_fmt[idx] = fmt; - return idx; -} -SSF.load = load_entry; -SSF._table = table_fmt; -SSF.get_table = function get_table() { return table_fmt; }; -SSF.load_table = function load_table(tbl) { - for(var i=0; i!=0x0188; ++i) - if(tbl[i] !== undefined) load_entry(tbl[i], i); -}; -SSF.init_table = init_table; -SSF.format = format; -}; -make_ssf(SSF); -/* map from xlml named formats to SSF TODO: localize */ -var XLMLFormatMap/*{[string]:string}*/ = ({ - "General Number": "General", - "General Date": SSF._table[22], - "Long Date": "dddd, mmmm dd, yyyy", - "Medium Date": SSF._table[15], - "Short Date": SSF._table[14], - "Long Time": SSF._table[19], - "Medium Time": SSF._table[18], - "Short Time": SSF._table[20], - "Currency": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', - "Fixed": SSF._table[2], - "Standard": SSF._table[4], - "Percent": SSF._table[10], - "Scientific": SSF._table[11], - "Yes/No": '"Yes";"Yes";"No";@', - "True/False": '"True";"True";"False";@', - "On/Off": '"Yes";"Yes";"No";@' -}); - -var SSFImplicit/*{[number]:string}*/ = ({ - "5": '"$"#,##0_);\\("$"#,##0\\)', - "6": '"$"#,##0_);[Red]\\("$"#,##0\\)', - "7": '"$"#,##0.00_);\\("$"#,##0.00\\)', - "8": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', - "23": 'General', "24": 'General', "25": 'General', "26": 'General', - "27": 'm/d/yy', "28": 'm/d/yy', "29": 'm/d/yy', "30": 'm/d/yy', "31": 'm/d/yy', - "32": 'h:mm:ss', "33": 'h:mm:ss', "34": 'h:mm:ss', "35": 'h:mm:ss', - "36": 'm/d/yy', - "41": '_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)', - "42": '_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_)', - "43": '_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_)', - "44": '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)', - "50": 'm/d/yy', "51": 'm/d/yy', "52": 'm/d/yy', "53": 'm/d/yy', "54": 'm/d/yy', - "55": 'm/d/yy', "56": 'm/d/yy', "57": 'm/d/yy', "58": 'm/d/yy', - "59": '0', - "60": '0.00', - "61": '#,##0', - "62": '#,##0.00', - "63": '"$"#,##0_);\\("$"#,##0\\)', - "64": '"$"#,##0_);[Red]\\("$"#,##0\\)', - "65": '"$"#,##0.00_);\\("$"#,##0.00\\)', - "66": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', - "67": '0%', - "68": '0.00%', - "69": '# ?/?', - "70": '# ??/??', - "71": 'm/d/yy', - "72": 'm/d/yy', - "73": 'd-mmm-yy', - "74": 'd-mmm', - "75": 'mmm-yy', - "76": 'h:mm', - "77": 'h:mm:ss', - "78": 'm/d/yy h:mm', - "79": 'mm:ss', - "80": '[h]:mm:ss', - "81": 'mmss.0' -}); - -/* dateNF parse TODO: move to SSF */ -var dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g; -function dateNF_regex(dateNF) { - var fmt = typeof dateNF == "number" ? SSF._table[dateNF] : dateNF; - fmt = fmt.replace(dateNFregex, "(\\d+)"); - return new RegExp("^" + fmt + "$"); -} -function dateNF_fix(str, dateNF, match) { - var Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1; - (dateNF.match(dateNFregex)||[]).forEach(function(n, i) { - var v = parseInt(match[i+1], 10); - switch(n.toLowerCase().charAt(0)) { - case 'y': Y = v; break; case 'd': d = v; break; - case 'h': H = v; break; case 's': S = v; break; - case 'm': if(H >= 0) M = v; else m = v; break; - } - }); - if(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; } - var datestr = (("" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + "-" + ("00" + (m>=1?m:1)).slice(-2) + "-" + ("00" + (d>=1?d:1)).slice(-2)); - if(datestr.length == 7) datestr = "0" + datestr; - if(datestr.length == 8) datestr = "20" + datestr; - var timestr = (("00" + (H>=0?H:0)).slice(-2) + ":" + ("00" + (M>=0?M:0)).slice(-2) + ":" + ("00" + (S>=0?S:0)).slice(-2)); - if(H == -1 && M == -1 && S == -1) return datestr; - if(Y == -1 && m == -1 && d == -1) return timestr; - return datestr + "T" + timestr; -} - -var DO_NOT_EXPORT_CFB = true; -/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */ -/* vim: set ts=2: */ -/*jshint eqnull:true */ -/*exported CFB */ -/*global module, require:false, process:false, Buffer:false, Uint8Array:false, Uint16Array:false */ - -/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ -/* vim: set ts=2: */ -/*exported CRC32 */ -var CRC32; -(function (factory) { - /*jshint ignore:start */ - /*eslint-disable */ - factory(CRC32 = {}); - /*eslint-enable */ - /*jshint ignore:end */ -}(function(CRC32) { -CRC32.version = '1.2.0'; -/* see perf/crc32table.js */ -/*global Int32Array */ -function signed_crc_table() { - var c = 0, table = new Array(256); - - for(var n =0; n != 256; ++n){ - c = n; - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); - table[n] = c; - } - - return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; -} - -var T0 = signed_crc_table(); -function slice_by_16_tables(T) { - var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; - - for(n = 0; n != 256; ++n) table[n] = T[n]; - for(n = 0; n != 256; ++n) { - v = T[n]; - for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; - } - var out = []; - for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); - return out; -} -var TT = slice_by_16_tables(T0); -var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; -var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; -var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; -function crc32_bstr(bstr, seed) { - var C = seed ^ -1; - for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; - return ~C; -} - -function crc32_buf(B, seed) { - var C = seed ^ -1, L = B.length - 15, i = 0; - for(; i < L;) C = - Tf[B[i++] ^ (C & 255)] ^ - Te[B[i++] ^ ((C >> 8) & 255)] ^ - Td[B[i++] ^ ((C >> 16) & 255)] ^ - Tc[B[i++] ^ (C >>> 24)] ^ - Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ - T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ - T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; - L += 15; - while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; - return ~C; -} - -function crc32_str(str, seed) { - var C = seed ^ -1; - for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { - c = str.charCodeAt(i++); - if(c < 0x80) { - C = (C>>>8) ^ T0[(C^c)&0xFF]; - } else if(c < 0x800) { - C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; - C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; - } else if(c >= 0xD800 && c < 0xE000) { - c = (c&1023)+64; d = str.charCodeAt(i++)&1023; - C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; - C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; - C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; - C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; - } else { - C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; - C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; - C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; - } - } - return ~C; -} -CRC32.table = T0; -CRC32.bstr = crc32_bstr; -CRC32.buf = crc32_buf; -CRC32.str = crc32_str; -})); -/* [MS-CFB] v20171201 */ -var CFB = (function _CFB(){ -var exports = {}; -exports.version = '1.2.1'; -/* [MS-CFB] 2.6.4 */ -function namecmp(l, r) { - var L = l.split("/"), R = r.split("/"); - for(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) { - if((c = L[i].length - R[i].length)) return c; - if(L[i] != R[i]) return L[i] < R[i] ? -1 : 1; - } - return L.length - R.length; -} -function dirname(p) { - if(p.charAt(p.length - 1) == "/") return (p.slice(0,-1).indexOf("/") === -1) ? p : dirname(p.slice(0, -1)); - var c = p.lastIndexOf("/"); - return (c === -1) ? p : p.slice(0, c+1); -} - -function filename(p) { - if(p.charAt(p.length - 1) == "/") return filename(p.slice(0, -1)); - var c = p.lastIndexOf("/"); - return (c === -1) ? p : p.slice(c+1); -} -/* -------------------------------------------------------------------------- */ -/* DOS Date format: - high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low - add 1980 to stored year - stored second should be doubled -*/ - -/* write JS date to buf as a DOS date */ -function write_dos_date(buf, date) { - if(typeof date === "string") date = new Date(date); - var hms = date.getHours(); - hms = hms << 6 | date.getMinutes(); - hms = hms << 5 | (date.getSeconds()>>>1); - buf.write_shift(2, hms); - var ymd = (date.getFullYear() - 1980); - ymd = ymd << 4 | (date.getMonth()+1); - ymd = ymd << 5 | date.getDate(); - buf.write_shift(2, ymd); -} - -/* read four bytes from buf and interpret as a DOS date */ -function parse_dos_date(buf) { - var hms = buf.read_shift(2) & 0xFFFF; - var ymd = buf.read_shift(2) & 0xFFFF; - var val = new Date(); - var d = ymd & 0x1F; ymd >>>= 5; - var m = ymd & 0x0F; ymd >>>= 4; - val.setMilliseconds(0); - val.setFullYear(ymd + 1980); - val.setMonth(m-1); - val.setDate(d); - var S = hms & 0x1F; hms >>>= 5; - var M = hms & 0x3F; hms >>>= 6; - val.setHours(hms); - val.setMinutes(M); - val.setSeconds(S<<1); - return val; -} -function parse_extra_field(blob) { - prep_blob(blob, 0); - var o = {}; - var flags = 0; - while(blob.l <= blob.length - 4) { - var type = blob.read_shift(2); - var sz = blob.read_shift(2), tgt = blob.l + sz; - var p = {}; - switch(type) { - /* UNIX-style Timestamps */ - case 0x5455: { - flags = blob.read_shift(1); - if(flags & 1) p.mtime = blob.read_shift(4); - /* for some reason, CD flag corresponds to LFH */ - if(sz > 5) { - if(flags & 2) p.atime = blob.read_shift(4); - if(flags & 4) p.ctime = blob.read_shift(4); - } - if(p.mtime) p.mt = new Date(p.mtime*1000); - } - break; - } - blob.l = tgt; - o[type] = p; - } - return o; -} -var fs; -function get_fs() { return fs || (fs = require('fs')); } -function parse(file, options) { -if(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options); -if((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options); -if(file.length < 512) throw new Error("CFB file size " + file.length + " < 512"); -var mver = 3; -var ssz = 512; -var nmfs = 0; // number of mini FAT sectors -var difat_sec_cnt = 0; -var dir_start = 0; -var minifat_start = 0; -var difat_start = 0; - -var fat_addrs = []; // locations of FAT sectors - -/* [MS-CFB] 2.2 Compound File Header */ -var blob = file.slice(0,512); -prep_blob(blob, 0); - -/* major version */ -var mv = check_get_mver(blob); -mver = mv[0]; -switch(mver) { - case 3: ssz = 512; break; case 4: ssz = 4096; break; - case 0: if(mv[1] == 0) return parse_zip(file, options); - /* falls through */ - default: throw new Error("Major Version: Expected 3 or 4 saw " + mver); -} - -/* reprocess header */ -if(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); } -/* Save header for final object */ -var header = file.slice(0,ssz); - -check_shifts(blob, mver); - -// Number of Directory Sectors -var dir_cnt = blob.read_shift(4, 'i'); -if(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt); - -// Number of FAT Sectors -blob.l += 4; - -// First Directory Sector Location -dir_start = blob.read_shift(4, 'i'); - -// Transaction Signature -blob.l += 4; - -// Mini Stream Cutoff Size -blob.chk('00100000', 'Mini Stream Cutoff Size: '); - -// First Mini FAT Sector Location -minifat_start = blob.read_shift(4, 'i'); - -// Number of Mini FAT Sectors -nmfs = blob.read_shift(4, 'i'); - -// First DIFAT sector location -difat_start = blob.read_shift(4, 'i'); - -// Number of DIFAT Sectors -difat_sec_cnt = blob.read_shift(4, 'i'); - -// Grab FAT Sector Locations -for(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */ - q = blob.read_shift(4, 'i'); - if(q<0) break; - fat_addrs[j] = q; -} - -/** Break the file up into sectors */ -var sectors = sectorify(file, ssz); - -sleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs); - -/** Chains */ -var sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz); - -sector_list[dir_start].name = "!Directory"; -if(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; -sector_list[fat_addrs[0]].name = "!FAT"; -sector_list.fat_addrs = fat_addrs; -sector_list.ssz = ssz; - -/* [MS-CFB] 2.6.1 Compound File Directory Entry */ -var files = {}, Paths = [], FileIndex = [], FullPaths = []; -read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); - -build_full_paths(FileIndex, FullPaths, Paths); -Paths.shift(); - -var o = { - FileIndex: FileIndex, - FullPaths: FullPaths -}; - -// $FlowIgnore -if(options && options.raw) o.raw = {header: header, sectors: sectors}; -return o; -} // parse - -/* [MS-CFB] 2.2 Compound File Header -- read up to major version */ -function check_get_mver(blob) { - if(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0]; - // header signature 8 - blob.chk(HEADER_SIGNATURE, 'Header Signature: '); - - // clsid 16 - //blob.chk(HEADER_CLSID, 'CLSID: '); - blob.l += 16; - - // minor version 2 - var mver = blob.read_shift(2, 'u'); - - return [blob.read_shift(2,'u'), mver]; -} -function check_shifts(blob, mver) { - var shift = 0x09; - - // Byte Order - //blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff - blob.l += 2; - - // Sector Shift - switch((shift = blob.read_shift(2))) { - case 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break; - case 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break; - default: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift); - } - - // Mini Sector Shift - blob.chk('0600', 'Mini Sector Shift: '); - - // Reserved - blob.chk('000000000000', 'Reserved: '); -} - -/** Break the file up into sectors */ -function sectorify(file, ssz) { - var nsectors = Math.ceil(file.length/ssz)-1; - var sectors = []; - for(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); - sectors[nsectors-1] = file.slice(nsectors*ssz); - return sectors; -} - -/* [MS-CFB] 2.6.4 Red-Black Tree */ -function build_full_paths(FI, FP, Paths) { - var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; - var dad = [], q = []; - - for(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; } - - for(; j < q.length; ++j) { - i = q[j]; - L = FI[i].L; R = FI[i].R; C = FI[i].C; - if(dad[i] === i) { - if(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L]; - if(R !== -1 && dad[R] !== R) dad[i] = dad[R]; - } - if(C !== -1 /*NOSTREAM*/) dad[C] = i; - if(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); } - if(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); } - } - for(i=1; i < pl; ++i) if(dad[i] === i) { - if(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R]; - else if(L !== -1 && dad[L] !== L) dad[i] = dad[L]; - } - - for(i=1; i < pl; ++i) { - if(FI[i].type === 0 /* unknown */) continue; - j = i; - if(j != dad[j]) do { - j = dad[j]; - FP[i] = FP[j] + "/" + FP[i]; - } while (j !== 0 && -1 !== dad[j] && j != dad[j]); - dad[i] = -1; - } - - FP[0] += "/"; - for(i=1; i < pl; ++i) { - if(FI[i].type !== 2 /* stream */) FP[i] += "/"; - } -} - -function get_mfat_entry(entry, payload, mini) { - var start = entry.start, size = entry.size; - //return (payload.slice(start*MSSZ, start*MSSZ + size)); - var o = []; - var idx = start; - while(mini && size > 0 && idx >= 0) { - o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); - size -= MSSZ; - idx = __readInt32LE(mini, idx * 4); - } - if(o.length === 0) return (new_buf(0)); - return (bconcat(o).slice(0, entry.size)); -} - -/** Chase down the rest of the DIFAT chain to build a comprehensive list - DIFAT chains by storing the next sector number as the last 32 bits */ -function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { - var q = ENDOFCHAIN; - if(idx === ENDOFCHAIN) { - if(cnt !== 0) throw new Error("DIFAT chain shorter than expected"); - } else if(idx !== -1 /*FREESECT*/) { - var sector = sectors[idx], m = (ssz>>>2)-1; - if(!sector) return; - for(var i = 0; i < m; ++i) { - if((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break; - fat_addrs.push(q); - } - sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs); - } -} - -/** Follow the linked list of sectors for a given starting point */ -function get_sector_list(sectors, start, fat_addrs, ssz, chkd) { - var buf = [], buf_chain = []; - if(!chkd) chkd = []; - var modulus = ssz - 1, j = 0, jj = 0; - for(j=start; j>=0;) { - chkd[j] = true; - buf[buf.length] = j; - buf_chain.push(sectors[j]); - var addr = fat_addrs[Math.floor(j*4/ssz)]; - jj = ((j*4) & modulus); - if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); - if(!sectors[addr]) break; - j = __readInt32LE(sectors[addr], jj); - } - return {nodes: buf, data:__toBuffer([buf_chain])}; -} - -/** Chase down the sector linked lists */ -function make_sector_list(sectors, dir_start, fat_addrs, ssz) { - var sl = sectors.length, sector_list = ([]); - var chkd = [], buf = [], buf_chain = []; - var modulus = ssz - 1, i=0, j=0, k=0, jj=0; - for(i=0; i < sl; ++i) { - buf = ([]); - k = (i + dir_start); if(k >= sl) k-=sl; - if(chkd[k]) continue; - buf_chain = []; - var seen = []; - for(j=k; j>=0;) { - seen[j] = true; - chkd[j] = true; - buf[buf.length] = j; - buf_chain.push(sectors[j]); - var addr = fat_addrs[Math.floor(j*4/ssz)]; - jj = ((j*4) & modulus); - if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); - if(!sectors[addr]) break; - j = __readInt32LE(sectors[addr], jj); - if(seen[j]) break; - } - sector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}); - } - return sector_list; -} - -/* [MS-CFB] 2.6.1 Compound File Directory Entry */ -function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) { - var minifat_store = 0, pl = (Paths.length?2:0); - var sector = sector_list[dir_start].data; - var i = 0, namelen = 0, name; - for(; i < sector.length; i+= 128) { - var blob = sector.slice(i, i+128); - prep_blob(blob, 64); - namelen = blob.read_shift(2); - name = __utf16le(blob,0,namelen-pl); - Paths.push(name); - var o = ({ - name: name, - type: blob.read_shift(1), - color: blob.read_shift(1), - L: blob.read_shift(4, 'i'), - R: blob.read_shift(4, 'i'), - C: blob.read_shift(4, 'i'), - clsid: blob.read_shift(16), - state: blob.read_shift(4, 'i'), - start: 0, - size: 0 - }); - var ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); - if(ctime !== 0) o.ct = read_date(blob, blob.l-8); - var mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); - if(mtime !== 0) o.mt = read_date(blob, blob.l-8); - o.start = blob.read_shift(4, 'i'); - o.size = blob.read_shift(4, 'i'); - if(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = ""; } - if(o.type === 5) { /* root */ - minifat_store = o.start; - if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; - /*minifat_size = o.size;*/ - } else if(o.size >= 4096 /* MSCSZ */) { - o.storage = 'fat'; - if(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz); - sector_list[o.start].name = o.name; - o.content = (sector_list[o.start].data.slice(0,o.size)); - } else { - o.storage = 'minifat'; - if(o.size < 0) o.size = 0; - else if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { - o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); - } - } - if(o.content) prep_blob(o.content, 0); - files[name] = o; - FileIndex.push(o); - } -} - -function read_date(blob, offset) { - return new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000); -} - -function read_file(filename, options) { - get_fs(); - return parse(fs.readFileSync(filename), options); -} - -function read(blob, options) { - var type = options && options.type; - if(!type) { - if(has_buf && Buffer.isBuffer(blob)) type = "buffer"; - } - switch(type || "base64") { - case "file": return read_file(blob, options); - case "base64": return parse(s2a(Base64.decode(blob)), options); - case "binary": return parse(s2a(blob), options); - } - return parse(blob, options); -} - -function init_cfb(cfb, opts) { - var o = opts || {}, root = o.root || "Root Entry"; - if(!cfb.FullPaths) cfb.FullPaths = []; - if(!cfb.FileIndex) cfb.FileIndex = []; - if(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error("inconsistent CFB structure"); - if(cfb.FullPaths.length === 0) { - cfb.FullPaths[0] = root + "/"; - cfb.FileIndex[0] = ({ name: root, type: 5 }); - } - if(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID; - seed_cfb(cfb); -} -function seed_cfb(cfb) { - var nm = "\u0001Sh33tJ5"; - if(CFB.find(cfb, "/" + nm)) return; - var p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54; - cfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 })); - cfb.FullPaths.push(cfb.FullPaths[0] + nm); - rebuild_cfb(cfb); -} -function rebuild_cfb(cfb, f) { - init_cfb(cfb); - var gc = false, s = false; - for(var i = cfb.FullPaths.length - 1; i >= 0; --i) { - var _file = cfb.FileIndex[i]; - switch(_file.type) { - case 0: - if(s) gc = true; - else { cfb.FileIndex.pop(); cfb.FullPaths.pop(); } - break; - case 1: case 2: case 5: - s = true; - if(isNaN(_file.R * _file.L * _file.C)) gc = true; - if(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true; - break; - default: gc = true; break; - } - } - if(!gc && !f) return; - - var now = new Date(1987, 1, 19), j = 0; - // Track which names exist - var fullPaths = Object.create ? Object.create(null) : {}; - var data = []; - for(i = 0; i < cfb.FullPaths.length; ++i) { - fullPaths[cfb.FullPaths[i]] = true; - if(cfb.FileIndex[i].type === 0) continue; - data.push([cfb.FullPaths[i], cfb.FileIndex[i]]); - } - for(i = 0; i < data.length; ++i) { - var dad = dirname(data[i][0]); - s = fullPaths[dad]; - if(!s) { - data.push([dad, ({ - name: filename(dad).replace("/",""), - type: 1, - clsid: HEADER_CLSID, - ct: now, mt: now, - content: null - })]); - // Add name to set - fullPaths[dad] = true; - } - } - - data.sort(function(x,y) { return namecmp(x[0], y[0]); }); - cfb.FullPaths = []; cfb.FileIndex = []; - for(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; } - for(i = 0; i < data.length; ++i) { - var elt = cfb.FileIndex[i]; - var nm = cfb.FullPaths[i]; - - elt.name = filename(nm).replace("/",""); - elt.L = elt.R = elt.C = -(elt.color = 1); - elt.size = elt.content ? elt.content.length : 0; - elt.start = 0; - elt.clsid = (elt.clsid || HEADER_CLSID); - if(i === 0) { - elt.C = data.length > 1 ? 1 : -1; - elt.size = 0; - elt.type = 5; - } else if(nm.slice(-1) == "/") { - for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break; - elt.C = j >= data.length ? -1 : j; - for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break; - elt.R = j >= data.length ? -1 : j; - elt.type = 1; - } else { - if(dirname(cfb.FullPaths[i+1]||"") == dirname(nm)) elt.R = i + 1; - elt.type = 2; - } - } - -} - -function _write(cfb, options) { - var _opts = options || {}; - /* MAD is order-sensitive, skip rebuild and sort */ - if(_opts.fileType == 'mad') return write_mad(cfb, _opts); - rebuild_cfb(cfb); - switch(_opts.fileType) { - case 'zip': return write_zip(cfb, _opts); - //case 'mad': return write_mad(cfb, _opts); - } - var L = (function(cfb){ - var mini_size = 0, fat_size = 0; - for(var i = 0; i < cfb.FileIndex.length; ++i) { - var file = cfb.FileIndex[i]; - if(!file.content) continue; -var flen = file.content.length; - if(flen > 0){ - if(flen < 0x1000) mini_size += (flen + 0x3F) >> 6; - else fat_size += (flen + 0x01FF) >> 9; - } - } - var dir_cnt = (cfb.FullPaths.length +3) >> 2; - var mini_cnt = (mini_size + 7) >> 3; - var mfat_cnt = (mini_size + 0x7F) >> 7; - var fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt; - var fat_cnt = (fat_base + 0x7F) >> 7; - var difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); - while(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); - var L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0]; - cfb.FileIndex[0].size = mini_size << 6; - L[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3); - return L; - })(cfb); - var o = new_buf(L[7] << 9); - var i = 0, T = 0; - { - for(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]); - for(i = 0; i < 8; ++i) o.write_shift(2, 0); - o.write_shift(2, 0x003E); - o.write_shift(2, 0x0003); - o.write_shift(2, 0xFFFE); - o.write_shift(2, 0x0009); - o.write_shift(2, 0x0006); - for(i = 0; i < 3; ++i) o.write_shift(2, 0); - o.write_shift(4, 0); - o.write_shift(4, L[2]); - o.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1); - o.write_shift(4, 0); - o.write_shift(4, 1<<12); - o.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN); - o.write_shift(4, L[3]); - o.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN); - o.write_shift(4, L[1]); - for(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); - } - if(L[1]) { - for(T = 0; T < L[1]; ++T) { - for(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); - o.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1); - } - } - var chainit = function(w) { - for(T += w; i> 9); - } - chainit((L[6] + 7) >> 3); - while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); - T = i = 0; - for(j = 0; j < cfb.FileIndex.length; ++j) { - file = cfb.FileIndex[j]; - if(!file.content) continue; -flen = file.content.length; - if(!flen || flen >= 0x1000) continue; - file.start = T; - chainit((flen + 0x3F) >> 6); - } - while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); - for(i = 0; i < L[4]<<2; ++i) { - var nm = cfb.FullPaths[i]; - if(!nm || nm.length === 0) { - for(j = 0; j < 17; ++j) o.write_shift(4, 0); - for(j = 0; j < 3; ++j) o.write_shift(4, -1); - for(j = 0; j < 12; ++j) o.write_shift(4, 0); - continue; - } - file = cfb.FileIndex[i]; - if(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN; - var _nm = (i === 0 && _opts.root) || file.name; - flen = 2*(_nm.length+1); - o.write_shift(64, _nm, "utf16le"); - o.write_shift(2, flen); - o.write_shift(1, file.type); - o.write_shift(1, file.color); - o.write_shift(-4, file.L); - o.write_shift(-4, file.R); - o.write_shift(-4, file.C); - if(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0); - else o.write_shift(16, file.clsid, "hex"); - o.write_shift(4, file.state || 0); - o.write_shift(4, 0); o.write_shift(4, 0); - o.write_shift(4, 0); o.write_shift(4, 0); - o.write_shift(4, file.start); - o.write_shift(4, file.size); o.write_shift(4, 0); - } - for(i = 1; i < cfb.FileIndex.length; ++i) { - file = cfb.FileIndex[i]; -if(file.size >= 0x1000) { - o.l = (file.start+1) << 9; - if (has_buf && Buffer.isBuffer(file.content)) { - file.content.copy(o, o.l, 0, file.size); - // o is a 0-filled Buffer so just set next offset - o.l += (file.size + 511) & -512; - } else { - for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); - for(; j & 0x1FF; ++j) o.write_shift(1, 0); - } - } - } - for(i = 1; i < cfb.FileIndex.length; ++i) { - file = cfb.FileIndex[i]; -if(file.size > 0 && file.size < 0x1000) { - if (has_buf && Buffer.isBuffer(file.content)) { - file.content.copy(o, o.l, 0, file.size); - // o is a 0-filled Buffer so just set next offset - o.l += (file.size + 63) & -64; - } else { - for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); - for(; j & 0x3F; ++j) o.write_shift(1, 0); - } - } - } - if (has_buf) { - o.l = o.length; - } else { - // When using Buffer, already 0-filled - while(o.l < o.length) o.write_shift(1, 0); - } - return o; -} -/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */ -function find(cfb, path) { - var UCFullPaths = cfb.FullPaths.map(function(x) { return x.toUpperCase(); }); - var UCPaths = UCFullPaths.map(function(x) { var y = x.split("/"); return y[y.length - (x.slice(-1) == "/" ? 2 : 1)]; }); - var k = false; - if(path.charCodeAt(0) === 47 /* "/" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; } - else k = path.indexOf("/") !== -1; - var UCPath = path.toUpperCase(); - var w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); - if(w !== -1) return cfb.FileIndex[w]; - - var m = !UCPath.match(chr1); - UCPath = UCPath.replace(chr0,''); - if(m) UCPath = UCPath.replace(chr1,'!'); - for(w = 0; w < UCFullPaths.length; ++w) { - if((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; - if((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; - } - return null; -} -/** CFB Constants */ -var MSSZ = 64; /* Mini Sector Size = 1<<6 */ -//var MSCSZ = 4096; /* Mini Stream Cutoff Size */ -/* 2.1 Compound File Sector Numbers and Types */ -var ENDOFCHAIN = -2; -/* 2.2 Compound File Header */ -var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; -var HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]; -var HEADER_CLSID = '00000000000000000000000000000000'; -var consts = { - /* 2.1 Compund File Sector Numbers and Types */ - MAXREGSECT: -6, - DIFSECT: -4, - FATSECT: -3, - ENDOFCHAIN: ENDOFCHAIN, - FREESECT: -1, - /* 2.2 Compound File Header */ - HEADER_SIGNATURE: HEADER_SIGNATURE, - HEADER_MINOR_VERSION: '3e00', - MAXREGSID: -6, - NOSTREAM: -1, - HEADER_CLSID: HEADER_CLSID, - /* 2.6.1 Compound File Directory Entry */ - EntryTypes: ['unknown','storage','stream','lockbytes','property','root'] -}; - -function write_file(cfb, filename, options) { - get_fs(); - var o = _write(cfb, options); -fs.writeFileSync(filename, o); -} - -function a2s(o) { - var out = new Array(o.length); - for(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]); - return out.join(""); -} - -function write(cfb, options) { - var o = _write(cfb, options); - switch(options && options.type || "buffer") { - case "file": get_fs(); fs.writeFileSync(options.filename, (o)); return o; - case "binary": return typeof o == "string" ? o : a2s(o); - case "base64": return Base64.encode(typeof o == "string" ? o : a2s(o)); - case "buffer": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o); - /* falls through */ - case "array": return typeof o == "string" ? s2a(o) : o; - } - return o; -} -/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */ -var _zlib; -function use_zlib(zlib) { try { - var InflateRaw = zlib.InflateRaw; - var InflRaw = new InflateRaw(); - InflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag); - if(InflRaw.bytesRead) _zlib = zlib; - else throw new Error("zlib does not expose bytesRead"); -} catch(e) {console.error("cannot use native zlib: " + (e.message || e)); } } - -function _inflateRawSync(payload, usz) { - if(!_zlib) return _inflate(payload, usz); - var InflateRaw = _zlib.InflateRaw; - var InflRaw = new InflateRaw(); - var out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag); - payload.l += InflRaw.bytesRead; - return out; -} - -function _deflateRawSync(payload) { - return _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload); -} -var CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; - -/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */ -var LEN_LN = [ 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 ]; - -/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */ -var DST_LN = [ 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 ]; - -function bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; } - -var use_typed_arrays = typeof Uint8Array !== 'undefined'; - -var bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : []; -for(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q); - -function bit_swap_n(n, b) { - var rev = bitswap8[n & 0xFF]; - if(b <= 8) return rev >>> (8-b); - rev = (rev << 8) | bitswap8[(n>>8)&0xFF]; - if(b <= 16) return rev >>> (16-b); - rev = (rev << 8) | bitswap8[(n>>16)&0xFF]; - return rev >>> (24-b); -} - -/* helpers for unaligned bit reads */ -function read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; } -function read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; } -function read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; } -function read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; } -function read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; } - -/* works up to n = 3 * 8 + 1 = 25 */ -function read_bits_n(buf, bl, n) { - var w = (bl&7), h = (bl>>>3), f = ((1<>> w; - if(n < 8 - w) return v & f; - v |= buf[h+1]<<(8-w); - if(n < 16 - w) return v & f; - v |= buf[h+2]<<(16-w); - if(n < 24 - w) return v & f; - v |= buf[h+3]<<(24-w); - return v & f; -} - -/* helpers for unaligned bit writes */ -function write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3; - if(w <= 5) buf[h] |= (v & 7) << w; - else { - buf[h] |= (v << w) & 0xFF; - buf[h+1] = (v&7) >> (8-w); - } - return bl + 3; -} - -function write_bits_1(buf, bl, v) { - var w = bl & 7, h = bl >>> 3; - v = (v&1) << w; - buf[h] |= v; - return bl + 1; -} -function write_bits_8(buf, bl, v) { - var w = bl & 7, h = bl >>> 3; - v <<= w; - buf[h] |= v & 0xFF; v >>>= 8; - buf[h+1] = v; - return bl + 8; -} -function write_bits_16(buf, bl, v) { - var w = bl & 7, h = bl >>> 3; - v <<= w; - buf[h] |= v & 0xFF; v >>>= 8; - buf[h+1] = v & 0xFF; - buf[h+2] = v >>> 8; - return bl + 16; -} - -/* until ArrayBuffer#realloc is a thing, fake a realloc */ -function realloc(b, sz) { - var L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0; - if(L >= sz) return b; - if(has_buf) { - var o = new_unsafe_buf(M); - // $FlowIgnore - if(b.copy) b.copy(o); - else for(; i < b.length; ++i) o[i] = b[i]; - return o; - } else if(use_typed_arrays) { - var a = new Uint8Array(M); - if(a.set) a.set(b); - else for(; i < L; ++i) a[i] = b[i]; - return a; - } - b.length = M; - return b; -} - -/* zero-filled arrays for older browsers */ -function zero_fill_array(n) { - var o = new Array(n); - for(var i = 0; i < n; ++i) o[i] = 0; - return o; -} - -/* build tree (used for literals and lengths) */ -function build_tree(clens, cmap, MAX) { - var maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length; - - var bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32); - for(i = 0; i < 32; ++i) bl_count[i] = 0; - - for(i = L; i < MAX; ++i) clens[i] = 0; - L = clens.length; - - var ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // [] - - /* build code tree */ - for(i = 0; i < L; ++i) { - bl_count[(w = clens[i])]++; - if(maxlen < w) maxlen = w; - ctree[i] = 0; - } - bl_count[0] = 0; - for(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1); - for(i = 0; i < L; ++i) { - ccode = clens[i]; - if(ccode != 0) ctree[i] = bl_count[ccode+16]++; - } - - /* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */ - var cleni = 0; - for(i = 0; i < L; ++i) { - cleni = clens[i]; - if(cleni != 0) { - ccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni); - for(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j) - cmap[ccode|(j< 0) out[out.l++] = data[boff++]; - } - return out.l; - } - - /* Fixed Huffman */ - function write_huff_fixed(data, out) { - var bl = 0; - var boff = 0; - var addrs = use_typed_arrays ? new Uint16Array(0x8000) : []; - while(boff < data.length) { - var L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff); - - /* write a stored block for short data */ - if(L < 10) { - bl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line - if(bl & 7) bl += 8 - (bl & 7); - out.l = (bl / 8) | 0; - out.write_shift(2, L); - out.write_shift(2, (~L) & 0xFFFF); - while(L-- > 0) out[out.l++] = data[boff++]; - bl = out.l * 8; - continue; - } - - bl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line - var hash = 0; - while(L-- > 0) { - var d = data[boff]; - hash = ((hash << 5) ^ d) & 0x7FFF; - - var match = -1, mlen = 0; - - if((match = addrs[hash])) { - match |= boff & ~0x7FFF; - if(match > boff) match -= 0x8000; - if(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen; - } - - if(mlen > 2) { - /* Copy Token */ - d = LEN_LN_RE[mlen]; - if(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1; - else { - write_bits_8(out, bl, 3); - bl += 5; - write_bits_8(out, bl, bitswap8[d-23]>>5); - bl += 3; - } - var len_eb = (d < 8) ? 0 : ((d - 4)>>2); - if(len_eb > 0) { - write_bits_16(out, bl, mlen - LEN_LN[d]); - bl += len_eb; - } - - d = DST_LN_RE[boff - match]; - bl = write_bits_8(out, bl, bitswap8[d]>>3); - bl -= 3; - - var dst_eb = d < 4 ? 0 : (d-2)>>1; - if(dst_eb > 0) { - write_bits_16(out, bl, boff - match - DST_LN[d]); - bl += dst_eb; - } - for(var q = 0; q < mlen; ++q) { - addrs[hash] = boff & 0x7FFF; - hash = ((hash << 5) ^ data[boff]) & 0x7FFF; - ++boff; - } - L-= mlen - 1; - } else { - /* Literal Token */ - if(d <= 143) d = d + 48; - else bl = write_bits_1(out, bl, 1); - bl = write_bits_8(out, bl, bitswap8[d]); - addrs[hash] = boff & 0x7FFF; - ++boff; - } - } - - bl = write_bits_8(out, bl, 0) - 1; - } - out.l = ((bl + 7)/8)|0; - return out.l; - } - return function _deflateRaw(data, out) { - if(data.length < 8) return write_stored(data, out); - return write_huff_fixed(data, out); - }; -})(); - -function _deflate(data) { - var buf = new_buf(50+Math.floor(data.length*1.1)); - var off = _deflateRaw(data, buf); - return buf.slice(0, off); -} -/* modified inflate function also moves original read head */ - -var dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); -var dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); -var dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128); -var dyn_len_1 = 1, dyn_len_2 = 1; - -/* 5.5.3 Expanding Huffman Codes */ -function dyn(data, boff) { - /* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */ - var _HLIT = read_bits_5(data, boff) + 257; boff += 5; - var _HDIST = read_bits_5(data, boff) + 1; boff += 5; - var _HCLEN = read_bits_4(data, boff) + 4; boff += 4; - var w = 0; - - /* grab and store code lengths */ - var clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19); - var ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; - var maxlen = 1; - var bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); - var next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); - var L = clens.length; /* 19 */ - for(var i = 0; i < _HCLEN; ++i) { - clens[CLEN_ORDER[i]] = w = read_bits_3(data, boff); - if(maxlen < w) maxlen = w; - bl_count[w]++; - boff += 3; - } - - /* build code tree */ - var ccode = 0; - bl_count[0] = 0; - for(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1; - for(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++; - /* cmap[7 bits from stream] = (off&7) + (lit<<3) */ - var cleni = 0; - for(i = 0; i < L; ++i) { - cleni = clens[i]; - if(cleni != 0) { - ccode = bitswap8[ctree[i]]>>(8-cleni); - for(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<>>= 3)) { - case 16: - w = 3 + read_bits_2(data, boff); boff += 2; - ccode = hcodes[hcodes.length - 1]; - while(w-- > 0) hcodes.push(ccode); - break; - case 17: - w = 3 + read_bits_3(data, boff); boff += 3; - while(w-- > 0) hcodes.push(0); - break; - case 18: - w = 11 + read_bits_7(data, boff); boff += 7; - while(w -- > 0) hcodes.push(0); - break; - default: - hcodes.push(ccode); - if(maxlen < ccode) maxlen = ccode; - break; - } - } - - /* build literal / length trees */ - var h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT); - for(i = _HLIT; i < 286; ++i) h1[i] = 0; - for(i = _HDIST; i < 30; ++i) h2[i] = 0; - dyn_len_1 = build_tree(h1, dyn_lmap, 286); - dyn_len_2 = build_tree(h2, dyn_dmap, 30); - return boff; -} - -/* return [ data, bytesRead ] */ -function inflate(data, usz) { - /* shortcircuit for empty buffer [0x03, 0x00] */ - if(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; } - - /* bit offset */ - var boff = 0; - - /* header includes final bit and type bits */ - var header = 0; - - var outbuf = new_unsafe_buf(usz ? usz : (1<<18)); - var woff = 0; - var OL = outbuf.length>>>0; - var max_len_1 = 0, max_len_2 = 0; - - while((header&1) == 0) { - header = read_bits_3(data, boff); boff += 3; - if((header >>> 1) == 0) { - /* Stored block */ - if(boff & 7) boff += 8 - (boff&7); - /* 2 bytes sz, 2 bytes bit inverse */ - var sz = data[boff>>>3] | data[(boff>>>3)+1]<<8; - boff += 32; - /* push sz bytes */ - if(sz > 0) { - if(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; } - while(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; } - } - continue; - } else if((header >> 1) == 1) { - /* Fixed Huffman */ - max_len_1 = 9; max_len_2 = 5; - } else { - /* Dynamic Huffman */ - boff = dyn(data, boff); - max_len_1 = dyn_len_1; max_len_2 = dyn_len_2; - } - for(;;) { // while(true) is apparently out of vogue in modern JS circles - if(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; } - /* ingest code and move read head */ - var bits = read_bits_n(data, boff, max_len_1); - var code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits]; - boff += code & 15; code >>>= 4; - /* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */ - if(((code>>>8)&0xFF) === 0) outbuf[woff++] = code; - else if(code == 256) break; - else { - code -= 257; - var len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0; - var tgt = woff + LEN_LN[code]; - /* length extra bits */ - if(len_eb > 0) { - tgt += read_bits_n(data, boff, len_eb); - boff += len_eb; - } - - /* dist code */ - bits = read_bits_n(data, boff, max_len_2); - code = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits]; - boff += code & 15; code >>>= 4; - var dst_eb = (code < 4 ? 0 : (code-2)>>1); - var dst = DST_LN[code]; - /* dist extra bits */ - if(dst_eb > 0) { - dst += read_bits_n(data, boff, dst_eb); - boff += dst_eb; - } - - /* in the common case, manual byte copy is faster than TA set / Buffer copy */ - if(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; } - while(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; } - } - } - } - if(usz) return [outbuf, (boff+7)>>>3]; - return [outbuf.slice(0, woff), (boff+7)>>>3]; -} - -function _inflate(payload, usz) { - var data = payload.slice(payload.l||0); - var out = inflate(data, usz); - payload.l += out[1]; - return out[0]; -} - -function warn_or_throw(wrn, msg) { - if(wrn) { if(typeof console !== 'undefined') console.error(msg); } - else throw new Error(msg); -} - -function parse_zip(file, options) { - var blob = file; - prep_blob(blob, 0); - - var FileIndex = [], FullPaths = []; - var o = { - FileIndex: FileIndex, - FullPaths: FullPaths - }; - init_cfb(o, { root: options.root }); - - /* find end of central directory, start just after signature */ - var i = blob.length - 4; - while((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i; - blob.l = i + 4; - - /* parse end of central directory */ - blob.l += 4; - var fcnt = blob.read_shift(2); - blob.l += 6; - var start_cd = blob.read_shift(4); - - /* parse central directory */ - blob.l = start_cd; - - for(i = 0; i < fcnt; ++i) { - /* trust local file header instead of CD entry */ - blob.l += 20; - var csz = blob.read_shift(4); - var usz = blob.read_shift(4); - var namelen = blob.read_shift(2); - var efsz = blob.read_shift(2); - var fcsz = blob.read_shift(2); - blob.l += 8; - var offset = blob.read_shift(4); - var EF = parse_extra_field(blob.slice(blob.l+namelen, blob.l+namelen+efsz)); - blob.l += namelen + efsz + fcsz; - - var L = blob.l; - blob.l = offset + 4; - parse_local_file(blob, csz, usz, o, EF); - blob.l = L; - } - return o; -} - - -/* head starts just after local file header signature */ -function parse_local_file(blob, csz, usz, o, EF) { - /* [local file header] */ - blob.l += 2; - var flags = blob.read_shift(2); - var meth = blob.read_shift(2); - var date = parse_dos_date(blob); - - if(flags & 0x2041) throw new Error("Unsupported ZIP encryption"); - var crc32 = blob.read_shift(4); - var _csz = blob.read_shift(4); - var _usz = blob.read_shift(4); - - var namelen = blob.read_shift(2); - var efsz = blob.read_shift(2); - - // TODO: flags & (1<<11) // UTF8 - var name = ""; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]); - if(efsz) { - var ef = parse_extra_field(blob.slice(blob.l, blob.l + efsz)); - if((ef[0x5455]||{}).mt) date = ef[0x5455].mt; - if(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt; - } - blob.l += efsz; - - /* [encryption header] */ - - /* [file data] */ - var data = blob.slice(blob.l, blob.l + _csz); - switch(meth) { - case 8: data = _inflateRawSync(blob, _usz); break; - case 0: break; // TODO: scan for magic number - default: throw new Error("Unsupported ZIP Compression method " + meth); - } - - /* [data descriptor] */ - var wrn = false; - if(flags & 8) { - crc32 = blob.read_shift(4); - if(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; } - _csz = blob.read_shift(4); - _usz = blob.read_shift(4); - } - - if(_csz != csz) warn_or_throw(wrn, "Bad compressed size: " + csz + " != " + _csz); - if(_usz != usz) warn_or_throw(wrn, "Bad uncompressed size: " + usz + " != " + _usz); - //var _crc32 = CRC32.buf(data, 0); - //if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, "Bad CRC32 checksum: " + crc32 + " != " + _crc32); - cfb_add(o, name, data, {unsafe: true, mt: date}); -} -function write_zip(cfb, options) { - var _opts = options || {}; - var out = [], cdirs = []; - var o = new_buf(1); - var method = (_opts.compression ? 8 : 0), flags = 0; - var desc = false; - if(desc) flags |= 8; - var i = 0, j = 0; - - var start_cd = 0, fcnt = 0; - var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; - var crcs = []; - var sz_cd = 0; - - for(i = 1; i < cfb.FullPaths.length; ++i) { - fp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i]; - if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; - var start = start_cd; - - /* TODO: CP437 filename */ - var namebuf = new_buf(fp.length); - for(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F); - namebuf = namebuf.slice(0, namebuf.l); - crcs[fcnt] = CRC32.buf(fi.content, 0); - - var outbuf = fi.content; - if(method == 8) outbuf = _deflateRawSync(outbuf); - - /* local file header */ - o = new_buf(30); - o.write_shift(4, 0x04034b50); - o.write_shift(2, 20); - o.write_shift(2, flags); - o.write_shift(2, method); - /* TODO: last mod file time/date */ - if(fi.mt) write_dos_date(o, fi.mt); - else o.write_shift(4, 0); - o.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]); - o.write_shift(4, (flags & 8) ? 0 : outbuf.length); - o.write_shift(4, (flags & 8) ? 0 : fi.content.length); - o.write_shift(2, namebuf.length); - o.write_shift(2, 0); - - start_cd += o.length; - out.push(o); - start_cd += namebuf.length; - out.push(namebuf); - - /* TODO: extra fields? */ - - /* TODO: encryption header ? */ - - start_cd += outbuf.length; - out.push(outbuf); - - /* data descriptor */ - if(flags & 8) { - o = new_buf(12); - o.write_shift(-4, crcs[fcnt]); - o.write_shift(4, outbuf.length); - o.write_shift(4, fi.content.length); - start_cd += o.l; - out.push(o); - } - - /* central directory */ - o = new_buf(46); - o.write_shift(4, 0x02014b50); - o.write_shift(2, 0); - o.write_shift(2, 20); - o.write_shift(2, flags); - o.write_shift(2, method); - o.write_shift(4, 0); /* TODO: last mod file time/date */ - o.write_shift(-4, crcs[fcnt]); - - o.write_shift(4, outbuf.length); - o.write_shift(4, fi.content.length); - o.write_shift(2, namebuf.length); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(4, 0); - o.write_shift(4, start); - - sz_cd += o.l; - cdirs.push(o); - sz_cd += namebuf.length; - cdirs.push(namebuf); - ++fcnt; - } - - /* end of central directory */ - o = new_buf(22); - o.write_shift(4, 0x06054b50); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(2, fcnt); - o.write_shift(2, fcnt); - o.write_shift(4, sz_cd); - o.write_shift(4, start_cd); - o.write_shift(2, 0); - - return bconcat(([bconcat((out)), bconcat(cdirs), o])); -} -var ContentTypeMap = ({ - "htm": "text/html", - "xml": "text/xml", - - "gif": "image/gif", - "jpg": "image/jpeg", - "png": "image/png", - - "mso": "application/x-mso", - "thmx": "application/vnd.ms-officetheme", - "sh33tj5": "application/octet-stream" -}); - -function get_content_type(fi, fp) { - if(fi.ctype) return fi.ctype; - - var ext = fi.name || "", m = ext.match(/\.([^\.]+)$/); - if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; - - if(fp) { - m = (ext = fp).match(/[\.\\]([^\.\\])+$/); - if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; - } - - return "application/octet-stream"; -} - -/* 76 character chunks TODO: intertwine encoding */ -function write_base64_76(bstr) { - var data = Base64.encode(bstr); - var o = []; - for(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76)); - return o.join("\r\n") + "\r\n"; -} - -/* -Rules for QP: - - escape =## applies for all non-display characters and literal "=" - - space or tab at end of line must be encoded - - \r\n newlines can be preserved, but bare \r and \n must be escaped - - lines must not exceed 76 characters, use soft breaks =\r\n - -TODO: Some files from word appear to write line extensions with bare equals: - -``` - 0) { - root = root.slice(0, root.length - 1); - root = root.slice(0, root.lastIndexOf("/") + 1); - if(row.slice(0,root.length) == root) break; - } - } - - var mboundary = (data[1] || "").match(/boundary="(.*?)"/); - if(!mboundary) throw new Error("MAD cannot find boundary"); - var boundary = "--" + (mboundary[1] || ""); - - var FileIndex = [], FullPaths = []; - var o = { - FileIndex: FileIndex, - FullPaths: FullPaths - }; - init_cfb(o); - var start_di, fcnt = 0; - for(di = 0; di < data.length; ++di) { - var line = data[di]; - if(line !== boundary && line !== boundary + "--") continue; - if(fcnt++) parse_mime(o, data.slice(start_di, di), root); - start_di = di; - } - return o; -} - -function write_mad(cfb, options) { - var opts = options || {}; - var boundary = opts.boundary || "SheetJS"; - boundary = '------=' + boundary; - - var out = [ - 'MIME-Version: 1.0', - 'Content-Type: multipart/related; boundary="' + boundary.slice(2) + '"', - '', - '', - '' - ]; - - var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; - for(var i = 1; i < cfb.FullPaths.length; ++i) { - fp = cfb.FullPaths[i].slice(root.length); - fi = cfb.FileIndex[i]; - if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; - - /* Normalize filename */ - fp = fp.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g, function(c) { - return "_x" + c.charCodeAt(0).toString(16) + "_"; - }).replace(/[\u0080-\uFFFF]/g, function(u) { - return "_u" + u.charCodeAt(0).toString(16) + "_"; - }); - - /* Extract content as binary string */ - var ca = fi.content; - // $FlowIgnore - var cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString("binary") : a2s(ca); - - /* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */ - var dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0; - for(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt; - var qp = dispcnt >= L * 4 / 5; - - out.push(boundary); - out.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp); - out.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64')); - out.push('Content-Type: ' + get_content_type(fi, fp)); - out.push(''); - - out.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr)); - } - out.push(boundary + '--\r\n'); - return out.join("\r\n"); -} -function cfb_new(opts) { - var o = ({}); - init_cfb(o, opts); - return o; -} - -function cfb_add(cfb, name, content, opts) { - var unsafe = opts && opts.unsafe; - if(!unsafe) init_cfb(cfb); - var file = !unsafe && CFB.find(cfb, name); - if(!file) { - var fpath = cfb.FullPaths[0]; - if(name.slice(0, fpath.length) == fpath) fpath = name; - else { - if(fpath.slice(-1) != "/") fpath += "/"; - fpath = (fpath + name).replace("//","/"); - } - file = ({name: filename(name), type: 2}); - cfb.FileIndex.push(file); - cfb.FullPaths.push(fpath); - if(!unsafe) CFB.utils.cfb_gc(cfb); - } -file.content = (content); - file.size = content ? content.length : 0; - if(opts) { - if(opts.CLSID) file.clsid = opts.CLSID; - if(opts.mt) file.mt = opts.mt; - if(opts.ct) file.ct = opts.ct; - } - return file; -} - -function cfb_del(cfb, name) { - init_cfb(cfb); - var file = CFB.find(cfb, name); - if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { - cfb.FileIndex.splice(j, 1); - cfb.FullPaths.splice(j, 1); - return true; - } - return false; -} - -function cfb_mov(cfb, old_name, new_name) { - init_cfb(cfb); - var file = CFB.find(cfb, old_name); - if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { - cfb.FileIndex[j].name = filename(new_name); - cfb.FullPaths[j] = new_name; - return true; - } - return false; -} - -function cfb_gc(cfb) { rebuild_cfb(cfb, true); } - -exports.find = find; -exports.read = read; -exports.parse = parse; -exports.write = write; -exports.writeFile = write_file; -exports.utils = { - cfb_new: cfb_new, - cfb_add: cfb_add, - cfb_del: cfb_del, - cfb_mov: cfb_mov, - cfb_gc: cfb_gc, - ReadShift: ReadShift, - CheckField: CheckField, - prep_blob: prep_blob, - bconcat: bconcat, - use_zlib: use_zlib, - _deflateRaw: _deflate, - _inflateRaw: _inflate, - consts: consts -}; - -return exports; -})(); - -if(typeof require !== 'undefined' && typeof module !== 'undefined' && typeof DO_NOT_EXPORT_CFB === 'undefined') { module.exports = CFB; } -var _fs; -if(typeof require !== 'undefined') try { _fs = require('fs'); } catch(e) {} - -/* normalize data for blob ctor */ -function blobify(data) { - if(typeof data === "string") return s2ab(data); - if(Array.isArray(data)) return a2u(data); - return data; -} -/* write or download file */ -function write_dl(fname, payload, enc) { - /*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */ - if(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload); - if(typeof Deno !== 'undefined') { - /* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */ - if(enc) switch(enc) { - case "utf8": payload = new TextEncoder(enc).encode(payload); break; - case "binary": payload = s2ab(payload); break; - /* TODO: binary equivalent */ - default: throw new Error("Unsupported encoding " + enc); - } - return Deno.writeFileSync(fname, payload); - } - var data = (enc == "utf8") ? utf8write(payload) : payload; -if(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname); - if(typeof Blob !== 'undefined') { - var blob = new Blob([blobify(data)], {type:"application/octet-stream"}); -if(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname); -if(typeof saveAs !== 'undefined') return saveAs(blob, fname); - if(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) { - var url = URL.createObjectURL(blob); -if(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == "function") { - if(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000); - return chrome.downloads.download({ url: url, filename: fname, saveAs: true}); - } - var a = document.createElement("a"); - if(a.download != null) { -a.download = fname; a.href = url; document.body.appendChild(a); a.click(); -document.body.removeChild(a); - if(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000); - return url; - } - } - } - // $FlowIgnore - if(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript - // $FlowIgnore - var out = File(fname); out.open("w"); out.encoding = "binary"; - if(Array.isArray(payload)) payload = a2s(payload); - out.write(payload); out.close(); return payload; - } catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; } - throw new Error("cannot save file " + fname); -} - -/* read binary data from file */ -function read_binary(path) { - if(typeof _fs !== 'undefined') return _fs.readFileSync(path); - if(typeof Deno !== 'undefined') return Deno.readFileSync(path); - // $FlowIgnore - if(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript - // $FlowIgnore - var infile = File(path); infile.open("r"); infile.encoding = "binary"; - var data = infile.read(); infile.close(); - return data; - } catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; } - throw new Error("Cannot access file " + path); -} -function keys(o) { - var ks = Object.keys(o), o2 = []; - for(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]); - return o2; -} - -function evert_key(obj, key) { - var o = ([]), K = keys(obj); - for(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i]; - return o; -} - -function evert(obj) { - var o = ([]), K = keys(obj); - for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i]; - return o; -} - -function evert_num(obj) { - var o = ([]), K = keys(obj); - for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10); - return o; -} - -function evert_arr(obj) { - var o = ([]), K = keys(obj); - for(var i = 0; i !== K.length; ++i) { - if(o[obj[K[i]]] == null) o[obj[K[i]]] = []; - o[obj[K[i]]].push(K[i]); - } - return o; -} - -var basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000 -function datenum(v, date1904) { - var epoch = v.getTime(); - if(date1904) epoch -= 1462*24*60*60*1000; - var dnthresh = basedate.getTime() + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; - return (epoch - dnthresh) / (24 * 60 * 60 * 1000); -} -var refdate = new Date(); -var dnthresh = basedate.getTime() + (refdate.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; -var refoffset = refdate.getTimezoneOffset(); -function numdate(v) { - var out = new Date(); - out.setTime(v * 24 * 60 * 60 * 1000 + dnthresh); - if (out.getTimezoneOffset() !== refoffset) { - out.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000); - } - return out; -} - -/* ISO 8601 Duration */ -function parse_isodur(s) { - var sec = 0, mt = 0, time = false; - var m = s.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/); - if(!m) throw new Error("|" + s + "| is not an ISO8601 Duration"); - for(var i = 1; i != m.length; ++i) { - if(!m[i]) continue; - mt = 1; - if(i > 3) time = true; - switch(m[i].slice(m[i].length-1)) { - case 'Y': - throw new Error("Unsupported ISO Duration Field: " + m[i].slice(m[i].length-1)); - case 'D': mt *= 24; - /* falls through */ - case 'H': mt *= 60; - /* falls through */ - case 'M': - if(!time) throw new Error("Unsupported ISO Duration Field: M"); - else mt *= 60; - /* falls through */ - case 'S': break; - } - sec += mt * parseInt(m[i], 10); - } - return sec; -} - -var good_pd_date = new Date('2017-02-19T19:06:09.000Z'); -if(isNaN(good_pd_date.getFullYear())) good_pd_date = new Date('2/19/17'); -var good_pd = good_pd_date.getFullYear() == 2017; -/* parses a date as a local date */ -function parseDate(str, fixdate) { - var d = new Date(str); - if(good_pd) { -if(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000); - else if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000); - return d; - } - if(str instanceof Date) return str; - if(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) { - var s = d.getFullYear(); - if(str.indexOf("" + s) > -1) return d; - d.setFullYear(d.getFullYear() + 100); return d; - } - var n = str.match(/\d+/g)||["2017","2","19","0","0","0"]; - var out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0)); - if(str.indexOf("Z") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000); - return out; -} - -function cc2str(arr, debomit) { - if(has_buf && Buffer.isBuffer(arr)) { - if(debomit) { - if(arr[0] == 0xFF && arr[1] == 0xFE) return arr.slice(2).toString("utf16le"); - if(arr[1] == 0xFE && arr[2] == 0xFF) return utf16beread(arr.slice(2).toString("binary")); - } - return arr.toString("binary"); - } - /* TODO: investigate performance degradation of TextEncoder in Edge 13 */ - var o = []; - for(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i])); - return o.join(""); -} - -function dup(o) { - if(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o)); - if(typeof o != 'object' || o == null) return o; - if(o instanceof Date) return new Date(o.getTime()); - var out = {}; - for(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]); - return out; -} - -function fill(c,l) { var o = ""; while(o.length < l) o+=c; return o; } - -/* TODO: stress test */ -function fuzzynum(s) { - var v = Number(s); - if(isFinite(v)) return v; - if(!isNaN(v)) return NaN; - if(!/\d/.test(s)) return v; - var wt = 1; - var ss = s.replace(/([\d]),([\d])/g,"$1$2").replace(/[$]/g,"").replace(/[%]/g, function() { wt *= 100; return "";}); - if(!isNaN(v = Number(ss))) return v / wt; - ss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;}); - if(!isNaN(v = Number(ss))) return v / wt; - return v; -} -var lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']; -function fuzzydate(s) { - var o = new Date(s), n = new Date(NaN); - var y = o.getYear(), m = o.getMonth(), d = o.getDate(); - if(isNaN(d)) return n; - var lower = s.toLowerCase(); - if(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) { - lower = lower.replace(/[^a-z]/g,"").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,""); - if(lower.length > 3 && lower_months.indexOf(lower) == -1) return n; - } else if(lower.match(/[a-z]/)) return n; - if(y < 0 || y > 8099) return n; - if((m > 0 || d > 1) && y != 101) return o; - if(s.match(/[^-0-9:,\/\\]/)) return n; - return o; -} - -var safe_split_regex = "abacaba".split(/(:?b)/i).length == 5; -function split_regex(str, re, def) { - if(safe_split_regex || typeof re == "string") return str.split(re); - var p = str.split(re), o = [p[0]]; - for(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); } - return o; -} -function getdatastr(data) { - if(!data) return null; - if(data.content && data.type) return cc2str(data.content, true); - if(data.data) return debom(data.data); - if(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary')); - if(data.asBinary) return debom(data.asBinary()); - if(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0))); - return null; -} - -function getdatabin(data) { - if(!data) return null; - if(data.data) return char_codes(data.data); - if(data.asNodeBuffer && has_buf) return data.asNodeBuffer(); - if(data._data && data._data.getContent) { - var o = data._data.getContent(); - if(typeof o == "string") return char_codes(o); - return Array.prototype.slice.call(o); - } - if(data.content && data.type) return data.content; - return null; -} - -function getdata(data) { return (data && data.name.slice(-4) === ".bin") ? getdatabin(data) : getdatastr(data); } - -/* Part 2 Section 10.1.2 "Mapping Content Types" Names are case-insensitive */ -/* OASIS does not comment on filename case sensitivity */ -function safegetzipfile(zip, file) { - var k = zip.FullPaths || keys(zip.files); - var f = file.toLowerCase().replace(/[\/]/g, '\\'), g = f.replace(/\\/g,'\/'); - for(var i=0; i\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g; -var tagregex=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg; - -if(!(XML_HEADER.match(tagregex))) tagregex = /<[^>]*>/g; -var nsregex=/<\w*:/, nsregex2 = /<(\/?)\w+:/; -function parsexmltag(tag, skip_root, skip_LC) { - var z = ({}); - var eq = 0, c = 0; - for(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break; - if(!skip_root) z[0] = tag.slice(0, eq); - if(eq === tag.length) return z; - var m = tag.match(attregexg), j=0, v="", i=0, q="", cc="", quot = 1; - if(m) for(i = 0; i != m.length; ++i) { - cc = m[i]; - for(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break; - q = cc.slice(0,c).trim(); - while(cc.charCodeAt(c+1) == 32) ++c; - quot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0; - v = cc.slice(c+1+quot, cc.length-quot); - for(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break; - if(j===q.length) { - if(q.indexOf("_") > 0) q = q.slice(0, q.indexOf("_")); // from ods - z[q] = v; - if(!skip_LC) z[q.toLowerCase()] = v; - } - else { - var k = (j===5 && q.slice(0,5)==="xmlns"?"xmlns":"")+q.slice(j+1); - if(z[k] && q.slice(j-3,j) == "ext") continue; // from ods - z[k] = v; - if(!skip_LC) z[k.toLowerCase()] = v; - } - } - return z; -} -function strip_ns(x) { return x.replace(nsregex2, "<$1"); } - -var encodings = { - '"': '"', - ''': "'", - '>': '>', - '<': '<', - '&': '&' -}; -var rencoding = evert(encodings); -//var rencstr = "&<>'\"".split(""); - -// TODO: CP remap (need to read file version to determine OS) -var unescapexml = (function() { - /* 22.4.2.4 bstr (Basic String) */ - var encregex = /&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig, coderegex = /_x([\da-fA-F]{4})_/ig; - return function unescapexml(text) { - var s = text + '', i = s.indexOf("-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));}); - var j = s.indexOf("]]>"); - return unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3)); - }; -})(); - -var decregex=/[&<>'"]/g, charegex = /[\u0000-\u0008\u000b-\u001f]/g; -function escapexml(text){ - var s = text + ''; - return s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return "_x" + ("000"+s.charCodeAt(0).toString(16)).slice(-4) + "_";}); -} -function escapexmltag(text){ return escapexml(text).replace(/ /g,"_x0020_"); } - -var htmlcharegex = /[\u0000-\u001f]/g; -function escapehtml(text){ - var s = text + ''; - return s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\n/g, "
").replace(htmlcharegex,function(s) { return "&#x" + ("000"+s.charCodeAt(0).toString(16)).slice(-4) + ";"; }); -} - -function escapexlml(text){ - var s = text + ''; - return s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return "&#x" + (s.charCodeAt(0).toString(16)).toUpperCase() + ";"; }); -} - -/* TODO: handle codepages */ -var xlml_fixstr = (function() { - var entregex = /&#(\d+);/g; - function entrepl($$,$1) { return String.fromCharCode(parseInt($1,10)); } - return function xlml_fixstr(str) { return str.replace(entregex,entrepl); }; -})(); -var xlml_unfixstr = (function() { - return function xlml_unfixstr(str) { return str.replace(/(\r\n|[\r\n])/g,"\ "); }; -})(); - -function parsexmlbool(value) { - switch(value) { - case 1: case true: case '1': case 'true': case 'TRUE': return true; - /* case '0': case 'false': case 'FALSE':*/ - default: return false; - } -} - -var utf8read = function utf8reada(orig) { - var out = "", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0; - while (i < orig.length) { - c = orig.charCodeAt(i++); - if (c < 128) { out += String.fromCharCode(c); continue; } - d = orig.charCodeAt(i++); - if (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; } - e = orig.charCodeAt(i++); - if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; } - f = orig.charCodeAt(i++); - w = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536; - out += String.fromCharCode(0xD800 + ((w>>>10)&1023)); - out += String.fromCharCode(0xDC00 + (w&1023)); - } - return out; -}; - -var utf8write = function(orig) { - var out = [], i = 0, c = 0, d = 0; - while(i < orig.length) { - c = orig.charCodeAt(i++); - switch(true) { - case c < 128: out.push(String.fromCharCode(c)); break; - case c < 2048: - out.push(String.fromCharCode(192 + (c >> 6))); - out.push(String.fromCharCode(128 + (c & 63))); - break; - case c >= 55296 && c < 57344: - c -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10); - out.push(String.fromCharCode(240 + ((d >>18) & 7))); - out.push(String.fromCharCode(144 + ((d >>12) & 63))); - out.push(String.fromCharCode(128 + ((d >> 6) & 63))); - out.push(String.fromCharCode(128 + (d & 63))); - break; - default: - out.push(String.fromCharCode(224 + (c >> 12))); - out.push(String.fromCharCode(128 + ((c >> 6) & 63))); - out.push(String.fromCharCode(128 + (c & 63))); - } - } - return out.join(""); -}; - -if(has_buf) { - var utf8readb = function utf8readb(data) { - var out = Buffer.alloc(2*data.length), w, i, j = 1, k = 0, ww=0, c; - for(i = 0; i < data.length; i+=j) { - j = 1; - if((c=data.charCodeAt(i)) < 128) w = c; - else if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; } - else if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; } - else { j = 4; - w = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63); - w -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023); - } - if(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; } - out[k++] = w%256; out[k++] = w>>>8; - } - return out.slice(0,k).toString('ucs2'); - }; - var corpus = "foo bar baz\u00e2\u0098\u0083\u00f0\u009f\u008d\u00a3"; - if(utf8read(corpus) == utf8readb(corpus)) utf8read = utf8readb; - var utf8readc = function utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }; - if(utf8read(corpus) == utf8readc(corpus)) utf8read = utf8readc; - - utf8write = function(data) { return Buffer_from(data, 'utf8').toString("binary"); }; -} - -// matches ... extracts content -var matchtag = (function() { - var mtcache = ({}); - return function matchtag(f,g) { - var t = f+"|"+(g||""); - if(mtcache[t]) return mtcache[t]; - return (mtcache[t] = new RegExp('<(?:\\w+:)?'+f+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)',((g||"")))); - }; -})(); - -var htmldecode = (function() { - var entities = [ - ['nbsp', ' '], ['middot', '·'], - ['quot', '"'], ['apos', "'"], ['gt', '>'], ['lt', '<'], ['amp', '&'] - ].map(function(x) { return [new RegExp('&' + x[0] + ';', "ig"), x[1]]; }); - return function htmldecode(str) { - var o = str - // Remove new lines and spaces from start of content - .replace(/^[\t\n\r ]+/, "") - // Remove new lines and spaces from end of content - .replace(/[\t\n\r ]+$/,"") - // Added line which removes any white space characters after and before html tags - .replace(/>\s+/g,">").replace(/\s+ tags with new lines - .replace(/<\s*[bB][rR]\s*\/?>/g,"\n") - // Strip HTML elements - .replace(/<[^>]*>/g,""); - for(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]); - return o; - }; -})(); - -var vtregex = (function(){ var vt_cache = {}; - return function vt_regex(bt) { - if(vt_cache[bt] !== undefined) return vt_cache[bt]; - return (vt_cache[bt] = new RegExp("<(?:vt:)?" + bt + ">([\\s\\S]*?)", 'g') ); -};})(); -var vtvregex = /<\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\s\S]*)' + g + ''; } - -function wxt_helper(h) { return keys(h).map(function(k) { return " " + k + '="' + h[k] + '"';}).join(""); } -function writextag(f,g,h) { return '<' + f + ((h != null) ? wxt_helper(h) : "") + ((g != null) ? (g.match(wtregex)?' xml:space="preserve"' : "") + '>' + g + '';} - -function write_w3cdtf(d, t) { try { return d.toISOString().replace(/\.\d*/,""); } catch(e) { if(t) throw e; } return ""; } - -function write_vt(s, xlsx) { - switch(typeof s) { - case 'string': - var o = writextag('vt:lpwstr', escapexml(s)); - if(xlsx) o = o.replace(/"/g, "_x0022_"); - return o; - case 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s))); - case 'boolean': return writextag('vt:bool',s?'true':'false'); - } - if(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s)); - throw new Error("Unable to serialize " + s); -} - -var XMLNS = ({ - 'dc': 'http://purl.org/dc/elements/1.1/', - 'dcterms': 'http://purl.org/dc/terms/', - 'dcmitype': 'http://purl.org/dc/dcmitype/', - 'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main', - 'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - 'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties', - 'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', - 'xsd': 'http://www.w3.org/2001/XMLSchema' -}); - -XMLNS.main = [ - 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - 'http://purl.oclc.org/ooxml/spreadsheetml/main', - 'http://schemas.microsoft.com/office/excel/2006/main', - 'http://schemas.microsoft.com/office/excel/2006/2' -]; - -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] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f); - var m = (b[idx+6]&0x0f); - for(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i]; - if(e == 0x7ff) 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 = 0x7ff; m = isNaN(v) ? 0x6969 : 0; } - else if(av == 0) e = m = 0; - else { - e = Math.floor(Math.log(av) / Math.LN2); - m = av * 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 & 0xff; - b[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf); - b[idx + 7] = (e >> 4) | bs; -} - -var __toBuffer = function(bufs) { var x=[],w=10240; for(var i=0;i 0 ? __utf8(b, i+4,i+4+len-1) : "";}; -var ___lpstr = __lpstr; -var __cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; -var ___cpstr = __cpstr; -var __lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; -var ___lpwstr = __lpwstr; -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 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : "";}; -var ___8lpp4 = __8lpp4; -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) || (typeof Uint8Array !== "undefined" && a instanceof Uint8Array); }; - -if(has_buf) { - __utf16le = function(b,s,e) { if(!Buffer.isBuffer(b)) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; }; - __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) : "";}; - __cpstr = function cpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___cpstr(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 (Buffer.isBuffer(b)) ? b.toString('utf8',s,e) : ___utf8(b,s,e); }; - __toBuffer = function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);}; - bconcat = function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); }; - __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) || (typeof Uint8Array !== "undefined" && a instanceof Uint8Array); }; -} - -/* from js-xls */ -function cpdoit() { - __utf16le = function(b,s,e) { return cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); }; - __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_ansi, b.slice(i+4, i+4+len-1)) : "";}; - __cpstr = 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 ? cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : "";}; -} -if(typeof cptable !== 'undefined') cpdoit(); - -var __readUInt8 = function(b, idx) { return b[idx]; }; -var __readUInt16LE = function(b, idx) { return (b[idx+1]*(1<<8))+b[idx]; }; -var __readInt16LE = function(b, idx) { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); }; -var __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; -var __readInt32LE = function(b, idx) { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; }; -var __readInt32BE = function(b, idx) { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; }; - -function ReadShift(size, t) { - var o="", oI, oR, oo=[], w, vv, i, loc; - switch(t) { - case 'dbcs': - loc = this.l; - if(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString("utf16le"); - else for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; } - size *= 2; - break; - - case 'utf8': o = __utf8(this, this.l, this.l + size); break; - case 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break; - - case 'wstr': - if(typeof cptable !== 'undefined') o = cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size)); - else return ReadShift.call(this, size, 'dbcs'); - size = 2 * size; break; - - /* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */ - case 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break; - case 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break; - /* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */ - case 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break; - /* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */ - case 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break; - /* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */ - case '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break; - - case 'cstr': size = 0; o = ""; - while((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w)); - o = oo.join(""); break; - case '_wstr': size = 0; o = ""; - while((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;} - size+=2; o = oo.join(""); break; - - /* sbcs and dbcs support continue records in the SST way TODO codepages */ - case 'dbcs-cont': o = ""; loc = this.l; - for(i = 0; i < size; ++i) { - if(this.lens && this.lens.indexOf(loc) !== -1) { - w = __readUInt8(this, loc); - this.l = loc + 1; - vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); - return oo.join("") + vv; - } - oo.push(_getchar(__readUInt16LE(this, loc))); - loc+=2; - } o = oo.join(""); size *= 2; break; - - case 'cpstr': - if(typeof cptable !== 'undefined') { - o = cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size)); - break; - } - /* falls through */ - case 'sbcs-cont': o = ""; loc = this.l; - for(i = 0; i != size; ++i) { - if(this.lens && this.lens.indexOf(loc) !== -1) { - w = __readUInt8(this, loc); - this.l = loc + 1; - vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); - return oo.join("") + vv; - } - oo.push(_getchar(__readUInt8(this, loc))); - loc+=1; - } o = oo.join(""); break; - - default: - switch(size) { - case 1: oI = __readUInt8(this, this.l); this.l++; return oI; - case 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI; - case 4: case -4: - if(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; } - else { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR; - case 8: case -8: - if(t === 'f') { - if(size == 8) oR = __double(this, this.l); - else oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0); - this.l += 8; return oR; - } else size = 8; - /* falls through */ - case 16: o = __hexlify(this, this.l, size); break; - }} - this.l+=size; return o; -} - -var __writeUInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); }; -var __writeInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); }; -var __writeUInt16LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); }; - -function WriteShift(t, val, f) { - var size = 0, i = 0; - if(f === 'dbcs') { -for(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i); - size = 2 * val.length; - } else if(f === 'sbcs') { - if(typeof cptable !== 'undefined' && current_ansi == 874) { - /* TODO: use tables directly, don't encode */ -for(i = 0; i != val.length; ++i) { - var cppayload = cptable.utils.encode(current_ansi, val.charAt(i)); - this[this.l + i] = cppayload[0]; - } - } else { -val = val.replace(/[^\x00-\x7F]/g, "_"); -for(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF); - } - size = val.length; - } else if(f === 'hex') { - for(; i < t; ++i) { -this[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0); - } return this; - } else if(f === 'utf16le') { -var end = Math.min(this.l + t, this.length); - for(i = 0; i < Math.min(val.length, t); ++i) { - var cc = val.charCodeAt(i); - this[this.l++] = (cc & 0xff); - this[this.l++] = (cc >> 8); - } - while(this.l < end) this[this.l++] = 0; - return this; - } else switch(t) { - case 1: size = 1; this[this.l] = val&0xFF; break; - case 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break; - case 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break; - case 4: size = 4; __writeUInt32LE(this, val, this.l); break; - case 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; } - /* falls through */ - case 16: break; - case -4: size = 4; __writeInt32LE(this, val, this.l); break; - } - this.l += size; return this; -} - -function CheckField(hexstr, fld) { - var m = __hexlify(this,this.l,hexstr.length>>1); - if(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m); - this.l += hexstr.length>>1; -} - -function prep_blob(blob, pos) { - blob.l = pos; - blob.read_shift = ReadShift; - blob.chk = CheckField; - blob.write_shift = WriteShift; -} - -function parsenoop(blob, length) { blob.l += length; } - -function new_buf(sz) { - var o = new_raw_buf(sz); - prep_blob(o, 0); - return o; -} - -/* [MS-XLSB] 2.1.4 Record */ -function recordhopper(data, cb, opts) { - if(!data) return; - var tmpbyte, cntbyte, length; - prep_blob(data, data.l || 0); - var L = data.length, RT = 0, tgt = 0; - while(data.l < L) { - RT = data.read_shift(1); - if(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7); - var R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF]; - tmpbyte = data.read_shift(1); - length = tmpbyte & 0x7F; - for(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte); - tgt = data.l + length; - var d = R.f && R.f(data, length, opts); - data.l = tgt; - if(cb(d, R.n, RT)) return; - } -} - -/* control buffer usage for fixed-length buffers */ -function buf_array() { - var bufs = [], blksz = has_buf ? 256 : 2048; - var newblk = function ba_newblk(sz) { - var o = (new_buf(sz)); - prep_blob(o, 0); - return o; - }; - - var curbuf = newblk(blksz); - - var endbuf = function ba_endbuf() { - if(!curbuf) return; - if(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; } - if(curbuf.length > 0) bufs.push(curbuf); - curbuf = null; - }; - - var next = function ba_next(sz) { - if(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf; - endbuf(); - return (curbuf = newblk(Math.max(sz+1, blksz))); - }; - - var end = function ba_end() { - endbuf(); - return bconcat(bufs); - }; - - var push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); }; - - return ({ next:next, push:push, end:end, _bufs:bufs }); -} - -function write_record(ba, type, payload, length) { - if(!XLSBRE) make_XLSBRE(); - var t = +XLSBRE[type], l; - if(isNaN(t)) return; // TODO: throw something here? - if(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0; - l = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/; - if(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l; - var o = ba.next(l); - if(t <= 0x7F) o.write_shift(1, t); - else { - o.write_shift(1, (t & 0x7F) + 0x80); - o.write_shift(1, (t >> 7)); - } - for(var i = 0; i != 4; ++i) { - if(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; } - else { o.write_shift(1, length); break; } - } - if(length > 0 && is_buf(payload)) ba.push(payload); -} -/* XLS ranges enforced */ -function shift_cell_xls(cell, tgt, opts) { - var out = dup(cell); - if(tgt.s) { - if(out.cRel) out.c += tgt.s.c; - if(out.rRel) out.r += tgt.s.r; - } else { - if(out.cRel) out.c += tgt.c; - if(out.rRel) out.r += tgt.r; - } - if(!opts || opts.biff < 12) { - while(out.c >= 0x100) out.c -= 0x100; - while(out.r >= 0x10000) out.r -= 0x10000; - } - return out; -} - -function shift_range_xls(cell, range, opts) { - var out = dup(cell); - out.s = shift_cell_xls(out.s, range.s, opts); - out.e = shift_cell_xls(out.e, range.s, opts); - return out; -} - -function encode_cell_xls(c, biff) { - if(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; } - if(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); } - var s = encode_cell(c); - if(!c.cRel && c.cRel != null) s = fix_col(s); - if(!c.rRel && c.rRel != null) s = fix_row(s); - return s; -} - -function encode_range_xls(r, opts) { - if(r.s.r == 0 && !r.s.rRel) { - if(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) { - return (r.s.cRel ? "" : "$") + encode_col(r.s.c) + ":" + (r.e.cRel ? "" : "$") + encode_col(r.e.c); - } - } - if(r.s.c == 0 && !r.s.cRel) { - if(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) { - return (r.s.rRel ? "" : "$") + encode_row(r.s.r) + ":" + (r.e.rRel ? "" : "$") + encode_row(r.e.r); - } - } - return encode_cell_xls(r.s, opts.biff) + ":" + encode_cell_xls(r.e, opts.biff); -} -var OFFCRYPTO = {}; - -var make_offcrypto = function(O, _crypto) { - var crypto; - if(typeof _crypto !== 'undefined') crypto = _crypto; - else if(typeof require !== 'undefined') { - try { crypto = undefined; } - catch(e) { crypto = null; } - } - - O.rc4 = function(key, data) { - var S = new Array(256); - var c = 0, i = 0, j = 0, t = 0; - for(i = 0; i != 256; ++i) S[i] = i; - for(i = 0; i != 256; ++i) { - j = (j + S[i] + (key[i%key.length]).charCodeAt(0))&255; - t = S[i]; S[i] = S[j]; S[j] = t; - } - // $FlowIgnore - i = j = 0; var out = new_raw_buf(data.length); - for(c = 0; c != data.length; ++c) { - i = (i + 1)&255; - j = (j + S[i])%256; - t = S[i]; S[i] = S[j]; S[j] = t; - out[c] = (data[c] ^ S[(S[i]+S[j])&255]); - } - return out; - }; - - O.md5 = function(hex) { - if(!crypto) throw new Error("Unsupported crypto"); - return crypto.createHash('md5').update(hex).digest('hex'); - }; -}; -/*global crypto:true */ -make_offcrypto(OFFCRYPTO, typeof crypto !== "undefined" ? crypto : undefined); - -function decode_row(rowstr) { return parseInt(unfix_row(rowstr),10) - 1; } -function encode_row(row) { return "" + (row + 1); } -function fix_row(cstr) { return cstr.replace(/([A-Z]|^)(\d+)$/,"$1$$$2"); } -function unfix_row(cstr) { return cstr.replace(/\$(\d+)$/,"$1"); } - -function decode_col(colstr) { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; } -function encode_col(col) { if(col < 0) throw new Error("invalid column " + col); var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; } -function fix_col(cstr) { return cstr.replace(/^([A-Z])/,"$$$1"); } -function unfix_col(cstr) { return cstr.replace(/^\$([A-Z])/,"$1"); } - -function split_cell(cstr) { return cstr.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(","); } -//function decode_cell(cstr) { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; } -function decode_cell(cstr) { - var R = 0, C = 0; - for(var i = 0; i < cstr.length; ++i) { - var cc = cstr.charCodeAt(i); - if(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48); - else if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64); - } - return { c: C - 1, r:R - 1 }; -} -//function encode_cell(cell) { return encode_col(cell.c) + encode_row(cell.r); } -function encode_cell(cell) { - var col = cell.c + 1; - var s=""; - for(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s; - return s + (cell.r + 1); -} -function decode_range(range) { - var idx = range.indexOf(":"); - if(idx == -1) return { s: decode_cell(range), e: decode_cell(range) }; - return { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) }; -} -function encode_range(cs,ce) { - if(typeof ce === 'undefined' || typeof ce === 'number') { -return encode_range(cs.s, cs.e); - } -if(typeof cs !== 'string') cs = encode_cell((cs)); - if(typeof ce !== 'string') ce = encode_cell((ce)); -return cs == ce ? cs : cs + ":" + ce; -} - -function safe_decode_range(range) { - var o = {s:{c:0,r:0},e:{c:0,r:0}}; - var idx = 0, i = 0, cc = 0; - var len = range.length; - for(idx = 0; i < len; ++i) { - if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; - idx = 26*idx + cc; - } - o.s.c = --idx; - - for(idx = 0; i < len; ++i) { - if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; - idx = 10*idx + cc; - } - o.s.r = --idx; - - if(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; } - ++i; - - for(idx = 0; i != len; ++i) { - if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; - idx = 26*idx + cc; - } - o.e.c = --idx; - - for(idx = 0; i != len; ++i) { - if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; - idx = 10*idx + cc; - } - o.e.r = --idx; - return o; -} - -function safe_format_cell(cell, v) { - var q = (cell.t == 'd' && v instanceof Date); - if(cell.z != null) try { return (cell.w = SSF.format(cell.z, q ? datenum(v) : v)); } catch(e) { } - try { return (cell.w = SSF.format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; } -} - -function format_cell(cell, v, o) { - if(cell == null || cell.t == null || cell.t == 'z') return ""; - if(cell.w !== undefined) return cell.w; - if(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF; - if(cell.t == "e") return BErr[cell.v] || cell.v; - if(v == undefined) return safe_format_cell(cell, cell.v); - return safe_format_cell(cell, v); -} - -function sheet_to_workbook(sheet, opts) { - var n = opts && opts.sheet ? opts.sheet : "Sheet1"; - var sheets = {}; sheets[n] = sheet; - return { SheetNames: [n], Sheets: sheets }; -} - -function sheet_add_aoa(_ws, data, opts) { - var o = opts || {}; - var dense = _ws ? Array.isArray(_ws) : o.dense; - if(DENSE != null && dense == null) dense = DENSE; - var ws = _ws || (dense ? ([]) : ({})); - var _R = 0, _C = 0; - if(ws && o.origin != null) { - if(typeof o.origin == 'number') _R = o.origin; - else { - var _origin = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin; - _R = _origin.r; _C = _origin.c; - } - if(!ws["!ref"]) ws["!ref"] = "A1:A1"; - } - var range = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}); - if(ws['!ref']) { - var _range = safe_decode_range(ws['!ref']); - range.s.c = _range.s.c; - range.s.r = _range.s.r; - range.e.c = Math.max(range.e.c, _range.e.c); - range.e.r = Math.max(range.e.r, _range.e.r); - if(_R == -1) range.e.r = _R = _range.e.r + 1; - } - for(var R = 0; R != data.length; ++R) { - if(!data[R]) continue; - if(!Array.isArray(data[R])) throw new Error("aoa_to_sheet expects an array of arrays"); - for(var C = 0; C != data[R].length; ++C) { - if(typeof data[R][C] === 'undefined') continue; - var cell = ({v: data[R][C] }); - var __R = _R + R, __C = _C + C; - if(range.s.r > __R) range.s.r = __R; - if(range.s.c > __C) range.s.c = __C; - if(range.e.r < __R) range.e.r = __R; - if(range.e.c < __C) range.e.c = __C; - if(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C]; - else { - if(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; } - if(cell.v === null) { - if(cell.f) cell.t = 'n'; - else if(o.nullError) { cell.t = 'e'; cell.v = 0; } - else if(!o.sheetStubs) continue; - else cell.t = 'z'; - } - else if(typeof cell.v === 'number') cell.t = 'n'; - else if(typeof cell.v === 'boolean') cell.t = 'b'; - else if(cell.v instanceof Date) { - cell.z = o.dateNF || SSF._table[14]; - if(o.cellDates) { cell.t = 'd'; cell.w = SSF.format(cell.z, datenum(cell.v)); } - else { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF.format(cell.z, cell.v); } - } - else cell.t = 's'; - } - if(dense) { - if(!ws[__R]) ws[__R] = []; - if(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z; - ws[__R][__C] = cell; - } else { - var cell_ref = encode_cell(({c:__C,r:__R})); - if(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z; - ws[cell_ref] = cell; - } - } - } - if(range.s.c < 10000000) ws['!ref'] = encode_range(range); - return ws; -} -function aoa_to_sheet(data, opts) { return sheet_add_aoa(null, data, opts); } - -function write_UInt32LE(x, o) { - if (!o) o = new_buf(4); - o.write_shift(4, x); - return o; -} - -/* [MS-XLSB] 2.5.168 */ -function parse_XLWideString(data) { - var cchCharacters = data.read_shift(4); - return cchCharacters === 0 ? "" : data.read_shift(cchCharacters, 'dbcs'); -} -function write_XLWideString(data, o) { - var _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); } - o.write_shift(4, data.length); - if (data.length > 0) o.write_shift(0, data, 'dbcs'); - return _null ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.5.91 */ -//function parse_LPWideString(data) { -// var cchCharacters = data.read_shift(2); -// return cchCharacters === 0 ? "" : data.read_shift(cchCharacters, "utf16le"); -//} - -/* [MS-XLSB] 2.5.143 */ -function parse_StrRun(data) { - return { ich: data.read_shift(2), ifnt: data.read_shift(2) }; -} -function write_StrRun(run, o) { - if (!o) o = new_buf(4); - o.write_shift(2, run.ich || 0); - o.write_shift(2, run.ifnt || 0); - return o; -} - -/* [MS-XLSB] 2.5.121 */ -function parse_RichStr(data, length) { - var start = data.l; - var flags = data.read_shift(1); - var str = parse_XLWideString(data); - var rgsStrRun = []; - var z = ({ t: str, h: str }); - if ((flags & 1) !== 0) { /* fRichStr */ - /* TODO: formatted string */ - var dwSizeStrRun = data.read_shift(4); - for (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data)); - z.r = rgsStrRun; - } - else z.r = [{ ich: 0, ifnt: 0 }]; - //if((flags & 2) !== 0) { /* fExtStr */ - // /* TODO: phonetic string */ - //} - data.l = start + length; - return z; -} -function write_RichStr(str, o) { - /* TODO: formatted string */ - var _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); } - o.write_shift(1, 0); - write_XLWideString(str.t, o); - return _null ? o.slice(0, o.l) : o; -} -/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */ -var parse_BrtCommentText = parse_RichStr; -function write_BrtCommentText(str, o) { - /* TODO: formatted string */ - var _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); } - o.write_shift(1, 1); - write_XLWideString(str.t, o); - o.write_shift(4, 1); - write_StrRun({ ich: 0, ifnt: 0 }, o); - return _null ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.5.9 */ -function parse_XLSBCell(data) { - var col = data.read_shift(4); - var iStyleRef = data.read_shift(2); - iStyleRef += data.read_shift(1) << 16; - data.l++; //var fPhShow = data.read_shift(1); - return { c: col, iStyleRef: iStyleRef }; -} -function write_XLSBCell(cell, o) { - if (o == null) o = new_buf(8); - o.write_shift(-4, cell.c); - o.write_shift(3, cell.iStyleRef || cell.s); - o.write_shift(1, 0); /* fPhShow */ - return o; -} - -/* Short XLSB Cell does not include column */ -function parse_XLSBShortCell(data) { - var iStyleRef = data.read_shift(2); - iStyleRef += data.read_shift(1) <<16; - data.l++; //var fPhShow = data.read_shift(1); - return { c:-1, iStyleRef: iStyleRef }; -} -function write_XLSBShortCell(cell, o) { - if(o == null) o = new_buf(4); - o.write_shift(3, cell.iStyleRef || cell.s); - o.write_shift(1, 0); /* fPhShow */ - return o; -} - -/* [MS-XLSB] 2.5.21 */ -var parse_XLSBCodeName = parse_XLWideString; -var write_XLSBCodeName = write_XLWideString; - -/* [MS-XLSB] 2.5.166 */ -function parse_XLNullableWideString(data) { - var cchCharacters = data.read_shift(4); - return cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? "" : data.read_shift(cchCharacters, 'dbcs'); -} -function write_XLNullableWideString(data, o) { - var _null = false; if (o == null) { _null = true; o = new_buf(127); } - o.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF); - if (data.length > 0) o.write_shift(0, data, 'dbcs'); - return _null ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.5.165 */ -var parse_XLNameWideString = parse_XLWideString; -//var write_XLNameWideString = write_XLWideString; - -/* [MS-XLSB] 2.5.114 */ -var parse_RelID = parse_XLNullableWideString; -var write_RelID = write_XLNullableWideString; - - -/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */ -function parse_RkNumber(data) { - var b = data.slice(data.l, data.l + 4); - var fX100 = (b[0] & 1), fInt = (b[0] & 2); - data.l += 4; - var RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2; - return fX100 ? (RK / 100) : RK; -} -function write_RkNumber(data, o) { - if (o == null) o = new_buf(4); - var fX100 = 0, fInt = 0, d100 = data * 100; - if ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; } - else if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; } - if (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2)); - else throw new Error("unsupported RkNumber " + data); // TODO -} - - -/* [MS-XLSB] 2.5.117 RfX */ -function parse_RfX(data ) { - var cell = ({ s: {}, e: {} }); - cell.s.r = data.read_shift(4); - cell.e.r = data.read_shift(4); - cell.s.c = data.read_shift(4); - cell.e.c = data.read_shift(4); - return cell; -} -function write_RfX(r, o) { - if (!o) o = new_buf(16); - o.write_shift(4, r.s.r); - o.write_shift(4, r.e.r); - o.write_shift(4, r.s.c); - o.write_shift(4, r.e.c); - return o; -} - -/* [MS-XLSB] 2.5.153 UncheckedRfX */ -var parse_UncheckedRfX = parse_RfX; -var write_UncheckedRfX = write_RfX; - -/* [MS-XLSB] 2.5.155 UncheckedSqRfX */ -//function parse_UncheckedSqRfX(data) { -// var cnt = data.read_shift(4); -// var out = []; -// for(var i = 0; i < cnt; ++i) { -// var rng = parse_UncheckedRfX(data); -// out.push(encode_range(rng)); -// } -// return out.join(","); -//} -//function write_UncheckedSqRfX(sqrfx) { -// var parts = sqrfx.split(/\s*,\s*/); -// var o = new_buf(4); o.write_shift(4, parts.length); -// var out = [o]; -// parts.forEach(function(rng) { -// out.push(write_UncheckedRfX(safe_decode_range(rng))); -// }); -// return bconcat(out); -//} - -/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */ -/* TODO: error checking, NaN and Infinity values are not valid Xnum */ -function parse_Xnum(data) { - if(data.length - data.l < 8) throw "XLS Xnum Buffer underflow"; - return data.read_shift(8, 'f'); -} -function write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); } - -/* [MS-XLSB] 2.4.324 BrtColor */ -function parse_BrtColor(data) { - var out = {}; - var d = data.read_shift(1); - - //var fValidRGB = d & 1; - var xColorType = d >>> 1; - - var index = data.read_shift(1); - var nTS = data.read_shift(2, 'i'); - var bR = data.read_shift(1); - var bG = data.read_shift(1); - var bB = data.read_shift(1); - data.l++; //var bAlpha = data.read_shift(1); - - switch (xColorType) { - case 0: out.auto = 1; break; - case 1: - out.index = index; - var icv = XLSIcv[index]; - /* automatic pseudo index 81 */ - if (icv) out.rgb = rgb2Hex(icv); - break; - case 2: - /* if(!fValidRGB) throw new Error("invalid"); */ - out.rgb = rgb2Hex([bR, bG, bB]); - break; - case 3: out.theme = index; break; - } - if (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768; - - return out; -} -function write_BrtColor(color, o) { - if (!o) o = new_buf(8); - if (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; } - if (color.index != null) { - o.write_shift(1, 0x02); - o.write_shift(1, color.index); - } else if (color.theme != null) { - o.write_shift(1, 0x06); - o.write_shift(1, color.theme); - } else { - o.write_shift(1, 0x05); - o.write_shift(1, 0); - } - var nTS = color.tint || 0; - if (nTS > 0) nTS *= 32767; - else if (nTS < 0) nTS *= 32768; - o.write_shift(2, nTS); - if (!color.rgb || color.theme != null) { - o.write_shift(2, 0); - o.write_shift(1, 0); - o.write_shift(1, 0); - } else { - var rgb = (color.rgb || 'FFFFFF'); - if (typeof rgb == 'number') rgb = ("000000" + rgb.toString(16)).slice(-6); - o.write_shift(1, parseInt(rgb.slice(0, 2), 16)); - o.write_shift(1, parseInt(rgb.slice(2, 4), 16)); - o.write_shift(1, parseInt(rgb.slice(4, 6), 16)); - o.write_shift(1, 0xFF); - } - return o; -} - -/* [MS-XLSB] 2.5.52 */ -function parse_FontFlags(data) { - var d = data.read_shift(1); - data.l++; - var out = { - fBold: d & 0x01, - fItalic: d & 0x02, - fUnderline: d & 0x04, - fStrikeout: d & 0x08, - fOutline: d & 0x10, - fShadow: d & 0x20, - fCondense: d & 0x40, - fExtend: d & 0x80 - }; - return out; -} -function write_FontFlags(font, o) { - if (!o) o = new_buf(2); - var grbit = - (font.italic ? 0x02 : 0) | - (font.strike ? 0x08 : 0) | - (font.outline ? 0x10 : 0) | - (font.shadow ? 0x20 : 0) | - (font.condense ? 0x40 : 0) | - (font.extend ? 0x80 : 0); - o.write_shift(1, grbit); - o.write_shift(1, 0); - return o; -} - -/* [MS-OLEDS] 2.3.1 and 2.3.2 */ -function parse_ClipboardFormatOrString(o, w) { - // $FlowIgnore - var ClipFmt = { 2: "BITMAP", 3: "METAFILEPICT", 8: "DIB", 14: "ENHMETAFILE" }; - var m = o.read_shift(4); - switch (m) { - case 0x00000000: return ""; - case 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || ""; - } - if (m > 0x190) throw new Error("Unsupported Clipboard: " + m.toString(16)); - o.l -= 4; - return o.read_shift(0, w == 1 ? "lpstr" : "lpwstr"); -} -function parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); } -function parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); } - -/* [MS-OLEPS] 2.2 PropertyType */ -//var VT_EMPTY = 0x0000; -//var VT_NULL = 0x0001; -var VT_I2 = 0x0002; -var VT_I4 = 0x0003; -//var VT_R4 = 0x0004; -//var VT_R8 = 0x0005; -//var VT_CY = 0x0006; -//var VT_DATE = 0x0007; -//var VT_BSTR = 0x0008; -//var VT_ERROR = 0x000A; -var VT_BOOL = 0x000B; -var VT_VARIANT = 0x000C; -//var VT_DECIMAL = 0x000E; -//var VT_I1 = 0x0010; -//var VT_UI1 = 0x0011; -//var VT_UI2 = 0x0012; -var VT_UI4 = 0x0013; -//var VT_I8 = 0x0014; -//var VT_UI8 = 0x0015; -//var VT_INT = 0x0016; -//var VT_UINT = 0x0017; -var VT_LPSTR = 0x001E; -//var VT_LPWSTR = 0x001F; -var VT_FILETIME = 0x0040; -var VT_BLOB = 0x0041; -//var VT_STREAM = 0x0042; -//var VT_STORAGE = 0x0043; -//var VT_STREAMED_Object = 0x0044; -//var VT_STORED_Object = 0x0045; -//var VT_BLOB_Object = 0x0046; -var VT_CF = 0x0047; -//var VT_CLSID = 0x0048; -//var VT_VERSIONED_STREAM = 0x0049; -var VT_VECTOR = 0x1000; -//var VT_ARRAY = 0x2000; - -var VT_STRING = 0x0050; // 2.3.3.1.11 VtString -var VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString -var VT_CUSTOM = [VT_STRING, VT_USTR]; - -/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */ -var DocSummaryPIDDSI = { -0x01: { n: 'CodePage', t: VT_I2 }, -0x02: { n: 'Category', t: VT_STRING }, -0x03: { n: 'PresentationFormat', t: VT_STRING }, -0x04: { n: 'ByteCount', t: VT_I4 }, -0x05: { n: 'LineCount', t: VT_I4 }, -0x06: { n: 'ParagraphCount', t: VT_I4 }, -0x07: { n: 'SlideCount', t: VT_I4 }, -0x08: { n: 'NoteCount', t: VT_I4 }, -0x09: { n: 'HiddenCount', t: VT_I4 }, -0x0a: { n: 'MultimediaClipCount', t: VT_I4 }, -0x0b: { n: 'ScaleCrop', t: VT_BOOL }, -0x0c: { n: 'HeadingPairs', t: VT_VECTOR | VT_VARIANT }, -0x0d: { n: 'TitlesOfParts', t: VT_VECTOR | VT_LPSTR }, -0x0e: { n: 'Manager', t: VT_STRING }, -0x0f: { n: 'Company', t: VT_STRING }, -0x10: { n: 'LinksUpToDate', t: VT_BOOL }, -0x11: { n: 'CharacterCount', t: VT_I4 }, -0x13: { n: 'SharedDoc', t: VT_BOOL }, -0x16: { n: 'HyperlinksChanged', t: VT_BOOL }, -0x17: { n: 'AppVersion', t: VT_I4, p: 'version' }, -0x18: { n: 'DigSig', t: VT_BLOB }, -0x1A: { n: 'ContentType', t: VT_STRING }, -0x1B: { n: 'ContentStatus', t: VT_STRING }, -0x1C: { n: 'Language', t: VT_STRING }, -0x1D: { n: 'Version', t: VT_STRING }, -0xFF: {}, - /* [MS-OLEPS] 2.18 */ -0x80000000: { n: 'Locale', t: VT_UI4 }, -0x80000003: { n: 'Behavior', t: VT_UI4 }, -0x72627262: {} -}; - -/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */ -var SummaryPIDSI = { -0x01: { n: 'CodePage', t: VT_I2 }, -0x02: { n: 'Title', t: VT_STRING }, -0x03: { n: 'Subject', t: VT_STRING }, -0x04: { n: 'Author', t: VT_STRING }, -0x05: { n: 'Keywords', t: VT_STRING }, -0x06: { n: 'Comments', t: VT_STRING }, -0x07: { n: 'Template', t: VT_STRING }, -0x08: { n: 'LastAuthor', t: VT_STRING }, -0x09: { n: 'RevNumber', t: VT_STRING }, -0x0A: { n: 'EditTime', t: VT_FILETIME }, -0x0B: { n: 'LastPrinted', t: VT_FILETIME }, -0x0C: { n: 'CreatedDate', t: VT_FILETIME }, -0x0D: { n: 'ModifiedDate', t: VT_FILETIME }, -0x0E: { n: 'PageCount', t: VT_I4 }, -0x0F: { n: 'WordCount', t: VT_I4 }, -0x10: { n: 'CharCount', t: VT_I4 }, -0x11: { n: 'Thumbnail', t: VT_CF }, -0x12: { n: 'Application', t: VT_STRING }, -0x13: { n: 'DocSecurity', t: VT_I4 }, -0xFF: {}, - /* [MS-OLEPS] 2.18 */ -0x80000000: { n: 'Locale', t: VT_UI4 }, -0x80000003: { n: 'Behavior', t: VT_UI4 }, -0x72627262: {} -}; - -var DocSummaryRE = evert_key(DocSummaryPIDDSI, "n"); -var SummaryRE = evert_key(SummaryPIDSI, "n"); - -/* [MS-XLS] 2.4.63 Country/Region codes */ -var CountryEnum = { -0x0001: "US", // United States -0x0002: "CA", // Canada -0x0003: "", // Latin America (except Brazil) -0x0007: "RU", // Russia -0x0014: "EG", // Egypt -0x001E: "GR", // Greece -0x001F: "NL", // Netherlands -0x0020: "BE", // Belgium -0x0021: "FR", // France -0x0022: "ES", // Spain -0x0024: "HU", // Hungary -0x0027: "IT", // Italy -0x0029: "CH", // Switzerland -0x002B: "AT", // Austria -0x002C: "GB", // United Kingdom -0x002D: "DK", // Denmark -0x002E: "SE", // Sweden -0x002F: "NO", // Norway -0x0030: "PL", // Poland -0x0031: "DE", // Germany -0x0034: "MX", // Mexico -0x0037: "BR", // Brazil -0x003d: "AU", // Australia -0x0040: "NZ", // New Zealand -0x0042: "TH", // Thailand -0x0051: "JP", // Japan -0x0052: "KR", // Korea -0x0054: "VN", // Viet Nam -0x0056: "CN", // China -0x005A: "TR", // Turkey -0x0069: "JS", // Ramastan -0x00D5: "DZ", // Algeria -0x00D8: "MA", // Morocco -0x00DA: "LY", // Libya -0x015F: "PT", // Portugal -0x0162: "IS", // Iceland -0x0166: "FI", // Finland -0x01A4: "CZ", // Czech Republic -0x0376: "TW", // Taiwan -0x03C1: "LB", // Lebanon -0x03C2: "JO", // Jordan -0x03C3: "SY", // Syria -0x03C4: "IQ", // Iraq -0x03C5: "KW", // Kuwait -0x03C6: "SA", // Saudi Arabia -0x03CB: "AE", // United Arab Emirates -0x03CC: "IL", // Israel -0x03CE: "QA", // Qatar -0x03D5: "IR", // Iran -0xFFFF: "US" // United States -}; - -/* [MS-XLS] 2.5.127 */ -var XLSFillPattern = [ - null, - 'solid', - 'mediumGray', - 'darkGray', - 'lightGray', - 'darkHorizontal', - 'darkVertical', - 'darkDown', - 'darkUp', - 'darkGrid', - 'darkTrellis', - 'lightHorizontal', - 'lightVertical', - 'lightDown', - 'lightUp', - 'lightGrid', - 'lightTrellis', - 'gray125', - 'gray0625' -]; - -function rgbify(arr) { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); } - -/* [MS-XLS] 2.5.161 */ -/* [MS-XLSB] 2.5.75 Icv */ -var _XLSIcv = rgbify([ - /* Color Constants */ - 0x000000, - 0xFFFFFF, - 0xFF0000, - 0x00FF00, - 0x0000FF, - 0xFFFF00, - 0xFF00FF, - 0x00FFFF, - - /* Overridable Defaults */ - 0x000000, - 0xFFFFFF, - 0xFF0000, - 0x00FF00, - 0x0000FF, - 0xFFFF00, - 0xFF00FF, - 0x00FFFF, - - 0x800000, - 0x008000, - 0x000080, - 0x808000, - 0x800080, - 0x008080, - 0xC0C0C0, - 0x808080, - 0x9999FF, - 0x993366, - 0xFFFFCC, - 0xCCFFFF, - 0x660066, - 0xFF8080, - 0x0066CC, - 0xCCCCFF, - - 0x000080, - 0xFF00FF, - 0xFFFF00, - 0x00FFFF, - 0x800080, - 0x800000, - 0x008080, - 0x0000FF, - 0x00CCFF, - 0xCCFFFF, - 0xCCFFCC, - 0xFFFF99, - 0x99CCFF, - 0xFF99CC, - 0xCC99FF, - 0xFFCC99, - - 0x3366FF, - 0x33CCCC, - 0x99CC00, - 0xFFCC00, - 0xFF9900, - 0xFF6600, - 0x666699, - 0x969696, - 0x003366, - 0x339966, - 0x003300, - 0x333300, - 0x993300, - 0x993366, - 0x333399, - 0x333333, - - /* Other entries to appease BIFF8/12 */ - 0xFFFFFF, /* 0x40 icvForeground ?? */ - 0x000000, /* 0x41 icvBackground ?? */ - 0x000000, /* 0x42 icvFrame ?? */ - 0x000000, /* 0x43 icv3D ?? */ - 0x000000, /* 0x44 icv3DText ?? */ - 0x000000, /* 0x45 icv3DHilite ?? */ - 0x000000, /* 0x46 icv3DShadow ?? */ - 0x000000, /* 0x47 icvHilite ?? */ - 0x000000, /* 0x48 icvCtlText ?? */ - 0x000000, /* 0x49 icvCtlScrl ?? */ - 0x000000, /* 0x4A icvCtlInv ?? */ - 0x000000, /* 0x4B icvCtlBody ?? */ - 0x000000, /* 0x4C icvCtlFrame ?? */ - 0x000000, /* 0x4D icvCtlFore ?? */ - 0x000000, /* 0x4E icvCtlBack ?? */ - 0x000000, /* 0x4F icvCtlNeutral */ - 0x000000, /* 0x50 icvInfoBk ?? */ - 0x000000 /* 0x51 icvInfoText ?? */ -]); -var XLSIcv = dup(_XLSIcv); - -/* [MS-XLSB] 2.5.97.2 */ -var BErr = { -0x00: "#NULL!", -0x07: "#DIV/0!", -0x0F: "#VALUE!", -0x17: "#REF!", -0x1D: "#NAME?", -0x24: "#NUM!", -0x2A: "#N/A", -0x2B: "#GETTING_DATA", -0xFF: "#WTF?" -}; -var RBErr = evert_num(BErr); -/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */ -/* 12.3 Part Summary */ -/* 14.2 Part Summary */ -/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */ -var ct2type/*{[string]:string}*/ = ({ - /* Workbook */ - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": "workbooks", - - /* Worksheet */ - "application/vnd.ms-excel.binIndexWs": "TODO", /* Binary Index */ - - /* Macrosheet */ - "application/vnd.ms-excel.intlmacrosheet": "TODO", - "application/vnd.ms-excel.binIndexMs": "TODO", /* Binary Index */ - - /* File Properties */ - "application/vnd.openxmlformats-package.core-properties+xml": "coreprops", - "application/vnd.openxmlformats-officedocument.custom-properties+xml": "custprops", - "application/vnd.openxmlformats-officedocument.extended-properties+xml": "extprops", - - /* Custom Data Properties */ - "application/vnd.openxmlformats-officedocument.customXmlProperties+xml": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty": "TODO", - - /* PivotTable */ - "application/vnd.ms-excel.pivotTable": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml": "TODO", - - /* Chart Objects */ - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": "TODO", - - /* Chart Colors */ - "application/vnd.ms-office.chartcolorstyle+xml": "TODO", - - /* Chart Style */ - "application/vnd.ms-office.chartstyle+xml": "TODO", - - /* Chart Advanced */ - "application/vnd.ms-office.chartex+xml": "TODO", - - /* Calculation Chain */ - "application/vnd.ms-excel.calcChain": "calcchains", - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml": "calcchains", - - /* Printer Settings */ - "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings": "TODO", - - /* ActiveX */ - "application/vnd.ms-office.activeX": "TODO", - "application/vnd.ms-office.activeX+xml": "TODO", - - /* Custom Toolbars */ - "application/vnd.ms-excel.attachedToolbars": "TODO", - - /* External Data Connections */ - "application/vnd.ms-excel.connections": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": "TODO", - - /* External Links */ - "application/vnd.ms-excel.externalLink": "links", - "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml": "links", - - /* Metadata */ - "application/vnd.ms-excel.sheetMetadata": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml": "TODO", - - /* PivotCache */ - "application/vnd.ms-excel.pivotCacheDefinition": "TODO", - "application/vnd.ms-excel.pivotCacheRecords": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml": "TODO", - - /* Query Table */ - "application/vnd.ms-excel.queryTable": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml": "TODO", - - /* Shared Workbook */ - "application/vnd.ms-excel.userNames": "TODO", - "application/vnd.ms-excel.revisionHeaders": "TODO", - "application/vnd.ms-excel.revisionLog": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml": "TODO", - - /* Single Cell Table */ - "application/vnd.ms-excel.tableSingleCells": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml": "TODO", - - /* Slicer */ - "application/vnd.ms-excel.slicer": "TODO", - "application/vnd.ms-excel.slicerCache": "TODO", - "application/vnd.ms-excel.slicer+xml": "TODO", - "application/vnd.ms-excel.slicerCache+xml": "TODO", - - /* Sort Map */ - "application/vnd.ms-excel.wsSortMap": "TODO", - - /* Table */ - "application/vnd.ms-excel.table": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": "TODO", - - /* Themes */ - "application/vnd.openxmlformats-officedocument.theme+xml": "themes", - - /* Theme Override */ - "application/vnd.openxmlformats-officedocument.themeOverride+xml": "TODO", - - /* Timeline */ - "application/vnd.ms-excel.Timeline+xml": "TODO", /* verify */ - "application/vnd.ms-excel.TimelineCache+xml": "TODO", /* verify */ - - /* VBA */ - "application/vnd.ms-office.vbaProject": "vba", - "application/vnd.ms-office.vbaProjectSignature": "TODO", - - /* Volatile Dependencies */ - "application/vnd.ms-office.volatileDependencies": "TODO", - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml": "TODO", - - /* Control Properties */ - "application/vnd.ms-excel.controlproperties+xml": "TODO", - - /* Data Model */ - "application/vnd.openxmlformats-officedocument.model+data": "TODO", - - /* Survey */ - "application/vnd.ms-excel.Survey+xml": "TODO", - - /* Drawing */ - "application/vnd.openxmlformats-officedocument.drawing+xml": "drawings", - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": "TODO", - "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml": "TODO", - "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml": "TODO", - "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml": "TODO", - "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml": "TODO", - - /* VML */ - "application/vnd.openxmlformats-officedocument.vmlDrawing": "TODO", - - "application/vnd.openxmlformats-package.relationships+xml": "rels", - "application/vnd.openxmlformats-officedocument.oleObject": "TODO", - - /* Image */ - "image/png": "TODO", - - "sheet": "js" -}); - -var CT_LIST = (function(){ - var o = { - workbooks: { - xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", - xlsm: "application/vnd.ms-excel.sheet.macroEnabled.main+xml", - xlsb: "application/vnd.ms-excel.sheet.binary.macroEnabled.main", - xlam: "application/vnd.ms-excel.addin.macroEnabled.main+xml", - xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" - }, - strs: { /* Shared Strings */ - xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", - xlsb: "application/vnd.ms-excel.sharedStrings" - }, - comments: { /* Comments */ - xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", - xlsb: "application/vnd.ms-excel.comments" - }, - sheets: { /* Worksheet */ - xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", - xlsb: "application/vnd.ms-excel.worksheet" - }, - charts: { /* Chartsheet */ - xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml", - xlsb: "application/vnd.ms-excel.chartsheet" - }, - dialogs: { /* Dialogsheet */ - xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml", - xlsb: "application/vnd.ms-excel.dialogsheet" - }, - macros: { /* Macrosheet (Excel 4.0 Macros) */ - xlsx: "application/vnd.ms-excel.macrosheet+xml", - xlsb: "application/vnd.ms-excel.macrosheet" - }, - styles: { /* Styles */ - xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", - xlsb: "application/vnd.ms-excel.styles" - } - }; - keys(o).forEach(function(k) { ["xlsm", "xlam"].forEach(function(v) { if(!o[k][v]) o[k][v] = o[k].xlsx; }); }); - keys(o).forEach(function(k){ keys(o[k]).forEach(function(v) { ct2type[o[k][v]] = k; }); }); - return o; -})(); - -var type2ct/*{[string]:Array}*/ = evert_arr(ct2type); - -XMLNS.CT = 'http://schemas.openxmlformats.org/package/2006/content-types'; - -function new_ct() { - return ({ - workbooks:[], sheets:[], charts:[], dialogs:[], macros:[], - rels:[], strs:[], comments:[], links:[], - coreprops:[], extprops:[], custprops:[], themes:[], styles:[], - calcchains:[], vba: [], drawings: [], - TODO:[], xmlns: "" }); -} - -function parse_ct(data) { - var ct = new_ct(); - if(!data || !data.match) return ct; - var ctext = {}; - (data.match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x); - switch(y[0].replace(nsregex,"<")) { - case ' 0 ? ct.calcchains[0] : ""; - ct.sst = ct.strs.length > 0 ? ct.strs[0] : ""; - ct.style = ct.styles.length > 0 ? ct.styles[0] : ""; - ct.defaults = ctext; - delete ct.calcchains; - return ct; -} - -var CTYPE_XML_ROOT = writextag('Types', null, { - 'xmlns': XMLNS.CT, - 'xmlns:xsd': XMLNS.xsd, - 'xmlns:xsi': XMLNS.xsi -}); - -var CTYPE_DEFAULTS = [ - ['xml', 'application/xml'], - ['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'], - ['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'], - ['data', 'application/vnd.openxmlformats-officedocument.model+data'], - /* from test files */ - ['bmp', 'image/bmp'], - ['png', 'image/png'], - ['gif', 'image/gif'], - ['emf', 'image/x-emf'], - ['wmf', 'image/x-wmf'], - ['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'], - ['tif', 'image/tiff'], ['tiff', 'image/tiff'], - ['pdf', 'application/pdf'], - ['rels', type2ct.rels[0]] -].map(function(x) { - return writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]}); -}); - -function write_ct(ct, opts) { - var o = [], v; - o[o.length] = (XML_HEADER); - o[o.length] = (CTYPE_XML_ROOT); - o = o.concat(CTYPE_DEFAULTS); - - /* only write first instance */ - var f1 = function(w) { - if(ct[w] && ct[w].length > 0) { - v = ct[w][0]; - o[o.length] = (writextag('Override', null, { - 'PartName': (v[0] == '/' ? "":"/") + v, - 'ContentType': CT_LIST[w][opts.bookType || 'xlsx'] - })); - } - }; - - /* book type-specific */ - var f2 = function(w) { - (ct[w]||[]).forEach(function(v) { - o[o.length] = (writextag('Override', null, { - 'PartName': (v[0] == '/' ? "":"/") + v, - 'ContentType': CT_LIST[w][opts.bookType || 'xlsx'] - })); - }); - }; - - /* standard type */ - var f3 = function(t) { - (ct[t]||[]).forEach(function(v) { - o[o.length] = (writextag('Override', null, { - 'PartName': (v[0] == '/' ? "":"/") + v, - 'ContentType': type2ct[t][0] - })); - }); - }; - - f1('workbooks'); - f2('sheets'); - f2('charts'); - f3('themes'); - ['strs', 'styles'].forEach(f1); - ['coreprops', 'extprops', 'custprops'].forEach(f3); - f3('vba'); - f3('comments'); - f3('drawings'); - if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* 9.3 Relationships */ -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", - XPATH: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath", - XMISS: "http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing", - XLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink", - CXML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", - CXMLP: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", - VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" -}); - -/* 9.3.3 Representing Relationships */ -function get_rels_path(file) { - var n = file.lastIndexOf("/"); - return file.slice(0,n+1) + '_rels/' + file.slice(n+1) + ".rels"; -} - -function parse_rels(data, currentFilePath) { - var rels = {"!id":{}}; - if (!data) return rels; - if (currentFilePath.charAt(0) !== '/') { - currentFilePath = '/'+currentFilePath; - } - var hash = {}; - - (data.match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x); - /* 9.3.2.2 OPC_Relationships */ - if (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} - -var RELS_EXTERN = [RELS.HLINK, RELS.XPATH, RELS.XMISS]; -function add_rels(rels, rId, f, type, relobj, targetmode) { - if(!relobj) relobj = {}; - if(!rels['!id']) rels['!id'] = {}; - if(rId < 0) for(rId = 1; rels['!id']['rId' + rId]; ++rId){/* empty */} - relobj.Id = 'rId' + rId; - relobj.Type = type; - relobj.Target = f; - if(targetmode) relobj.TargetMode = targetmode; - else if(RELS_EXTERN.indexOf(relobj.Type) > -1) 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; -} -/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */ -/* Part 3 Section 4 Manifest File */ -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; // 4.2 - case 'file-entry': // 4.3 - 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': // 4.4 - case 'algorithm': // 4.5 - case 'start-key-generation': // 4.6 - case 'key-derivation': // 4.7 - throw new Error("Unsupported ODS Encryption"); - default: if(opts && opts.WTF) throw Rn; - } -} - -function write_manifest(manifest) { - var o = [XML_HEADER]; - o.push('\n'); - o.push(' \n'); - for(var i = 0; i < manifest.length; ++i) o.push(' \n'); - o.push(''); - return o.join(""); -} - -/* Part 3 Section 6 Metadata Manifest File */ -function write_rdf_type(file, res, tag) { - return [ - ' \n', - ' \n', - ' \n' - ].join(""); -} -function write_rdf_has(base, file) { - return [ - ' \n', - ' \n', - ' \n' - ].join(""); -} -function write_rdf(rdf) { - var o = [XML_HEADER]; - o.push('\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(''); - return o.join(""); -} -/* TODO: pull properties */ -var write_meta_ods = (function() { - var payload = 'Sheet' + 'JS ' + XLSX.version + ''; - return function wmo() { - return payload; - }; -})(); - -/* ECMA-376 Part II 11.1 Core Properties Part */ -/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ -var CORE_PROPS = [ - ["cp:category", "Category"], - ["cp:contentStatus", "ContentStatus"], - ["cp:keywords", "Keywords"], - ["cp:lastModifiedBy", "LastAuthor"], - ["cp:lastPrinted", "LastPrinted"], - ["cp:revision", "RevNumber"], - ["cp:version", "Version"], - ["dc:creator", "Author"], - ["dc:description", "Comments"], - ["dc:identifier", "Identifier"], - ["dc:language", "Language"], - ["dc:subject", "Subject"], - ["dc:title", "Title"], - ["dcterms:created", "CreatedDate", 'date'], - ["dcterms:modified", "ModifiedDate", 'date'] -]; - -XMLNS.CORE_PROPS = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"; -RELS.CORE_PROPS = 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties'; - -var CORE_PROPS_REGEX = (function() { - var r = new Array(CORE_PROPS.length); - for(var i = 0; i < CORE_PROPS.length; ++i) { - var f = CORE_PROPS[i]; - var g = "(?:"+ f[0].slice(0,f[0].indexOf(":")) +":)"+ f[0].slice(f[0].indexOf(":")+1); - r[i] = new RegExp("<" + g + "[^>]*>([\\s\\S]*?)<\/" + g + ">"); - } - return r; -})(); - -function parse_core_props(data) { - var p = {}; - data = utf8read(data); - - for(var i = 0; i < CORE_PROPS.length; ++i) { - var f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]); - if(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]); - if(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]); - } - - return p; -} - -var CORE_PROPS_XML_ROOT = writextag('cp:coreProperties', null, { - //'xmlns': XMLNS.CORE_PROPS, - 'xmlns:cp': XMLNS.CORE_PROPS, - 'xmlns:dc': XMLNS.dc, - 'xmlns:dcterms': XMLNS.dcterms, - 'xmlns:dcmitype': XMLNS.dcmitype, - 'xmlns:xsi': XMLNS.xsi -}); - -function cp_doit(f, g, h, o, p) { - if(p[f] != null || g == null || g === "") return; - p[f] = g; - g = escapexml(g); - o[o.length] = (h ? writextag(f,g,h) : writetag(f,g)); -} - -function write_core_props(cp, _opts) { - var opts = _opts || {}; - var o = [XML_HEADER, CORE_PROPS_XML_ROOT], p = {}; - if(!cp && !opts.Props) return o.join(""); - - if(cp) { - if(cp.CreatedDate != null) cp_doit("dcterms:created", typeof cp.CreatedDate === "string" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); - if(cp.ModifiedDate != null) cp_doit("dcterms:modified", typeof cp.ModifiedDate === "string" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); - } - - for(var i = 0; i != CORE_PROPS.length; ++i) { - var f = CORE_PROPS[i]; - var v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null; - if(v === true) v = "1"; - else if(v === false) v = "0"; - else if(typeof v == "number") v = String(v); - if(v != null) cp_doit(f[0], v, null, o, p); - } - if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* 15.2.12.3 Extended File Properties Part */ -/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ -var EXT_PROPS = [ - ["Application", "Application", "string"], - ["AppVersion", "AppVersion", "string"], - ["Company", "Company", "string"], - ["DocSecurity", "DocSecurity", "string"], - ["Manager", "Manager", "string"], - ["HyperlinksChanged", "HyperlinksChanged", "bool"], - ["SharedDoc", "SharedDoc", "bool"], - ["LinksUpToDate", "LinksUpToDate", "bool"], - ["ScaleCrop", "ScaleCrop", "bool"], - ["HeadingPairs", "HeadingPairs", "raw"], - ["TitlesOfParts", "TitlesOfParts", "raw"] -]; - -XMLNS.EXT_PROPS = "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"; -RELS.EXT_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties'; - -var PseudoPropsPairs = [ - "Worksheets", "SheetNames", - "NamedRanges", "DefinedNames", - "Chartsheets", "ChartNames" -]; -function load_props_pairs(HP, TOP, props, opts) { - var v = []; - if(typeof HP == "string") v = parseVector(HP, opts); - else for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; })); - var parts = (typeof TOP == "string") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP; - var idx = 0, len = 0; - if(parts.length > 0) for(var i = 0; i !== v.length; i += 2) { - len = +(v[i+1].v); - switch(v[i].v) { - case "Worksheets": - case "工作表": - case "Листы": - case "أوراق العمل": - case "ワークシート": - case "גליונות עבודה": - case "Arbeitsblätter": - case "Çalışma Sayfaları": - case "Feuilles de calcul": - case "Fogli di lavoro": - case "Folhas de cálculo": - case "Planilhas": - case "Regneark": - case "Hojas de cálculo": - case "Werkbladen": - props.Worksheets = len; - props.SheetNames = parts.slice(idx, idx + len); - break; - - case "Named Ranges": - case "Rangos con nombre": - case "名前付き一覧": - case "Benannte Bereiche": - case "Navngivne områder": - props.NamedRanges = len; - props.DefinedNames = parts.slice(idx, idx + len); - break; - - case "Charts": - case "Diagramme": - props.Chartsheets = len; - props.ChartNames = parts.slice(idx, idx + len); - break; - } - idx += len; - } -} - -function parse_ext_props(data, p, opts) { - var q = {}; if(!p) p = {}; - data = utf8read(data); - - EXT_PROPS.forEach(function(f) { - var xml = (data.match(matchtag(f[0]))||[])[1]; - switch(f[2]) { - case "string": if(xml) p[f[1]] = unescapexml(xml); break; - case "bool": p[f[1]] = xml === "true"; break; - case "raw": - var cur = data.match(new RegExp("<" + f[0] + "[^>]*>([\\s\\S]*?)<\/" + f[0] + ">")); - if(cur && cur.length > 0) q[f[1]] = cur[1]; - break; - } - }); - - if(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts); - - return p; -} - -var EXT_PROPS_XML_ROOT = writextag('Properties', null, { - 'xmlns': XMLNS.EXT_PROPS, - 'xmlns:vt': XMLNS.vt -}); - -function write_ext_props(cp) { - var o = [], W = writextag; - if(!cp) cp = {}; - cp.Application = "SheetJS"; - o[o.length] = (XML_HEADER); - o[o.length] = (EXT_PROPS_XML_ROOT); - - EXT_PROPS.forEach(function(f) { - if(cp[f[1]] === undefined) return; - var v; - switch(f[2]) { - case 'string': v = escapexml(String(cp[f[1]])); break; - case 'bool': v = cp[f[1]] ? 'true' : 'false'; break; - } - if(v !== undefined) o[o.length] = (W(f[0], v)); - }); - - /* TODO: HeadingPairs, TitlesOfParts */ - o[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:"variant"}))); - o[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return "" + escapexml(s) + ""; }).join(""), {size: cp.Worksheets, baseType:"lpstr"}))); - if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* 15.2.12.2 Custom File Properties Part */ -XMLNS.CUST_PROPS = "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"; -RELS.CUST_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties'; - -var custregex = /<[^>]+>[^<]*/g; -function parse_cust_props(data, opts) { - var p = {}, name = ""; - var m = data.match(custregex); - if(m) for(var i = 0; i != m.length; ++i) { - var x = m[i], y = parsexmltag(x); - switch(y[0]) { - case '': name = null; break; - default: if (x.indexOf(''); - var type = toks[0].slice(4), text = toks[1]; - /* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */ - switch(type) { - case 'lpstr': case 'bstr': case 'lpwstr': - p[name] = unescapexml(text); - break; - case 'bool': - p[name] = parsexmlbool(text); - break; - case 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint': - p[name] = parseInt(text, 10); - break; - case 'r4': case 'r8': case 'decimal': - p[name] = parseFloat(text); - break; - case 'filetime': case 'date': - p[name] = parseDate(text); - break; - case 'cy': case 'error': - p[name] = unescapexml(text); - break; - default: - if(type.slice(-1) == '/') break; - if(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks); - } - } else if(x.slice(0,2) === "2){ o[o.length] = ''; o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* Common Name -> XLML Name */ -var XLMLDocPropsMap = { - Title: 'Title', - Subject: 'Subject', - Author: 'Author', - Keywords: 'Keywords', - Comments: 'Description', - LastAuthor: 'LastAuthor', - RevNumber: 'Revision', - Application: 'AppName', - /* TotalTime: 'TotalTime', */ - LastPrinted: 'LastPrinted', - CreatedDate: 'Created', - ModifiedDate: 'LastSaved', - /* Pages */ - /* Words */ - /* Characters */ - Category: 'Category', - /* PresentationFormat */ - Manager: 'Manager', - Company: 'Company', - /* Guid */ - /* HyperlinkBase */ - /* Bytes */ - /* Lines */ - /* Paragraphs */ - /* CharactersWithSpaces */ - AppVersion: 'Version', - - ContentStatus: 'ContentStatus', /* NOTE: missing from schema */ - Identifier: 'Identifier', /* NOTE: missing from schema */ - Language: 'Language' /* NOTE: missing from schema */ -}; -var evert_XLMLDPM = evert(XLMLDocPropsMap); - -function xlml_set_prop(Props, tag, val) { - tag = evert_XLMLDPM[tag] || tag; - Props[tag] = val; -} - -function xlml_write_docprops(Props, opts) { - var o = []; - keys(XLMLDocPropsMap).map(function(m) { - for(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i]; - for(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i]; - throw m; - }).forEach(function(p) { - if(Props[p[1]] == null) return; - var m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]]; - switch(p[2]) { - case 'date': m = new Date(m).toISOString().replace(/\.\d*Z/,"Z"); break; - } - if(typeof m == 'number') m = String(m); - else if(m === true || m === false) { m = m ? "1" : "0"; } - else if(m instanceof Date) m = new Date(m).toISOString().replace(/\.\d*Z/,""); - o.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m)); - }); - return writextag('DocumentProperties', o.join(""), {xmlns:XLMLNS.o }); -} -function xlml_write_custprops(Props, Custprops) { - var BLACKLIST = ["Worksheets","SheetNames"]; - var T = 'CustomDocumentProperties'; - var o = []; - if(Props) keys(Props).forEach(function(k) { -if(!Object.prototype.hasOwnProperty.call(Props, k)) return; - for(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return; - for(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return; - for(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return; - - var m = Props[k]; - var t = "string"; - if(typeof m == 'number') { t = "float"; m = String(m); } - else if(m === true || m === false) { t = "boolean"; m = m ? "1" : "0"; } - else m = String(m); - o.push(writextag(escapexmltag(k), m, {"dt:dt":t})); - }); - if(Custprops) keys(Custprops).forEach(function(k) { -if(!Object.prototype.hasOwnProperty.call(Custprops, k)) return; - if(Props && Object.prototype.hasOwnProperty.call(Props, k)) return; - var m = Custprops[k]; - var t = "string"; - if(typeof m == 'number') { t = "float"; m = String(m); } - else if(m === true || m === false) { t = "boolean"; m = m ? "1" : "0"; } - else if(m instanceof Date) { t = "dateTime.tz"; m = m.toISOString(); } - else m = String(m); - o.push(writextag(escapexmltag(k), m, {"dt:dt":t})); - }); - return '<' + T + ' xmlns="' + XLMLNS.o + '">' + o.join("") + ''; -} -/* [MS-DTYP] 2.3.3 FILETIME */ -/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */ -/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */ -function parse_FILETIME(blob) { - var dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4); - return new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\.000/,""); -} -function write_FILETIME(time) { - var date = (typeof time == "string") ? new Date(Date.parse(time)) : time; - var t = date.getTime() / 1000 + 11644473600; - var l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32); - l *= 1e7; h *= 1e7; - var w = (l / Math.pow(2,32)) | 0; - if(w > 0) { l = l % Math.pow(2,32); h += w; } - var o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o; -} - -/* [MS-OSHARED] 2.3.3.1.4 Lpstr */ -function parse_lpstr(blob, type, pad) { - var start = blob.l; - var str = blob.read_shift(0, 'lpstr-cp'); - if(pad) while((blob.l - start) & 3) ++blob.l; - return str; -} - -/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */ -function parse_lpwstr(blob, type, pad) { - var str = blob.read_shift(0, 'lpwstr'); - if(pad) blob.l += (4 - ((str.length+1) & 3)) & 3; - return str; -} - - -/* [MS-OSHARED] 2.3.3.1.11 VtString */ -/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */ -function parse_VtStringBase(blob, stringType, pad) { - if(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob); - return parse_lpstr(blob, stringType, pad); -} - -function parse_VtString(blob, t, pad) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); } -function parse_VtUnalignedString(blob, t) { if(!t) throw new Error("VtUnalignedString must have positive length"); return parse_VtStringBase(blob, t, 0); } - -/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */ -function parse_VtVecLpwstrValue(blob) { - var length = blob.read_shift(4); - var ret = []; - for(var i = 0; i != length; ++i) { - var start = blob.l; - ret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,''); - if((blob.l - start) & 0x02) blob.l += 2; - } - return ret; -} - -/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */ -function parse_VtVecUnalignedLpstrValue(blob) { - var length = blob.read_shift(4); - var ret = []; - for(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,''); - return ret; -} - - -/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */ -function parse_VtHeadingPair(blob) { - var start = blob.l; - var headingString = parse_TypedPropertyValue(blob, VT_USTR); - if(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2; - var headerParts = parse_TypedPropertyValue(blob, VT_I4); - return [headingString, headerParts]; -} - -/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */ -function parse_VtVecHeadingPairValue(blob) { - var cElements = blob.read_shift(4); - var out = []; - for(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob)); - return out; -} - -/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */ -function parse_dictionary(blob,CodePage) { - var cnt = blob.read_shift(4); - var dict = ({}); - for(var j = 0; j != cnt; ++j) { - var pid = blob.read_shift(4); - var len = blob.read_shift(4); - dict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!'); - if(CodePage === 0x4B0 && (len % 2)) blob.l += 2; - } - if(blob.l & 3) blob.l = (blob.l>>2+1)<<2; - return dict; -} - -/* [MS-OLEPS] 2.9 BLOB */ -function parse_BLOB(blob) { - var size = blob.read_shift(4); - var bytes = blob.slice(blob.l,blob.l+size); - blob.l += size; - if((size & 3) > 0) blob.l += (4 - (size & 3)) & 3; - return bytes; -} - -/* [MS-OLEPS] 2.11 ClipboardData */ -function parse_ClipboardData(blob) { - // TODO - var o = {}; - o.Size = blob.read_shift(4); - //o.Format = blob.read_shift(4); - blob.l += o.Size + 3 - (o.Size - 1) % 4; - return o; -} - -/* [MS-OLEPS] 2.15 TypedPropertyValue */ -function parse_TypedPropertyValue(blob, type, _opts) { - var t = blob.read_shift(2), ret, opts = _opts||{}; - blob.l += 2; - if(type !== VT_VARIANT) - if(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t); - switch(type === VT_VARIANT ? t : type) { - case 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret; - case 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret; - case 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0; - case 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret; - case 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,''); - case 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob); - case 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob); - case 0x41 /*VT_BLOB*/: return parse_BLOB(blob); - case 0x47 /*VT_CF*/: return parse_ClipboardData(blob); - case 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,''); - case 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,''); - case 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob); - case 0x101E /*VT_VECTOR|VT_LPSTR*/: - case 0x101F /*VT_VECTOR|VT_LPWSTR*/: - return t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob); - default: throw new Error("TypedPropertyValue unrecognized type " + type + " " + t); - } -} -function write_TypedPropertyValue(type, value) { - var o = new_buf(4), p = new_buf(4); - o.write_shift(4, type == 0x50 ? 0x1F : type); - switch(type) { - case 0x03 /*VT_I4*/: p.write_shift(-4, value); break; - case 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break; - case 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break; - case 0x40 /*VT_FILETIME*/: p = write_FILETIME(value); break; - case 0x1F /*VT_LPWSTR*/: - case 0x50 /*VT_STRING*/: -p = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2)); - p.write_shift(4, value.length + 1); - p.write_shift(0, value, "dbcs"); - while(p.l != p.length) p.write_shift(1, 0); - break; - default: throw new Error("TypedPropertyValue unrecognized type " + type + " " + value); - } - return bconcat([o, p]); -} - -/* [MS-OLEPS] 2.20 PropertySet */ -function parse_PropertySet(blob, PIDSI) { - var start_addr = blob.l; - var size = blob.read_shift(4); - var NumProps = blob.read_shift(4); - var Props = [], i = 0; - var CodePage = 0; - var Dictionary = -1, DictObj = ({}); - for(i = 0; i != NumProps; ++i) { - var PropID = blob.read_shift(4); - var Offset = blob.read_shift(4); - Props[i] = [PropID, Offset + start_addr]; - } - Props.sort(function(x,y) { return x[1] - y[1]; }); - var PropH = {}; - for(i = 0; i != NumProps; ++i) { - if(blob.l !== Props[i][1]) { - var fail = true; - if(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) { - case 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break; - case 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; - case 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; - } - if((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; } - if(fail) throw new Error("Read Error: Expected address " + Props[i][1] + ' at ' + blob.l + ' :' + i); - } - if(PIDSI) { - var piddsi = PIDSI[Props[i][0]]; - PropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true}); - if(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + "." + ("0000" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4); - if(piddsi.n == "CodePage") switch(PropH[piddsi.n]) { - case 0: PropH[piddsi.n] = 1252; - /* falls through */ - case 874: - case 932: - case 936: - case 949: - case 950: - case 1250: - case 1251: - case 1253: - case 1254: - case 1255: - case 1256: - case 1257: - case 1258: - case 10000: - case 1200: - case 1201: - case 1252: - case 65000: case -536: - case 65001: case -535: - set_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break; - default: throw new Error("Unsupported CodePage: " + PropH[piddsi.n]); - } - } else { - if(Props[i][0] === 0x1) { - CodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)); - set_cp(CodePage); - if(Dictionary !== -1) { - var oldpos = blob.l; - blob.l = Props[Dictionary][1]; - DictObj = parse_dictionary(blob,CodePage); - blob.l = oldpos; - } - } else if(Props[i][0] === 0) { - if(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; } - DictObj = parse_dictionary(blob,CodePage); - } else { - var name = DictObj[Props[i][0]]; - var val; - /* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */ - switch(blob[blob.l]) { - case 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break; - case 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\u0000+$/,""); break; - case 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\u0000+$/,""); break; - case 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break; - case 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break; - case 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break; - case 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break; - case 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break; - default: throw new Error("unparsed value: " + blob[blob.l]); - } - PropH[name] = val; - } - } - } - blob.l = start_addr + size; /* step ahead to skip padding */ - return PropH; -} -var XLSPSSkip = [ "CodePage", "Thumbnail", "_PID_LINKBASE", "_PID_HLINKS", "SystemIdentifier", "FMTID" ].concat(PseudoPropsPairs); -function guess_property_type(val) { - switch(typeof val) { - case "boolean": return 0x0B; - case "number": return ((val|0)==val) ? 0x03 : 0x05; - case "string": return 0x1F; - case "object": if(val instanceof Date) return 0x40; break; - } - return -1; -} -function write_PropertySet(entries, RE, PIDSI) { - var hdr = new_buf(8), piao = [], prop = []; - var sz = 8, i = 0; - - var pr = new_buf(8), pio = new_buf(8); - pr.write_shift(4, 0x0002); - pr.write_shift(4, 0x04B0); - pio.write_shift(4, 0x0001); - prop.push(pr); piao.push(pio); - sz += 8 + pr.length; - - if(!RE) { - pio = new_buf(8); - pio.write_shift(4, 0); - piao.unshift(pio); - - var bufs = [new_buf(4)]; - bufs[0].write_shift(4, entries.length); - for(i = 0; i < entries.length; ++i) { - var value = entries[i][0]; - pr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2)); - pr.write_shift(4, i+2); - pr.write_shift(4, value.length + 1); - pr.write_shift(0, value, "dbcs"); - while(pr.l != pr.length) pr.write_shift(1, 0); - bufs.push(pr); - } - pr = bconcat(bufs); - prop.unshift(pr); - sz += 8 + pr.length; - } - - for(i = 0; i < entries.length; ++i) { - if(RE && !RE[entries[i][0]]) continue; - if(XLSPSSkip.indexOf(entries[i][0]) > -1) continue; - if(entries[i][1] == null) continue; - - var val = entries[i][1], idx = 0; - if(RE) { - idx = +RE[entries[i][0]]; - var pinfo = (PIDSI)[idx]; - if(pinfo.p == "version" && typeof val == "string") { -var arr = val.split("."); - val = ((+arr[0])<<16) + ((+arr[1])||0); - } - pr = write_TypedPropertyValue(pinfo.t, val); - } else { - var T = guess_property_type(val); - if(T == -1) { T = 0x1F; val = String(val); } - pr = write_TypedPropertyValue(T, val); - } - prop.push(pr); - - pio = new_buf(8); - pio.write_shift(4, !RE ? 2+i : idx); - piao.push(pio); - - sz += 8 + pr.length; - } - - var w = 8 * (prop.length + 1); - for(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; } - hdr.write_shift(4, sz); - hdr.write_shift(4, prop.length); - return bconcat([hdr].concat(piao).concat(prop)); -} - -/* [MS-OLEPS] 2.21 PropertySetStream */ -function parse_PropertySetStream(file, PIDSI, clsid) { - var blob = file.content; - if(!blob) return ({}); - prep_blob(blob, 0); - - var NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0; - blob.chk('feff', 'Byte Order: '); - - /*var vers = */blob.read_shift(2); // TODO: check version - var SystemIdentifier = blob.read_shift(4); - var CLSID = blob.read_shift(16); - if(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error("Bad PropertySet CLSID " + CLSID); - NumSets = blob.read_shift(4); - if(NumSets !== 1 && NumSets !== 2) throw new Error("Unrecognized #Sets: " + NumSets); - FMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4); - - if(NumSets === 1 && Offset0 !== blob.l) throw new Error("Length mismatch: " + Offset0 + " !== " + blob.l); - else if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); } - var PSet0 = parse_PropertySet(blob, PIDSI); - - var rval = ({ SystemIdentifier: SystemIdentifier }); - for(var y in PSet0) rval[y] = PSet0[y]; - //rval.blob = blob; - rval.FMTID = FMTID0; - //rval.PSet0 = PSet0; - if(NumSets === 1) return rval; - if(Offset1 - blob.l == 2) blob.l += 2; - if(blob.l !== Offset1) throw new Error("Length mismatch 2: " + blob.l + " !== " + Offset1); - var PSet1; - try { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */} - for(y in PSet1) rval[y] = PSet1[y]; - rval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1 - return rval; -} -function write_PropertySetStream(entries, clsid, RE, PIDSI, entries2, clsid2) { - var hdr = new_buf(entries2 ? 68 : 48); - var bufs = [hdr]; - hdr.write_shift(2, 0xFFFE); - hdr.write_shift(2, 0x0000); /* TODO: type 1 props */ - hdr.write_shift(4, 0x32363237); - hdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, "hex"); - hdr.write_shift(4, (entries2 ? 2 : 1)); - hdr.write_shift(16, clsid, "hex"); - hdr.write_shift(4, (entries2 ? 68 : 48)); - var ps0 = write_PropertySet(entries, RE, PIDSI); - bufs.push(ps0); - - if(entries2) { - var ps1 = write_PropertySet(entries2, null, null); - hdr.write_shift(16, clsid2, "hex"); - hdr.write_shift(4, 68 + ps0.length); - bufs.push(ps1); - } - return bconcat(bufs); -} - -function parsenoop2(blob, length) { blob.read_shift(length); return null; } -function writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1); - var encoding = 'sbcs-cont'; - var cp = current_codepage; - if(opts && opts.biff >= 8) current_codepage = 1200; - if(!opts || opts.biff == 8 ) { - var fHighByte = blob.read_shift(1); - if(fHighByte) { encoding = 'dbcs-cont'; } - } else if(opts.biff == 12) { - encoding = 'wstr'; - } - if(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr'; - var o = cch ? blob.read_shift(cch, encoding) : ""; - current_codepage = cp; - return o; -} - -/* 2.5.293 XLUnicodeRichExtendedString */ -function parse_XLUnicodeRichExtendedString(blob) { - var cp = current_codepage; - current_codepage = 1200; - var cch = blob.read_shift(2), flags = blob.read_shift(1); - var /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8; - var width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs - var cRun = 0, cbExtRst; - var z = {}; - if(fRichSt) cRun = blob.read_shift(2); - if(fExtSt) cbExtRst = blob.read_shift(4); - var encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont'; - var msg = cch === 0 ? "" : blob.read_shift(cch, encoding); - if(fRichSt) blob.l += 4 * cRun; //TODO: parse this - if(fExtSt) blob.l += cbExtRst; //TODO: parse this - z.t = msg; - if(!fRichSt) { z.raw = "" + z.t + ""; z.r = z.t; } - current_codepage = cp; - return z; -} -function write_XLUnicodeRichExtendedString(xlstr) { - var str = (xlstr.t||""), nfmts = 1; - - var hdr = new_buf(3 + (nfmts > 1 ? 2 : 0)); - hdr.write_shift(2, str.length); - hdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01); - if(nfmts > 1) hdr.write_shift(2, nfmts); - - var otext = new_buf(2 * str.length); - otext.write_shift(2 * str.length, str, 'utf16le'); - - var out = [hdr, otext]; - - return bconcat(out); -} - -/* 2.5.296 XLUnicodeStringNoCch */ -function parse_XLUnicodeStringNoCch(blob, cch, opts) { - var retval; - if(opts) { - if(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr'); - if(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont'); - } - var fHighByte = blob.read_shift(1); - if(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); } - else { retval = blob.read_shift(cch, 'dbcs-cont'); } - return retval; -} - -/* 2.5.294 XLUnicodeString */ -function parse_XLUnicodeString(blob, length, opts) { - var cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); - if(cch === 0) { blob.l++; return ""; } - return parse_XLUnicodeStringNoCch(blob, cch, opts); -} -/* BIFF5 override */ -function parse_XLUnicodeString2(blob, length, opts) { - if(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts); - var cch = blob.read_shift(1); - if(cch === 0) { blob.l++; return ""; } - return blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont'); -} -/* TODO: BIFF5 and lower, codepage awareness */ -function write_XLUnicodeString(str, opts, o) { - if(!o) o = new_buf(3 + 2 * str.length); - o.write_shift(2, str.length); - o.write_shift(1, 1); - o.write_shift(31, str, 'utf16le'); - return o; -} - -/* [MS-XLS] 2.5.61 ControlInfo */ -function parse_ControlInfo(blob) { - var flags = blob.read_shift(1); - blob.l++; - var accel = blob.read_shift(2); - blob.l += 2; - return [flags, accel]; -} - -/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */ -function parse_URLMoniker(blob) { - var len = blob.read_shift(4), start = blob.l; - var extra = false; - if(len > 24) { - /* look ahead */ - blob.l += len - 24; - if(blob.read_shift(16) === "795881f43b1d7f48af2c825dc4852763") extra = true; - blob.l = start; - } - var url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,""); - if(extra) blob.l += 24; - return url; -} - -/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */ -function parse_FileMoniker(blob) { - var cAnti = blob.read_shift(2); - var preamble = ""; while(cAnti-- > 0) preamble += "../"; - var ansiPath = blob.read_shift(0, 'lpstr-ansi'); - blob.l += 2; //var endServer = blob.read_shift(2); - if(blob.read_shift(2) != 0xDEAD) throw new Error("Bad FileMoniker"); - var sz = blob.read_shift(4); - if(sz === 0) return preamble + ansiPath.replace(/\\/g,"/"); - var bytes = blob.read_shift(4); - if(blob.read_shift(2) != 3) throw new Error("Bad FileMoniker"); - var unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,""); - return preamble + unicodePath; -} - -/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */ -function parse_HyperlinkMoniker(blob, length) { - var clsid = blob.read_shift(16); length -= 16; - switch(clsid) { - case "e0c9ea79f9bace118c8200aa004ba90b": return parse_URLMoniker(blob, length); - case "0303000000000000c000000000000046": return parse_FileMoniker(blob, length); - default: throw new Error("Unsupported Moniker " + clsid); - } -} - -/* [MS-OSHARED] 2.3.7.9 HyperlinkString */ -function parse_HyperlinkString(blob) { - var len = blob.read_shift(4); - var o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, "") : ""; - return o; -} -function write_HyperlinkString(str, o) { - if(!o) o = new_buf(6 + str.length * 2); - o.write_shift(4, 1 + str.length); - for(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i)); - o.write_shift(2, 0); - return o; -} - -/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */ -function parse_Hyperlink(blob, length) { - var end = blob.l + length; - var sVer = blob.read_shift(4); - if(sVer !== 2) throw new Error("Unrecognized streamVersion: " + sVer); - var flags = blob.read_shift(2); - blob.l += 2; - var displayName, targetFrameName, moniker, oleMoniker, Loc="", guid, fileTime; - if(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l); - if(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l); - if((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l); - if((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l); - if(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l); - if(flags & 0x0020) guid = blob.read_shift(16); - if(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/); - blob.l = end; - var target = targetFrameName||moniker||oleMoniker||""; - if(target && Loc) target+="#"+Loc; - if(!target) target = "#" + Loc; - if((flags & 0x0002) && target.charAt(0) == "/" && target.charAt(1) != "/") target = "file://" + target; - var out = ({Target:target}); - if(guid) out.guid = guid; - if(fileTime) out.time = fileTime; - if(displayName) out.Tooltip = displayName; - return out; -} -function write_Hyperlink(hl) { - var out = new_buf(512), i = 0; - var Target = hl.Target; - if(Target.slice(0,7) == "file://") Target = Target.slice(7); - var hashidx = Target.indexOf("#"); - var F = hashidx > -1 ? 0x1f : 0x17; - switch(Target.charAt(0)) { case "#": F=0x1c; break; case ".": F&=~2; break; } - out.write_shift(4,2); out.write_shift(4, F); - var data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]); - if(F == 0x1C) { - Target = Target.slice(1); - write_HyperlinkString(Target, out); - } else if(F & 0x02) { - data = "e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "); - for(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16)); - var Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target; - out.write_shift(4, 2*(Pretarget.length + 1)); - for(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i)); - out.write_shift(2, 0); - if(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): "", out); - } else { - data = "03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "); - for(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16)); - var P = 0; - while(Target.slice(P*3,P*3+3)=="../"||Target.slice(P*3,P*3+3)=="..\\") ++P; - out.write_shift(2, P); - out.write_shift(4, Target.length - 3 * P + 1); - for(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF); - out.write_shift(1, 0); - out.write_shift(2, 0xFFFF); - out.write_shift(2, 0xDEAD); - for(i = 0; i < 6; ++i) out.write_shift(4, 0); - } - return out.slice(0, out.l); -} - -/* 2.5.178 LongRGBA */ -function parse_LongRGBA(blob) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; } - -/* 2.5.177 LongRGB */ -function parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; } - - -/* [MS-XLS] 2.5.19 */ -function parse_XLSCell(blob) { - var rw = blob.read_shift(2); // 0-indexed - var col = blob.read_shift(2); - var ixfe = blob.read_shift(2); - return ({r:rw, c:col, ixfe:ixfe}); -} -function write_XLSCell(R, C, ixfe, o) { - if(!o) o = new_buf(6); - o.write_shift(2, R); - o.write_shift(2, C); - o.write_shift(2, ixfe||0); - return o; -} - -/* [MS-XLS] 2.5.134 */ -function parse_frtHeader(blob) { - var rt = blob.read_shift(2); - var flags = blob.read_shift(2); // TODO: parse these flags - blob.l += 8; - return {type: rt, flags: flags}; -} - - - -function parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? "" : parse_XLUnicodeString2(blob, length, opts); } - -/* [MS-XLS] 2.5.344 */ -function parse_XTI(blob, length, opts) { - var w = opts.biff > 8 ? 4 : 2; - var iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i'); - return [iSupBook, itabFirst, itabLast]; -} - -/* [MS-XLS] 2.5.218 */ -function parse_RkRec(blob) { - var ixfe = blob.read_shift(2); - var RK = parse_RkNumber(blob); - return [ixfe, RK]; -} - -/* [MS-XLS] 2.5.1 */ -function parse_AddinUdf(blob, length, opts) { - blob.l += 4; length -= 4; - var l = blob.l + length; - var udfName = parse_ShortXLUnicodeString(blob, length, opts); - var cb = blob.read_shift(2); - l -= blob.l; - if(cb !== l) throw new Error("Malformed AddinUdf: padding = " + l + " != " + cb); - blob.l += cb; - return udfName; -} - -/* [MS-XLS] 2.5.209 TODO: Check sizes */ -function parse_Ref8U(blob) { - var rwFirst = blob.read_shift(2); - var rwLast = blob.read_shift(2); - var colFirst = blob.read_shift(2); - var colLast = blob.read_shift(2); - return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; -} -function write_Ref8U(r, o) { - if(!o) o = new_buf(8); - o.write_shift(2, r.s.r); - o.write_shift(2, r.e.r); - o.write_shift(2, r.s.c); - o.write_shift(2, r.e.c); - return o; -} - -/* [MS-XLS] 2.5.211 */ -function parse_RefU(blob) { - var rwFirst = blob.read_shift(2); - var rwLast = blob.read_shift(2); - var colFirst = blob.read_shift(1); - var colLast = blob.read_shift(1); - return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; -} - -/* [MS-XLS] 2.5.207 */ -var parse_Ref = parse_RefU; - -/* [MS-XLS] 2.5.143 */ -function parse_FtCmo(blob) { - blob.l += 4; - var ot = blob.read_shift(2); - var id = blob.read_shift(2); - var flags = blob.read_shift(2); - blob.l+=12; - return [id, ot, flags]; -} - -/* [MS-XLS] 2.5.149 */ -function parse_FtNts(blob) { - var out = {}; - blob.l += 4; - blob.l += 16; // GUID TODO - out.fSharedNote = blob.read_shift(2); - blob.l += 4; - return out; -} - -/* [MS-XLS] 2.5.142 */ -function parse_FtCf(blob) { - var out = {}; - blob.l += 4; - blob.cf = blob.read_shift(2); - return out; -} - -/* [MS-XLS] 2.5.140 - 2.5.154 and friends */ -function parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); } -var FtTab = { -0x00: parse_FtSkip, /* FtEnd */ -0x04: parse_FtSkip, /* FtMacro */ -0x05: parse_FtSkip, /* FtButton */ -0x06: parse_FtSkip, /* FtGmo */ -0x07: parse_FtCf, /* FtCf */ -0x08: parse_FtSkip, /* FtPioGrbit */ -0x09: parse_FtSkip, /* FtPictFmla */ -0x0A: parse_FtSkip, /* FtCbls */ -0x0B: parse_FtSkip, /* FtRbo */ -0x0C: parse_FtSkip, /* FtSbs */ -0x0D: parse_FtNts, /* FtNts */ -0x0E: parse_FtSkip, /* FtSbsFmla */ -0x0F: parse_FtSkip, /* FtGboData */ -0x10: parse_FtSkip, /* FtEdoData */ -0x11: parse_FtSkip, /* FtRboData */ -0x12: parse_FtSkip, /* FtCblsData */ -0x13: parse_FtSkip, /* FtLbsData */ -0x14: parse_FtSkip, /* FtCblsFmla */ -0x15: parse_FtCmo -}; -function parse_FtArray(blob, length) { - var tgt = blob.l + length; - var fts = []; - while(blob.l < tgt) { - var ft = blob.read_shift(2); - blob.l-=2; - try { - fts.push(FtTab[ft](blob, tgt - blob.l)); - } catch(e) { blob.l = tgt; return fts; } - } - if(blob.l != tgt) blob.l = tgt; //throw new Error("bad Object Ft-sequence"); - return fts; -} - -/* --- 2.4 Records --- */ - -/* [MS-XLS] 2.4.21 */ -function parse_BOF(blob, length) { - var o = {BIFFVer:0, dt:0}; - o.BIFFVer = blob.read_shift(2); length -= 2; - if(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; } - switch(o.BIFFVer) { - case 0x0600: /* BIFF8 */ - case 0x0500: /* BIFF5 */ - case 0x0400: /* BIFF4 */ - case 0x0300: /* BIFF3 */ - case 0x0200: /* BIFF2 */ - case 0x0002: case 0x0007: /* BIFF2 */ - break; - default: if(length > 6) throw new Error("Unexpected BIFF Ver " + o.BIFFVer); - } - - blob.read_shift(length); - return o; -} -function write_BOF(wb, t, o) { - var h = 0x0600, w = 16; - switch(o.bookType) { - case 'biff8': break; - case 'biff5': h = 0x0500; w = 8; break; - case 'biff4': h = 0x0004; w = 6; break; - case 'biff3': h = 0x0003; w = 6; break; - case 'biff2': h = 0x0002; w = 4; break; - case 'xla': break; - default: throw new Error("unsupported BIFF version"); - } - var out = new_buf(w); - out.write_shift(2, h); - out.write_shift(2, t); - if(w > 4) out.write_shift(2, 0x7262); - if(w > 6) out.write_shift(2, 0x07CD); - if(w > 8) { - out.write_shift(2, 0xC009); - out.write_shift(2, 0x0001); - out.write_shift(2, 0x0706); - out.write_shift(2, 0x0000); - } - return out; -} - - -/* [MS-XLS] 2.4.146 */ -function parse_InterfaceHdr(blob, length) { - if(length === 0) return 0x04b0; - if((blob.read_shift(2))!==0x04b0){/* empty */} - return 0x04b0; -} - - -/* [MS-XLS] 2.4.349 */ -function parse_WriteAccess(blob, length, opts) { - if(opts.enc) { blob.l += length; return ""; } - var l = blob.l; - // TODO: make sure XLUnicodeString doesnt overrun - var UserName = parse_XLUnicodeString2(blob, 0, opts); - blob.read_shift(length + l - blob.l); - return UserName; -} -function write_WriteAccess(s, opts) { - var b8 = !opts || opts.biff == 8; - var o = new_buf(b8 ? 112 : 54); - o.write_shift(opts.biff == 8 ? 2 : 1, 7); - if(b8) o.write_shift(1, 0); - o.write_shift(4, 0x33336853); - o.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000))); - while(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32)); - return o; -} - -/* [MS-XLS] 2.4.351 */ -function parse_WsBool(blob, length, opts) { - var flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0); - return { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 }; -} - -/* [MS-XLS] 2.4.28 */ -function parse_BoundSheet8(blob, length, opts) { - var pos = blob.read_shift(4); - var hidden = blob.read_shift(1) & 0x03; - var dt = blob.read_shift(1); - switch(dt) { - case 0: dt = 'Worksheet'; break; - case 1: dt = 'Macrosheet'; break; - case 2: dt = 'Chartsheet'; break; - case 6: dt = 'VBAModule'; break; - } - var name = parse_ShortXLUnicodeString(blob, 0, opts); - if(name.length === 0) name = "Sheet1"; - return { pos:pos, hs:hidden, dt:dt, name:name }; -} -function write_BoundSheet8(data, opts) { - var w = (!opts || opts.biff >= 8 ? 2 : 1); - var o = new_buf(8 + w * data.name.length); - o.write_shift(4, data.pos); - o.write_shift(1, data.hs || 0); - o.write_shift(1, data.dt); - o.write_shift(1, data.name.length); - if(opts.biff >= 8) o.write_shift(1, 1); - o.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le'); - var out = o.slice(0, o.l); - out.l = o.l; return out; -} - -/* [MS-XLS] 2.4.265 TODO */ -function parse_SST(blob, length) { - var end = blob.l + length; - var cnt = blob.read_shift(4); - var ucnt = blob.read_shift(4); - var strs = ([]); - for(var i = 0; i != ucnt && blob.l < end; ++i) { - strs.push(parse_XLUnicodeRichExtendedString(blob)); - } - strs.Count = cnt; strs.Unique = ucnt; - return strs; -} -function write_SST(sst, opts) { - var header = new_buf(8); - header.write_shift(4, sst.Count); - header.write_shift(4, sst.Unique); - var strs = []; - for(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts); - var o = bconcat([header].concat(strs)); -o.parts = [header.length].concat(strs.map(function(str) { return str.length; })); - return o; -} - -/* [MS-XLS] 2.4.107 */ -function parse_ExtSST(blob, length) { - var extsst = {}; - extsst.dsst = blob.read_shift(2); - blob.l += length-2; - return extsst; -} - - -/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */ -function parse_Row(blob) { - var z = ({}); - z.r = blob.read_shift(2); - z.c = blob.read_shift(2); - z.cnt = blob.read_shift(2) - z.c; - var miyRw = blob.read_shift(2); - blob.l += 4; // reserved(2), unused(2) - var flags = blob.read_shift(1); // various flags - blob.l += 3; // reserved(8), ixfe(12), flags(4) - if(flags & 0x07) z.level = flags & 0x07; - // collapsed: flags & 0x10 - if(flags & 0x20) z.hidden = true; - if(flags & 0x40) z.hpt = miyRw / 20; - return z; -} - - -/* [MS-XLS] 2.4.125 */ -function parse_ForceFullCalculation(blob) { - var header = parse_frtHeader(blob); - if(header.type != 0x08A3) throw new Error("Invalid Future Record " + header.type); - var fullcalc = blob.read_shift(4); - return fullcalc !== 0x0; -} - - - - - -/* [MS-XLS] 2.4.215 rt */ -function parse_RecalcId(blob) { - blob.read_shift(2); - return blob.read_shift(4); -} - -/* [MS-XLS] 2.4.87 */ -function parse_DefaultRowHeight(blob, length, opts) { - var f = 0; - if(!(opts && opts.biff == 2)) { - f = blob.read_shift(2); - } - var miyRw = blob.read_shift(2); - if((opts && opts.biff == 2)) { - f = 1 - (miyRw >> 15); miyRw &= 0x7fff; - } - var fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3}; - return [fl, miyRw]; -} - -/* [MS-XLS] 2.4.345 TODO */ -function parse_Window1(blob) { - var xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2); - var flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2); - var ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2); - return { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur, - FirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio }; -} -function write_Window1() { - var o = new_buf(18); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(2, 0x7260); - o.write_shift(2, 0x44c0); - o.write_shift(2, 0x38); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(2, 1); - o.write_shift(2, 0x01f4); - return o; -} -/* [MS-XLS] 2.4.346 TODO */ -function parse_Window2(blob, length, opts) { - if(opts && opts.biff >= 2 && opts.biff < 5) return {}; - var f = blob.read_shift(2); - return { RTL: f & 0x40 }; -} -function write_Window2(view) { - var o = new_buf(18), f = 0x6b6; - if(view && view.RTL) f |= 0x40; - o.write_shift(2, f); - o.write_shift(4, 0); - o.write_shift(4, 64); - o.write_shift(4, 0); - o.write_shift(4, 0); - return o; -} - -/* [MS-XLS] 2.4.189 TODO */ -function parse_Pane(/*blob, length, opts*/) { -} - -/* [MS-XLS] 2.4.122 TODO */ -function parse_Font(blob, length, opts) { - var o = { - dyHeight: blob.read_shift(2), - fl: blob.read_shift(2) - }; - switch((opts && opts.biff) || 8) { - case 2: break; - case 3: case 4: blob.l += 2; break; - default: blob.l += 10; break; - } - o.name = parse_ShortXLUnicodeString(blob, 0, opts); - return o; -} -function write_Font(data, opts) { - var name = data.name || "Arial"; - var b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length)); - var o = new_buf(w); - o.write_shift(2, (data.sz || 12) * 20); - o.write_shift(4, 0); - o.write_shift(2, 400); - o.write_shift(4, 0); - o.write_shift(2, 0); - o.write_shift(1, name.length); - if(!b5) o.write_shift(1, 1); - o.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? "sbcs" : "utf16le")); - return o; -} - -/* [MS-XLS] 2.4.149 */ -function parse_LabelSst(blob) { - var cell = parse_XLSCell(blob); - cell.isst = blob.read_shift(4); - return cell; -} -function write_LabelSst(R, C, v, os ) { - var o = new_buf(10); - write_XLSCell(R, C, os, o); - o.write_shift(4, v); - return o; -} - -/* [MS-XLS] 2.4.148 */ -function parse_Label(blob, length, opts) { - if(opts.biffguess && opts.biff == 2) opts.biff = 5; - var target = blob.l + length; - var cell = parse_XLSCell(blob, 6); - if(opts.biff == 2) blob.l++; - var str = parse_XLUnicodeString(blob, target - blob.l, opts); - cell.val = str; - return cell; -} -function write_Label(R, C, v, os, opts) { - var b8 = !opts || opts.biff == 8; - var o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length); - write_XLSCell(R, C, os, o); - o.write_shift(2, v.length); - if(b8) o.write_shift(1, 1); - o.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs'); - return o; -} - - -/* [MS-XLS] 2.4.126 Number Formats */ -function parse_Format(blob, length, opts) { - var numFmtId = blob.read_shift(2); - var fmtstr = parse_XLUnicodeString2(blob, 0, opts); - return [numFmtId, fmtstr]; -} -function write_Format(i, f, opts, o) { - var b5 = (opts && (opts.biff == 5)); - if(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length)); - o.write_shift(2, i); - o.write_shift((b5 ? 1 : 2), f.length); - if(!b5) o.write_shift(1, 1); - o.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le')); - var out = (o.length > o.l) ? o.slice(0, o.l) : o; - if(out.l == null) out.l = out.length; - return out; -} -var parse_BIFF2Format = parse_XLUnicodeString2; - -/* [MS-XLS] 2.4.90 */ -function parse_Dimensions(blob, length, opts) { - var end = blob.l + length; - var w = opts.biff == 8 || !opts.biff ? 4 : 2; - var r = blob.read_shift(w), R = blob.read_shift(w); - var c = blob.read_shift(2), C = blob.read_shift(2); - blob.l = end; - return {s: {r:r, c:c}, e: {r:R, c:C}}; -} -function write_Dimensions(range, opts) { - var w = opts.biff == 8 || !opts.biff ? 4 : 2; - var o = new_buf(2*w + 6); - o.write_shift(w, range.s.r); - o.write_shift(w, range.e.r + 1); - o.write_shift(2, range.s.c); - o.write_shift(2, range.e.c + 1); - o.write_shift(2, 0); - return o; -} - -/* [MS-XLS] 2.4.220 */ -function parse_RK(blob) { - var rw = blob.read_shift(2), col = blob.read_shift(2); - var rkrec = parse_RkRec(blob); - return {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]}; -} - -/* [MS-XLS] 2.4.175 */ -function parse_MulRk(blob, length) { - var target = blob.l + length - 2; - var rw = blob.read_shift(2), col = blob.read_shift(2); - var rkrecs = []; - while(blob.l < target) rkrecs.push(parse_RkRec(blob)); - if(blob.l !== target) throw new Error("MulRK read error"); - var lastcol = blob.read_shift(2); - if(rkrecs.length != lastcol - col + 1) throw new Error("MulRK length mismatch"); - return {r:rw, c:col, C:lastcol, rkrec:rkrecs}; -} -/* [MS-XLS] 2.4.174 */ -function parse_MulBlank(blob, length) { - var target = blob.l + length - 2; - var rw = blob.read_shift(2), col = blob.read_shift(2); - var ixfes = []; - while(blob.l < target) ixfes.push(blob.read_shift(2)); - if(blob.l !== target) throw new Error("MulBlank read error"); - var lastcol = blob.read_shift(2); - if(ixfes.length != lastcol - col + 1) throw new Error("MulBlank length mismatch"); - return {r:rw, c:col, C:lastcol, ixfe:ixfes}; -} - -/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */ -function parse_CellStyleXF(blob, length, style, opts) { - var o = {}; - var a = blob.read_shift(4), b = blob.read_shift(4); - var c = blob.read_shift(4), d = blob.read_shift(2); - o.patternType = XLSFillPattern[c >> 26]; - - if(!opts.cellStyles) return o; - o.alc = a & 0x07; - o.fWrap = (a >> 3) & 0x01; - o.alcV = (a >> 4) & 0x07; - o.fJustLast = (a >> 7) & 0x01; - o.trot = (a >> 8) & 0xFF; - o.cIndent = (a >> 16) & 0x0F; - o.fShrinkToFit = (a >> 20) & 0x01; - o.iReadOrder = (a >> 22) & 0x02; - o.fAtrNum = (a >> 26) & 0x01; - o.fAtrFnt = (a >> 27) & 0x01; - o.fAtrAlc = (a >> 28) & 0x01; - o.fAtrBdr = (a >> 29) & 0x01; - o.fAtrPat = (a >> 30) & 0x01; - o.fAtrProt = (a >> 31) & 0x01; - - o.dgLeft = b & 0x0F; - o.dgRight = (b >> 4) & 0x0F; - o.dgTop = (b >> 8) & 0x0F; - o.dgBottom = (b >> 12) & 0x0F; - o.icvLeft = (b >> 16) & 0x7F; - o.icvRight = (b >> 23) & 0x7F; - o.grbitDiag = (b >> 30) & 0x03; - - o.icvTop = c & 0x7F; - o.icvBottom = (c >> 7) & 0x7F; - o.icvDiag = (c >> 14) & 0x7F; - o.dgDiag = (c >> 21) & 0x0F; - - o.icvFore = d & 0x7F; - o.icvBack = (d >> 7) & 0x7F; - o.fsxButton = (d >> 14) & 0x01; - return o; -} -//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);} -//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);} - -/* [MS-XLS] 2.4.353 TODO: actually do this right */ -function parse_XF(blob, length, opts) { - var o = {}; - o.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2); - o.fStyle = (o.flags >> 2) & 0x01; - length -= 6; - o.data = parse_CellStyleXF(blob, length, o.fStyle, opts); - return o; -} -function write_XF(data, ixfeP, opts, o) { - var b5 = (opts && (opts.biff == 5)); - if(!o) o = new_buf(b5 ? 16 : 20); - o.write_shift(2, 0); - if(data.style) { - o.write_shift(2, (data.numFmtId||0)); - o.write_shift(2, 0xFFF4); - } else { - o.write_shift(2, (data.numFmtId||0)); - o.write_shift(2, (ixfeP<<4)); - } - var f = 0; - if(data.numFmtId > 0 && b5) f |= 0x0400; - o.write_shift(4, f); - o.write_shift(4, 0); - if(!b5) o.write_shift(4, 0); - o.write_shift(2, 0); - return o; -} - -/* [MS-XLS] 2.4.134 */ -function parse_Guts(blob) { - blob.l += 4; - var out = [blob.read_shift(2), blob.read_shift(2)]; - if(out[0] !== 0) out[0]--; - if(out[1] !== 0) out[1]--; - if(out[0] > 7 || out[1] > 7) throw new Error("Bad Gutters: " + out.join("|")); - return out; -} -function write_Guts(guts) { - var o = new_buf(8); - o.write_shift(4, 0); - o.write_shift(2, guts[0] ? guts[0] + 1 : 0); - o.write_shift(2, guts[1] ? guts[1] + 1 : 0); - return o; -} - -/* [MS-XLS] 2.4.24 */ -function parse_BoolErr(blob, length, opts) { - var cell = parse_XLSCell(blob, 6); - if(opts.biff == 2 || length == 9) ++blob.l; - var val = parse_Bes(blob, 2); - cell.val = val; - cell.t = (val === true || val === false) ? 'b' : 'e'; - return cell; -} -function write_BoolErr(R, C, v, os, opts, t) { - var o = new_buf(8); - write_XLSCell(R, C, os, o); - write_Bes(v, t, o); - return o; -} - -/* [MS-XLS] 2.4.180 Number */ -function parse_Number(blob, length, opts) { - if(opts.biffguess && opts.biff == 2) opts.biff = 5; - var cell = parse_XLSCell(blob, 6); - var xnum = parse_Xnum(blob, 8); - cell.val = xnum; - return cell; -} -function write_Number(R, C, v, os) { - var o = new_buf(14); - write_XLSCell(R, C, os, o); - write_Xnum(v, o); - return o; -} - -var parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136 - -/* [MS-XLS] 2.4.271 */ -function parse_SupBook(blob, length, opts) { - var end = blob.l + length; - var ctab = blob.read_shift(2); - var cch = blob.read_shift(2); - opts.sbcch = cch; - if(cch == 0x0401 || cch == 0x3A01) return [cch, ctab]; - if(cch < 0x01 || cch >0xff) throw new Error("Unexpected SupBook type: "+cch); - var virtPath = parse_XLUnicodeStringNoCch(blob, cch); - /* TODO: 2.5.277 Virtual Path */ - var rgst = []; - while(end > blob.l) rgst.push(parse_XLUnicodeString(blob)); - return [cch, ctab, virtPath, rgst]; -} - -/* [MS-XLS] 2.4.105 TODO */ -function parse_ExternName(blob, length, opts) { - var flags = blob.read_shift(2); - var body; - var o = ({ - fBuiltIn: flags & 0x01, - fWantAdvise: (flags >>> 1) & 0x01, - fWantPict: (flags >>> 2) & 0x01, - fOle: (flags >>> 3) & 0x01, - fOleLink: (flags >>> 4) & 0x01, - cf: (flags >>> 5) & 0x3FF, - fIcon: flags >>> 15 & 0x01 - }); - if(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts); - //else throw new Error("unsupported SupBook cch: " + opts.sbcch); - o.body = body || blob.read_shift(length-2); - if(typeof body === "string") o.Name = body; - return o; -} - -/* [MS-XLS] 2.4.150 TODO */ -var XLSLblBuiltIn = [ - "_xlnm.Consolidate_Area", - "_xlnm.Auto_Open", - "_xlnm.Auto_Close", - "_xlnm.Extract", - "_xlnm.Database", - "_xlnm.Criteria", - "_xlnm.Print_Area", - "_xlnm.Print_Titles", - "_xlnm.Recorder", - "_xlnm.Data_Form", - "_xlnm.Auto_Activate", - "_xlnm.Auto_Deactivate", - "_xlnm.Sheet_Title", - "_xlnm._FilterDatabase" -]; -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) { - if(opts.biff != 5) blob.l += 2; - itab = blob.read_shift(2); - if(opts.biff == 5) blob.l += 2; - blob.l += 4; - } - var name = parse_XLUnicodeStringNoCch(blob, cch, opts); - if(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)]; - var npflen = target - blob.l; if(opts && opts.biff == 2) --npflen; - /*jshint -W018 */ - var rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce); - /*jshint +W018 */ - return { - chKey: chKey, - Name: name, - itab: itab, - rgce: rgce - }; -} - -/* [MS-XLS] 2.4.106 TODO: verify filename encoding */ -function parse_ExternSheet(blob, length, opts) { - if(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts); - var o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2); - while(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts)); - // [iSupBook, itabFirst, itabLast]; - if(blob.l != target) throw new Error("Bad ExternSheet: " + blob.l + " != " + target); - return o; -} -function parse_BIFF5ExternSheet(blob, length, opts) { - if(blob[blob.l + 1] == 0x03) blob[blob.l]++; - var o = parse_ShortXLUnicodeString(blob, length, opts); - return o.charCodeAt(0) == 0x03 ? o.slice(1) : o; -} - -/* [MS-XLS] 2.4.176 TODO: check older biff */ -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]; -} - -/* [MS-XLS] 2.4.260 */ -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, ref]; -} - -/* [MS-XLS] 2.4.4 TODO */ -function parse_Array(blob, length, opts) { - var ref = parse_Ref(blob, 6); - /* TODO: fAlwaysCalc */ - 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)]; -} - -/* [MS-XLS] 2.4.173 */ -function parse_MTRSettings(blob) { - var fMTREnabled = blob.read_shift(4) !== 0x00; - var fUserSetThreadCount = blob.read_shift(4) !== 0x00; - var cUserThreadCount = blob.read_shift(4); - return [fMTREnabled, fUserSetThreadCount, cUserThreadCount]; -} - -/* [MS-XLS] 2.5.186 TODO: BIFF5 */ -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]; -} - -/* [MS-XLS] 2.4.179 */ -function parse_Note(blob, length, opts) { - /* TODO: Support revisions */ - return parse_NoteSh(blob, length, opts); -} - -/* [MS-XLS] 2.4.168 */ -function parse_MergeCells(blob, length) { - var merges = []; - var cmcs = blob.read_shift(2); - while (cmcs--) merges.push(parse_Ref8U(blob,length)); - return merges; -} -function write_MergeCells(merges) { - var o = new_buf(2 + merges.length * 8); - o.write_shift(2, merges.length); - for(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o); - return o; -} - -/* [MS-XLS] 2.4.181 TODO: parse all the things! */ -function parse_Obj(blob, length, opts) { - if(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts); - var cmo = parse_FtCmo(blob, 22); // id, ot, flags - var fts = parse_FtArray(blob, length-22, cmo[1]); - return { cmo: cmo, ft:fts }; -} -/* from older spec */ -var parse_BIFF5OT = []; -parse_BIFF5OT[0x08] = function(blob, length) { - var tgt = blob.l + length; - blob.l += 10; // todo - var cf = blob.read_shift(2); - blob.l += 4; - blob.l += 2; //var cbPictFmla = blob.read_shift(2); - blob.l += 2; - blob.l += 2; //var grbit = blob.read_shift(2); - blob.l += 4; - var cchName = blob.read_shift(1); - blob.l += cchName; // TODO: stName - blob.l = tgt; // TODO: fmla - return { fmt:cf }; -}; - -function parse_BIFF5Obj(blob, length, opts) { - blob.l += 4; //var cnt = blob.read_shift(4); - var ot = blob.read_shift(2); - var id = blob.read_shift(2); - var grbit = blob.read_shift(2); - blob.l += 2; //var colL = blob.read_shift(2); - blob.l += 2; //var dxL = blob.read_shift(2); - blob.l += 2; //var rwT = blob.read_shift(2); - blob.l += 2; //var dyT = blob.read_shift(2); - blob.l += 2; //var colR = blob.read_shift(2); - blob.l += 2; //var dxR = blob.read_shift(2); - blob.l += 2; //var rwB = blob.read_shift(2); - blob.l += 2; //var dyB = blob.read_shift(2); - blob.l += 2; //var cbMacro = blob.read_shift(2); - blob.l += 6; - length -= 36; - var fts = []; - fts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts)); - return { cmo: [id, ot, grbit], ft:fts }; -} - -/* [MS-XLS] 2.4.329 TODO: parse properly */ -function parse_TxO(blob, length, opts) { - var s = blob.l; - var texts = ""; -try { - blob.l += 4; - var ot = (opts.lastobj||{cmo:[0,0]}).cmo[1]; - var controlInfo; // eslint-disable-line no-unused-vars - if([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6; - else controlInfo = parse_ControlInfo(blob, 6, opts); - var cchText = blob.read_shift(2); - /*var cbRuns = */blob.read_shift(2); - /*var ifntEmpty = */parseuint16(blob, 2); - var len = blob.read_shift(2); - blob.l += len; - //var fmla = parse_ObjFmla(blob, s + length - blob.l); - - for(var i = 1; i < blob.lens.length-1; ++i) { - if(blob.l-s != blob.lens[i]) throw new Error("TxO: bad continue record"); - var hdr = blob[blob.l]; - var t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1); - texts += t; - if(texts.length >= (hdr ? cchText : 2*cchText)) break; - } - if(texts.length !== cchText && texts.length !== cchText*2) { - throw new Error("cchText: " + cchText + " != " + texts.length); - } - - blob.l = s + length; - /* [MS-XLS] 2.5.272 TxORuns */ -// var rgTxoRuns = []; -// for(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8; -// var cchText2 = blob.read_shift(2); -// if(cchText2 !== cchText) throw new Error("TxOLastRun mismatch: " + cchText2 + " " + cchText); -// blob.l += 6; -// if(s + length != blob.l) throw new Error("TxO " + (s + length) + ", at " + blob.l); - return { t: texts }; -} catch(e) { blob.l = s + length; return { t: texts }; } -} - -/* [MS-XLS] 2.4.140 */ -function parse_HLink(blob, length) { - var ref = parse_Ref8U(blob, 8); - blob.l += 16; /* CLSID */ - var hlink = parse_Hyperlink(blob, length-24); - return [ref, hlink]; -} -function write_HLink(hl) { - var O = new_buf(24); - var ref = decode_cell(hl[0]); - O.write_shift(2, ref.r); O.write_shift(2, ref.r); - O.write_shift(2, ref.c); O.write_shift(2, ref.c); - var clsid = "d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "); - for(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16)); - return bconcat([O, write_Hyperlink(hl[1])]); -} - - -/* [MS-XLS] 2.4.141 */ -function parse_HLinkTooltip(blob, length) { - blob.read_shift(2); - var ref = parse_Ref8U(blob, 8); - var wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont'); - wzTooltip = wzTooltip.replace(chr0,""); - return [ref, wzTooltip]; -} -function write_HLinkTooltip(hl) { - var TT = hl[1].Tooltip; - var O = new_buf(10 + 2 * (TT.length + 1)); - O.write_shift(2, 0x0800); - var ref = decode_cell(hl[0]); - O.write_shift(2, ref.r); O.write_shift(2, ref.r); - O.write_shift(2, ref.c); O.write_shift(2, ref.c); - for(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i)); - O.write_shift(2, 0); - return O; -} - -/* [MS-XLS] 2.4.63 */ -function parse_Country(blob) { - var o = [0,0], d; - d = blob.read_shift(2); o[0] = CountryEnum[d] || d; - d = blob.read_shift(2); o[1] = CountryEnum[d] || d; - return o; -} -function write_Country(o) { - if(!o) o = new_buf(4); - o.write_shift(2, 0x01); - o.write_shift(2, 0x01); - return o; -} - -/* [MS-XLS] 2.4.50 ClrtClient */ -function parse_ClrtClient(blob) { - var ccv = blob.read_shift(2); - var o = []; - while(ccv-->0) o.push(parse_LongRGB(blob, 8)); - return o; -} - -/* [MS-XLS] 2.4.188 */ -function parse_Palette(blob) { - var ccv = blob.read_shift(2); - var o = []; - while(ccv-->0) o.push(parse_LongRGB(blob, 8)); - return o; -} - -/* [MS-XLS] 2.4.354 */ -function parse_XFCRC(blob) { - blob.l += 2; - var o = {cxfs:0, crc:0}; - o.cxfs = blob.read_shift(2); - o.crc = blob.read_shift(4); - return o; -} - -/* [MS-XLS] 2.4.53 TODO: parse flags */ -/* [MS-XLSB] 2.4.323 TODO: parse flags */ -function parse_ColInfo(blob, length, opts) { - if(!opts.cellStyles) return parsenoop(blob, length); - var w = opts && opts.biff >= 12 ? 4 : 2; - var colFirst = blob.read_shift(w); - var colLast = blob.read_shift(w); - var coldx = blob.read_shift(w); - var ixfe = blob.read_shift(w); - var flags = blob.read_shift(2); - if(w == 2) blob.l += 2; - var o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}); - if(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7; - return o; -} -function write_ColInfo(col, idx) { - var o = new_buf(12); - o.write_shift(2, idx); - o.write_shift(2, idx); - o.write_shift(2, col.width * 256); - o.write_shift(2, 0); - var f = 0; - if(col.hidden) f |= 1; - o.write_shift(1, f); - f = col.level || 0; - o.write_shift(1, f); - o.write_shift(2, 0); - return o; -} - -/* [MS-XLS] 2.4.257 */ -function parse_Setup(blob, length) { - var o = {}; - if(length < 32) return o; - blob.l += 16; - o.header = parse_Xnum(blob, 8); - o.footer = parse_Xnum(blob, 8); - blob.l += 2; - return o; -} - -/* [MS-XLS] 2.4.261 */ -function parse_ShtProps(blob, length, opts) { - var def = {area:false}; - if(opts.biff != 5) { blob.l += length; return def; } - var d = blob.read_shift(1); blob.l += 3; - if((d & 0x10)) def.area = true; - return def; -} - -/* [MS-XLS] 2.4.241 */ -function write_RRTabId(n) { - var out = new_buf(2 * n); - for(var i = 0; i < n; ++i) out.write_shift(2, i+1); - return out; -} - -var parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */ -var parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */ -var parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */ - -/* --- Specific to versions before BIFF8 --- */ -function parse_ImData(blob) { - var cf = blob.read_shift(2); - var env = blob.read_shift(2); - var lcb = blob.read_shift(4); - var o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)}; - blob.l += lcb; - return o; -} - -/* BIFF2_??? where ??? is the name from [XLS] */ -function parse_BIFF2STR(blob, length, opts) { - if(opts.biffguess && opts.biff == 5) opts.biff = 2; - var cell = parse_XLSCell(blob, 6); - ++blob.l; - var str = parse_XLUnicodeString2(blob, length-7, opts); - cell.t = 'str'; - cell.val = str; - return cell; -} - -function parse_BIFF2NUM(blob) { - var cell = parse_XLSCell(blob, 6); - ++blob.l; - var num = parse_Xnum(blob, 8); - cell.t = 'n'; - cell.val = num; - return cell; -} -function write_BIFF2NUM(r, c, val) { - var out = new_buf(15); - write_BIFF2Cell(out, r, c); - out.write_shift(8, val, 'f'); - return out; -} - -function parse_BIFF2INT(blob) { - var cell = parse_XLSCell(blob, 6); - ++blob.l; - var num = blob.read_shift(2); - cell.t = 'n'; - cell.val = num; - return cell; -} -function write_BIFF2INT(r, c, val) { - var out = new_buf(9); - write_BIFF2Cell(out, r, c); - out.write_shift(2, val); - return out; -} - -function parse_BIFF2STRING(blob) { - var cch = blob.read_shift(1); - if(cch === 0) { blob.l++; return ""; } - return blob.read_shift(cch, 'sbcs-cont'); -} - -/* TODO: convert to BIFF8 font struct */ -function parse_BIFF2FONTXTRA(blob, length) { - blob.l += 6; // unknown - blob.l += 2; // font weight "bls" - blob.l += 1; // charset - blob.l += 3; // unknown - blob.l += 1; // font family - blob.l += length - 13; -} - -/* TODO: parse rich text runs */ -function parse_RString(blob, length, opts) { - var end = blob.l + length; - var cell = parse_XLSCell(blob, 6); - var cch = blob.read_shift(2); - var str = parse_XLUnicodeStringNoCch(blob, cch, opts); - blob.l = end; - cell.t = 'str'; - cell.val = str; - return cell; -} -/* from js-harb (C) 2014-present SheetJS */ -var DBF = (function() { -var dbf_codepage_map = { - /* Code Pages Supported by Visual FoxPro */ -0x01: 437, 0x02: 850, -0x03: 1252, 0x04: 10000, -0x64: 852, 0x65: 866, -0x66: 865, 0x67: 861, -0x68: 895, 0x69: 620, -0x6A: 737, 0x6B: 857, -0x78: 950, 0x79: 949, -0x7A: 936, 0x7B: 932, -0x7C: 874, 0x7D: 1255, -0x7E: 1256, 0x96: 10007, -0x97: 10029, 0x98: 10006, -0xC8: 1250, 0xC9: 1251, -0xCA: 1254, 0xCB: 1253, - - /* shapefile DBF extension */ -0x00: 20127, 0x08: 865, -0x09: 437, 0x0A: 850, -0x0B: 437, 0x0D: 437, -0x0E: 850, 0x0F: 437, -0x10: 850, 0x11: 437, -0x12: 850, 0x13: 932, -0x14: 850, 0x15: 437, -0x16: 850, 0x17: 865, -0x18: 437, 0x19: 437, -0x1A: 850, 0x1B: 437, -0x1C: 863, 0x1D: 850, -0x1F: 852, 0x22: 852, -0x23: 852, 0x24: 860, -0x25: 850, 0x26: 866, -0x37: 850, 0x40: 852, -0x4D: 936, 0x4E: 949, -0x4F: 950, 0x50: 874, -0x57: 1252, 0x58: 1252, -0x59: 1252, 0x6C: 863, -0x86: 737, 0x87: 852, -0x88: 857, 0xCC: 1257, - -0xFF: 16969 -}; -var dbf_reverse_map = evert({ -0x01: 437, 0x02: 850, -0x03: 1252, 0x04: 10000, -0x64: 852, 0x65: 866, -0x66: 865, 0x67: 861, -0x68: 895, 0x69: 620, -0x6A: 737, 0x6B: 857, -0x78: 950, 0x79: 949, -0x7A: 936, 0x7B: 932, -0x7C: 874, 0x7D: 1255, -0x7E: 1256, 0x96: 10007, -0x97: 10029, 0x98: 10006, -0xC8: 1250, 0xC9: 1251, -0xCA: 1254, 0xCB: 1253, -0x00: 20127 -}); -var DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5]; -/* TODO: find an actual specification */ -function dbf_to_aoa(buf, opts) { - var out = []; - var d = (new_raw_buf(1)); - switch(opts.type) { - case 'base64': d = s2a(Base64.decode(buf)); break; - case 'binary': d = s2a(buf); break; - case 'buffer': - case 'array': d = buf; break; - } - prep_blob(d, 0); - - /* header */ - var ft = d.read_shift(1); - var memo = !!(ft & 0x88); - var vfp = false, l7 = false; - switch(ft) { - case 0x02: break; // dBASE II - case 0x03: break; // dBASE III - case 0x30: vfp = true; memo = true; break; // VFP - case 0x31: vfp = true; memo = true; break; // VFP with autoincrement - // 0x43 dBASE IV SQL table files - // 0x63 dBASE IV SQL system files - case 0x83: break; // dBASE III with memo - case 0x8B: break; // dBASE IV with memo - case 0x8C: l7 = true; break; // dBASE Level 7 with memo - // case 0xCB dBASE IV SQL table files with memo - case 0xF5: break; // FoxPro 2.x with memo - // case 0xFB FoxBASE - default: throw new Error("DBF Unsupported Version: " + ft.toString(16)); - } - - var nrow = 0, fpos = 0x0209; - if(ft == 0x02) nrow = d.read_shift(2); - d.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD - if(ft != 0x02) nrow = d.read_shift(4); - if(nrow > 1048576) nrow = 1e6; - - if(ft != 0x02) fpos = d.read_shift(2); // header length - var rlen = d.read_shift(2); // record length - - var /*flags = 0,*/ current_cp = opts.codepage || 1252; - if(ft != 0x02) { // 20 reserved bytes - d.l+=16; - /*flags = */d.read_shift(1); - //if(memo && ((flags & 0x02) === 0)) throw new Error("DBF Flags " + flags.toString(16) + " ft " + ft.toString(16)); - - /* codepage present in FoxPro and dBASE Level 7 */ - if(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]]; - d.l+=1; - - d.l+=2; - } - if(l7) d.l += 36; // Level 7: 32 byte "Language driver name", 4 byte reserved - -var fields = [], field = ({}); - var hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0)))); - var ww = l7 ? 32 : 11; - while(d.l < hend && d[d.l] != 0x0d) { - field = ({}); - field.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\u0000\r\n].*$/g,""); - d.l += ww; - field.type = String.fromCharCode(d.read_shift(1)); - if(ft != 0x02 && !l7) field.offset = d.read_shift(4); - field.len = d.read_shift(1); - if(ft == 0x02) field.offset = d.read_shift(2); - field.dec = d.read_shift(1); - if(field.name.length) fields.push(field); - if(ft != 0x02) d.l += l7 ? 13 : 14; - switch(field.type) { - case 'B': // Double (VFP) / Binary (dBASE L7) - if((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type); - break; - case 'G': // General (FoxPro and dBASE L7) - case 'P': // Picture (FoxPro and dBASE L7) - if(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type); - break; - case '+': // Autoincrement (dBASE L7 only) - case '0': // _NullFlags (VFP only) - case '@': // Timestamp (dBASE L7 only) - case 'C': // Character (dBASE II) - case 'D': // Date (dBASE III) - case 'F': // Float (dBASE IV) - case 'I': // Long (VFP and dBASE L7) - case 'L': // Logical (dBASE II) - case 'M': // Memo (dBASE III) - case 'N': // Number (dBASE II) - case 'O': // Double (dBASE L7 only) - case 'T': // Datetime (VFP only) - case 'Y': // Currency (VFP only) - break; - default: throw new Error('Unknown Field Type: ' + field.type); - } - } - - if(d[d.l] !== 0x0D) d.l = fpos-1; - if(d.read_shift(1) !== 0x0D) throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]); - d.l = fpos; - - /* data */ - var R = 0, C = 0; - out[0] = []; - for(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name; - while(nrow-- > 0) { - if(d[d.l] === 0x2A) { - // TODO: record marked as deleted -- create a hidden row? - d.l+=rlen; - continue; - } - ++d.l; - out[++R] = []; C = 0; - for(C = 0; C != fields.length; ++C) { - var dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len; - prep_blob(dd, 0); - var s = cptable.utils.decode(current_cp, dd); - switch(fields[C].type) { - case 'C': - // NOTE: it is conventional to write ' / / ' for empty dates - if(s.trim().length) out[R][C] = s.replace(/\s+$/,""); - break; - case 'D': - if(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8)); - else out[R][C] = s; - break; - case 'F': out[R][C] = parseFloat(s.trim()); break; - case '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break; - case 'L': switch(s.trim().toUpperCase()) { - case 'Y': case 'T': out[R][C] = true; break; - case 'N': case 'F': out[R][C] = false; break; - case '': case '?': break; - default: throw new Error("DBF Unrecognized L:|" + s + "|"); - } break; - case 'M': /* TODO: handle memo files */ - if(!memo) throw new Error("DBF Unexpected MEMO for type " + ft.toString(16)); - out[R][C] = "##MEMO##" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4)); - break; - case 'N': - s = s.replace(/\u0000/g,"").trim(); - // NOTE: dBASE II interprets " . " as 0 - if(s && s != ".") out[R][C] = +s || 0; break; - case '@': - // NOTE: dBASE specs appear to be incorrect - out[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400); - break; - case 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break; - case 'Y': out[R][C] = dd.read_shift(4,'i')/1e4; break; - case 'O': out[R][C] = -dd.read_shift(-8, 'f'); break; - case 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; } - /* falls through */ - case 'G': case 'P': dd.l += fields[C].len; break; - case '0': - if(fields[C].name === '_NullFlags') break; - /* falls through */ - default: throw new Error("DBF Unsupported data type " + fields[C].type); - } - } - } - if(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error("DBF EOF Marker missing " + (d.l-1) + " of " + d.length + " " + d[d.l-1].toString(16)); - if(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows); - return out; -} - -function dbf_to_sheet(buf, opts) { - var o = opts || {}; - if(!o.dateNF) o.dateNF = "yyyymmdd"; - return aoa_to_sheet(dbf_to_aoa(buf, o), o); -} - -function dbf_to_workbook(buf, opts) { - try { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); } - catch(e) { if(opts && opts.WTF) throw e; } - return ({SheetNames:[],Sheets:{}}); -} - -var _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 }; -function sheet_to_dbf(ws, opts) { - var o = opts || {}; - if(+o.codepage >= 0) set_cp(+o.codepage); - if(o.type == "string") throw new Error("Cannot write DBF to JS string"); - var ba = buf_array(); - var aoa = sheet_to_json(ws, {header:1, raw:true, cellDates:true}); - var headers = aoa[0], data = aoa.slice(1); - var i = 0, j = 0, hcnt = 0, rlen = 1; - for(i = 0; i < headers.length; ++i) { - if(i == null) continue; - ++hcnt; - if(typeof headers[i] === 'number') headers[i] = headers[i].toString(10); - if(typeof headers[i] !== 'string') throw new Error("DBF Invalid column name " + headers[i] + " |" + (typeof headers[i]) + "|"); - if(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j) - if(headers.indexOf(headers[i] + "_" + j) == -1) { headers[i] += "_" + j; break; } - } - var range = safe_decode_range(ws['!ref']); - var coltypes = []; - for(i = 0; i <= range.e.c - range.s.c; ++i) { - var col = []; - for(j=0; j < data.length; ++j) { - if(data[j][i] != null) col.push(data[j][i]); - } - if(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; } - var guess = '', _guess = ''; - for(j = 0; j < col.length; ++j) { - switch(typeof col[j]) { - /* TODO: check if L2 compat is desired */ - case 'number': _guess = 'B'; break; - case 'string': _guess = 'C'; break; - case 'boolean': _guess = 'L'; break; - case 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break; - default: _guess = 'C'; - } - guess = guess && guess != _guess ? 'C' : _guess; - if(guess == 'C') break; - } - rlen += _RLEN[guess] || 0; - coltypes[i] = guess; - } - - var h = ba.next(32); - h.write_shift(4, 0x13021130); - h.write_shift(4, data.length); - h.write_shift(2, 296 + 32 * hcnt); - h.write_shift(2, rlen); - for(i=0; i < 4; ++i) h.write_shift(4, 0); - h.write_shift(4, 0x00000000 | ((+dbf_reverse_map[current_ansi] || 0x03)<<8)); - - for(i = 0, j = 0; i < headers.length; ++i) { - if(headers[i] == null) continue; - var hf = ba.next(32); - var _f = (headers[i].slice(-10) + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00").slice(0, 11); - hf.write_shift(1, _f, "sbcs"); - hf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], "sbcs"); - hf.write_shift(4, j); - hf.write_shift(1, _RLEN[coltypes[i]] || 0); - hf.write_shift(1, 0); - hf.write_shift(1, 0x02); - hf.write_shift(4, 0); - hf.write_shift(1, 0); - hf.write_shift(4, 0); - hf.write_shift(4, 0); - j += _RLEN[coltypes[i]] || 0; - } - - var hb = ba.next(264); - hb.write_shift(4, 0x0000000D); - for(i=0; i < 65;++i) hb.write_shift(4, 0x00000000); - for(i=0; i < data.length; ++i) { - var rout = ba.next(rlen); - rout.write_shift(1, 0); - for(j=0; j":190, "?":191, "{":223 - }); - var sylk_char_regex = new RegExp("\u001BN(" + keys(sylk_escapes).join("|").replace(/\|\|\|/, "|\\||").replace(/([?()+])/g,"\\$1") + "|\\|)", "gm"); - var sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == "number" ? _getansi(o) : o; }; - var decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); }; - sylk_escapes["|"] = 254; - /* TODO: find an actual specification */ - function sylk_to_aoa(d, opts) { - switch(opts.type) { - case 'base64': return sylk_to_aoa_str(Base64.decode(d), opts); - case 'binary': return sylk_to_aoa_str(d, opts); - case 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); - case 'array': return sylk_to_aoa_str(cc2str(d), opts); - } - throw new Error("Unrecognized type " + opts.type); - } - function sylk_to_aoa_str(str, opts) { - var records = str.split(/[\n\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr = []; - var formats = []; - var next_cell_format = null; - var sht = {}, rowinfo = [], colinfo = [], cw = []; - var Mval = 0, j; - if(+opts.codepage >= 0) set_cp(+opts.codepage); - for (; ri !== records.length; ++ri) { - Mval = 0; - var rstr=records[ri].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn); - var record=rstr.replace(/;;/g, "\u0000").split(";").map(function(x) { return x.replace(/\u0000/g, ";"); }); - var RT=record[0], val; - if(rstr.length > 0) switch(RT) { - case 'ID': break; /* header */ - case 'E': break; /* EOF */ - case 'B': break; /* dimensions */ - case 'O': break; /* options? */ - case 'W': break; /* window? */ - case 'P': - if(record[1].charAt(0) == 'P') - formats.push(rstr.slice(3).replace(/;;/g, ";")); - break; - case 'C': - var C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1; - for(rj=1; rj -1 && arr[_R][_C]; - if(!shrbase || !shrbase[1]) throw new Error("SYLK shared formula cannot find base"); - arr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C}); - } - break; - case 'F': - var F_seen = 0; - for(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); } - else if(Mval === 0) rowinfo[R].hidden = true; - break; - default: if(opts && opts.WTF) throw new Error("SYLK bad record " + rstr); - } - if(F_seen < 1) next_cell_format = null; break; - default: if(opts && opts.WTF) throw new Error("SYLK bad record " + rstr); - } - } - if(rowinfo.length > 0) sht['!rows'] = rowinfo; - if(colinfo.length > 0) sht['!cols'] = colinfo; - if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); - return [arr, sht]; - } - - function sylk_to_sheet(d, opts) { - var aoasht = sylk_to_aoa(d, opts); - var aoa = aoasht[0], ws = aoasht[1]; - var o = aoa_to_sheet(aoa, opts); - keys(ws).forEach(function(k) { o[k] = ws[k]; }); - return o; - } - - function sylk_to_workbook(d, opts) { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); } - - function write_ws_cell_sylk(cell, ws, R, C) { - var o = "C;Y" + (R+1) + ";X" + (C+1) + ";K"; - switch(cell.t) { - case 'n': - o += (cell.v||0); - if(cell.f && !cell.F) o += ";E" + a1_to_rc(cell.f, {r:R, c:C}); break; - case 'b': o += cell.v ? "TRUE" : "FALSE"; break; - case 'e': o += cell.w || cell.v; break; - case 'd': o += '"' + (cell.w || cell.v) + '"'; break; - case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break; - } - return o; - } - - function write_ws_cols_sylk(out, cols) { - cols.forEach(function(col, i) { - var rec = "F;W" + (i+1) + " " + (i+1) + " "; - if(col.hidden) rec += "0"; - else { - if(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width); - if(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx); - if(typeof col.wch == 'number') rec += Math.round(col.wch); - } - if(rec.charAt(rec.length - 1) != " ") out.push(rec); - }); - } - - function write_ws_rows_sylk(out, rows) { - rows.forEach(function(row, i) { - var rec = "F;"; - if(row.hidden) rec += "M0;"; - else if(row.hpt) rec += "M" + 20 * row.hpt + ";"; - else if(row.hpx) rec += "M" + 20 * px2pt(row.hpx) + ";"; - if(rec.length > 2) out.push(rec + "R" + (i+1)); - }); - } - - function sheet_to_sylk(ws, opts) { - var preamble = ["ID;PWXL;N;E"], o = []; - var r = safe_decode_range(ws['!ref']), cell; - var dense = Array.isArray(ws); - var RS = "\r\n"; - - preamble.push("P;PGeneral"); - preamble.push("F;P0;DG0G8;M255"); - if(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']); - if(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']); - - preamble.push("B;Y" + (r.e.r - r.s.r + 1) + ";X" + (r.e.c - r.s.c + 1) + ";D" + [r.s.c,r.s.r,r.e.c,r.e.r].join(" ")); - for(var R = r.s.r; R <= r.e.r; ++R) { - for(var C = r.s.c; C <= r.e.c; ++C) { - var coord = encode_cell({r:R,c:C}); - cell = dense ? (ws[R]||[])[C]: ws[coord]; - if(!cell || (cell.v == null && (!cell.f || cell.F))) continue; - o.push(write_ws_cell_sylk(cell, ws, R, C, opts)); - } - } - return preamble.join(RS) + RS + o.join(RS) + RS + "E" + RS; - } - - return { - to_workbook: sylk_to_workbook, - to_sheet: sylk_to_sheet, - from_sheet: sheet_to_sylk - }; -})(); - -var DIF = (function() { - function dif_to_aoa(d, opts) { - switch(opts.type) { - case 'base64': return dif_to_aoa_str(Base64.decode(d), opts); - case 'binary': return dif_to_aoa_str(d, opts); - case 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); - case 'array': return dif_to_aoa_str(cc2str(d), opts); - } - throw new Error("Unrecognized type " + opts.type); - } - function dif_to_aoa_str(str, opts) { - var records = str.split('\n'), R = -1, C = -1, ri = 0, arr = []; - for (; ri !== records.length; ++ri) { - if (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; } - if (R < 0) continue; - var metadata = records[ri].trim().split(","); - var type = metadata[0], value = metadata[1]; - ++ri; - var data = records[ri] || ""; - while(((data.match(/["]/g)||[]).length & 1) && ri < records.length - 1) data += "\n" + records[++ri]; - data = data.trim(); - switch (+type) { - case -1: - if (data === 'BOT') { arr[++R] = []; C = 0; continue; } - else if (data !== 'EOD') throw new Error("Unrecognized DIF special command " + data); - break; - case 0: - if(data === 'TRUE') arr[R][C] = true; - else if(data === 'FALSE') arr[R][C] = false; - else if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value); - else if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value); - else arr[R][C] = value; - ++C; break; - case 1: - data = data.slice(1,data.length-1); - data = data.replace(/""/g, '"'); - if(DIF_XL && data && data.match(/^=".*"$/)) data = data.slice(2, -1); - arr[R][C++] = data !== '' ? data : null; - break; - } - if (data === 'EOD') break; - } - if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); - return arr; - } - - function dif_to_sheet(str, opts) { return aoa_to_sheet(dif_to_aoa(str, opts), opts); } - function dif_to_workbook(str, opts) { return sheet_to_workbook(dif_to_sheet(str, opts), opts); } - - var sheet_to_dif = (function() { - var push_field = function pf(o, topic, v, n, s) { - o.push(topic); - o.push(v + "," + n); - o.push('"' + s.replace(/"/g,'""') + '"'); - }; - var push_value = function po(o, type, v, s) { - o.push(type + "," + v); - o.push(type == 1 ? '"' + s.replace(/"/g,'""') + '"' : s); - }; - return function sheet_to_dif(ws) { - var o = []; - var r = safe_decode_range(ws['!ref']), cell; - var dense = Array.isArray(ws); - push_field(o, "TABLE", 0, 1, "sheetjs"); - push_field(o, "VECTORS", 0, r.e.r - r.s.r + 1,""); - push_field(o, "TUPLES", 0, r.e.c - r.s.c + 1,""); - push_field(o, "DATA", 0, 0,""); - for(var R = r.s.r; R <= r.e.r; ++R) { - push_value(o, -1, 0, "BOT"); - for(var C = r.s.c; C <= r.e.c; ++C) { - var coord = encode_cell({r:R,c:C}); - cell = dense ? (ws[R]||[])[C] : ws[coord]; - if(!cell) { push_value(o, 1, 0, ""); continue;} - switch(cell.t) { - case 'n': - var val = DIF_XL ? cell.w : cell.v; - if(!val && cell.v != null) val = cell.v; - if(val == null) { - if(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, "=" + cell.f); - else push_value(o, 1, 0, ""); - } - else push_value(o, 0, val, "V"); - break; - case 'b': - push_value(o, 0, cell.v ? 1 : 0, cell.v ? "TRUE" : "FALSE"); - break; - case 's': - push_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '="' + cell.v + '"'); - break; - case 'd': - if(!cell.w) cell.w = SSF.format(cell.z || SSF._table[14], datenum(parseDate(cell.v))); - if(DIF_XL) push_value(o, 0, cell.w, "V"); - else push_value(o, 1, 0, cell.w); - break; - default: push_value(o, 1, 0, ""); - } - } - } - push_value(o, -1, 0, "EOD"); - var RS = "\r\n"; - var oo = o.join(RS); - //while((oo.length & 0x7F) != 0) oo += "\0"; - return oo; - }; - })(); - return { - to_workbook: dif_to_workbook, - to_sheet: dif_to_sheet, - from_sheet: sheet_to_dif - }; -})(); - -var ETH = (function() { - function decode(s) { return s.replace(/\\b/g,"\\").replace(/\\c/g,":").replace(/\\n/g,"\n"); } - function encode(s) { return s.replace(/\\/g, "\\b").replace(/:/g, "\\c").replace(/\n/g,"\\n"); } - - function eth_to_aoa(str, opts) { - var records = str.split('\n'), R = -1, C = -1, ri = 0, arr = []; - for (; ri !== records.length; ++ri) { - var record = records[ri].trim().split(":"); - if(record[0] !== 'cell') continue; - var addr = decode_cell(record[1]); - if(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = []; - R = addr.r; C = addr.c; - switch(record[2]) { - case 't': arr[R][C] = decode(record[3]); break; - case 'v': arr[R][C] = +record[3]; break; - case 'vtf': var _f = record[record.length - 1]; - /* falls through */ - case 'vtc': - switch(record[3]) { - case 'nl': arr[R][C] = +record[4] ? true : false; break; - default: arr[R][C] = +record[4]; break; - } - if(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f]; - } - } - if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); - return arr; - } - - function eth_to_sheet(d, opts) { return aoa_to_sheet(eth_to_aoa(d, opts), opts); } - function eth_to_workbook(d, opts) { return sheet_to_workbook(eth_to_sheet(d, opts), opts); } - - var header = [ - "socialcalc:version:1.5", - "MIME-Version: 1.0", - "Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave" - ].join("\n"); - - var sep = [ - "--SocialCalcSpreadsheetControlSave", - "Content-type: text/plain; charset=UTF-8" - ].join("\n") + "\n"; - - /* TODO: the other parts */ - var meta = [ - "# SocialCalc Spreadsheet Control Save", - "part:sheet" - ].join("\n"); - - var end = "--SocialCalcSpreadsheetControlSave--"; - - function sheet_to_eth_data(ws) { - if(!ws || !ws['!ref']) return ""; - var o = [], oo = [], cell, coord = ""; - var r = decode_range(ws['!ref']); - var dense = Array.isArray(ws); - for(var R = r.s.r; R <= r.e.r; ++R) { - for(var C = r.s.c; C <= r.e.c; ++C) { - coord = encode_cell({r:R,c:C}); - cell = dense ? (ws[R]||[])[C] : ws[coord]; - if(!cell || cell.v == null || cell.t === 'z') continue; - oo = ["cell", coord, 't']; - switch(cell.t) { - case 's': case 'str': oo.push(encode(cell.v)); break; - case 'n': - if(!cell.f) { oo[2]='v'; oo[3]=cell.v; } - else { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); } - break; - case 'b': - oo[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?"1":"0"; - oo[5] = encode(cell.f||(cell.v?'TRUE':'FALSE')); - break; - case 'd': - var t = datenum(parseDate(cell.v)); - oo[2] = 'vtc'; oo[3] = 'nd'; oo[4] = ""+t; - oo[5] = cell.w || SSF.format(cell.z || SSF._table[14], t); - break; - case 'e': continue; - } - o.push(oo.join(":")); - } - } - o.push("sheet:c:" + (r.e.c-r.s.c+1) + ":r:" + (r.e.r-r.s.r+1) + ":tvf:1"); - o.push("valueformat:1:text-wiki"); - //o.push("copiedfrom:" + ws['!ref']); // clipboard only - return o.join("\n"); - } - - function sheet_to_eth(ws) { - return [header, sep, meta, sep, sheet_to_eth_data(ws), end].join("\n"); - // return ["version:1.5", sheet_to_eth_data(ws)].join("\n"); // clipboard form - } - - return { - to_workbook: eth_to_workbook, - to_sheet: eth_to_sheet, - from_sheet: sheet_to_eth - }; -})(); - -var PRN = (function() { - function set_text_arr(data, arr, R, C, o) { - if(o.raw) arr[R][C] = data; - else if(data === ""){/* empty */} - else if(data === 'TRUE') arr[R][C] = true; - else if(data === 'FALSE') arr[R][C] = false; - else if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data); - else if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data); - else arr[R][C] = data; - } - - function prn_to_aoa_str(f, opts) { - var o = opts || {}; - var arr = ([]); - if(!f || f.length === 0) return arr; - var lines = f.split(/[\r\n]/); - var L = lines.length - 1; - while(L >= 0 && lines[L].length === 0) --L; - var start = 10, idx = 0; - var R = 0; - for(; R <= L; ++R) { - idx = lines[R].indexOf(" "); - if(idx == -1) idx = lines[R].length; else idx++; - start = Math.max(start, idx); - } - for(R = 0; R <= L; ++R) { - arr[R] = []; - /* TODO: confirm that widths are always 10 */ - var C = 0; - set_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o); - for(C = 1; C <= (lines[R].length - start)/10 + 1; ++C) - set_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o); - } - if(o.sheetRows) arr = arr.slice(0, o.sheetRows); - return arr; - } - - // List of accepted CSV separators - var guess_seps = { -0x2C: ',', -0x09: "\t", -0x3B: ';', -0x7C: '|' - }; - - // CSV separator weights to be used in case of equal numbers - var guess_sep_weights = { -0x2C: 3, -0x09: 2, -0x3B: 1, -0x7C: 0 - }; - - function guess_sep(str) { - var cnt = {}, instr = false, end = 0, cc = 0; - for(;end < str.length;++end) { - if((cc=str.charCodeAt(end)) == 0x22) instr = !instr; - else if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1; - } - - cc = []; - for(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) { - cc.push([ cnt[end], end ]); - } - - if ( !cc.length ) { - cnt = guess_sep_weights; - for(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) { - cc.push([ cnt[end], end ]); - } - } - - cc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; }); - - return guess_seps[cc.pop()[1]] || 0x2C; - } - - function dsv_to_sheet_str(str, opts) { - var o = opts || {}; - var sep = ""; - if(DENSE != null && o.dense == null) o.dense = DENSE; - var ws = o.dense ? ([]) : ({}); - var range = ({s: {c:0, r:0}, e: {c:0, r:0}}); - - if(str.slice(0,4) == "sep=") { - // If the line ends in \r\n - if(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) { - sep = str.charAt(4); str = str.slice(7); - } - // If line ends in \r OR \n - else if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) { - sep = str.charAt(4); str = str.slice(6); - } - else sep = guess_sep(str.slice(0,1024)); - } - else if(o && o.FS) sep = o.FS; - else sep = guess_sep(str.slice(0,1024)); - var R = 0, C = 0, v = 0; - var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0); - str = str.replace(/\r\n/mg, "\n"); - var _re = o.dateNF != null ? dateNF_regex(o.dateNF) : null; - function finish_cell() { - var s = str.slice(start, end); - var cell = ({}); - if(s.charAt(0) == '"' && s.charAt(s.length - 1) == '"') s = s.slice(1,-1).replace(/""/g,'"'); - if(s.length === 0) cell.t = 'z'; - else if(o.raw) { cell.t = 's'; cell.v = s; } - else if(s.trim().length === 0) { cell.t = 's'; cell.v = s; } - else if(s.charCodeAt(0) == 0x3D) { - if(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/""/g,'"'); } - else if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); } - else { cell.t = 's'; cell.v = s; } } - else if(s == "TRUE") { cell.t = 'b'; cell.v = true; } - else if(s == "FALSE") { cell.t = 'b'; cell.v = false; } - else if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; } - else if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) { - cell.z = o.dateNF || SSF._table[14]; - var k = 0; - if(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; } - if(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); } - else { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); } - if(o.cellText !== false) cell.w = SSF.format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v); - if(!o.cellNF) delete cell.z; - } else { - cell.t = 's'; - cell.v = s; - } - if(cell.t == 'z'){} - else if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; } - else ws[encode_cell({c:C,r:R})] = cell; - start = end+1; startcc = str.charCodeAt(start); - if(range.e.c < C) range.e.c = C; - if(range.e.r < R) range.e.r = R; - if(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; } - } - outer: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) { - case 0x22: if(startcc === 0x22) instr = !instr; break; - case sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break; - default: break; - } - if(end - start > 0) finish_cell(); - - ws['!ref'] = encode_range(range); - return ws; - } - - function prn_to_sheet_str(str, opts) { - if(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts); - if(opts.FS) return dsv_to_sheet_str(str, opts); - if(str.slice(0,4) == "sep=") return dsv_to_sheet_str(str, opts); - if(str.indexOf("\t") >= 0 || str.indexOf(",") >= 0 || str.indexOf(";") >= 0) return dsv_to_sheet_str(str, opts); - return aoa_to_sheet(prn_to_aoa_str(str, opts), opts); - } - - function prn_to_sheet(d, opts) { - var str = "", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts); - switch(opts.type) { - case 'base64': str = Base64.decode(d); break; - case 'binary': str = d; break; - case 'buffer': - if(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf - else if(opts.codepage && typeof cptable !== 'undefined') str = cptable.utils.decode(opts.codepage, d); - else str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d); - break; - case 'array': str = cc2str(d); break; - case 'string': str = d; break; - default: throw new Error("Unrecognized type " + opts.type); - } - if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3)); - else if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str); - else if((opts.type == 'binary') && typeof cptable !== 'undefined' && opts.codepage) str = cptable.utils.decode(opts.codepage, cptable.utils.encode(28591,str)); - if(str.slice(0,19) == "socialcalc:version:") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts); - return prn_to_sheet_str(str, opts); - } - - function prn_to_workbook(d, opts) { return sheet_to_workbook(prn_to_sheet(d, opts), opts); } - - function sheet_to_prn(ws) { - var o = []; - var r = safe_decode_range(ws['!ref']), cell; - var dense = Array.isArray(ws); - for(var R = r.s.r; R <= r.e.r; ++R) { - var oo = []; - for(var C = r.s.c; C <= r.e.c; ++C) { - var coord = encode_cell({r:R,c:C}); - cell = dense ? (ws[R]||[])[C] : ws[coord]; - if(!cell || cell.v == null) { oo.push(" "); continue; } - var w = (cell.w || (format_cell(cell), cell.w) || "").slice(0,10); - while(w.length < 10) w += " "; - oo.push(w + (C === 0 ? " " : "")); - } - o.push(oo.join("")); - } - return o.join("\n"); - } - - return { - to_workbook: prn_to_workbook, - to_sheet: prn_to_sheet, - from_sheet: sheet_to_prn - }; -})(); - -/* Excel defaults to SYLK but warns if data is not valid */ -function read_wb_ID(d, opts) { - var o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true; - try { - var out = SYLK.to_workbook(d, o); - o.WTF = OLD_WTF; - return out; - } catch(e) { - o.WTF = OLD_WTF; - if(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e; - return PRN.to_workbook(d, opts); - } -} - -var WK_ = (function() { - function lotushopper(data, cb, opts) { - if(!data) return; - prep_blob(data, data.l || 0); - var Enum = opts.Enum || WK1Enum; - while(data.l < data.length) { - var RT = data.read_shift(2); - var R = Enum[RT] || Enum[0xFFFF]; - var length = data.read_shift(2); - var tgt = data.l + length; - var d = R.f && R.f(data, length, opts); - data.l = tgt; - if(cb(d, R, RT)) return; - } - } - - function lotus_to_workbook(d, opts) { - switch(opts.type) { - case 'base64': return lotus_to_workbook_buf(s2a(Base64.decode(d)), opts); - case 'binary': return lotus_to_workbook_buf(s2a(d), opts); - case 'buffer': - case 'array': return lotus_to_workbook_buf(d, opts); - } - 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", next_n = "", sidx = 0; - var sheets = {}, snames = [], realnames = []; - - var refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; - var sheetRows = o.sheetRows || 0; - - if(d[2] == 0x00) { - if(d[3] == 0x08 || d[3] == 0x09) { - if(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error("Unsupported Works 3 for Mac file"); - } - } - - if(d[2] == 0x02) { - o.Enum = WK1Enum; - lotushopper(d, function(val, R, RT) { switch(RT) { - case 0x00: /* BOF */ - o.vers = val; - if(val >= 0x1000) o.qpro = true; - break; - case 0x06: refguess = val; break; /* RANGE */ - case 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */ - case 0xDE: next_n = val; break; /* SHEETNAMELP */ - case 0x0F: /* LABEL */ - case 0x33: /* STRING */ - if(!o.qpro) val[1].v = val[1].v.slice(1); - /* falls through */ - case 0x0D: /* INTEGER */ - case 0x0E: /* NUMBER */ - case 0x10: /* FORMULA */ - /* TODO: actual translation of the format code */ - if(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) { - val[1].z = o.dateNF || SSF._table[14]; - if(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); } - } - - if(o.qpro) { - if(val[3] > sidx) { - s["!ref"] = encode_range(refguess); - sheets[n] = s; - snames.push(n); - s = (o.dense ? [] : {}); - refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; - sidx = val[3]; n = next_n || "Sheet" + (sidx + 1); next_n = ""; - } - } - - var tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])]; - if(tmpcell) { - tmpcell.t = val[1].t; tmpcell.v = val[1].v; - if(val[1].z != null) tmpcell.z = val[1].z; - if(val[1].f != null) tmpcell.f = val[1].f; - break; - } - 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; - default: - }}, o); - } else if(d[2] == 0x1A || d[2] == 0x0E) { - o.Enum = WK3Enum; - if(d[2] == 0x0E) { o.qpro = true; d.l = 0; } - lotushopper(d, function(val, R, RT) { switch(RT) { - case 0xCC: n = val; break; /* SHEETNAMECS */ - case 0x16: /* LABEL16 */ - val[1].v = val[1].v.slice(1); - /* falls through */ - case 0x17: /* NUMBER17 */ - case 0x18: /* NUMBER18 */ - case 0x19: /* FORMULA19 */ - case 0x25: /* NUMBER25 */ - case 0x27: /* NUMBER27 */ - case 0x28: /* FORMULA28 */ - if(val[3] > sidx) { - s["!ref"] = encode_range(refguess); - sheets[n] = s; - snames.push(n); - s = (o.dense ? [] : {}); - refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; - sidx = val[3]; n = "Sheet" + (sidx + 1); - } - if(sheetRows > 0 && val[0].r >= sheetRows) break; - 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]; - 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; - case 0x1B: /* XFORMAT */ - if(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1]; - break; - case 0x0601: /* SHEETINFOQP */ - realnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break; - default: break; - }}, o); - } else throw new Error("Unrecognized LOTUS BOF " + d[2]); - s["!ref"] = encode_range(refguess); - sheets[next_n || n] = s; - snames.push(next_n || n); - if(!realnames.length) return { SheetNames: snames, Sheets: sheets }; - var osheets = {}, rnames = []; - /* TODO: verify no collisions */ - for(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) { - rnames.push(realnames[i] || snames[i]); - osheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]]; - } else { - rnames.push(realnames[i]); - osheets[realnames[i]] = ({ "!ref": "A1" }); - } - return { SheetNames: rnames, Sheets: osheets }; - } - - function sheet_to_wk1(ws, opts) { - var o = opts || {}; - if(+o.codepage >= 0) set_cp(+o.codepage); - if(o.type == "string") throw new Error("Cannot write WK1 to JS string"); - var ba = buf_array(); - var range = safe_decode_range(ws["!ref"]); - var dense = Array.isArray(ws); - var cols = []; - - write_biff_rec(ba, 0x00, write_BOF_WK1(0x0406)); - write_biff_rec(ba, 0x06, write_RANGE(range)); - var max_R = Math.min(range.e.r, 8191); - for(var R = range.s.r; R <= max_R; ++R) { - var rr = encode_row(R); - for(var C = range.s.c; C <= range.e.c; ++C) { - if(R === range.s.r) cols[C] = encode_col(C); - var ref = cols[C] + rr; - var cell = dense ? (ws[R]||[])[C] : ws[ref]; - if(!cell || cell.t == "z") continue; - /* TODO: formula records */ - if(cell.t == "n") { - if((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v)); - else write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v)); - } else { - var str = format_cell(cell); - write_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239))); - } - } - } - - write_biff_rec(ba, 0x01); - return ba.end(); - } - - function book_to_wk3(wb, opts) { - var o = opts || {}; - if(+o.codepage >= 0) set_cp(+o.codepage); - if(o.type == "string") throw new Error("Cannot write WK3 to JS string"); - var ba = buf_array(); - - write_biff_rec(ba, 0x00, write_BOF_WK3(wb)); - - for(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})["!ref"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++)); - - var wsidx = 0; - for(i = 0; i < wb.SheetNames.length; ++i) { - var ws = wb.Sheets[wb.SheetNames[i]]; - if(!ws || !ws["!ref"]) continue; - var range = safe_decode_range(ws["!ref"]); - var dense = Array.isArray(ws); - var cols = []; - var max_R = Math.min(range.e.r, 8191); - for(var R = range.s.r; R <= max_R; ++R) { - var rr = encode_row(R); - for(var C = range.s.c; C <= range.e.c; ++C) { - if(R === range.s.r) cols[C] = encode_col(C); - var ref = cols[C] + rr; - var cell = dense ? (ws[R]||[])[C] : ws[ref]; - if(!cell || cell.t == "z") continue; - /* TODO: FORMULA19 NUMBER18 records */ - if(cell.t == "n") { - write_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v)); - } else { - var str = format_cell(cell); - /* TODO: max len? */ - write_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239))); - } - } - } - ++wsidx; - } - - write_biff_rec(ba, 0x01); - return ba.end(); - } - - - function write_BOF_WK1(v) { - var out = new_buf(2); - out.write_shift(2, v); - return out; - } - - function write_BOF_WK3(wb) { - var out = new_buf(26); - out.write_shift(2, 0x1000); - out.write_shift(2, 0x0004); - out.write_shift(4, 0x0000); - var rows = 0, cols = 0, wscnt = 0; - for(var i = 0; i < wb.SheetNames.length; ++i) { - var name = wb.SheetNames[i]; - var ws = wb.Sheets[name]; - if(!ws || !ws["!ref"]) continue; - ++wscnt; - var range = decode_range(ws["!ref"]); - if(rows < range.e.r) rows = range.e.r; - if(cols < range.e.c) cols = range.e.c; - } - if(rows > 8191) rows = 8191; - out.write_shift(2, rows); - out.write_shift(1, wscnt); - out.write_shift(1, cols); - out.write_shift(2, 0x00); - out.write_shift(2, 0x00); - out.write_shift(1, 0x01); - out.write_shift(1, 0x02); - out.write_shift(4, 0); - out.write_shift(4, 0); - return out; - } - - function parse_RANGE(blob, length, opts) { - var o = {s:{c:0,r:0},e:{c:0,r:0}}; - if(length == 8 && opts.qpro) { - o.s.c = blob.read_shift(1); - blob.l++; - o.s.r = blob.read_shift(2); - o.e.c = blob.read_shift(1); - blob.l++; - o.e.r = blob.read_shift(2); - return o; - } - o.s.c = blob.read_shift(2); - o.s.r = blob.read_shift(2); - if(length == 12 && opts.qpro) blob.l += 2; - o.e.c = blob.read_shift(2); - o.e.r = blob.read_shift(2); - if(length == 12 && opts.qpro) blob.l += 2; - if(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0; - return o; - } - function write_RANGE(range) { - var out = new_buf(8); - out.write_shift(2, range.s.c); - out.write_shift(2, range.s.r); - out.write_shift(2, range.e.c); - out.write_shift(2, range.e.r); - return out; - } - - function parse_cell(blob, length, opts) { - var o = [{c:0,r:0}, {t:'n',v:0}, 0, 0]; - if(opts.qpro && opts.vers != 0x5120) { - o[0].c = blob.read_shift(1); - o[3] = blob.read_shift(1); - 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 == 0x5120) { - 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 write_LABEL(R, C, s) { - /* TODO: encoding */ - var o = new_buf(7 + s.length); - o.write_shift(1, 0xFF); - o.write_shift(2, C); - o.write_shift(2, R); - o.write_shift(1, 0x27); // ?? - for(var i = 0; i < o.length; ++i) { - var cc = s.charCodeAt(i); - o.write_shift(1, cc >= 0x80 ? 0x5F : cc); - } - o.write_shift(1, 0); - 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 write_INTEGER(R, C, v) { - var o = new_buf(7); - o.write_shift(1, 0xFF); - o.write_shift(2, C); - o.write_shift(2, R); - o.write_shift(2, v, '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 write_NUMBER(R, C, v) { - var o = new_buf(13); - o.write_shift(1, 0xFF); - o.write_shift(2, C); - o.write_shift(2, R); - o.write_shift(8, v, 'f'); - return o; - } - - function parse_FORMULA(blob, length, opts) { - var tgt = blob.l + length; - var o = parse_cell(blob, length, opts); - /* TODO: formula */ - o[1].v = blob.read_shift(8, 'f'); - if(opts.qpro) blob.l = tgt; - else { - var flen = blob.read_shift(2); - wk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o); - blob.l += flen; - } - return o; - } - - function wk1_parse_rc(B, V, col) { - var rel = V & 0x8000; - V &= ~0x8000; - V = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V); - return (rel ? "" : "$") + (col ? encode_col(V) : encode_row(V)); - } - var oprec = [ - 8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3, - 3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8 - ]; - /* TODO: flesh out */ - var FuncTab = { - 0x33: ["FALSE", 0], - 0x34: ["TRUE", 0], - 0x46: ["LEN", 1], - 0x50: ["SUM", 69], - 0x51: ["AVERAGEA", 69], - 0x52: ["COUNTA", 69], - 0x53: ["MINA", 69], - 0x54: ["MAXA", 69], - 0x6F: ["T", 1] - }; - var BinOpTab = [ - "", "", "", "", "", "", "", "", - "", "+", "-", "*", "/", "^", "=", "<>", - "<=", ">=", "<", ">", "", "", "", "", - "&", "", "", "", "", "", "", "" - ]; - - function wk1_fmla_to_csf(blob, o) { - prep_blob(blob, 0); - var out = [], argc = 0, R = "", C = "", argL = "", argR = ""; - while(blob.l < blob.length) { - var cc = blob[blob.l++]; - switch(cc) { - case 0x00: out.push(blob.read_shift(8, 'f')); break; - case 0x01: { - C = wk1_parse_rc(o[0].c, blob.read_shift(2), true); - R = wk1_parse_rc(o[0].r, blob.read_shift(2), false); - out.push(C + R); - } break; - case 0x02: { - var c = wk1_parse_rc(o[0].c, blob.read_shift(2), true); - var r = wk1_parse_rc(o[0].r, blob.read_shift(2), false); - C = wk1_parse_rc(o[0].c, blob.read_shift(2), true); - R = wk1_parse_rc(o[0].r, blob.read_shift(2), false); - out.push(c + r + ":" + C + R); - } break; - case 0x03: - if(blob.l < blob.length) { console.error("WK1 premature formula end"); return; } - break; - case 0x04: out.push("(" + out.pop() + ")"); break; - case 0x05: out.push(blob.read_shift(2)); break; - case 0x06: { - /* TODO: text encoding */ - var Z = ""; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc); - out.push('"' + Z.replace(/"/g, '""') + '"'); break; - } break; - - case 0x08: out.push("-" + out.pop()); break; - case 0x17: out.push("+" + out.pop()); break; - case 0x16: out.push("NOT(" + out.pop() + ")"); break; - - case 0x14: case 0x15: { - argR = out.pop(); argL = out.pop(); - out.push(["AND", "OR"][cc - 0x14] + "(" + argL + "," + argR + ")"); - } break; - - default: - if(cc < 0x20 && BinOpTab[cc]) { - argR = out.pop(); argL = out.pop(); - out.push(argL + BinOpTab[cc] + argR); - } else if(FuncTab[cc]) { - argc = FuncTab[cc][1]; - if(argc == 69) argc = blob[blob.l++]; - if(argc > out.length) { console.error("WK1 bad formula parse 0x" + cc.toString(16) + ":|" + out.join("|") + "|"); return; } - var args = out.slice(-argc); - out.length -= argc; - out.push(FuncTab[cc][0] + "(" + args.join(",") + ")"); - } - else if(cc <= 0x07) return console.error("WK1 invalid opcode " + cc.toString(16)); - else if(cc <= 0x18) return console.error("WK1 unsupported op " + cc.toString(16)); - else if(cc <= 0x1E) return console.error("WK1 invalid opcode " + cc.toString(16)); - else if(cc <= 0x73) return console.error("WK1 unsupported function opcode " + cc.toString(16)); - // possible future functions ?? - else return console.error("WK1 unrecognized opcode " + cc.toString(16)); - } - } - if(out.length == 1) o[1].f = "" + out[0]; - else console.error("WK1 bad formula parse |" + out.join("|") + "|"); - } - - - function parse_cell_3(blob) { - 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 write_LABEL_16(R, C, wsidx, s) { - /* TODO: encoding */ - var o = new_buf(6 + s.length); - o.write_shift(2, R); - o.write_shift(1, wsidx); - o.write_shift(1, C); - o.write_shift(1, 0x27); - for(var i = 0; i < s.length; ++i) { - var cc = s.charCodeAt(i); - o.write_shift(1, cc >= 0x80 ? 0x5F : cc); - } - o.write_shift(1, 0); - 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 & 0x1) { - switch(v & 0x07) { - case 0: v = (v >> 3) * 5000; break; - case 1: v = (v >> 3) * 500; break; - case 2: v = (v >> 3) / 20; break; - case 3: v = (v >> 3) / 200; break; - case 4: v = (v >> 3) / 2000; break; - case 5: v = (v >> 3) / 20000; break; - case 6: v = (v >> 3) / 16; break; - case 7: v = (v >> 3) / 64; break; - } - } - 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 == 0xFFFF) { - if(v1 === 0 && v2 === 0xC0000000) { o[1].t = "e"; o[1].v = 0x0F; } // ERR -> #VALUE! - else if(v1 === 0 && v2 === 0xD0000000) { o[1].t = "e"; o[1].v = 0x2A; } // NA -> #N/A - else o[1].v = 0; - return o; - } - var s = e & 0x8000; e = (e&0x7FFF) - 16446; - o[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e)); - return o; - } - function write_NUMBER_17(R, C, wsidx, v) { - var o = new_buf(14); - o.write_shift(2, R); - o.write_shift(1, wsidx); - o.write_shift(1, C); - if(v == 0) { - o.write_shift(4, 0); - o.write_shift(4, 0); - o.write_shift(2, 0xFFFF); - return o; - } - var s = 0, e = 0, v1 = 0, v2 = 0; - if(v < 0) { s = 1; v = -v; } - e = Math.log2(v) | 0; - v /= Math.pow(2, e-31); - v2 = (v)>>>0; - if((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; } - v -= v2; - v2 |= 0x80000000; - v2 >>>= 0; - v *= Math.pow(2, 32); - v1 = v>>>0; - o.write_shift(4, v1); - o.write_shift(4, v2); - e += 0x3FFF + (s ? 0x8000 : 0); - o.write_shift(2, e); - return o; - } - - function parse_FORMULA_19(blob, length) { - var o = parse_NUMBER_17(blob, 14); - blob.l += length - 14; /* TODO: WK3 formula */ - 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; /* TODO: formula */ - return o; - } - - function parse_SHEETNAMECS(blob, length) { - return blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : ""; - } - - function parse_SHEETNAMELP(blob, length) { - var len = blob[blob.l++]; - if(len > length - 1) len = length - 1; - var o = ""; while(o.length < len) o += String.fromCharCode(blob[blob.l++]); - return o; - } - - function parse_SHEETINFOQP(blob, length, opts) { - if(!opts.qpro || length < 21) return; - var id = blob.read_shift(1); - blob.l += 17; - var len = blob.read_shift(1); - blob.l += 2; - var nm = blob.read_shift(length - 21, 'cstr'); - return [id, nm]; - } - - function parse_XFORMAT(blob, length) { - var o = {}, tgt = blob.l + length; - while(blob.l < tgt) { - var dt = blob.read_shift(2); - if(dt == 0x36b0) { - o[dt] = [0, ""]; - o[dt][0] = blob.read_shift(2); - while(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++; - } - // TODO: 0x3a99 ?? - } - return o; - } - function write_XFORMAT_SHEETNAME(name, wsidx) { - var out = new_buf(5 + name.length); - out.write_shift(2, 0x36b0); - out.write_shift(2, wsidx); - for(var i = 0; i < name.length; ++i) { - var cc = name.charCodeAt(i); - out[out.l++] = cc > 0x7F ? 0x5F : cc; - } - out[out.l++] = 0; - return out; - } - - var WK1Enum = { -0x0000: { n:"BOF", f:parseuint16 }, -0x0001: { n:"EOF" }, -0x0002: { n:"CALCMODE" }, -0x0003: { n:"CALCORDER" }, -0x0004: { n:"SPLIT" }, -0x0005: { n:"SYNC" }, -0x0006: { n:"RANGE", f:parse_RANGE }, -0x0007: { n:"WINDOW1" }, -0x0008: { n:"COLW1" }, -0x0009: { n:"WINTWO" }, -0x000A: { n:"COLW2" }, -0x000B: { n:"NAME" }, -0x000C: { n:"BLANK" }, -0x000D: { n:"INTEGER", f:parse_INTEGER }, -0x000E: { n:"NUMBER", f:parse_NUMBER }, -0x000F: { n:"LABEL", f:parse_LABEL }, -0x0010: { n:"FORMULA", f:parse_FORMULA }, -0x0018: { n:"TABLE" }, -0x0019: { n:"ORANGE" }, -0x001A: { n:"PRANGE" }, -0x001B: { n:"SRANGE" }, -0x001C: { n:"FRANGE" }, -0x001D: { n:"KRANGE1" }, -0x0020: { n:"HRANGE" }, -0x0023: { n:"KRANGE2" }, -0x0024: { n:"PROTEC" }, -0x0025: { n:"FOOTER" }, -0x0026: { n:"HEADER" }, -0x0027: { n:"SETUP" }, -0x0028: { n:"MARGINS" }, -0x0029: { n:"LABELFMT" }, -0x002A: { n:"TITLES" }, -0x002B: { n:"SHEETJS" }, -0x002D: { n:"GRAPH" }, -0x002E: { n:"NGRAPH" }, -0x002F: { n:"CALCCOUNT" }, -0x0030: { n:"UNFORMATTED" }, -0x0031: { n:"CURSORW12" }, -0x0032: { n:"WINDOW" }, -0x0033: { n:"STRING", f:parse_LABEL }, -0x0037: { n:"PASSWORD" }, -0x0038: { n:"LOCKED" }, -0x003C: { n:"QUERY" }, -0x003D: { n:"QUERYNAME" }, -0x003E: { n:"PRINT" }, -0x003F: { n:"PRINTNAME" }, -0x0040: { n:"GRAPH2" }, -0x0041: { n:"GRAPHNAME" }, -0x0042: { n:"ZOOM" }, -0x0043: { n:"SYMSPLIT" }, -0x0044: { n:"NSROWS" }, -0x0045: { n:"NSCOLS" }, -0x0046: { n:"RULER" }, -0x0047: { n:"NNAME" }, -0x0048: { n:"ACOMM" }, -0x0049: { n:"AMACRO" }, -0x004A: { n:"PARSE" }, -0x0066: { n:"PRANGES??" }, -0x0067: { n:"RRANGES??" }, -0x0068: { n:"FNAME??" }, -0x0069: { n:"MRANGES??" }, -0x00CC: { n:"SHEETNAMECS", f:parse_SHEETNAMECS }, -0x00DE: { n:"SHEETNAMELP", f:parse_SHEETNAMELP }, -0xFFFF: { n:"" } - }; - - var WK3Enum = { -0x0000: { n:"BOF" }, -0x0001: { n:"EOF" }, -0x0002: { n:"PASSWORD" }, -0x0003: { n:"CALCSET" }, -0x0004: { n:"WINDOWSET" }, -0x0005: { n:"SHEETCELLPTR" }, -0x0006: { n:"SHEETLAYOUT" }, -0x0007: { n:"COLUMNWIDTH" }, -0x0008: { n:"HIDDENCOLUMN" }, -0x0009: { n:"USERRANGE" }, -0x000A: { n:"SYSTEMRANGE" }, -0x000B: { n:"ZEROFORCE" }, -0x000C: { n:"SORTKEYDIR" }, -0x000D: { n:"FILESEAL" }, -0x000E: { n:"DATAFILLNUMS" }, -0x000F: { n:"PRINTMAIN" }, -0x0010: { n:"PRINTSTRING" }, -0x0011: { n:"GRAPHMAIN" }, -0x0012: { n:"GRAPHSTRING" }, -0x0013: { n:"??" }, -0x0014: { n:"ERRCELL" }, -0x0015: { n:"NACELL" }, -0x0016: { n:"LABEL16", f:parse_LABEL_16}, -0x0017: { n:"NUMBER17", f:parse_NUMBER_17 }, -0x0018: { n:"NUMBER18", f:parse_NUMBER_18 }, -0x0019: { n:"FORMULA19", f:parse_FORMULA_19}, -0x001A: { n:"FORMULA1A" }, -0x001B: { n:"XFORMAT", f:parse_XFORMAT }, -0x001C: { n:"DTLABELMISC" }, -0x001D: { n:"DTLABELCELL" }, -0x001E: { n:"GRAPHWINDOW" }, -0x001F: { n:"CPA" }, -0x0020: { n:"LPLAUTO" }, -0x0021: { n:"QUERY" }, -0x0022: { n:"HIDDENSHEET" }, -0x0023: { n:"??" }, -0x0025: { n:"NUMBER25", f:parse_NUMBER_25 }, -0x0026: { n:"??" }, -0x0027: { n:"NUMBER27", f:parse_NUMBER_27 }, -0x0028: { n:"FORMULA28", f:parse_FORMULA_28 }, -0x008E: { n:"??" }, -0x0093: { n:"??" }, -0x0096: { n:"??" }, -0x0097: { n:"??" }, -0x0098: { n:"??" }, -0x0099: { n:"??" }, -0x009A: { n:"??" }, -0x009B: { n:"??" }, -0x009C: { n:"??" }, -0x00A3: { n:"??" }, -0x00AE: { n:"??" }, -0x00AF: { n:"??" }, -0x00B0: { n:"??" }, -0x00B1: { n:"??" }, -0x00B8: { n:"??" }, -0x00B9: { n:"??" }, -0x00BA: { n:"??" }, -0x00BB: { n:"??" }, -0x00BC: { n:"??" }, -0x00C3: { n:"??" }, -0x00C9: { n:"??" }, -0x00CC: { n:"SHEETNAMECS", f:parse_SHEETNAMECS }, -0x00CD: { n:"??" }, -0x00CE: { n:"??" }, -0x00CF: { n:"??" }, -0x00D0: { n:"??" }, -0x0100: { n:"??" }, -0x0103: { n:"??" }, -0x0104: { n:"??" }, -0x0105: { n:"??" }, -0x0106: { n:"??" }, -0x0107: { n:"??" }, -0x0109: { n:"??" }, -0x010A: { n:"??" }, -0x010B: { n:"??" }, -0x010C: { n:"??" }, -0x010E: { n:"??" }, -0x010F: { n:"??" }, -0x0180: { n:"??" }, -0x0185: { n:"??" }, -0x0186: { n:"??" }, -0x0189: { n:"??" }, -0x018C: { n:"??" }, -0x0200: { n:"??" }, -0x0202: { n:"??" }, -0x0201: { n:"??" }, -0x0204: { n:"??" }, -0x0205: { n:"??" }, -0x0280: { n:"??" }, -0x0281: { n:"??" }, -0x0282: { n:"??" }, -0x0283: { n:"??" }, -0x0284: { n:"??" }, -0x0285: { n:"??" }, -0x0286: { n:"??" }, -0x0287: { n:"??" }, -0x0288: { n:"??" }, -0x0292: { n:"??" }, -0x0293: { n:"??" }, -0x0294: { n:"??" }, -0x0295: { n:"??" }, -0x0296: { n:"??" }, -0x0299: { n:"??" }, -0x029A: { n:"??" }, -0x0300: { n:"??" }, -0x0304: { n:"??" }, -0x0601: { n:"SHEETINFOQP", f:parse_SHEETINFOQP }, -0x0640: { n:"??" }, -0x0642: { n:"??" }, -0x0701: { n:"??" }, -0x0702: { n:"??" }, -0x0703: { n:"??" }, -0x0704: { n:"??" }, -0x0780: { n:"??" }, -0x0800: { n:"??" }, -0x0801: { n:"??" }, -0x0804: { n:"??" }, -0x0A80: { n:"??" }, -0x2AF6: { n:"??" }, -0x3231: { n:"??" }, -0x6E49: { n:"??" }, -0x6F44: { n:"??" }, -0xFFFF: { n:"" } - }; - return { - sheet_to_wk1: sheet_to_wk1, - book_to_wk3: book_to_wk3, - to_workbook: lotus_to_workbook - }; -})(); -/* 18.4.7 rPr CT_RPrElt */ -function parse_rpr(rpr) { - var font = {}, m = rpr.match(tagregex), i = 0; - var pass = false; - if(m) for(;i!=m.length; ++i) { - var y = parsexmltag(m[i]); - switch(y[0].replace(/\w*:/g,"")) { - /* 18.8.12 condense CT_BooleanProperty */ - /* ** not required . */ - case '': - case '': font.shadow = 1; break; - case '': break; - - /* 18.4.1 charset CT_IntProperty TODO */ - case '': - case '': font.outline = 1; break; - case '': break; - - /* 18.4.5 rFont CT_FontName */ - case '': - case '': font.strike = 1; break; - case '': break; - - /* 18.4.13 u CT_UnderlineProperty */ - case '': - case '': font.u = 1; break; - case '': break; - - /* 18.8.2 b */ - case '': - case '': font.b = 1; break; - case '': break; - - /* 18.8.26 i */ - case '': - case '': font.i = 1; break; - case '': break; - - /* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */ - case '': case '': case '': break; - - /* 18.8.18 family ST_FontFamily */ - case '': case '': case '': break; - - /* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */ - case '': case '': case '': break; - - /* 18.8.35 scheme CT_FontScheme TODO */ - case '': case '': case '': break; - - /* 18.2.10 extLst CT_ExtensionList ? */ - case '': case '': break; - case '': pass = false; break; - default: - if(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]); - } - } - return font; -} - -var parse_rs = (function() { - var tregex = matchtag("t"), rpregex = matchtag("rPr"); - /* 18.4.4 r CT_RElt */ - function parse_r(r) { - /* 18.4.12 t ST_Xstring */ - var t = r.match(tregex)/*, cp = 65001*/; - if(!t) return {t:"s", v:""}; - - var o = ({t:'s', v:unescapexml(t[1])}); - var rpr = r.match(rpregex); - if(rpr) o.s = parse_rpr(rpr[1]); - return o; - } - var rregex = /<(?:\w+:)?r>/g, rend = /<\/(?:\w+:)?r>/; - return function parse_rs(rs) { - return rs.replace(rregex,"").split(rend).map(parse_r).filter(function(r) { return r.v; }); - }; -})(); - - -/* Parse a list of tags */ -var rs_to_html = (function parse_rs_factory() { - var nlregex = /(\r\n|\n)/g; - function parse_rpr2(font, intro, outro) { - var style = []; - - if(font.u) style.push("text-decoration: underline;"); - if(font.uval) style.push("text-underline-style:" + font.uval + ";"); - if(font.sz) style.push("font-size:" + font.sz + "pt;"); - if(font.outline) style.push("text-effect: outline;"); - if(font.shadow) style.push("text-shadow: auto;"); - intro.push(''); - - if(font.b) { intro.push(""); outro.push(""); } - if(font.i) { intro.push(""); outro.push(""); } - if(font.strike) { intro.push(""); outro.push(""); } - - var align = font.valign || ""; - if(align == "superscript" || align == "super") align = "sup"; - else if(align == "subscript") align = "sub"; - if(align != "") { intro.push("<" + align + ">"); outro.push(""); } - - outro.push(""); - return font; - } - - /* 18.4.4 r CT_RElt */ - function r_to_html(r) { - var terms = [[],r.v,[]]; - if(!r.v) return ""; - - if(r.s) parse_rpr2(r.s, terms[0], terms[2]); - - return terms[0].join("") + terms[1].replace(nlregex,'
') + terms[2].join(""); - } - - return function parse_rs(rs) { - return rs.map(r_to_html).join(""); - }; -})(); - -/* 18.4.8 si CT_Rst */ -var sitregex = /<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g, sirregex = /<(?:\w+:)?r>/; -var sirphregex = /<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g; -function parse_si(x, opts) { - var html = opts ? opts.cellHTML : true; - var z = {}; - if(!x) return { t: "" }; - //var y; - /* 18.4.12 t ST_Xstring (Plaintext String) */ - // TODO: is whitespace actually valid here? - if(x.match(/^\s*<(?:\w+:)?t[^>]*>/)) { - z.t = unescapexml(utf8read(x.slice(x.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||"")); - z.r = utf8read(x); - if(html) z.h = escapehtml(z.t); - } - /* 18.4.4 r CT_RElt (Rich Text Run) */ - else if((/*y = */x.match(sirregex))) { - z.r = utf8read(x); - z.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join("").replace(tagregex,""))); - if(html) z.h = rs_to_html(parse_rs(z.r)); - } - /* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */ - /* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */ - return z; -} - -/* 18.4 Shared String Table */ -var sstr0 = /<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/; -var sstr1 = /<(?:\w+:)?(?:si|sstItem)>/g; -var sstr2 = /<\/(?:\w+:)?(?:si|sstItem)>/; -function parse_sst_xml(data, opts) { - var s = ([]), ss = ""; - if(!data) return s; - /* 18.4.9 sst CT_Sst */ - var sst = data.match(sstr0); - if(sst) { - ss = sst[2].replace(sstr1,"").split(sstr2); - for(var i = 0; i != ss.length; ++i) { - var o = parse_si(ss[i].trim(), opts); - if(o != null) s[s.length] = o; - } - sst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount; - } - return s; -} - -RELS.SST = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"; -var straywsregex = /^\s|\s$|[\t\n\r]/; -function write_sst_xml(sst, opts) { - if(!opts.bookSST) return ""; - var o = [XML_HEADER]; - o[o.length] = (writextag('sst', null, { - xmlns: XMLNS.main[0], - count: sst.Count, - uniqueCount: sst.Unique - })); - for(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue; - var s = sst[i]; - var sitag = ""; - if(s.r) sitag += s.r; - else { - sitag += ""; - } - sitag += ""; - o[o.length] = (sitag); - } - if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* [MS-XLSB] 2.4.221 BrtBeginSst */ -function parse_BrtBeginSst(data) { - return [data.read_shift(4), data.read_shift(4)]; -} - -/* [MS-XLSB] 2.1.7.45 Shared Strings */ -function parse_sst_bin(data, opts) { - var s = ([]); - var pass = false; - recordhopper(data, function hopper_sst(val, R_n, RT) { - switch(RT) { - case 0x009F: /* 'BrtBeginSst' */ - s.Count = val[0]; s.Unique = val[1]; break; - case 0x0013: /* 'BrtSSTItem' */ - s.push(val); break; - case 0x00A0: /* 'BrtEndSst' */ - return true; - - case 0x0023: /* 'BrtFRTBegin' */ - pass = true; break; - case 0x0024: /* 'BrtFRTEnd' */ - pass = false; break; - - default: - if(R_n.indexOf("Begin") > 0){/* empty */} - else if(R_n.indexOf("End") > 0){/* empty */} - if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R_n); - } - }); - return s; -} - -function write_BrtBeginSst(sst, o) { - if(!o) o = new_buf(8); - o.write_shift(4, sst.Count); - o.write_shift(4, sst.Unique); - return o; -} - -var write_BrtSSTItem = write_RichStr; - -function write_sst_bin(sst) { - var ba = buf_array(); - write_record(ba, "BrtBeginSst", write_BrtBeginSst(sst)); - for(var i = 0; i < sst.length; ++i) write_record(ba, "BrtSSTItem", write_BrtSSTItem(sst[i])); - /* FRTSST */ - write_record(ba, "BrtEndSst"); - return ba.end(); -} -function _JS2ANSI(str) { - if(typeof cptable !== 'undefined') return cptable.utils.encode(current_ansi, str); - var o = [], oo = str.split(""); - for(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0); - return o; -} - -/* [MS-OFFCRYPTO] 2.1.4 Version */ -function parse_CRYPTOVersion(blob, length) { - var o = {}; - o.Major = blob.read_shift(2); - o.Minor = blob.read_shift(2); -if(length >= 4) blob.l += length - 4; - return o; -} - -/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */ -function parse_DataSpaceVersionInfo(blob) { - var o = {}; - o.id = blob.read_shift(0, 'lpp4'); - o.R = parse_CRYPTOVersion(blob, 4); - o.U = parse_CRYPTOVersion(blob, 4); - o.W = parse_CRYPTOVersion(blob, 4); - return o; -} - -/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */ -function parse_DataSpaceMapEntry(blob) { - var len = blob.read_shift(4); - var end = blob.l + len - 4; - var o = {}; - var cnt = blob.read_shift(4); - var comps = []; - /* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */ - while(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') }); - o.name = blob.read_shift(0, 'lpp4'); - o.comps = comps; - if(blob.l != end) throw new Error("Bad DataSpaceMapEntry: " + blob.l + " != " + end); - return o; -} - -/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */ -function parse_DataSpaceMap(blob) { - var o = []; - blob.l += 4; // must be 0x8 - var cnt = blob.read_shift(4); - while(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob)); - return o; -} - -/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */ -function parse_DataSpaceDefinition(blob) { - var o = []; - blob.l += 4; // must be 0x8 - var cnt = blob.read_shift(4); - while(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4')); - return o; -} - -/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */ -function parse_TransformInfoHeader(blob) { - var o = {}; - /*var len = */blob.read_shift(4); - blob.l += 4; // must be 0x1 - o.id = blob.read_shift(0, 'lpp4'); - o.name = blob.read_shift(0, 'lpp4'); - o.R = parse_CRYPTOVersion(blob, 4); - o.U = parse_CRYPTOVersion(blob, 4); - o.W = parse_CRYPTOVersion(blob, 4); - return o; -} - -function parse_Primary(blob) { - /* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */ - var hdr = parse_TransformInfoHeader(blob); - /* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */ - hdr.ename = blob.read_shift(0, '8lpp4'); - hdr.blksz = blob.read_shift(4); - hdr.cmode = blob.read_shift(4); - if(blob.read_shift(4) != 0x04) throw new Error("Bad !Primary record"); - return hdr; -} - -/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */ -function parse_EncryptionHeader(blob, length) { - var tgt = blob.l + length; - var o = {}; - o.Flags = (blob.read_shift(4) & 0x3F); - blob.l += 4; - o.AlgID = blob.read_shift(4); - var valid = false; - switch(o.AlgID) { - case 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break; - case 0x6801: valid = (o.Flags == 0x04); break; - case 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break; - default: throw 'Unrecognized encryption algorithm: ' + o.AlgID; - } - if(!valid) throw new Error("Encryption Flags/AlgID mismatch"); - o.AlgIDHash = blob.read_shift(4); - o.KeySize = blob.read_shift(4); - o.ProviderType = blob.read_shift(4); - blob.l += 8; - o.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le'); - blob.l = tgt; - return o; -} - -/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */ -function parse_EncryptionVerifier(blob, length) { - var o = {}, tgt = blob.l + length; - blob.l += 4; // SaltSize must be 0x10 - o.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16; - o.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16; - /*var sz = */blob.read_shift(4); - o.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt; - return o; -} - -/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */ -function parse_EncryptionInfo(blob) { - var vers = parse_CRYPTOVersion(blob); - switch(vers.Minor) { - case 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)]; - case 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)]; - case 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)]; - } - throw new Error("ECMA-376 Encrypted file unrecognized Version: " + vers.Minor); -} - -/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */ -function parse_EncInfoStd(blob) { - var flags = blob.read_shift(4); - if((flags & 0x3F) != 0x24) throw new Error("EncryptionInfo mismatch"); - var sz = blob.read_shift(4); - //var tgt = blob.l + sz; - var hdr = parse_EncryptionHeader(blob, sz); - var verifier = parse_EncryptionVerifier(blob, blob.length - blob.l); - return { t:"Std", h:hdr, v:verifier }; -} -/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */ -function parse_EncInfoExt() { throw new Error("File is password-protected: ECMA-376 Extensible"); } -/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */ -function parse_EncInfoAgl(blob) { - var KeyData = ["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"]; - blob.l+=4; - var xml = blob.read_shift(blob.length - blob.l, 'utf8'); - var o = {}; - xml.replace(tagregex, function xml_agile(x) { - var y = parsexmltag(x); - switch(strip_ns(y[0])) { - case '': break; - case '': case '': break; - - case '': break; - case ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major); - o.Flags = blob.read_shift(4); length -= 4; - var sz = blob.read_shift(4); length -= 4; - o.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz; - o.EncryptionVerifier = parse_EncryptionVerifier(blob, length); - return o; -} -/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */ -function parse_RC4Header(blob) { - var o = {}; - var vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); - if(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor; - o.Salt = blob.read_shift(16); - o.EncryptedVerifier = blob.read_shift(16); - o.EncryptedVerifierHash = blob.read_shift(16); - return o; -} - -/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */ -function crypto_CreatePasswordVerifier_Method1(Password) { - var Verifier = 0x0000, PasswordArray; - var PasswordDecoded = _JS2ANSI(Password); - var len = PasswordDecoded.length + 1, i, PasswordByte; - var Intermediate1, Intermediate2, Intermediate3; - PasswordArray = new_raw_buf(len); - PasswordArray[0] = PasswordDecoded.length; - for(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1]; - for(i = len-1; i >= 0; --i) { - PasswordByte = PasswordArray[i]; - Intermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1; - Intermediate2 = (Verifier << 1) & 0x7FFF; - Intermediate3 = Intermediate1 | Intermediate2; - Verifier = Intermediate3 ^ PasswordByte; - } - return Verifier ^ 0xCE4B; -} - -/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */ -var crypto_CreateXorArray_Method1 = (function() { - var PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00]; - var InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3]; - var XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4]; - var Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; }; - var XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); }; - var CreateXorKey_Method1 = function(Password) { - var XorKey = InitialCode[Password.length - 1]; - var CurrentElement = 0x68; - for(var i = Password.length-1; i >= 0; --i) { - var Char = Password[i]; - for(var j = 0; j != 7; ++j) { - if(Char & 0x40) XorKey ^= XorMatrix[CurrentElement]; - Char *= 2; --CurrentElement; - } - } - return XorKey; - }; - return function(password) { - var Password = _JS2ANSI(password); - var XorKey = CreateXorKey_Method1(Password); - var Index = Password.length; - var ObfuscationArray = new_raw_buf(16); - for(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00; - var Temp, PasswordLastChar, PadIndex; - if((Index & 1) === 1) { - Temp = XorKey >> 8; - ObfuscationArray[Index] = XorRor(PadArray[0], Temp); - --Index; - Temp = XorKey & 0xFF; - PasswordLastChar = Password[Password.length - 1]; - ObfuscationArray[Index] = XorRor(PasswordLastChar, Temp); - } - while(Index > 0) { - --Index; - Temp = XorKey >> 8; - ObfuscationArray[Index] = XorRor(Password[Index], Temp); - --Index; - Temp = XorKey & 0xFF; - ObfuscationArray[Index] = XorRor(Password[Index], Temp); - } - Index = 15; - PadIndex = 15 - Password.length; - while(PadIndex > 0) { - Temp = XorKey >> 8; - ObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp); - --Index; - --PadIndex; - Temp = XorKey & 0xFF; - ObfuscationArray[Index] = XorRor(Password[Index], Temp); - --Index; - --PadIndex; - } - return ObfuscationArray; - }; -})(); - -/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */ -var crypto_DecryptData_Method1 = function(password, Data, XorArrayIndex, XorArray, O) { - /* If XorArray is set, use it; if O is not set, make changes in-place */ - if(!O) O = Data; - if(!XorArray) XorArray = crypto_CreateXorArray_Method1(password); - var Index, Value; - for(Index = 0; Index != Data.length; ++Index) { - Value = Data[Index]; - Value ^= XorArray[XorArrayIndex]; - Value = ((Value>>5) | (Value<<3)) & 0xFF; - O[Index] = Value; - ++XorArrayIndex; - } - return [O, XorArrayIndex, XorArray]; -}; - -var crypto_MakeXorDecryptor = function(password) { - var XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password); - return function(Data) { - var O = crypto_DecryptData_Method1("", Data, XorArrayIndex, XorArray); - XorArrayIndex = O[1]; - return O[0]; - }; -}; - -/* 2.5.343 */ -function parse_XORObfuscation(blob, length, opts, out) { - var o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }); - if(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password); - out.valid = o.verificationBytes === o.verifier; - if(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password); - return o; -} - -/* 2.4.117 */ -function parse_FilePassHeader(blob, length, oo) { - var o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2; - if(o.Info === 1) o.Data = parse_RC4Header(blob, length); - else o.Data = parse_RC4CryptoHeader(blob, length); - return o; -} -function parse_FilePass(blob, length, opts) { - var o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }); /* wEncryptionType */ - if(o.Type) parse_FilePassHeader(blob, length-2, o); - else parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o); - return o; -} - - -var RTF = (function() { - function rtf_to_sheet(d, opts) { - switch(opts.type) { - case 'base64': return rtf_to_sheet_str(Base64.decode(d), opts); - case 'binary': return rtf_to_sheet_str(d, opts); - case 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); - case 'array': return rtf_to_sheet_str(cc2str(d), opts); - } - throw new Error("Unrecognized type " + opts.type); - } - - /* TODO: this is a stub */ - function rtf_to_sheet_str(str, opts) { - var o = opts || {}; - var ws = o.dense ? ([]) : ({}); - - var rows = str.match(/\\trowd.*?\\row\b/g); - if(!rows.length) throw new Error("RTF missing table"); - var range = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}); - rows.forEach(function(rowtf, R) { - if(Array.isArray(ws)) ws[R] = []; - var rtfre = /\\\w+\b/g; - var last_index = 0; - var res; - var C = -1; - while((res = rtfre.exec(rowtf))) { - switch(res[0]) { - case "\\cell": - var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length); - if(data[0] == " ") data = data.slice(1); - ++C; - if(data.length) { - // TODO: value parsing, including codepage adjustments - var cell = {v: data, t:"s"}; - if(Array.isArray(ws)) ws[R][C] = cell; - else ws[encode_cell({r:R, c:C})] = cell; - } - break; - } - last_index = rtfre.lastIndex; - } - if(C > range.e.c) range.e.c = C; - }); - ws['!ref'] = encode_range(range); - return ws; - } - - function rtf_to_workbook(d, opts) { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); } - - /* TODO: this is a stub */ - function sheet_to_rtf(ws) { - var o = ["{\\rtf1\\ansi"]; - var r = safe_decode_range(ws['!ref']), cell; - var dense = Array.isArray(ws); - for(var R = r.s.r; R <= r.e.r; ++R) { - o.push("\\trowd\\trautofit1"); - for(var C = r.s.c; C <= r.e.c; ++C) o.push("\\cellx" + (C+1)); - o.push("\\pard\\intbl"); - for(C = r.s.c; C <= r.e.c; ++C) { - var coord = encode_cell({r:R,c:C}); - cell = dense ? (ws[R]||[])[C]: ws[coord]; - if(!cell || cell.v == null && (!cell.f || cell.F)) continue; - o.push(" " + (cell.w || (format_cell(cell), cell.w))); - o.push("\\cell"); - } - o.push("\\pard\\intbl\\row"); - } - return o.join("") + "}"; - } - - return { - to_workbook: rtf_to_workbook, - to_sheet: rtf_to_sheet, - from_sheet: sheet_to_rtf - }; -})(); -function hex2RGB(h) { - var o = h.slice(h[0]==="#"?1:0).slice(0,6); - return [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)]; -} -function rgb2Hex(rgb) { - for(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]); - return o.toString(16).toUpperCase().slice(1); -} - -function rgb2HSL(rgb) { - var R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255; - var M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m; - if(C === 0) return [0, 0, R]; - - var H6 = 0, S = 0, L2 = (M + m); - S = C / (L2 > 1 ? 2 - L2 : L2); - switch(M){ - case R: H6 = ((G - B) / C + 6)%6; break; - case G: H6 = ((B - R) / C + 2); break; - case B: H6 = ((R - G) / C + 4); break; - } - return [H6 / 6, S, L2 / 2]; -} - -function hsl2RGB(hsl){ - var H = hsl[0], S = hsl[1], L = hsl[2]; - var C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2; - var rgb = [m,m,m], h6 = 6*H; - - var X; - if(S !== 0) switch(h6|0) { - case 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break; - case 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break; - case 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break; - case 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break; - case 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break; - case 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break; - } - for(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255); - return rgb; -} - -/* 18.8.3 bgColor tint algorithm */ -function rgb_tint(hex, tint) { - if(tint === 0) return hex; - var hsl = rgb2HSL(hex2RGB(hex)); - if (tint < 0) hsl[2] = hsl[2] * (1 + tint); - else hsl[2] = 1 - (1 - hsl[2]) * (1 - tint); - return rgb2Hex(hsl2RGB(hsl)); -} - -/* 18.3.1.13 width calculations */ -/* [MS-OI29500] 2.1.595 Column Width & Formatting */ -var DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW; -function width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); } -function px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; } -function char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; } -//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; } -//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; } -function cycle_width(collw) { return char2width(px2char(width2px(collw))); } -/* XLSX/XLSB/XLS specify width in units of MDW */ -function find_mdw_colw(collw) { - var delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW; - if(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--; - if(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; } - } - MDW = _MDW; -}*/ - -function process_col(coll) { - if(coll.width) { - coll.wpx = width2px(coll.width); - coll.wch = px2char(coll.wpx); - coll.MDW = MDW; - } else if(coll.wpx) { - coll.wch = px2char(coll.wpx); - coll.width = char2width(coll.wch); - coll.MDW = MDW; - } else if(typeof coll.wch == 'number') { - coll.width = char2width(coll.wch); - coll.wpx = width2px(coll.width); - coll.MDW = MDW; - } - if(coll.customWidth) delete coll.customWidth; -} - -var DEF_PPI = 96, PPI = DEF_PPI; -function px2pt(px) { return px * 96 / PPI; } -function pt2px(pt) { return pt * PPI / 96; } - -/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */ -var XLMLPatternTypeMap = { - "None": "none", - "Solid": "solid", - "Gray50": "mediumGray", - "Gray75": "darkGray", - "Gray25": "lightGray", - "HorzStripe": "darkHorizontal", - "VertStripe": "darkVertical", - "ReverseDiagStripe": "darkDown", - "DiagStripe": "darkUp", - "DiagCross": "darkGrid", - "ThickDiagCross": "darkTrellis", - "ThinHorzStripe": "lightHorizontal", - "ThinVertStripe": "lightVertical", - "ThinReverseDiagStripe": "lightDown", - "ThinHorzCross": "lightGrid" -}; - -/* 18.8.5 borders CT_Borders */ -function parse_borders(t, styles, themes, opts) { - styles.Borders = []; - var border = {}; - var pass = false; - (t[0].match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x); - switch(strip_ns(y[0])) { - case '': case '': break; - - /* 18.8.4 border CT_Border */ - case '': case '': - border = {}; - if(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp); - if(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown); - styles.Borders.push(border); - break; - case '': break; - - /* note: not in spec, appears to be CT_BorderPr */ - case '': break; - case '': break; - case '': break; - - /* note: not in spec, appears to be CT_BorderPr */ - case '': break; - case '': break; - case '': break; - - /* 18.8.43 top CT_BorderPr */ - case '': break; - case '': break; - case '': break; - - /* 18.8.6 bottom CT_BorderPr */ - case '': break; - case '': break; - case '': break; - - /* 18.8.13 diagonal CT_BorderPr */ - case '': case '': break; - case '': break; - - /* 18.8.25 horizontal CT_BorderPr */ - case '': case '': break; - case '': break; - - /* 18.8.44 vertical CT_BorderPr */ - case '': case '': break; - case '': break; - - /* 18.8.37 start CT_BorderPr */ - case '': case '': break; - case '': break; - - /* 18.8.16 end CT_BorderPr */ - case '': case '': break; - case '': break; - - /* 18.8.? color CT_Color */ - case '': - break; - case '': case '': break; - - /* 18.2.10 extLst CT_ExtensionList ? */ - case '': case '': break; - case '': pass = false; break; - default: if(opts && opts.WTF) { - if(!pass) throw new Error('unrecognized ' + y[0] + ' in borders'); - } - } - }); -} - -/* 18.8.21 fills CT_Fills */ -function parse_fills(t, styles, themes, opts) { - styles.Fills = []; - var fill = {}; - var pass = false; - (t[0].match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x); - switch(strip_ns(y[0])) { - case '': case '': break; - - /* 18.8.20 fill CT_Fill */ - case '': case '': - fill = {}; styles.Fills.push(fill); break; - case '': break; - - /* 18.8.24 gradientFill CT_GradientFill */ - case '': break; - case '': styles.Fills.push(fill); fill = {}; break; - - /* 18.8.32 patternFill CT_PatternFill */ - case '': - if(y.patternType) fill.patternType = y.patternType; - break; - case '': case '': break; - - /* 18.8.3 bgColor CT_Color */ - case '': case '': break; - - /* 18.8.19 fgColor CT_Color */ - case '': case '': break; - - /* 18.8.38 stop CT_GradientStop */ - case '': break; - case '': break; - - /* 18.8.? color CT_Color */ - case '': break; - case '': break; - - /* 18.2.10 extLst CT_ExtensionList ? */ - case '': case '': break; - case '': pass = false; break; - default: if(opts && opts.WTF) { - if(!pass) throw new Error('unrecognized ' + y[0] + ' in fills'); - } - } - }); -} - -/* 18.8.23 fonts CT_Fonts */ -function parse_fonts(t, styles, themes, opts) { - styles.Fonts = []; - var font = {}; - var pass = false; - (t[0].match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x); - switch(strip_ns(y[0])) { - case '': case '': break; - - /* 18.8.22 font CT_Font */ - case '': break; - case '': case '': - styles.Fonts.push(font); - font = {}; - break; - - /* 18.8.29 name CT_FontName */ - case '': case '': break; - - /* 18.8.2 b CT_BooleanProperty */ - case '': font.bold = 1; break; - - /* 18.8.26 i CT_BooleanProperty */ - case '': font.italic = 1; break; - - /* 18.4.13 u CT_UnderlineProperty */ - case '': font.underline = 1; break; - - /* 18.4.10 strike CT_BooleanProperty */ - case '': font.strike = 1; break; - - /* 18.4.2 outline CT_BooleanProperty */ - case '': font.outline = 1; break; - - /* 18.8.36 shadow CT_BooleanProperty */ - case '': font.shadow = 1; break; - - /* 18.8.12 condense CT_BooleanProperty */ - case '': font.condense = 1; break; - - /* 18.8.17 extend CT_BooleanProperty */ - case '': font.extend = 1; break; - - /* 18.4.11 sz CT_FontSize */ - case '': case '': break; - - /* 18.4.14 vertAlign CT_VerticalAlignFontProperty */ - case '': case '': break; - - /* 18.8.18 family CT_FontFamily */ - case '': case '': break; - - /* 18.8.35 scheme CT_FontScheme */ - case '': case '': break; - - /* 18.4.1 charset CT_IntProperty */ - case '': case '': break; - - /* note: sometimes mc:AlternateContent appears bare */ - case '': pass = false; break; - - /* 18.2.10 extLst CT_ExtensionList ? */ - case '': case '': break; - case '': pass = false; break; - default: if(opts && opts.WTF) { - if(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts'); - } - } - }); -} - -/* 18.8.31 numFmts CT_NumFmts */ -function parse_numFmts(t, styles, opts) { - styles.NumberFmt = []; - var k/*Array*/ = (keys(SSF._table)); - for(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = SSF._table[k[i]]; - var m = t[0].match(tagregex); - if(!m) return; - for(i=0; i < m.length; ++i) { - var y = parsexmltag(m[i]); - switch(strip_ns(y[0])) { - case '': case '': case '': break; - case '0) { - if(j > 0x188) { - for(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break; - styles.NumberFmt[j] = f; - } - SSF.load(f,j); - } - } break; - case '': break; - default: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts'); - } - } -} - -function write_numFmts(NF) { - var o = [""]; - [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { - for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])})); - }); - if(o.length === 1) return ""; - o[o.length] = (""); - o[0] = writextag('numFmts', null, { count:o.length-2 }).replace("/>", ">"); - return o.join(""); -} - -/* 18.8.10 cellXfs CT_CellXfs */ -var cellXF_uint = [ "numFmtId", "fillId", "fontId", "borderId", "xfId" ]; -var cellXF_bool = [ "applyAlignment", "applyBorder", "applyFill", "applyFont", "applyNumberFormat", "applyProtection", "pivotButton", "quotePrefix" ]; -function parse_cellXfs(t, styles, opts) { - styles.CellXf = []; - var xf; - var pass = false; - (t[0].match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x), i = 0; - switch(strip_ns(y[0])) { - case '': case '': case '': break; - - /* 18.8.45 xf CT_Xf */ - case '': - xf = y; - delete xf[0]; - for(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]]) - xf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10); - for(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]]) - xf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]); - if(styles.NumberFmt && xf.numFmtId > 0x188) { - for(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; } - } - styles.CellXf.push(xf); break; - case '': break; - - /* 18.8.1 alignment CT_CellAlignment */ - case '': - var alignment = {}; - if(y.vertical) alignment.vertical = y.vertical; - if(y.horizontal) alignment.horizontal = y.horizontal; - if(y.textRotation != null) alignment.textRotation = y.textRotation; - if(y.indent) alignment.indent = y.indent; - if(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText); - xf.alignment = alignment; - break; - case '': break; - - /* 18.8.33 protection CT_CellProtection */ - case '': case '': break; - - /* note: sometimes mc:AlternateContent appears bare */ - case '': pass = false; break; - - /* 18.2.10 extLst CT_ExtensionList ? */ - case '': case '': break; - case '': pass = false; break; - default: if(opts && opts.WTF) { - if(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs'); - } - } - }); -} - -function write_cellXfs(cellXfs) { - var o = []; - o[o.length] = (writextag('cellXfs',null)); - cellXfs.forEach(function(c) { - o[o.length] = (writextag('xf', null, c)); - }); - o[o.length] = (""); - if(o.length === 2) return ""; - o[0] = writextag('cellXfs',null, {count:o.length-2}).replace("/>",">"); - return o.join(""); -} - -/* 18.8 Styles CT_Stylesheet*/ -var parse_sty_xml= (function make_pstyx() { -var numFmtRegex = /<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/; -var cellXfRegex = /<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/; -var fillsRegex = /<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/; -var fontsRegex = /<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/; -var bordersRegex = /<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/; - -return function parse_sty_xml(data, themes, opts) { - var styles = {}; - if(!data) return styles; - data = data.replace(//mg,"").replace(//gm,""); - /* 18.8.39 styleSheet CT_Stylesheet */ - var t; - - /* 18.8.31 numFmts CT_NumFmts ? */ - if((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts); - - /* 18.8.23 fonts CT_Fonts ? */ - if((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts); - - /* 18.8.21 fills CT_Fills ? */ - if((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts); - - /* 18.8.5 borders CT_Borders ? */ - if((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts); - - /* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */ - /* 18.8.8 cellStyles CT_CellStyles ? */ - - /* 18.8.10 cellXfs CT_CellXfs ? */ - if((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts); - - /* 18.8.15 dxfs CT_Dxfs ? */ - /* 18.8.42 tableStyles CT_TableStyles ? */ - /* 18.8.11 colors CT_Colors ? */ - /* 18.2.10 extLst CT_ExtensionList ? */ - - return styles; -}; -})(); - -var STYLES_XML_ROOT = writextag('styleSheet', null, { - 'xmlns': XMLNS.main[0], - 'xmlns:vt': XMLNS.vt -}); - -RELS.STY = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; - -function write_sty_xml(wb, opts) { - var o = [XML_HEADER, STYLES_XML_ROOT], w; - if(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w; - o[o.length] = (''); - o[o.length] = (''); - o[o.length] = (''); - o[o.length] = (''); - if((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w); - o[o.length] = (''); - o[o.length] = (''); - o[o.length] = (''); - - if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* [MS-XLSB] 2.4.657 BrtFmt */ -function parse_BrtFmt(data, length) { - var numFmtId = data.read_shift(2); - var stFmtCode = parse_XLWideString(data,length-2); - return [numFmtId, stFmtCode]; -} -function write_BrtFmt(i, f, o) { - if(!o) o = new_buf(6 + 4 * f.length); - o.write_shift(2, i); - write_XLWideString(f, o); - var out = (o.length > o.l) ? o.slice(0, o.l) : o; - if(o.l == null) o.l = o.length; - return out; -} - -/* [MS-XLSB] 2.4.659 BrtFont TODO */ -function parse_BrtFont(data, length, opts) { - var out = ({}); - - out.sz = data.read_shift(2) / 20; - - var grbit = parse_FontFlags(data, 2, opts); - if(grbit.fItalic) out.italic = 1; - if(grbit.fCondense) out.condense = 1; - if(grbit.fExtend) out.extend = 1; - if(grbit.fShadow) out.shadow = 1; - if(grbit.fOutline) out.outline = 1; - if(grbit.fStrikeout) out.strike = 1; - - var bls = data.read_shift(2); - if(bls === 0x02BC) out.bold = 1; - - switch(data.read_shift(2)) { - /* case 0: out.vertAlign = "baseline"; break; */ - case 1: out.vertAlign = "superscript"; break; - case 2: out.vertAlign = "subscript"; break; - } - - var underline = data.read_shift(1); - if(underline != 0) out.underline = underline; - - 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 0: out.scheme = "none": break; */ - 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 ? 0x02BC : 0x0190); - 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; -} - -/* [MS-XLSB] 2.4.650 BrtFill */ -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)); -/* TODO: gradient fill representation */ -var parse_BrtFill = parsenoop; -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 = 0x28; - o.write_shift(4, fls); - var j = 0; - if(fls != 0x28) { - /* TODO: custom FG Color */ - write_BrtColor({auto:1}, o); - /* TODO: custom BG Color */ - 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); /* TODO */ - /* iGradientType */ - /* xnumDegree */ - /* xnumFillToLeft */ - /* xnumFillToRight */ - /* xnumFillToTop */ - /* xnumFillToBottom */ - /* cNumStop */ - /* xfillGradientStop */ - } - return o.length > o.l ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.4.824 BrtXF */ -function parse_BrtXF(data, length) { - var tgt = data.l + length; - var ixfeParent = data.read_shift(2); - var ifmt = data.read_shift(2); - data.l = tgt; - return {ixfe:ixfeParent, numFmtId: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); /* iFont */ - o.write_shift(2, 0); /* iFill */ - o.write_shift(2, 0); /* ixBorder */ - o.write_shift(1, 0); /* trot */ - o.write_shift(1, 0); /* indent */ - var flow = 0; - o.write_shift(1, flow); /* flags */ - o.write_shift(1, 0); /* flags */ - o.write_shift(1, 0); /* xfGrbitAtr */ - o.write_shift(1, 0); - return o; -} - -/* [MS-XLSB] 2.5.4 Blxf TODO */ -function write_Blxf(data, o) { - if(!o) o = new_buf(10); - o.write_shift(1, 0); /* dg */ - o.write_shift(1, 0); - o.write_shift(4, 0); /* color */ - o.write_shift(4, 0); /* color */ - return o; -} -/* [MS-XLSB] 2.4.302 BrtBorder TODO */ -var parse_BrtBorder = parsenoop; -function write_BrtBorder(border, o) { - if(!o) o = new_buf(51); - o.write_shift(1, 0); /* diagonal */ - write_Blxf(null, o); /* top */ - write_Blxf(null, o); /* bottom */ - write_Blxf(null, o); /* left */ - write_Blxf(null, o); /* right */ - write_Blxf(null, o); /* diag */ - return o.length > o.l ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.4.763 BrtStyle TODO */ -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); /* iLevel */ - write_XLNullableWideString(style.name || "", o); - return o.length > o.l ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */ -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; -} - -/* [MS-XLSB] 2.1.7.50 Styles */ -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 0x002C: /* 'BrtFmt' */ - styles.NumberFmt[val[0]] = val[1]; SSF.load(val[1], val[0]); - break; - case 0x002B: /* 'BrtFont' */ - 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 0x0401: /* 'BrtKnownFonts' */ break; - case 0x002D: /* 'BrtFill' */ - break; - case 0x002E: /* 'BrtBorder' */ - break; - case 0x002F: /* 'BrtXF' */ - if(state[state.length - 1] == "BrtBeginCellXFs") { - styles.CellXf.push(val); - } - break; - case 0x0030: /* 'BrtStyle' */ - case 0x01FB: /* 'BrtDXF' */ - case 0x023C: /* 'BrtMRUColor' */ - case 0x01DB: /* 'BrtIndexedColor': */ - break; - - case 0x0493: /* 'BrtDXF14' */ - case 0x0836: /* 'BrtDXF15' */ - case 0x046A: /* 'BrtSlicerStyleElement' */ - case 0x0200: /* 'BrtTableStyleElement' */ - case 0x082F: /* 'BrtTimelineStyleElement' */ - case 0x0C00: /* 'BrtUid' */ - break; - - case 0x0023: /* 'BrtFRTBegin' */ - pass = true; break; - case 0x0024: /* 'BrtFRTEnd' */ - pass = false; break; - case 0x0025: /* 'BrtACBegin' */ - state.push(R_n); pass = true; break; - case 0x0026: /* 'BrtACEnd' */ - state.pop(); pass = false; 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 && state[state.length-1] != "BrtACBegin")) 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],[/*63*/50,/*66],[164,*/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", write_UInt32LE(cnt)); - [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { -for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, "BrtFmt", write_BrtFmt(i, NF[i])); - }); - write_record(ba, "BrtEndFmts"); -} - -function write_FONTS_bin(ba) { - var cnt = 1; - - if(cnt == 0) return; - write_record(ba, "BrtBeginFonts", write_UInt32LE(cnt)); - write_record(ba, "BrtFont", write_BrtFont({ - sz:12, - color: {theme:1}, - name: "Calibri", - family: 2, - scheme: "minor" - })); - /* 1*65491BrtFont [ACFONTS] */ - write_record(ba, "BrtEndFonts"); -} - -function write_FILLS_bin(ba) { - var cnt = 2; - - if(cnt == 0) return; - write_record(ba, "BrtBeginFills", write_UInt32LE(cnt)); - write_record(ba, "BrtFill", write_BrtFill({patternType:"none"})); - write_record(ba, "BrtFill", write_BrtFill({patternType:"gray125"})); - /* 1*65431BrtFill */ - write_record(ba, "BrtEndFills"); -} - -function write_BORDERS_bin(ba) { - var cnt = 1; - - if(cnt == 0) return; - write_record(ba, "BrtBeginBorders", write_UInt32LE(cnt)); - write_record(ba, "BrtBorder", write_BrtBorder({})); - /* 1*65430BrtBorder */ - write_record(ba, "BrtEndBorders"); -} - -function write_CELLSTYLEXFS_bin(ba) { - var cnt = 1; - write_record(ba, "BrtBeginCellStyleXFs", write_UInt32LE(cnt)); - write_record(ba, "BrtXF", write_BrtXF({ - numFmtId: 0, - fontId: 0, - fillId: 0, - borderId: 0 - }, 0xFFFF)); - /* 1*65430(BrtXF *FRT) */ - write_record(ba, "BrtEndCellStyleXFs"); -} - -function write_CELLXFS_bin(ba, data) { - write_record(ba, "BrtBeginCellXFs", write_UInt32LE(data.length)); - data.forEach(function(c) { write_record(ba, "BrtXF", write_BrtXF(c,0)); }); - /* 1*65430(BrtXF *FRT) */ - write_record(ba, "BrtEndCellXFs"); -} - -function write_STYLES_bin(ba) { - var cnt = 1; - - write_record(ba, "BrtBeginStyles", write_UInt32LE(cnt)); - write_record(ba, "BrtStyle", write_BrtStyle({ - xfId:0, - builtinId:0, - name:"Normal" - })); - /* 1*65430(BrtStyle *FRT) */ - write_record(ba, "BrtEndStyles"); -} - -function write_DXFS_bin(ba) { - var cnt = 0; - - write_record(ba, "BrtBeginDXFs", write_UInt32LE(cnt)); - /* *2147483647(BrtDXF *FRT) */ - write_record(ba, "BrtEndDXFs"); -} - -function write_TABLESTYLES_bin(ba) { - var cnt = 0; - - write_record(ba, "BrtBeginTableStyles", write_BrtBeginTableStyles(cnt, "TableStyleMedium9", "PivotStyleMedium4")); - /* *TABLESTYLE */ - write_record(ba, "BrtEndTableStyles"); -} - -function write_COLORPALETTE_bin() { - return; - /* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */ -} - -/* [MS-XLSB] 2.1.7.50 Styles */ -function write_sty_bin(wb, opts) { - var ba = buf_array(); - write_record(ba, "BrtBeginStyleSheet"); - write_FMTS_bin(ba, wb.SSF); - write_FONTS_bin(ba, wb); - write_FILLS_bin(ba, wb); - write_BORDERS_bin(ba, wb); - write_CELLSTYLEXFS_bin(ba, wb); - write_CELLXFS_bin(ba, opts.cellXfs); - write_STYLES_bin(ba, wb); - write_DXFS_bin(ba, wb); - write_TABLESTYLES_bin(ba, wb); - write_COLORPALETTE_bin(ba, wb); - /* FRTSTYLESHEET*/ - write_record(ba, "BrtEndStyleSheet"); - return ba.end(); -} -RELS.THEME = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"; - -/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */ -var XLSXThemeClrScheme = [ - '', '', '', '', - '', '', '', - '', '', '', - '', '' -]; -/* 20.1.6.2 clrScheme CT_ColorScheme */ -function parse_clrScheme(t, themes, opts) { - themes.themeElements.clrScheme = []; - var color = {}; - (t[0].match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x); - switch(y[0]) { - /* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */ - case '': break; - - /* 20.1.2.3.32 srgbClr CT_SRgbColor */ - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - case '': case '': - if (y[0].charAt(1) === '/') { - themes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color; - color = {}; - } else { - color.name = y[0].slice(3, y[0].length - 1); - } - break; - - default: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme'); - } - }); -} - -/* 20.1.4.1.18 fontScheme CT_FontScheme */ -function parse_fontScheme() { } - -/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */ -function parse_fmtScheme() { } - -var clrsregex = /]*)>[\s\S]*<\/a:clrScheme>/; -var fntsregex = /]*)>[\s\S]*<\/a:fontScheme>/; -var fmtsregex = /]*)>[\s\S]*<\/a:fmtScheme>/; - -/* 20.1.6.10 themeElements CT_BaseStyles */ -function parse_themeElements(data, themes, opts) { - themes.themeElements = {}; - - var t; - - [ - /* clrScheme CT_ColorScheme */ - ['clrScheme', clrsregex, parse_clrScheme], - /* fontScheme CT_FontScheme */ - ['fontScheme', fntsregex, parse_fontScheme], - /* fmtScheme CT_StyleMatrix */ - ['fmtScheme', fmtsregex, parse_fmtScheme] - ].forEach(function(m) { - if(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements'); - m[2](t, themes, opts); - }); -} - -var themeltregex = /]*)>[\s\S]*<\/a:themeElements>/; - -/* 14.2.7 Theme Part */ -function parse_theme_xml(data, opts) { - /* 20.1.6.9 theme CT_OfficeStyleSheet */ - if(!data || data.length === 0) return parse_theme_xml(write_theme()); - - var t; - var themes = {}; - - /* themeElements CT_BaseStyles */ - if(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme'); - parse_themeElements(t[0], themes, opts); - themes.raw = data; - return themes; -} - -function write_theme(Themes, opts) { - if(opts && opts.themeXLSX) return opts.themeXLSX; - if(Themes && typeof Themes.raw == "string") return Themes.raw; - var o = [XML_HEADER]; - o[o.length] = ''; - o[o.length] = ''; - - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - o[o.length] = ''; - return o.join(""); -} -/* [MS-XLS] 2.4.326 TODO: payload is a zip file */ -function parse_Theme(blob, length, opts) { - var end = blob.l + length; - var dwThemeVersion = blob.read_shift(4); - if(dwThemeVersion === 124226) return; - if(!opts.cellStyles) { blob.l = end; return; } - var data = blob.slice(blob.l); - blob.l = end; - var zip; try { zip = zip_read(data, {type: "array"}); } catch(e) { return; } - var themeXML = getzipstr(zip, "theme/theme/theme1.xml", true); - if(!themeXML) return; - return parse_theme_xml(themeXML, opts); -} - -/* 2.5.49 */ -function parse_ColorTheme(blob) { return blob.read_shift(4); } - -/* 2.5.155 */ -function parse_FullColorExt(blob) { - var o = {}; - o.xclrType = blob.read_shift(2); - o.nTintShade = blob.read_shift(2); - switch(o.xclrType) { - case 0: blob.l += 4; break; - case 1: o.xclrValue = parse_IcvXF(blob, 4); break; - case 2: o.xclrValue = parse_LongRGBA(blob, 4); break; - case 3: o.xclrValue = parse_ColorTheme(blob, 4); break; - case 4: blob.l += 4; break; - } - blob.l += 8; - return o; -} - -/* 2.5.164 TODO: read 7 bits*/ -function parse_IcvXF(blob, length) { - return parsenoop(blob, length); -} - -/* 2.5.280 */ -function parse_XFExtGradient(blob, length) { - return parsenoop(blob, length); -} - -/* [MS-XLS] 2.5.108 */ -function parse_ExtProp(blob) { - var extType = blob.read_shift(2); - var cb = blob.read_shift(2) - 4; - var o = [extType]; - switch(extType) { - case 0x04: case 0x05: case 0x07: case 0x08: - case 0x09: case 0x0A: case 0x0B: case 0x0D: - o[1] = parse_FullColorExt(blob, cb); break; - case 0x06: o[1] = parse_XFExtGradient(blob, cb); break; - case 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break; - default: throw new Error("Unrecognized ExtProp type: " + extType + " " + cb); - } - return o; -} - -/* 2.4.355 */ -function parse_XFExt(blob, length) { - var end = blob.l + length; - blob.l += 2; - var ixfe = blob.read_shift(2); - blob.l += 2; - var cexts = blob.read_shift(2); - var ext = []; - while(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l)); - return {ixfe:ixfe, ext:ext}; -} - -/* xf is an XF, see parse_XFExt for xfext */ -function update_xfext(xf, xfext) { - xfext.forEach(function(xfe) { - switch(xfe[0]) { /* 2.5.108 extPropData */ - case 0x04: break; /* foreground color */ - case 0x05: break; /* background color */ - case 0x06: break; /* gradient fill */ - case 0x07: break; /* top cell border color */ - case 0x08: break; /* bottom cell border color */ - case 0x09: break; /* left cell border color */ - case 0x0a: break; /* right cell border color */ - case 0x0b: break; /* diagonal cell border color */ - case 0x0d: /* text color */ - break; - case 0x0e: break; /* font scheme */ - case 0x0f: break; /* indentation level */ - } - }); -} - -/* 18.6 Calculation Chain */ -function parse_cc_xml(data) { - var d = []; - if(!data) return d; - var i = 1; - (data.match(tagregex)||[]).forEach(function(x) { - var y = parsexmltag(x); - switch(y[0]) { - case '': case '': break; - /* 18.6.1 c CT_CalcCell 1 */ - case ' 0){/* empty */} - else if((R_n||"").indexOf("End") > 0){/* empty */} - else if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R_n); - } - }); - return out; -} - -//function write_cc_bin(data, opts) { } -/* 18.14 Supplementary Workbook Data */ -function parse_xlink_xml() { - //var opts = _opts || {}; - //if(opts.WTF) throw "XLSX External Link"; -} - -/* [MS-XLSB] 2.1.7.25 External Link */ -function parse_xlink_bin(data, rel, name, _opts) { - if(!data) return data; - var opts = _opts || {}; - - var pass = false, end = false; - - recordhopper(data, function xlink_parse(val, R_n, RT) { - if(end) return; - switch(RT) { - case 0x0167: /* 'BrtSupTabs' */ - case 0x016B: /* 'BrtExternTableStart' */ - case 0x016C: /* 'BrtExternTableEnd' */ - case 0x016E: /* 'BrtExternRowHdr' */ - case 0x016F: /* 'BrtExternCellBlank' */ - case 0x0170: /* 'BrtExternCellReal' */ - case 0x0171: /* 'BrtExternCellBool' */ - case 0x0172: /* 'BrtExternCellError' */ - case 0x0173: /* 'BrtExternCellString' */ - case 0x01D8: /* 'BrtExternValueMeta' */ - case 0x0241: /* 'BrtSupNameStart' */ - case 0x0242: /* 'BrtSupNameValueStart' */ - case 0x0243: /* 'BrtSupNameValueEnd' */ - case 0x0244: /* 'BrtSupNameNum' */ - case 0x0245: /* 'BrtSupNameErr' */ - case 0x0246: /* 'BrtSupNameSt' */ - case 0x0247: /* 'BrtSupNameNil' */ - case 0x0248: /* 'BrtSupNameBool' */ - case 0x0249: /* 'BrtSupNameFmla' */ - case 0x024A: /* 'BrtSupNameBits' */ - case 0x024B: /* 'BrtSupNameEnd' */ - break; - - case 0x0023: /* 'BrtFRTBegin' */ - pass = true; break; - case 0x0024: /* 'BrtFRTEnd' */ - pass = false; break; - - default: - if((R_n||"").indexOf("Begin") > 0){/* empty */} - else if((R_n||"").indexOf("End") > 0){/* empty */} - else if(!pass || opts.WTF) throw new Error("Unexpected record " + RT.toString(16) + " " + R_n); - } - }, opts); -} -/* 20.5 DrawingML - SpreadsheetML Drawing */ -RELS.IMG = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"; -RELS.DRAW = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"; - -/* 20.5.2.35 wsDr CT_Drawing */ -function parse_drawing(data, rels) { - if(!data) return "??"; - /* - Chartsheet Drawing: - - 20.5.2.35 wsDr CT_Drawing - - 20.5.2.1 absoluteAnchor CT_AbsoluteAnchor - - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame - - 20.1.2.2.16 graphic CT_GraphicalObject - - 20.1.2.2.17 graphicData CT_GraphicalObjectData - - chart reference - the actual type is based on the URI of the graphicData - TODO: handle embedded charts and other types of graphics - */ - var id = (data.match(/]*r:id="([^"]*)"/)||["",""])[1]; - - return rels['!id'][id].Target; -} - -/* L.5.5.2 SpreadsheetML Comments + VML Schema */ -var _shapeid = 1024; -function write_comments_vml(rId, comments) { - var csize = [21600, 21600]; - /* L.5.2.1.2 Path Attribute */ - var bbox = ["m0,0l0",csize[1],csize[0],csize[1],csize[0],"0xe"].join(","); - var o = [ - writextag("xml", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\/>/,">"), - writextag("o:shapelayout", writextag("o:idmap", null, {'v:ext':"edit", 'data':rId}), {'v:ext':"edit"}), - writextag("v:shapetype", [ - writextag("v:stroke", null, {joinstyle:"miter"}), - writextag("v:path", null, {gradientshapeok:"t", 'o:connecttype':"rect"}) - ].join(""), {id:"_x0000_t202", 'o:spt':202, coordsize:csize.join(","),path:bbox}) - ]; - while(_shapeid < rId * 1000) _shapeid += 1000; - - comments.forEach(function(x) { - var c = decode_cell(x[0]); - var fillopts = {'color2':"#BEFF82", 'type':"gradient"}; - if(fillopts.type == "gradient") fillopts.angle = "-180"; - var fillparm = fillopts.type == "gradient" ? writextag("o:fill", null, {type:"gradientUnscaled", 'v:ext':"view"}) : null; - var fillxml = writextag('v:fill', fillparm, fillopts); - - var shadata = ({on:"t", 'obscured':"t"}); - ++_shapeid; - - o = o.concat([ - '', - fillxml, - writextag("v:shadow", null, shadata), - writextag("v:path", null, {'o:connecttype':"none"}), - '
', - '', - '', - '', - /* Part 4 19.4.2.3 Anchor (Anchor) */ - writetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(",")), - writetag('x:AutoFill', "False"), - writetag('x:Row', String(c.r)), - writetag('x:Column', String(c.c)), - x[1].hidden ? '' : '', - '', - '' - ]); }); - o.push(''); - return o.join(""); -} -RELS.CMNT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"; - -function sheet_insert_comments(sheet, comments) { - var dense = Array.isArray(sheet); - var cell; - comments.forEach(function(comment) { - var r = decode_cell(comment.ref); - if(dense) { - if(!sheet[r.r]) sheet[r.r] = []; - cell = sheet[r.r][r.c]; - } else cell = sheet[comment.ref]; - if (!cell) { - cell = ({t:"z"}); - if(dense) sheet[r.r][r.c] = cell; - else sheet[comment.ref] = cell; - var range = safe_decode_range(sheet["!ref"]||"BDWGO1000001:A1"); - if(range.s.r > r.r) range.s.r = r.r; - if(range.e.r < r.r) range.e.r = r.r; - if(range.s.c > r.c) range.s.c = r.c; - if(range.e.c < r.c) range.e.c = r.c; - var encoded = encode_range(range); - if (encoded !== sheet["!ref"]) sheet["!ref"] = encoded; - } - - if (!cell.c) cell.c = []; - var o = ({a: comment.author, t: comment.t, r: comment.r}); - if(comment.h) o.h = comment.h; - cell.c.push(o); - }); -} - -/* 18.7 Comments */ -function parse_comments_xml(data, opts) { - /* 18.7.6 CT_Comments */ - if(data.match(/<(?:\w+:)?comments *\/>/)) return []; - var authors = []; - var commentList = []; - var authtag = data.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/); - if(authtag && authtag[1]) authtag[1].split(/<\/\w*:?author>/).forEach(function(x) { - if(x === "" || x.trim() === "") return; - var a = x.match(/<(?:\w+:)?author[^>]*>(.*)/); - if(a) authors.push(a[1]); - }); - var cmnttag = data.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/); - if(cmnttag && cmnttag[1]) cmnttag[1].split(/<\/\w*:?comment>/).forEach(function(x) { - if(x === "" || x.trim() === "") return; - var cm = x.match(/<(?:\w+:)?comment[^>]*>/); - if(!cm) return; - var y = parsexmltag(cm[0]); - var comment = ({ author: y.authorId && authors[y.authorId] || "sheetjsghost", ref: y.ref, guid: y.guid }); - var cell = decode_cell(y.ref); - if(opts.sheetRows && opts.sheetRows <= cell.r) return; - var textMatch = x.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/); - var rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:"",t:"",h:""}; - comment.r = rt.r; - if(rt.r == "") rt.t = rt.h = ""; - comment.t = (rt.t||"").replace(/\r\n/g,"\n").replace(/\r/g,"\n"); - if(opts.cellHTML) comment.h = rt.h; - commentList.push(comment); - }); - return commentList; -} - -var CMNT_XML_ROOT = writextag('comments', null, { 'xmlns': XMLNS.main[0] }); -function write_comments_xml(data) { - var o = [XML_HEADER, CMNT_XML_ROOT]; - - var iauthor = []; - o.push(""); - data.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a); - if(iauthor.indexOf(a) > -1) return; - iauthor.push(a); - o.push("" + a + ""); - }); }); - o.push(""); - o.push(""); - data.forEach(function(d) { - d[1].forEach(function(c) { - /* 18.7.3 CT_Comment */ - o.push(''); - o.push(writetag("t", c.t == null ? "" : escapexml(c.t))); - o.push(''); - }); - }); - o.push(""); - if(o.length>2) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* [MS-XLSB] 2.4.28 BrtBeginComment */ -function parse_BrtBeginComment(data) { - var out = {}; - out.iauthor = data.read_shift(4); - var rfx = parse_UncheckedRfX(data, 16); - out.rfx = rfx.s; - out.ref = encode_cell(rfx.s); - data.l += 16; /*var guid = parse_GUID(data); */ - return out; -} -function write_BrtBeginComment(data, o) { - if(o == null) o = new_buf(36); - o.write_shift(4, data[1].iauthor); - write_UncheckedRfX((data[0]), o); - o.write_shift(4, 0); - o.write_shift(4, 0); - o.write_shift(4, 0); - o.write_shift(4, 0); - return o; -} - -/* [MS-XLSB] 2.4.327 BrtCommentAuthor */ -var parse_BrtCommentAuthor = parse_XLWideString; -function write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); } - -/* [MS-XLSB] 2.1.7.8 Comments */ -function parse_comments_bin(data, opts) { - var out = []; - var authors = []; - var c = {}; - var pass = false; - recordhopper(data, function hopper_cmnt(val, R_n, RT) { - switch(RT) { - case 0x0278: /* 'BrtCommentAuthor' */ - authors.push(val); break; - case 0x027B: /* 'BrtBeginComment' */ - c = val; break; - case 0x027D: /* 'BrtCommentText' */ - c.t = val.t; c.h = val.h; c.r = val.r; break; - case 0x027C: /* 'BrtEndComment' */ - c.author = authors[c.iauthor]; - delete (c).iauthor; - if(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break; - if(!c.t) c.t = ""; - delete c.rfx; out.push(c); break; - - case 0x0C00: /* 'BrtUid' */ - break; - - case 0x0023: /* 'BrtFRTBegin' */ - pass = true; break; - case 0x0024: /* 'BrtFRTEnd' */ - pass = false; break; - case 0x0025: /* 'BrtACBegin' */ break; - case 0x0026: /* 'BrtACEnd' */ break; - - - default: - if((R_n||"").indexOf("Begin") > 0){/* empty */} - else if((R_n||"").indexOf("End") > 0){/* empty */} - else if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R_n); - } - }); - return out; -} - -function write_comments_bin(data) { - var ba = buf_array(); - var iauthor = []; - write_record(ba, "BrtBeginComments"); - - write_record(ba, "BrtBeginCommentAuthors"); - data.forEach(function(comment) { - comment[1].forEach(function(c) { - if(iauthor.indexOf(c.a) > -1) return; - iauthor.push(c.a.slice(0,54)); - write_record(ba, "BrtCommentAuthor", write_BrtCommentAuthor(c.a)); - }); - }); - write_record(ba, "BrtEndCommentAuthors"); - - write_record(ba, "BrtBeginCommentList"); - data.forEach(function(comment) { - comment[1].forEach(function(c) { - c.iauthor = iauthor.indexOf(c.a); - var range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])}; - write_record(ba, "BrtBeginComment", write_BrtBeginComment([range, c])); - if(c.t && c.t.length > 0) write_record(ba, "BrtCommentText", write_BrtCommentText(c)); - write_record(ba, "BrtEndComment"); - delete c.iauthor; - }); - }); - write_record(ba, "BrtEndCommentList"); - - write_record(ba, "BrtEndComments"); - return ba.end(); -} -var CT_VBA = "application/vnd.ms-office.vbaProject"; -function make_vba_xls(cfb) { - var newcfb = CFB.utils.cfb_new({ root: "R" }); - cfb.FullPaths.forEach(function(p, i) { - if (p.slice(-1) === "/" || !p.match(/_VBA_PROJECT_CUR/)) - return; - var newpath = p.replace(/^[^\/]*/, "R").replace(/\/_VBA_PROJECT_CUR\u0000*/, ""); - CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content); - }); - return CFB.write(newcfb); -} -function fill_vba_xls(cfb, vba) { - vba.FullPaths.forEach(function(p, i) { - if (i == 0) - return; - var newpath = p.replace(/[^\/]*[\/]/, "/_VBA_PROJECT_CUR/"); - if (newpath.slice(-1) !== "/") - CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content); - }); -} -var VBAFMTS = ["xlsb", "xlsm", "xlam", "biff8", "xla"]; -RELS.DS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet"; -RELS.MS = "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet"; - -/* macro and dialog sheet stubs */ -function parse_ds_bin() { return {'!type':'dialog'}; } -function parse_ds_xml() { return {'!type':'dialog'}; } -function parse_ms_bin() { return {'!type':'macro'}; } -function parse_ms_xml() { return {'!type':'macro'}; } -/* TODO: it will be useful to parse the function str */ -var rc_to_a1 = (function(){ - var rcregex = /(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g; - var rcbase = ({r:0,c:0}); - function rcfunc($$,$1,$2,$3) { - var cRel = false, rRel = false; - - if($2.length == 0) rRel = true; - else if($2.charAt(0) == "[") { rRel = true; $2 = $2.slice(1, -1); } - - if($3.length == 0) cRel = true; - else if($3.charAt(0) == "[") { cRel = true; $3 = $3.slice(1, -1); } - - var R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0; - - if(cRel) C += rcbase.c; else --C; - if(rRel) R += rcbase.r; else --R; - return $1 + (cRel ? "" : "$") + encode_col(C) + (rRel ? "" : "$") + encode_row(R); - } - return function rc_to_a1(fstr, base) { - rcbase = base; - return fstr.replace(rcregex, rcfunc); - }; -})(); - -var crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g; -var a1_to_rc =(function(){ - return function a1_to_rc(fstr, base) { - return fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) { - var c = decode_col($3) - ($2 ? 0 : base.c); - var r = decode_row($5) - ($4 ? 0 : base.r); - var R = (r == 0 ? "" : !$4 ? "[" + r + "]" : (r+1)); - var C = (c == 0 ? "" : !$2 ? "[" + c + "]" : (c+1)); - return $1 + "R" + R + "C" + C; - }); - }; -})(); - -/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */ -function shift_formula_str(f, delta) { - return f.replace(crefregex, function($0, $1, $2, $3, $4, $5) { - return $1+($2=="$" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4=="$" ? $4+$5 : encode_row(decode_row($5) + delta.r)); - }); -} - -function shift_formula_xlsx(f, range, cell) { - var r = decode_range(range), s = r.s, c = decode_cell(cell); - var delta = {r:c.r - s.r, c:c.c - s.c}; - return shift_formula_str(f, delta); -} - -/* TODO: parse formula */ -function fuzzyfmla(f) { - if(f.length == 1) return false; - return true; -} - -function _xlfn(f) { - return f.replace(/_xlfn\./g,""); -} -function parseread1(blob) { blob.l+=1; return; } - -/* [MS-XLS] 2.5.51 */ -function parse_ColRelU(blob, length) { - var c = blob.read_shift(length == 1 ? 1 : 2); - return [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1]; -} - -/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */ -function parse_RgceArea(blob, length, opts) { - var w = 2; - if(opts) { - if(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts); - else if(opts.biff == 12) w = 4; - } - var r=blob.read_shift(w), R=blob.read_shift(w); - var c=parse_ColRelU(blob, 2); - var C=parse_ColRelU(blob, 2); - return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; -} -/* BIFF 2-5 encodes flags in the row field */ -function parse_RgceArea_BIFF2(blob) { - var r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2); - var c=blob.read_shift(1); - var C=blob.read_shift(1); - return { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} }; -} - -/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */ -function parse_RgceAreaRel(blob, length, opts) { - if(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts); - var r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2); - var c=parse_ColRelU(blob, 2); - var C=parse_ColRelU(blob, 2); - return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; -} - -/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */ -function parse_RgceLoc(blob, length, opts) { - if(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts); - var r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2); - var c = parse_ColRelU(blob, 2); - return {r:r, c:c[0], cRel:c[1], rRel:c[2]}; -} -function parse_RgceLoc_BIFF2(blob) { - var r = parse_ColRelU(blob, 2); - var c = blob.read_shift(1); - return {r:r[0], c:c, cRel:r[1], rRel:r[2]}; -} - -/* [MS-XLS] 2.5.198.107, 2.5.47 */ -function parse_RgceElfLoc(blob) { - var r = blob.read_shift(2); - var c = blob.read_shift(2); - return {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 }; -} - -/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */ -function parse_RgceLocRel(blob, length, opts) { - var biff = opts && opts.biff ? opts.biff : 8; - if(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts); - var r = blob.read_shift(biff >= 12 ? 4 : 2); - var cl = blob.read_shift(2); - var cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15; - cl &= 0x3FFF; - if(rRel == 1) while(r > 0x7FFFF) r -= 0x100000; - if(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000; - return {r:r,c:cl,cRel:cRel,rRel:rRel}; -} -function parse_RgceLocRel_BIFF2(blob) { - var rl = blob.read_shift(2); - var c = blob.read_shift(1); - var rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14; - rl &= 0x3FFF; - if(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000; - if(cRel == 1 && c >= 0x80) c = c - 0x100; - return {r:rl,c:c,cRel:cRel,rRel:rRel}; -} - -/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */ -function parse_PtgArea(blob, length, opts) { - var type = (blob[blob.l++] & 0x60) >> 5; - var area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts); - return [type, area]; -} - -/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */ -function parse_PtgArea3d(blob, length, opts) { - var type = (blob[blob.l++] & 0x60) >> 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]; -} - -/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */ -function parse_PtgAreaErr(blob, length, opts) { - var type = (blob[blob.l++] & 0x60) >> 5; - blob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8); - return [type]; -} -/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */ -function parse_PtgAreaErr3d(blob, length, opts) { - var type = (blob[blob.l++] & 0x60) >> 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]; -} - -/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */ -function parse_PtgAreaN(blob, length, opts) { - var type = (blob[blob.l++] & 0x60) >> 5; - var area = parse_RgceAreaRel(blob, length - 1, opts); - return [type, area]; -} - -/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */ -function parse_PtgArray(blob, length, opts) { - var type = (blob[blob.l++] & 0x60) >> 5; - blob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7; - return [type]; -} - -/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */ -function parse_PtgAttrBaxcel(blob) { - var bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */ - var bitBaxcel = 1; - blob.l += 4; - return [bitSemi, bitBaxcel]; -} - -/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */ -function parse_PtgAttrChoose(blob, length, opts) { - blob.l +=2; - var offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); - var o = []; - /* offset is 1 less than the number of elements */ - for(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2)); - return o; -} - -/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */ -function parse_PtgAttrGoto(blob, length, opts) { - var bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0; - blob.l += 2; - return [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)]; -} - -/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */ -function parse_PtgAttrIf(blob, length, opts) { - var bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0; - blob.l += 2; - return [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)]; -} - -/* [MS-XLSB] 2.5.97.28 */ -function parse_PtgAttrIfError(blob) { - var bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0; - blob.l += 2; - return [bitIf, blob.read_shift(2)]; -} - -/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */ -function parse_PtgAttrSemi(blob, length, opts) { - var bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0; - blob.l += opts && opts.biff == 2 ? 3 : 4; - return [bitSemi]; -} - -/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */ -function parse_PtgAttrSpaceType(blob) { - var type = blob.read_shift(1), cch = blob.read_shift(1); - return [type, cch]; -} - -/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */ -function parse_PtgAttrSpace(blob) { - blob.read_shift(2); - return parse_PtgAttrSpaceType(blob, 2); -} - -/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */ -function parse_PtgAttrSpaceSemi(blob) { - blob.read_shift(2); - return parse_PtgAttrSpaceType(blob, 2); -} - -/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */ -function parse_PtgRef(blob, length, opts) { - //var ptg = blob[blob.l] & 0x1F; - var type = (blob[blob.l] & 0x60)>>5; - blob.l += 1; - var loc = parse_RgceLoc(blob, 0, opts); - return [type, loc]; -} - -/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */ -function parse_PtgRefN(blob, length, opts) { - var type = (blob[blob.l] & 0x60)>>5; - blob.l += 1; - var loc = parse_RgceLocRel(blob, 0, opts); - return [type, loc]; -} - -/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */ -function parse_PtgRef3d(blob, length, opts) { - var type = (blob[blob.l] & 0x60)>>5; - blob.l += 1; - var ixti = blob.read_shift(2); // XtiIndex - if(opts && opts.biff == 5) blob.l += 12; - var loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel - return [type, ixti, loc]; -} - - -/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */ -function parse_PtgFunc(blob, length, opts) { - //var ptg = blob[blob.l] & 0x1F; - var type = (blob[blob.l] & 0x60)>>5; - blob.l += 1; - var iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2); - return [FtabArgc[iftab], Ftab[iftab], type]; -} -/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */ -function parse_PtgFuncVar(blob, length, opts) { - var type = blob[blob.l++]; - var cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob); - return [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]]; -} - -function parsetab(blob) { - return [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF]; -} - -/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */ -function parse_PtgAttrSum(blob, length, opts) { - blob.l += opts && opts.biff == 2 ? 3 : 4; return; -} - -/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */ -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]; -} - -/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */ -function parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; } - -/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */ -function parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); } - -/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */ -function parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;} - -/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */ -function parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); } - -/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */ -function parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); } - -/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */ -/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */ -function parse_SerAr(blob, biff) { - var val = [blob.read_shift(1)]; - if(biff == 12) switch(val[0]) { - case 0x02: val[0] = 0x04; break; /* SerBool */ - case 0x04: val[0] = 0x10; break; /* SerErr */ - case 0x00: val[0] = 0x01; break; /* SerNum */ - case 0x01: val[0] = 0x02; break; /* SerStr */ - } - switch(val[0]) { - case 0x04: /* SerBool -- boolean */ - val[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE'; - if(biff != 12) blob.l += 7; break; - case 0x25: /* appears to be an alias */ - case 0x10: /* SerErr -- error */ - val[1] = BErr[blob[blob.l]]; - blob.l += ((biff == 12) ? 4 : 8); break; - case 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */ - blob.l += 8; break; - case 0x01: /* SerNum -- Xnum */ - val[1] = parse_Xnum(blob, 8); break; - case 0x02: /* SerStr -- XLUnicodeString (<256 chars) */ - val[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break; - default: throw new Error("Bad SerAr: " + val[0]); /* Unreachable */ - } - return val; -} - -/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */ -function parse_PtgExtraMem(blob, cce, opts) { - var count = blob.read_shift((opts.biff == 12) ? 4 : 2); - var out = []; - for(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8)); - return out; -} - -/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */ -function parse_PtgExtraArray(blob, length, opts) { - var rows = 0, cols = 0; - if(opts.biff == 12) { - rows = blob.read_shift(4); // DRw - cols = blob.read_shift(4); // DCol - } else { - cols = 1 + blob.read_shift(1); //DColByteU - rows = 1 + blob.read_shift(2); //DRw - } - if(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; } - // $FlowIgnore - for(var i = 0, o = []; i != rows && (o[i] = []); ++i) - for(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff); - return o; -} - -/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */ -function parse_PtgName(blob, length, opts) { - var type = (blob.read_shift(1) >>> 5) & 0x03; - var w = (!opts || (opts.biff >= 8)) ? 4 : 2; - var nameindex = blob.read_shift(w); - switch(opts.biff) { - case 2: blob.l += 5; break; - case 3: case 4: blob.l += 8; break; - case 5: blob.l += 12; break; - } - return [type, 0, nameindex]; -} - -/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */ -function parse_PtgNameX(blob, length, opts) { - if(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts); - var type = (blob.read_shift(1) >>> 5) & 0x03; - var ixti = blob.read_shift(2); // XtiIndex - var nameindex = blob.read_shift(4); - return [type, ixti, nameindex]; -} -function parse_PtgNameX_BIFF5(blob) { - var type = (blob.read_shift(1) >>> 5) & 0x03; - var ixti = blob.read_shift(2, 'i'); // XtiIndex - blob.l += 8; - var nameindex = blob.read_shift(2); - blob.l += 12; - return [type, ixti, nameindex]; -} - -/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */ -function parse_PtgMemArea(blob, length, opts) { - var type = (blob.read_shift(1) >>> 5) & 0x03; - blob.l += (opts && opts.biff == 2 ? 3 : 4); - var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); - return [type, cce]; -} - -/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */ -function parse_PtgMemFunc(blob, length, opts) { - var type = (blob.read_shift(1) >>> 5) & 0x03; - var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); - return [type, cce]; -} - - -/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */ -function parse_PtgRefErr(blob, length, opts) { - var type = (blob.read_shift(1) >>> 5) & 0x03; - blob.l += 4; - if(opts.biff < 8) blob.l--; - if(opts.biff == 12) blob.l += 2; - return [type]; -} - -/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */ -function parse_PtgRefErr3d(blob, length, opts) { - var type = (blob[blob.l++] & 0x60) >> 5; - var ixti = blob.read_shift(2); - var w = 4; - if(opts) switch(opts.biff) { - case 5: w = 15; break; - case 12: w = 6; break; - } - blob.l += w; - return [type, ixti]; -} - -/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */ -var parse_PtgMemErr = parsenoop; -/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */ -var parse_PtgMemNoMem = parsenoop; -/* [MS-XLS] 2.5.198.92 */ -var parse_PtgTbl = parsenoop; - -function parse_PtgElfLoc(blob, length, opts) { - blob.l += 2; - return [parse_RgceElfLoc(blob, 4, opts)]; -} -function parse_PtgElfNoop(blob) { - blob.l += 6; - return []; -} -/* [MS-XLS] 2.5.198.46 */ -var parse_PtgElfCol = parse_PtgElfLoc; -/* [MS-XLS] 2.5.198.47 */ -var parse_PtgElfColS = parse_PtgElfNoop; -/* [MS-XLS] 2.5.198.48 */ -var parse_PtgElfColSV = parse_PtgElfNoop; -/* [MS-XLS] 2.5.198.49 */ -var parse_PtgElfColV = parse_PtgElfLoc; -/* [MS-XLS] 2.5.198.50 */ -function parse_PtgElfLel(blob) { - blob.l += 2; - return [parseuint16(blob), blob.read_shift(2) & 0x01]; -} -/* [MS-XLS] 2.5.198.51 */ -var parse_PtgElfRadical = parse_PtgElfLoc; -/* [MS-XLS] 2.5.198.52 */ -var parse_PtgElfRadicalLel = parse_PtgElfLel; -/* [MS-XLS] 2.5.198.53 */ -var parse_PtgElfRadicalS = parse_PtgElfNoop; -/* [MS-XLS] 2.5.198.54 */ -var parse_PtgElfRw = parse_PtgElfLoc; -/* [MS-XLS] 2.5.198.55 */ -var parse_PtgElfRwV = parse_PtgElfLoc; - -/* [MS-XLSB] 2.5.97.52 TODO */ -var PtgListRT = [ - "Data", - "All", - "Headers", - "??", - "?Data2", - "??", - "?DataHeaders", - "??", - "Totals", - "??", - "??", - "??", - "?DataTotals", - "??", - "??", - "??", - "?Current" -]; -function parse_PtgList(blob) { - blob.l += 2; - var ixti = blob.read_shift(2); - var flags = blob.read_shift(2); - var idx = blob.read_shift(4); - var c = blob.read_shift(2); - var C = blob.read_shift(2); - var rt = PtgListRT[(flags >> 2) & 0x1F]; - return {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C}; -} -/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */ -function parse_PtgSxName(blob) { - blob.l += 2; - return [blob.read_shift(4)]; -} - -/* [XLS] old spec */ -function parse_PtgSheet(blob, length, opts) { - blob.l += 5; - blob.l += 2; - blob.l += (opts.biff == 2 ? 1 : 4); - return ["PTGSHEET"]; -} -function parse_PtgEndSheet(blob, length, opts) { - blob.l += (opts.biff == 2 ? 4 : 5); - return ["PTGENDSHEET"]; -} -function parse_PtgMemAreaN(blob) { - var type = (blob.read_shift(1) >>> 5) & 0x03; - var cce = blob.read_shift(2); - return [type, cce]; -} -function parse_PtgMemNoMemN(blob) { - var type = (blob.read_shift(1) >>> 5) & 0x03; - var cce = blob.read_shift(2); - return [type, cce]; -} -function parse_PtgAttrNoop(blob) { - blob.l += 4; - return [0, 0]; -} - -/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */ -var PtgTypes = { -0x01: { n:'PtgExp', f:parse_PtgExp }, -0x02: { n:'PtgTbl', f:parse_PtgTbl }, -0x03: { n:'PtgAdd', f:parseread1 }, -0x04: { n:'PtgSub', f:parseread1 }, -0x05: { n:'PtgMul', f:parseread1 }, -0x06: { n:'PtgDiv', f:parseread1 }, -0x07: { n:'PtgPower', f:parseread1 }, -0x08: { n:'PtgConcat', f:parseread1 }, -0x09: { n:'PtgLt', f:parseread1 }, -0x0A: { n:'PtgLe', f:parseread1 }, -0x0B: { n:'PtgEq', f:parseread1 }, -0x0C: { n:'PtgGe', f:parseread1 }, -0x0D: { n:'PtgGt', f:parseread1 }, -0x0E: { n:'PtgNe', f:parseread1 }, -0x0F: { n:'PtgIsect', f:parseread1 }, -0x10: { n:'PtgUnion', f:parseread1 }, -0x11: { n:'PtgRange', f:parseread1 }, -0x12: { n:'PtgUplus', f:parseread1 }, -0x13: { n:'PtgUminus', f:parseread1 }, -0x14: { n:'PtgPercent', f:parseread1 }, -0x15: { n:'PtgParen', f:parseread1 }, -0x16: { n:'PtgMissArg', f:parseread1 }, -0x17: { n:'PtgStr', f:parse_PtgStr }, -0x1A: { n:'PtgSheet', f:parse_PtgSheet }, -0x1B: { n:'PtgEndSheet', f:parse_PtgEndSheet }, -0x1C: { n:'PtgErr', f:parse_PtgErr }, -0x1D: { n:'PtgBool', f:parse_PtgBool }, -0x1E: { n:'PtgInt', f:parse_PtgInt }, -0x1F: { n:'PtgNum', f:parse_PtgNum }, -0x20: { n:'PtgArray', f:parse_PtgArray }, -0x21: { n:'PtgFunc', f:parse_PtgFunc }, -0x22: { n:'PtgFuncVar', f:parse_PtgFuncVar }, -0x23: { n:'PtgName', f:parse_PtgName }, -0x24: { n:'PtgRef', f:parse_PtgRef }, -0x25: { n:'PtgArea', f:parse_PtgArea }, -0x26: { n:'PtgMemArea', f:parse_PtgMemArea }, -0x27: { n:'PtgMemErr', f:parse_PtgMemErr }, -0x28: { n:'PtgMemNoMem', f:parse_PtgMemNoMem }, -0x29: { n:'PtgMemFunc', f:parse_PtgMemFunc }, -0x2A: { n:'PtgRefErr', f:parse_PtgRefErr }, -0x2B: { n:'PtgAreaErr', f:parse_PtgAreaErr }, -0x2C: { n:'PtgRefN', f:parse_PtgRefN }, -0x2D: { n:'PtgAreaN', f:parse_PtgAreaN }, -0x2E: { n:'PtgMemAreaN', f:parse_PtgMemAreaN }, -0x2F: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN }, -0x39: { n:'PtgNameX', f:parse_PtgNameX }, -0x3A: { n:'PtgRef3d', f:parse_PtgRef3d }, -0x3B: { n:'PtgArea3d', f:parse_PtgArea3d }, -0x3C: { n:'PtgRefErr3d', f:parse_PtgRefErr3d }, -0x3D: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d }, -0xFF: {} -}; -/* These are duplicated in the PtgTypes table */ -var PtgDupes = { -0x40: 0x20, 0x60: 0x20, -0x41: 0x21, 0x61: 0x21, -0x42: 0x22, 0x62: 0x22, -0x43: 0x23, 0x63: 0x23, -0x44: 0x24, 0x64: 0x24, -0x45: 0x25, 0x65: 0x25, -0x46: 0x26, 0x66: 0x26, -0x47: 0x27, 0x67: 0x27, -0x48: 0x28, 0x68: 0x28, -0x49: 0x29, 0x69: 0x29, -0x4A: 0x2A, 0x6A: 0x2A, -0x4B: 0x2B, 0x6B: 0x2B, -0x4C: 0x2C, 0x6C: 0x2C, -0x4D: 0x2D, 0x6D: 0x2D, -0x4E: 0x2E, 0x6E: 0x2E, -0x4F: 0x2F, 0x6F: 0x2F, -0x58: 0x22, 0x78: 0x22, -0x59: 0x39, 0x79: 0x39, -0x5A: 0x3A, 0x7A: 0x3A, -0x5B: 0x3B, 0x7B: 0x3B, -0x5C: 0x3C, 0x7C: 0x3C, -0x5D: 0x3D, 0x7D: 0x3D -}; -(function(){for(var y in PtgDupes) PtgTypes[y] = PtgTypes[PtgDupes[y]];})(); - -var Ptg18 = { -0x01: { n:'PtgElfLel', f:parse_PtgElfLel }, -0x02: { n:'PtgElfRw', f:parse_PtgElfRw }, -0x03: { n:'PtgElfCol', f:parse_PtgElfCol }, -0x06: { n:'PtgElfRwV', f:parse_PtgElfRwV }, -0x07: { n:'PtgElfColV', f:parse_PtgElfColV }, -0x0A: { n:'PtgElfRadical', f:parse_PtgElfRadical }, -0x0B: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS }, -0x0D: { n:'PtgElfColS', f:parse_PtgElfColS }, -0x0F: { n:'PtgElfColSV', f:parse_PtgElfColSV }, -0x10: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel }, -0x19: { n:'PtgList', f:parse_PtgList }, -0x1D: { n:'PtgSxName', f:parse_PtgSxName }, -0xFF: {} -}; -var Ptg19 = { -0x00: { n:'PtgAttrNoop', f:parse_PtgAttrNoop }, -0x01: { n:'PtgAttrSemi', f:parse_PtgAttrSemi }, -0x02: { n:'PtgAttrIf', f:parse_PtgAttrIf }, -0x04: { n:'PtgAttrChoose', f:parse_PtgAttrChoose }, -0x08: { n:'PtgAttrGoto', f:parse_PtgAttrGoto }, -0x10: { n:'PtgAttrSum', f:parse_PtgAttrSum }, -0x20: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel }, -0x40: { n:'PtgAttrSpace', f:parse_PtgAttrSpace }, -0x41: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi }, -0x80: { n:'PtgAttrIfError', f:parse_PtgAttrIfError }, -0xFF: {} -}; -Ptg19[0x21] = Ptg19[0x20]; - -/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */ -function parse_RgbExtra(blob, length, rgce, opts) { - if(opts.biff < 8) return parsenoop(blob, length); - var target = blob.l + length; - var o = []; - for(var i = 0; i !== rgce.length; ++i) { - switch(rgce[i][0]) { - case 'PtgArray': /* PtgArray -> PtgExtraArray */ - rgce[i][1] = parse_PtgExtraArray(blob, 0, opts); - o.push(rgce[i][1]); - break; - case 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */ - rgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts); - o.push(rgce[i][2]); - break; - case 'PtgExp': /* PtgExp -> PtgExtraCol */ - if(opts && opts.biff == 12) { - rgce[i][1][1] = blob.read_shift(4); - o.push(rgce[i][1]); - } break; - case 'PtgList': /* TODO: PtgList -> PtgExtraList */ - case 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */ - case 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */ - case 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */ - throw "Unsupported " + rgce[i][0]; - default: break; - } - } - length = target - blob.l; - /* note: this is technically an error but Excel disregards */ - //if(target !== blob.l && blob.l !== target - length) throw new Error(target + " != " + blob.l); - if(length !== 0) o.push(parsenoop(blob, length)); - return o; -} - -/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */ -function parse_Rgce(blob, length, opts) { - var target = blob.l + length; - var R, id, ptgs = []; - while(target != blob.l) { - length = target - blob.l; - id = blob[blob.l]; - R = PtgTypes[id]; - if(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]]; - if(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); } - else { ptgs.push([R.n, R.f(blob, length, opts)]); } - } - return ptgs; -} - -function stringify_array(f) { - var o = []; - for(var i = 0; i < f.length; ++i) { - var x = f[i], r = []; - for(var j = 0; j < x.length; ++j) { - var y = x[j]; - if(y) switch(y[0]) { - // TODO: handle embedded quotes - case 0x02: -r.push('"' + y[1].replace(/"/g,'""') + '"'); break; - default: r.push(y[1]); - } else r.push(""); - } - o.push(r.join(",")); - } - return o.join(";"); -} - -/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */ -var PtgBinOp = { - PtgAdd: "+", - PtgConcat: "&", - PtgDiv: "/", - PtgEq: "=", - PtgGe: ">=", - PtgGt: ">", - PtgLe: "<=", - PtgLt: "<", - PtgMul: "*", - PtgNe: "<>", - PtgPower: "^", - PtgSub: "-" -}; - -// List of invalid characters needs to be tested further -var quoteCharacters = new RegExp(/[^\w\u4E00-\u9FFF\u3040-\u30FF]/); -function formula_quote_sheet_name(sname, opts) { - if(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error("empty sheet name"); - if (quoteCharacters.test(sname)) return "'" + sname + "'"; - return sname; -} -function get_ixti_raw(supbooks, ixti, opts) { - if(!supbooks) return "SH33TJSERR0"; - if(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti]; - if(!supbooks.XTI) return "SH33TJSERR6"; - var XTI = supbooks.XTI[ixti]; - if(opts.biff < 8) { - if(ixti > 10000) ixti-= 65536; - if(ixti < 0) ixti = -ixti; - return ixti == 0 ? "" : supbooks.XTI[ixti - 1]; - } - if(!XTI) return "SH33TJSERR1"; - var o = ""; - if(opts.biff > 8) switch(supbooks[XTI[0]][0]) { - case 0x0165: /* 'BrtSupSelf' */ - o = XTI[1] == -1 ? "#REF" : supbooks.SheetNames[XTI[1]]; - return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]]; - case 0x0166: /* 'BrtSupSame' */ - if(opts.SID != null) return supbooks.SheetNames[opts.SID]; - return "SH33TJSSAME" + supbooks[XTI[0]][0]; - case 0x0163: /* 'BrtSupBookSrc' */ - /* falls through */ - default: return "SH33TJSSRC" + supbooks[XTI[0]][0]; - } - switch(supbooks[XTI[0]][0][0]) { - case 0x0401: - o = XTI[1] == -1 ? "#REF" : (supbooks.SheetNames[XTI[1]] || "SH33TJSERR3"); - return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]]; - case 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(";;"); //return "SH33TJSERR8"; - default: - if(!supbooks[XTI[0]][0][3]) return "SH33TJSERR2"; - o = XTI[1] == -1 ? "#REF" : (supbooks[XTI[0]][0][3][XTI[1]] || "SH33TJSERR4"); - return XTI[1] == XTI[2] ? o : o + ":" + supbooks[XTI[0]][0][3][XTI[2]]; - } -} -function get_ixti(supbooks, ixti, opts) { - var ixtiraw = get_ixti_raw(supbooks, ixti, opts); - return ixtiraw == "#REF" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts); -} -function stringify_formula(formula/*Array*/, range, cell, supbooks, opts) { - var biff = (opts && opts.biff) || 8; - var _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}}; - var stack = [], e1, e2, c, ixti=0, nameidx=0, r, sname=""; - if(!formula[0] || !formula[0][0]) return ""; - var last_sp = -1, sp = ""; - for(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) { - var f = formula[0][ff]; - switch(f[0]) { - case 'PtgUminus': /* [MS-XLS] 2.5.198.93 */ - stack.push("-" + stack.pop()); break; - case 'PtgUplus': /* [MS-XLS] 2.5.198.95 */ - stack.push("+" + stack.pop()); break; - case 'PtgPercent': /* [MS-XLS] 2.5.198.81 */ - stack.push(stack.pop() + "%"); break; - - case 'PtgAdd': /* [MS-XLS] 2.5.198.26 */ - case 'PtgConcat': /* [MS-XLS] 2.5.198.43 */ - case 'PtgDiv': /* [MS-XLS] 2.5.198.45 */ - case 'PtgEq': /* [MS-XLS] 2.5.198.56 */ - case 'PtgGe': /* [MS-XLS] 2.5.198.64 */ - case 'PtgGt': /* [MS-XLS] 2.5.198.65 */ - case 'PtgLe': /* [MS-XLS] 2.5.198.68 */ - case 'PtgLt': /* [MS-XLS] 2.5.198.69 */ - case 'PtgMul': /* [MS-XLS] 2.5.198.75 */ - case 'PtgNe': /* [MS-XLS] 2.5.198.78 */ - case 'PtgPower': /* [MS-XLS] 2.5.198.82 */ - case 'PtgSub': /* [MS-XLS] 2.5.198.90 */ - e1 = stack.pop(); e2 = stack.pop(); - if(last_sp >= 0) { - switch(formula[0][last_sp][1][0]) { - case 0: - // $FlowIgnore - sp = fill(" ", formula[0][last_sp][1][1]); break; - case 1: - // $FlowIgnore - sp = fill("\r", formula[0][last_sp][1][1]); break; - default: - sp = ""; - // $FlowIgnore - if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + formula[0][last_sp][1][0]); - } - e2 = e2 + sp; - last_sp = -1; - } - stack.push(e2+PtgBinOp[f[0]]+e1); - break; - - case 'PtgIsect': /* [MS-XLS] 2.5.198.67 */ - e1 = stack.pop(); e2 = stack.pop(); - stack.push(e2+" "+e1); - break; - case 'PtgUnion': /* [MS-XLS] 2.5.198.94 */ - e1 = stack.pop(); e2 = stack.pop(); - stack.push(e2+","+e1); - break; - case 'PtgRange': /* [MS-XLS] 2.5.198.83 */ - e1 = stack.pop(); e2 = stack.pop(); - stack.push(e2+":"+e1); - break; - - case 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */ - break; - case 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */ - break; - case 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */ - break; - case 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */ - break; - - - case 'PtgRef': /* [MS-XLS] 2.5.198.84 */ -c = shift_cell_xls((f[1][1]), _range, opts); - stack.push(encode_cell_xls(c, biff)); - break; - case 'PtgRefN': /* [MS-XLS] 2.5.198.88 */ -c = cell ? shift_cell_xls((f[1][1]), cell, opts) : (f[1][1]); - stack.push(encode_cell_xls(c, biff)); - break; - case 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */ -ixti = f[1][1]; c = shift_cell_xls((f[1][2]), _range, opts); - sname = get_ixti(supbooks, ixti, opts); - var w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars - stack.push(sname + "!" + encode_cell_xls(c, biff)); - break; - - case 'PtgFunc': /* [MS-XLS] 2.5.198.62 */ - case 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */ - /* f[1] = [argc, func, type] */ - var argc = (f[1][0]), func = (f[1][1]); - if(!argc) argc = 0; - argc &= 0x7F; - var args = argc == 0 ? [] : stack.slice(-argc); - stack.length -= argc; - if(func === 'User') func = args.shift(); - stack.push(func + "(" + args.join(",") + ")"); - break; - - case 'PtgBool': /* [MS-XLS] 2.5.198.42 */ - stack.push(f[1] ? "TRUE" : "FALSE"); break; - case 'PtgInt': /* [MS-XLS] 2.5.198.66 */ - stack.push(f[1]); break; - case 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */ - stack.push(String(f[1])); break; - case 'PtgStr': /* [MS-XLS] 2.5.198.89 */ - // $FlowIgnore - stack.push('"' + f[1].replace(/"/g, '""') + '"'); break; - case 'PtgErr': /* [MS-XLS] 2.5.198.57 */ - stack.push(f[1]); break; - case 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */ -r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts); - stack.push(encode_range_xls((r), opts)); - break; - case 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */ -r = shift_range_xls(f[1][1], _range, opts); - stack.push(encode_range_xls((r), opts)); - break; - case 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */ -ixti = f[1][1]; r = f[1][2]; - sname = get_ixti(supbooks, ixti, opts); - stack.push(sname + "!" + encode_range_xls((r), opts)); - break; - case 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */ - stack.push("SUM(" + stack.pop() + ")"); - break; - - case 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */ - case 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */ - break; - - case 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */ - /* f[1] = type, 0, nameindex */ - nameidx = (f[1][2]); - var lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx]; - var name = lbl ? lbl.Name : "SH33TJSNAME" + String(nameidx); - /* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */ - if(name && name.slice(0,6) == "_xlfn.") name = name.slice(6); - stack.push(name); - break; - - case 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */ - /* f[1] = type, ixti, nameindex */ - var bookidx = (f[1][1]); nameidx = (f[1][2]); var externbook; - /* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */ - if(opts.biff <= 5) { - if(bookidx < 0) bookidx = -bookidx; - if(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx]; - } else { - var o = ""; - if(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */} - else if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){ - if(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) { - o = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + "!"; - } - } - else o = supbooks.SheetNames[nameidx-1]+ "!"; - if(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name; - else if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name; - else { - var ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||"").split(";;"); - if(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct - else o += "SH33TJSERRX"; - } - stack.push(o); - break; - } - if(!externbook) externbook = {Name: "SH33TJSERRY"}; - stack.push(externbook.Name); - break; - - case 'PtgParen': /* [MS-XLS] 2.5.198.80 */ - var lp = '(', rp = ')'; - if(last_sp >= 0) { - sp = ""; - switch(formula[0][last_sp][1][0]) { - // $FlowIgnore - case 2: lp = fill(" ", formula[0][last_sp][1][1]) + lp; break; - // $FlowIgnore - case 3: lp = fill("\r", formula[0][last_sp][1][1]) + lp; break; - // $FlowIgnore - case 4: rp = fill(" ", formula[0][last_sp][1][1]) + rp; break; - // $FlowIgnore - case 5: rp = fill("\r", formula[0][last_sp][1][1]) + rp; break; - default: - // $FlowIgnore - if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + formula[0][last_sp][1][0]); - } - last_sp = -1; - } - stack.push(lp + stack.pop() + rp); break; - - case 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */ - stack.push('#REF!'); break; - - case 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */ - stack.push('#REF!'); break; - - case 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */ - c = {c:(f[1][1]),r:(f[1][0])}; - var q = ({c: cell.c, r:cell.r}); - if(supbooks.sharedf[encode_cell(c)]) { - var parsedf = (supbooks.sharedf[encode_cell(c)]); - stack.push(stringify_formula(parsedf, _range, q, supbooks, opts)); - } else { - var fnd = false; - for(e1=0;e1!=supbooks.arrayf.length; ++e1) { - /* TODO: should be something like range_has */ - e2 = supbooks.arrayf[e1]; - if(c.c < e2[0].s.c || c.c > e2[0].e.c) continue; - if(c.r < e2[0].s.r || c.r > e2[0].e.r) continue; - stack.push(stringify_formula(e2[1], _range, q, supbooks, opts)); - fnd = true; - break; - } - if(!fnd) stack.push(f[1]); - } - break; - - case 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */ - stack.push("{" + stringify_array(f[1]) + "}"); - break; - - case 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */ - //stack.push("(" + f[2].map(encode_range).join(",") + ")"); - break; - - case 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */ - case 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */ - last_sp = ff; - break; - - case 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */ - break; - - case 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */ - break; - - case 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */ - stack.push(""); - break; - - case 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */ - stack.push("#REF!"); break; - - case 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */ - stack.push("#REF!"); break; - - case 'PtgList': /* [MS-XLSB] 2.5.97.52 */ - // $FlowIgnore - stack.push("Table" + f[1].idx + "[#" + f[1].rt + "]"); - break; - - case 'PtgMemAreaN': - case 'PtgMemNoMemN': - case 'PtgAttrNoop': - case 'PtgSheet': - case 'PtgEndSheet': - break; - - case 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */ - break; - case 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */ - break; - - case 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */ - case 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */ - case 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */ - case 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */ - case 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */ - case 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */ - case 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */ - case 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */ - case 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */ - case 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */ - throw new Error("Unsupported ELFs"); - - case 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */ - throw new Error('Unrecognized Formula Token: ' + String(f)); - default: throw new Error('Unrecognized Formula Token: ' + String(f)); - } - var PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto']; - if(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) { - f = formula[0][last_sp]; - var _left = true; - switch(f[1][0]) { - /* note: some bad XLSB files omit the PtgParen */ - case 4: _left = false; - /* falls through */ - case 0: - // $FlowIgnore - sp = fill(" ", f[1][1]); break; - case 5: _left = false; - /* falls through */ - case 1: - // $FlowIgnore - sp = fill("\r", f[1][1]); break; - default: - sp = ""; - // $FlowIgnore - if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + f[1][0]); - } - stack.push((_left ? sp : "") + stack.pop() + (_left ? "" : sp)); - last_sp = -1; - } - } - if(stack.length > 1 && opts.WTF) throw new Error("bad formula stack"); - return stack[0]; -} - -/* [MS-XLS] 2.5.198.1 TODO */ -function parse_ArrayParsedFormula(blob, length, opts) { - var target = blob.l + length, len = opts.biff == 2 ? 1 : 2; - var rgcb, cce = blob.read_shift(len); // length of rgce - if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; - var rgce = parse_Rgce(blob, cce, opts); - if(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts); - blob.l = target; - return [rgce, rgcb]; -} - -/* [MS-XLS] 2.5.198.3 TODO */ -function parse_XLSCellParsedFormula(blob, length, opts) { - var target = blob.l + length, len = opts.biff == 2 ? 1 : 2; - var rgcb, cce = blob.read_shift(len); // length of rgce - if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; - var rgce = parse_Rgce(blob, cce, opts); - if(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts); - blob.l = target; - return [rgce, rgcb]; -} - -/* [MS-XLS] 2.5.198.21 */ -function parse_NameParsedFormula(blob, length, opts, cce) { - var target = blob.l + length; - var rgce = parse_Rgce(blob, cce, opts); - var rgcb; - if(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts); - return [rgce, rgcb]; -} - -/* [MS-XLS] 2.5.198.118 TODO */ -function parse_SharedParsedFormula(blob, length, opts) { - var target = blob.l + length; - var rgcb, cce = blob.read_shift(2); // length of rgce - var rgce = parse_Rgce(blob, cce, opts); - if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; - if(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts); - return [rgce, rgcb]; -} - -/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */ -function parse_FormulaValue(blob) { - var b; - if(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n']; - switch(blob[blob.l]) { - case 0x00: blob.l += 8; return ["String", 's']; - case 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b']; - case 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e']; - case 0x03: blob.l += 8; return ["",'s']; - } - return []; -} -function write_FormulaValue(value) { - if(value == null) { - // Blank String Value - var o = new_buf(8); - o.write_shift(1, 0x03); - o.write_shift(1, 0); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(2, 0xFFFF); - return o; - } else if(typeof value == "number") return write_Xnum(value); - return write_Xnum(0); -} - -/* [MS-XLS] 2.4.127 TODO */ -function parse_Formula(blob, length, opts) { - var end = blob.l + length; - var cell = parse_XLSCell(blob, 6); - if(opts.biff == 2) ++blob.l; - var val = parse_FormulaValue(blob,8); - var flags = blob.read_shift(1); - if(opts.biff != 2) { - blob.read_shift(1); - if(opts.biff >= 5) { - /*var chn = */blob.read_shift(4); - } - } - var cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts); - return {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]}; -} -function write_Formula(cell, R, C, opts, os) { - // Cell - var o1 = write_XLSCell(R, C, os); - - // FormulaValue - var o2 = write_FormulaValue(cell.v); - - // flags + cache - var o3 = new_buf(6); - var flags = 0x01 | 0x20; - o3.write_shift(2, flags); - o3.write_shift(4, 0); - - // CellParsedFormula - var bf = new_buf(cell.bf.length); - for(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i]; - - var out = bconcat([o1, o2, o3, bf]); - return out; -} - - -/* XLSB Parsed Formula records have the same shape */ -function parse_XLSBParsedFormula(data, length, opts) { - var cce = data.read_shift(4); - var rgce = parse_Rgce(data, cce, opts); - var cb = data.read_shift(4); - var rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null; - return [rgce, rgcb]; -} - -/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */ -var parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula; -/* [MS-XLSB] 2.5.97.4 CellParsedFormula */ -var parse_XLSBCellParsedFormula = parse_XLSBParsedFormula; -/* [MS-XLSB] 2.5.97.8 DVParsedFormula */ -//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula; -/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */ -//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2; -/* [MS-XLSB] 2.5.97.12 NameParsedFormula */ -var parse_XLSBNameParsedFormula = parse_XLSBParsedFormula; -/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */ -var parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula; -var Cetab = { - 0: "BEEP", - 1: "OPEN", - 2: "OPEN.LINKS", - 3: "CLOSE.ALL", - 4: "SAVE", - 5: "SAVE.AS", - 6: "FILE.DELETE", - 7: "PAGE.SETUP", - 8: "PRINT", - 9: "PRINTER.SETUP", - 10: "QUIT", - 11: "NEW.WINDOW", - 12: "ARRANGE.ALL", - 13: "WINDOW.SIZE", - 14: "WINDOW.MOVE", - 15: "FULL", - 16: "CLOSE", - 17: "RUN", - 22: "SET.PRINT.AREA", - 23: "SET.PRINT.TITLES", - 24: "SET.PAGE.BREAK", - 25: "REMOVE.PAGE.BREAK", - 26: "FONT", - 27: "DISPLAY", - 28: "PROTECT.DOCUMENT", - 29: "PRECISION", - 30: "A1.R1C1", - 31: "CALCULATE.NOW", - 32: "CALCULATION", - 34: "DATA.FIND", - 35: "EXTRACT", - 36: "DATA.DELETE", - 37: "SET.DATABASE", - 38: "SET.CRITERIA", - 39: "SORT", - 40: "DATA.SERIES", - 41: "TABLE", - 42: "FORMAT.NUMBER", - 43: "ALIGNMENT", - 44: "STYLE", - 45: "BORDER", - 46: "CELL.PROTECTION", - 47: "COLUMN.WIDTH", - 48: "UNDO", - 49: "CUT", - 50: "COPY", - 51: "PASTE", - 52: "CLEAR", - 53: "PASTE.SPECIAL", - 54: "EDIT.DELETE", - 55: "INSERT", - 56: "FILL.RIGHT", - 57: "FILL.DOWN", - 61: "DEFINE.NAME", - 62: "CREATE.NAMES", - 63: "FORMULA.GOTO", - 64: "FORMULA.FIND", - 65: "SELECT.LAST.CELL", - 66: "SHOW.ACTIVE.CELL", - 67: "GALLERY.AREA", - 68: "GALLERY.BAR", - 69: "GALLERY.COLUMN", - 70: "GALLERY.LINE", - 71: "GALLERY.PIE", - 72: "GALLERY.SCATTER", - 73: "COMBINATION", - 74: "PREFERRED", - 75: "ADD.OVERLAY", - 76: "GRIDLINES", - 77: "SET.PREFERRED", - 78: "AXES", - 79: "LEGEND", - 80: "ATTACH.TEXT", - 81: "ADD.ARROW", - 82: "SELECT.CHART", - 83: "SELECT.PLOT.AREA", - 84: "PATTERNS", - 85: "MAIN.CHART", - 86: "OVERLAY", - 87: "SCALE", - 88: "FORMAT.LEGEND", - 89: "FORMAT.TEXT", - 90: "EDIT.REPEAT", - 91: "PARSE", - 92: "JUSTIFY", - 93: "HIDE", - 94: "UNHIDE", - 95: "WORKSPACE", - 96: "FORMULA", - 97: "FORMULA.FILL", - 98: "FORMULA.ARRAY", - 99: "DATA.FIND.NEXT", - 100: "DATA.FIND.PREV", - 101: "FORMULA.FIND.NEXT", - 102: "FORMULA.FIND.PREV", - 103: "ACTIVATE", - 104: "ACTIVATE.NEXT", - 105: "ACTIVATE.PREV", - 106: "UNLOCKED.NEXT", - 107: "UNLOCKED.PREV", - 108: "COPY.PICTURE", - 109: "SELECT", - 110: "DELETE.NAME", - 111: "DELETE.FORMAT", - 112: "VLINE", - 113: "HLINE", - 114: "VPAGE", - 115: "HPAGE", - 116: "VSCROLL", - 117: "HSCROLL", - 118: "ALERT", - 119: "NEW", - 120: "CANCEL.COPY", - 121: "SHOW.CLIPBOARD", - 122: "MESSAGE", - 124: "PASTE.LINK", - 125: "APP.ACTIVATE", - 126: "DELETE.ARROW", - 127: "ROW.HEIGHT", - 128: "FORMAT.MOVE", - 129: "FORMAT.SIZE", - 130: "FORMULA.REPLACE", - 131: "SEND.KEYS", - 132: "SELECT.SPECIAL", - 133: "APPLY.NAMES", - 134: "REPLACE.FONT", - 135: "FREEZE.PANES", - 136: "SHOW.INFO", - 137: "SPLIT", - 138: "ON.WINDOW", - 139: "ON.DATA", - 140: "DISABLE.INPUT", - 142: "OUTLINE", - 143: "LIST.NAMES", - 144: "FILE.CLOSE", - 145: "SAVE.WORKBOOK", - 146: "DATA.FORM", - 147: "COPY.CHART", - 148: "ON.TIME", - 149: "WAIT", - 150: "FORMAT.FONT", - 151: "FILL.UP", - 152: "FILL.LEFT", - 153: "DELETE.OVERLAY", - 155: "SHORT.MENUS", - 159: "SET.UPDATE.STATUS", - 161: "COLOR.PALETTE", - 162: "DELETE.STYLE", - 163: "WINDOW.RESTORE", - 164: "WINDOW.MAXIMIZE", - 166: "CHANGE.LINK", - 167: "CALCULATE.DOCUMENT", - 168: "ON.KEY", - 169: "APP.RESTORE", - 170: "APP.MOVE", - 171: "APP.SIZE", - 172: "APP.MINIMIZE", - 173: "APP.MAXIMIZE", - 174: "BRING.TO.FRONT", - 175: "SEND.TO.BACK", - 185: "MAIN.CHART.TYPE", - 186: "OVERLAY.CHART.TYPE", - 187: "SELECT.END", - 188: "OPEN.MAIL", - 189: "SEND.MAIL", - 190: "STANDARD.FONT", - 191: "CONSOLIDATE", - 192: "SORT.SPECIAL", - 193: "GALLERY.3D.AREA", - 194: "GALLERY.3D.COLUMN", - 195: "GALLERY.3D.LINE", - 196: "GALLERY.3D.PIE", - 197: "VIEW.3D", - 198: "GOAL.SEEK", - 199: "WORKGROUP", - 200: "FILL.GROUP", - 201: "UPDATE.LINK", - 202: "PROMOTE", - 203: "DEMOTE", - 204: "SHOW.DETAIL", - 206: "UNGROUP", - 207: "OBJECT.PROPERTIES", - 208: "SAVE.NEW.OBJECT", - 209: "SHARE", - 210: "SHARE.NAME", - 211: "DUPLICATE", - 212: "APPLY.STYLE", - 213: "ASSIGN.TO.OBJECT", - 214: "OBJECT.PROTECTION", - 215: "HIDE.OBJECT", - 216: "SET.EXTRACT", - 217: "CREATE.PUBLISHER", - 218: "SUBSCRIBE.TO", - 219: "ATTRIBUTES", - 220: "SHOW.TOOLBAR", - 222: "PRINT.PREVIEW", - 223: "EDIT.COLOR", - 224: "SHOW.LEVELS", - 225: "FORMAT.MAIN", - 226: "FORMAT.OVERLAY", - 227: "ON.RECALC", - 228: "EDIT.SERIES", - 229: "DEFINE.STYLE", - 240: "LINE.PRINT", - 243: "ENTER.DATA", - 249: "GALLERY.RADAR", - 250: "MERGE.STYLES", - 251: "EDITION.OPTIONS", - 252: "PASTE.PICTURE", - 253: "PASTE.PICTURE.LINK", - 254: "SPELLING", - 256: "ZOOM", - 259: "INSERT.OBJECT", - 260: "WINDOW.MINIMIZE", - 265: "SOUND.NOTE", - 266: "SOUND.PLAY", - 267: "FORMAT.SHAPE", - 268: "EXTEND.POLYGON", - 269: "FORMAT.AUTO", - 272: "GALLERY.3D.BAR", - 273: "GALLERY.3D.SURFACE", - 274: "FILL.AUTO", - 276: "CUSTOMIZE.TOOLBAR", - 277: "ADD.TOOL", - 278: "EDIT.OBJECT", - 279: "ON.DOUBLECLICK", - 280: "ON.ENTRY", - 281: "WORKBOOK.ADD", - 282: "WORKBOOK.MOVE", - 283: "WORKBOOK.COPY", - 284: "WORKBOOK.OPTIONS", - 285: "SAVE.WORKSPACE", - 288: "CHART.WIZARD", - 289: "DELETE.TOOL", - 290: "MOVE.TOOL", - 291: "WORKBOOK.SELECT", - 292: "WORKBOOK.ACTIVATE", - 293: "ASSIGN.TO.TOOL", - 295: "COPY.TOOL", - 296: "RESET.TOOL", - 297: "CONSTRAIN.NUMERIC", - 298: "PASTE.TOOL", - 302: "WORKBOOK.NEW", - 305: "SCENARIO.CELLS", - 306: "SCENARIO.DELETE", - 307: "SCENARIO.ADD", - 308: "SCENARIO.EDIT", - 309: "SCENARIO.SHOW", - 310: "SCENARIO.SHOW.NEXT", - 311: "SCENARIO.SUMMARY", - 312: "PIVOT.TABLE.WIZARD", - 313: "PIVOT.FIELD.PROPERTIES", - 314: "PIVOT.FIELD", - 315: "PIVOT.ITEM", - 316: "PIVOT.ADD.FIELDS", - 318: "OPTIONS.CALCULATION", - 319: "OPTIONS.EDIT", - 320: "OPTIONS.VIEW", - 321: "ADDIN.MANAGER", - 322: "MENU.EDITOR", - 323: "ATTACH.TOOLBARS", - 324: "VBAActivate", - 325: "OPTIONS.CHART", - 328: "VBA.INSERT.FILE", - 330: "VBA.PROCEDURE.DEFINITION", - 336: "ROUTING.SLIP", - 338: "ROUTE.DOCUMENT", - 339: "MAIL.LOGON", - 342: "INSERT.PICTURE", - 343: "EDIT.TOOL", - 344: "GALLERY.DOUGHNUT", - 350: "CHART.TREND", - 352: "PIVOT.ITEM.PROPERTIES", - 354: "WORKBOOK.INSERT", - 355: "OPTIONS.TRANSITION", - 356: "OPTIONS.GENERAL", - 370: "FILTER.ADVANCED", - 373: "MAIL.ADD.MAILER", - 374: "MAIL.DELETE.MAILER", - 375: "MAIL.REPLY", - 376: "MAIL.REPLY.ALL", - 377: "MAIL.FORWARD", - 378: "MAIL.NEXT.LETTER", - 379: "DATA.LABEL", - 380: "INSERT.TITLE", - 381: "FONT.PROPERTIES", - 382: "MACRO.OPTIONS", - 383: "WORKBOOK.HIDE", - 384: "WORKBOOK.UNHIDE", - 385: "WORKBOOK.DELETE", - 386: "WORKBOOK.NAME", - 388: "GALLERY.CUSTOM", - 390: "ADD.CHART.AUTOFORMAT", - 391: "DELETE.CHART.AUTOFORMAT", - 392: "CHART.ADD.DATA", - 393: "AUTO.OUTLINE", - 394: "TAB.ORDER", - 395: "SHOW.DIALOG", - 396: "SELECT.ALL", - 397: "UNGROUP.SHEETS", - 398: "SUBTOTAL.CREATE", - 399: "SUBTOTAL.REMOVE", - 400: "RENAME.OBJECT", - 412: "WORKBOOK.SCROLL", - 413: "WORKBOOK.NEXT", - 414: "WORKBOOK.PREV", - 415: "WORKBOOK.TAB.SPLIT", - 416: "FULL.SCREEN", - 417: "WORKBOOK.PROTECT", - 420: "SCROLLBAR.PROPERTIES", - 421: "PIVOT.SHOW.PAGES", - 422: "TEXT.TO.COLUMNS", - 423: "FORMAT.CHARTTYPE", - 424: "LINK.FORMAT", - 425: "TRACER.DISPLAY", - 430: "TRACER.NAVIGATE", - 431: "TRACER.CLEAR", - 432: "TRACER.ERROR", - 433: "PIVOT.FIELD.GROUP", - 434: "PIVOT.FIELD.UNGROUP", - 435: "CHECKBOX.PROPERTIES", - 436: "LABEL.PROPERTIES", - 437: "LISTBOX.PROPERTIES", - 438: "EDITBOX.PROPERTIES", - 439: "PIVOT.REFRESH", - 440: "LINK.COMBO", - 441: "OPEN.TEXT", - 442: "HIDE.DIALOG", - 443: "SET.DIALOG.FOCUS", - 444: "ENABLE.OBJECT", - 445: "PUSHBUTTON.PROPERTIES", - 446: "SET.DIALOG.DEFAULT", - 447: "FILTER", - 448: "FILTER.SHOW.ALL", - 449: "CLEAR.OUTLINE", - 450: "FUNCTION.WIZARD", - 451: "ADD.LIST.ITEM", - 452: "SET.LIST.ITEM", - 453: "REMOVE.LIST.ITEM", - 454: "SELECT.LIST.ITEM", - 455: "SET.CONTROL.VALUE", - 456: "SAVE.COPY.AS", - 458: "OPTIONS.LISTS.ADD", - 459: "OPTIONS.LISTS.DELETE", - 460: "SERIES.AXES", - 461: "SERIES.X", - 462: "SERIES.Y", - 463: "ERRORBAR.X", - 464: "ERRORBAR.Y", - 465: "FORMAT.CHART", - 466: "SERIES.ORDER", - 467: "MAIL.LOGOFF", - 468: "CLEAR.ROUTING.SLIP", - 469: "APP.ACTIVATE.MICROSOFT", - 470: "MAIL.EDIT.MAILER", - 471: "ON.SHEET", - 472: "STANDARD.WIDTH", - 473: "SCENARIO.MERGE", - 474: "SUMMARY.INFO", - 475: "FIND.FILE", - 476: "ACTIVE.CELL.FONT", - 477: "ENABLE.TIPWIZARD", - 478: "VBA.MAKE.ADDIN", - 480: "INSERTDATATABLE", - 481: "WORKGROUP.OPTIONS", - 482: "MAIL.SEND.MAILER", - 485: "AUTOCORRECT", - 489: "POST.DOCUMENT", - 491: "PICKLIST", - 493: "VIEW.SHOW", - 494: "VIEW.DEFINE", - 495: "VIEW.DELETE", - 509: "SHEET.BACKGROUND", - 510: "INSERT.MAP.OBJECT", - 511: "OPTIONS.MENONO", - 517: "MSOCHECKS", - 518: "NORMAL", - 519: "LAYOUT", - 520: "RM.PRINT.AREA", - 521: "CLEAR.PRINT.AREA", - 522: "ADD.PRINT.AREA", - 523: "MOVE.BRK", - 545: "HIDECURR.NOTE", - 546: "HIDEALL.NOTES", - 547: "DELETE.NOTE", - 548: "TRAVERSE.NOTES", - 549: "ACTIVATE.NOTES", - 620: "PROTECT.REVISIONS", - 621: "UNPROTECT.REVISIONS", - 647: "OPTIONS.ME", - 653: "WEB.PUBLISH", - 667: "NEWWEBQUERY", - 673: "PIVOT.TABLE.CHART", - 753: "OPTIONS.SAVE", - 755: "OPTIONS.SPELL", - 808: "HIDEALL.INKANNOTS" -}; -var Ftab = { - 0: "COUNT", - 1: "IF", - 2: "ISNA", - 3: "ISERROR", - 4: "SUM", - 5: "AVERAGE", - 6: "MIN", - 7: "MAX", - 8: "ROW", - 9: "COLUMN", - 10: "NA", - 11: "NPV", - 12: "STDEV", - 13: "DOLLAR", - 14: "FIXED", - 15: "SIN", - 16: "COS", - 17: "TAN", - 18: "ATAN", - 19: "PI", - 20: "SQRT", - 21: "EXP", - 22: "LN", - 23: "LOG10", - 24: "ABS", - 25: "INT", - 26: "SIGN", - 27: "ROUND", - 28: "LOOKUP", - 29: "INDEX", - 30: "REPT", - 31: "MID", - 32: "LEN", - 33: "VALUE", - 34: "TRUE", - 35: "FALSE", - 36: "AND", - 37: "OR", - 38: "NOT", - 39: "MOD", - 40: "DCOUNT", - 41: "DSUM", - 42: "DAVERAGE", - 43: "DMIN", - 44: "DMAX", - 45: "DSTDEV", - 46: "VAR", - 47: "DVAR", - 48: "TEXT", - 49: "LINEST", - 50: "TREND", - 51: "LOGEST", - 52: "GROWTH", - 53: "GOTO", - 54: "HALT", - 55: "RETURN", - 56: "PV", - 57: "FV", - 58: "NPER", - 59: "PMT", - 60: "RATE", - 61: "MIRR", - 62: "IRR", - 63: "RAND", - 64: "MATCH", - 65: "DATE", - 66: "TIME", - 67: "DAY", - 68: "MONTH", - 69: "YEAR", - 70: "WEEKDAY", - 71: "HOUR", - 72: "MINUTE", - 73: "SECOND", - 74: "NOW", - 75: "AREAS", - 76: "ROWS", - 77: "COLUMNS", - 78: "OFFSET", - 79: "ABSREF", - 80: "RELREF", - 81: "ARGUMENT", - 82: "SEARCH", - 83: "TRANSPOSE", - 84: "ERROR", - 85: "STEP", - 86: "TYPE", - 87: "ECHO", - 88: "SET.NAME", - 89: "CALLER", - 90: "DEREF", - 91: "WINDOWS", - 92: "SERIES", - 93: "DOCUMENTS", - 94: "ACTIVE.CELL", - 95: "SELECTION", - 96: "RESULT", - 97: "ATAN2", - 98: "ASIN", - 99: "ACOS", - 100: "CHOOSE", - 101: "HLOOKUP", - 102: "VLOOKUP", - 103: "LINKS", - 104: "INPUT", - 105: "ISREF", - 106: "GET.FORMULA", - 107: "GET.NAME", - 108: "SET.VALUE", - 109: "LOG", - 110: "EXEC", - 111: "CHAR", - 112: "LOWER", - 113: "UPPER", - 114: "PROPER", - 115: "LEFT", - 116: "RIGHT", - 117: "EXACT", - 118: "TRIM", - 119: "REPLACE", - 120: "SUBSTITUTE", - 121: "CODE", - 122: "NAMES", - 123: "DIRECTORY", - 124: "FIND", - 125: "CELL", - 126: "ISERR", - 127: "ISTEXT", - 128: "ISNUMBER", - 129: "ISBLANK", - 130: "T", - 131: "N", - 132: "FOPEN", - 133: "FCLOSE", - 134: "FSIZE", - 135: "FREADLN", - 136: "FREAD", - 137: "FWRITELN", - 138: "FWRITE", - 139: "FPOS", - 140: "DATEVALUE", - 141: "TIMEVALUE", - 142: "SLN", - 143: "SYD", - 144: "DDB", - 145: "GET.DEF", - 146: "REFTEXT", - 147: "TEXTREF", - 148: "INDIRECT", - 149: "REGISTER", - 150: "CALL", - 151: "ADD.BAR", - 152: "ADD.MENU", - 153: "ADD.COMMAND", - 154: "ENABLE.COMMAND", - 155: "CHECK.COMMAND", - 156: "RENAME.COMMAND", - 157: "SHOW.BAR", - 158: "DELETE.MENU", - 159: "DELETE.COMMAND", - 160: "GET.CHART.ITEM", - 161: "DIALOG.BOX", - 162: "CLEAN", - 163: "MDETERM", - 164: "MINVERSE", - 165: "MMULT", - 166: "FILES", - 167: "IPMT", - 168: "PPMT", - 169: "COUNTA", - 170: "CANCEL.KEY", - 171: "FOR", - 172: "WHILE", - 173: "BREAK", - 174: "NEXT", - 175: "INITIATE", - 176: "REQUEST", - 177: "POKE", - 178: "EXECUTE", - 179: "TERMINATE", - 180: "RESTART", - 181: "HELP", - 182: "GET.BAR", - 183: "PRODUCT", - 184: "FACT", - 185: "GET.CELL", - 186: "GET.WORKSPACE", - 187: "GET.WINDOW", - 188: "GET.DOCUMENT", - 189: "DPRODUCT", - 190: "ISNONTEXT", - 191: "GET.NOTE", - 192: "NOTE", - 193: "STDEVP", - 194: "VARP", - 195: "DSTDEVP", - 196: "DVARP", - 197: "TRUNC", - 198: "ISLOGICAL", - 199: "DCOUNTA", - 200: "DELETE.BAR", - 201: "UNREGISTER", - 204: "USDOLLAR", - 205: "FINDB", - 206: "SEARCHB", - 207: "REPLACEB", - 208: "LEFTB", - 209: "RIGHTB", - 210: "MIDB", - 211: "LENB", - 212: "ROUNDUP", - 213: "ROUNDDOWN", - 214: "ASC", - 215: "DBCS", - 216: "RANK", - 219: "ADDRESS", - 220: "DAYS360", - 221: "TODAY", - 222: "VDB", - 223: "ELSE", - 224: "ELSE.IF", - 225: "END.IF", - 226: "FOR.CELL", - 227: "MEDIAN", - 228: "SUMPRODUCT", - 229: "SINH", - 230: "COSH", - 231: "TANH", - 232: "ASINH", - 233: "ACOSH", - 234: "ATANH", - 235: "DGET", - 236: "CREATE.OBJECT", - 237: "VOLATILE", - 238: "LAST.ERROR", - 239: "CUSTOM.UNDO", - 240: "CUSTOM.REPEAT", - 241: "FORMULA.CONVERT", - 242: "GET.LINK.INFO", - 243: "TEXT.BOX", - 244: "INFO", - 245: "GROUP", - 246: "GET.OBJECT", - 247: "DB", - 248: "PAUSE", - 251: "RESUME", - 252: "FREQUENCY", - 253: "ADD.TOOLBAR", - 254: "DELETE.TOOLBAR", - 255: "User", - 256: "RESET.TOOLBAR", - 257: "EVALUATE", - 258: "GET.TOOLBAR", - 259: "GET.TOOL", - 260: "SPELLING.CHECK", - 261: "ERROR.TYPE", - 262: "APP.TITLE", - 263: "WINDOW.TITLE", - 264: "SAVE.TOOLBAR", - 265: "ENABLE.TOOL", - 266: "PRESS.TOOL", - 267: "REGISTER.ID", - 268: "GET.WORKBOOK", - 269: "AVEDEV", - 270: "BETADIST", - 271: "GAMMALN", - 272: "BETAINV", - 273: "BINOMDIST", - 274: "CHIDIST", - 275: "CHIINV", - 276: "COMBIN", - 277: "CONFIDENCE", - 278: "CRITBINOM", - 279: "EVEN", - 280: "EXPONDIST", - 281: "FDIST", - 282: "FINV", - 283: "FISHER", - 284: "FISHERINV", - 285: "FLOOR", - 286: "GAMMADIST", - 287: "GAMMAINV", - 288: "CEILING", - 289: "HYPGEOMDIST", - 290: "LOGNORMDIST", - 291: "LOGINV", - 292: "NEGBINOMDIST", - 293: "NORMDIST", - 294: "NORMSDIST", - 295: "NORMINV", - 296: "NORMSINV", - 297: "STANDARDIZE", - 298: "ODD", - 299: "PERMUT", - 300: "POISSON", - 301: "TDIST", - 302: "WEIBULL", - 303: "SUMXMY2", - 304: "SUMX2MY2", - 305: "SUMX2PY2", - 306: "CHITEST", - 307: "CORREL", - 308: "COVAR", - 309: "FORECAST", - 310: "FTEST", - 311: "INTERCEPT", - 312: "PEARSON", - 313: "RSQ", - 314: "STEYX", - 315: "SLOPE", - 316: "TTEST", - 317: "PROB", - 318: "DEVSQ", - 319: "GEOMEAN", - 320: "HARMEAN", - 321: "SUMSQ", - 322: "KURT", - 323: "SKEW", - 324: "ZTEST", - 325: "LARGE", - 326: "SMALL", - 327: "QUARTILE", - 328: "PERCENTILE", - 329: "PERCENTRANK", - 330: "MODE", - 331: "TRIMMEAN", - 332: "TINV", - 334: "MOVIE.COMMAND", - 335: "GET.MOVIE", - 336: "CONCATENATE", - 337: "POWER", - 338: "PIVOT.ADD.DATA", - 339: "GET.PIVOT.TABLE", - 340: "GET.PIVOT.FIELD", - 341: "GET.PIVOT.ITEM", - 342: "RADIANS", - 343: "DEGREES", - 344: "SUBTOTAL", - 345: "SUMIF", - 346: "COUNTIF", - 347: "COUNTBLANK", - 348: "SCENARIO.GET", - 349: "OPTIONS.LISTS.GET", - 350: "ISPMT", - 351: "DATEDIF", - 352: "DATESTRING", - 353: "NUMBERSTRING", - 354: "ROMAN", - 355: "OPEN.DIALOG", - 356: "SAVE.DIALOG", - 357: "VIEW.GET", - 358: "GETPIVOTDATA", - 359: "HYPERLINK", - 360: "PHONETIC", - 361: "AVERAGEA", - 362: "MAXA", - 363: "MINA", - 364: "STDEVPA", - 365: "VARPA", - 366: "STDEVA", - 367: "VARA", - 368: "BAHTTEXT", - 369: "THAIDAYOFWEEK", - 370: "THAIDIGIT", - 371: "THAIMONTHOFYEAR", - 372: "THAINUMSOUND", - 373: "THAINUMSTRING", - 374: "THAISTRINGLENGTH", - 375: "ISTHAIDIGIT", - 376: "ROUNDBAHTDOWN", - 377: "ROUNDBAHTUP", - 378: "THAIYEAR", - 379: "RTD", - 380: "CUBEVALUE", - 381: "CUBEMEMBER", - 382: "CUBEMEMBERPROPERTY", - 383: "CUBERANKEDMEMBER", - 384: "HEX2BIN", - 385: "HEX2DEC", - 386: "HEX2OCT", - 387: "DEC2BIN", - 388: "DEC2HEX", - 389: "DEC2OCT", - 390: "OCT2BIN", - 391: "OCT2HEX", - 392: "OCT2DEC", - 393: "BIN2DEC", - 394: "BIN2OCT", - 395: "BIN2HEX", - 396: "IMSUB", - 397: "IMDIV", - 398: "IMPOWER", - 399: "IMABS", - 400: "IMSQRT", - 401: "IMLN", - 402: "IMLOG2", - 403: "IMLOG10", - 404: "IMSIN", - 405: "IMCOS", - 406: "IMEXP", - 407: "IMARGUMENT", - 408: "IMCONJUGATE", - 409: "IMAGINARY", - 410: "IMREAL", - 411: "COMPLEX", - 412: "IMSUM", - 413: "IMPRODUCT", - 414: "SERIESSUM", - 415: "FACTDOUBLE", - 416: "SQRTPI", - 417: "QUOTIENT", - 418: "DELTA", - 419: "GESTEP", - 420: "ISEVEN", - 421: "ISODD", - 422: "MROUND", - 423: "ERF", - 424: "ERFC", - 425: "BESSELJ", - 426: "BESSELK", - 427: "BESSELY", - 428: "BESSELI", - 429: "XIRR", - 430: "XNPV", - 431: "PRICEMAT", - 432: "YIELDMAT", - 433: "INTRATE", - 434: "RECEIVED", - 435: "DISC", - 436: "PRICEDISC", - 437: "YIELDDISC", - 438: "TBILLEQ", - 439: "TBILLPRICE", - 440: "TBILLYIELD", - 441: "PRICE", - 442: "YIELD", - 443: "DOLLARDE", - 444: "DOLLARFR", - 445: "NOMINAL", - 446: "EFFECT", - 447: "CUMPRINC", - 448: "CUMIPMT", - 449: "EDATE", - 450: "EOMONTH", - 451: "YEARFRAC", - 452: "COUPDAYBS", - 453: "COUPDAYS", - 454: "COUPDAYSNC", - 455: "COUPNCD", - 456: "COUPNUM", - 457: "COUPPCD", - 458: "DURATION", - 459: "MDURATION", - 460: "ODDLPRICE", - 461: "ODDLYIELD", - 462: "ODDFPRICE", - 463: "ODDFYIELD", - 464: "RANDBETWEEN", - 465: "WEEKNUM", - 466: "AMORDEGRC", - 467: "AMORLINC", - 468: "CONVERT", - 724: "SHEETJS", - 469: "ACCRINT", - 470: "ACCRINTM", - 471: "WORKDAY", - 472: "NETWORKDAYS", - 473: "GCD", - 474: "MULTINOMIAL", - 475: "LCM", - 476: "FVSCHEDULE", - 477: "CUBEKPIMEMBER", - 478: "CUBESET", - 479: "CUBESETCOUNT", - 480: "IFERROR", - 481: "COUNTIFS", - 482: "SUMIFS", - 483: "AVERAGEIF", - 484: "AVERAGEIFS" -}; -var FtabArgc = { - 2: 1, - 3: 1, - 10: 0, - 15: 1, - 16: 1, - 17: 1, - 18: 1, - 19: 0, - 20: 1, - 21: 1, - 22: 1, - 23: 1, - 24: 1, - 25: 1, - 26: 1, - 27: 2, - 30: 2, - 31: 3, - 32: 1, - 33: 1, - 34: 0, - 35: 0, - 38: 1, - 39: 2, - 40: 3, - 41: 3, - 42: 3, - 43: 3, - 44: 3, - 45: 3, - 47: 3, - 48: 2, - 53: 1, - 61: 3, - 63: 0, - 65: 3, - 66: 3, - 67: 1, - 68: 1, - 69: 1, - 70: 1, - 71: 1, - 72: 1, - 73: 1, - 74: 0, - 75: 1, - 76: 1, - 77: 1, - 79: 2, - 80: 2, - 83: 1, - 85: 0, - 86: 1, - 89: 0, - 90: 1, - 94: 0, - 95: 0, - 97: 2, - 98: 1, - 99: 1, - 101: 3, - 102: 3, - 105: 1, - 106: 1, - 108: 2, - 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, - 161: 1, - 162: 1, - 163: 1, - 164: 1, - 165: 2, - 172: 1, - 175: 2, - 176: 2, - 177: 3, - 178: 2, - 179: 1, - 184: 1, - 186: 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, - 225: 0, - 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 -}; -/* Part 3 TODO: actually parse formulae */ -function ods_to_csf_formula(f) { - if(f.slice(0,3) == "of:") f = f.slice(3); - /* 5.2 Basic Expressions */ - if(f.charCodeAt(0) == 61) { - f = f.slice(1); - if(f.charCodeAt(0) == 61) f = f.slice(1); - } - f = f.replace(/COM\.MICROSOFT\./g, ""); - /* Part 3 Section 5.8 References */ - f = f.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g, function($$, $1) { return $1.replace(/\./g,""); }); - /* TODO: something other than this */ - f = f.replace(/\[.(#[A-Z]*[?!])\]/g, "$1"); - return f.replace(/[;~]/g,",").replace(/\|/g,";"); -} - -function csf_to_ods_formula(f) { - var o = "of:=" + f.replace(crefregex, "$1[.$2$3$4$5]").replace(/\]:\[/g,":"); - /* TODO: something other than this */ - return o.replace(/;/g, "|").replace(/,/g,";"); -} - -function ods_to_csf_3D(r) { - var a = r.split(":"); - var s = a[0].split(".")[0]; - return [s, a[0].split(".")[1] + (a.length > 1 ? (":" + (a[1].split(".")[1] || a[1].split(".")[0])) : "")]; -} - -function csf_to_ods_3D(r) { - return r.replace(/\./,"!"); -} - -var strs = {}; // shared strings -var _ssfopts = {}; // spreadsheet formatting options - -RELS.WS = [ - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", - "http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet" -]; - -/*global Map */ -var browser_has_Map = typeof Map !== 'undefined'; - -function get_sst_id(sst, str, rev) { - var i = 0, len = sst.length; - if(rev) { - if(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) { - var revarr = browser_has_Map ? rev.get(str) : rev[str]; - for(; i < revarr.length; ++i) { - if(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; } - } - } - } else for(; i < len; ++i) { - if(sst[i].t === str) { sst.Count ++; return i; } - } - sst[len] = ({t:str}); sst.Count ++; sst.Unique ++; - if(rev) { - if(browser_has_Map) { - if(!rev.has(str)) rev.set(str, []); - rev.get(str).push(len); - } else { - if(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = []; - rev[str].push(len); - } - } - return len; -} - -function col_obj_w(C, col) { - var p = ({min:C+1,max:C+1}); - /* wch (chars), wpx (pixels) */ - var wch = -1; - if(col.MDW) MDW = col.MDW; - if(col.width != null) p.customWidth = 1; - else if(col.wpx != null) wch = px2char(col.wpx); - else if(col.wch != null) wch = col.wch; - if(wch > -1) { p.width = char2width(wch); p.customWidth = 1; } - else if(col.width != null) p.width = col.width; - if(col.hidden) p.hidden = true; - if(col.level != null) { p.outlineLevel = p.level = col.level; } - return p; -} - -function default_margins(margins, mode) { - if(!margins) return; - var defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3]; - if(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5]; - if(margins.left == null) margins.left = defs[0]; - if(margins.right == null) margins.right = defs[1]; - if(margins.top == null) margins.top = defs[2]; - if(margins.bottom == null) margins.bottom = defs[3]; - if(margins.header == null) margins.header = defs[4]; - if(margins.footer == null) margins.footer = defs[5]; -} - -function get_cell_style(styles, cell, opts) { - var z = opts.revssf[cell.z != null ? cell.z : "General"]; - var i = 0x3c, len = styles.length; - if(z == null && opts.ssf) { - for(; i < 0x188; ++i) if(opts.ssf[i] == null) { - SSF.load(cell.z, i); - // $FlowIgnore - opts.ssf[i] = cell.z; - opts.revssf[cell.z] = z = i; - break; - } - } - for(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i; - styles[len] = { - numFmtId:z, - fontId:0, - fillId:0, - borderId:0, - xfId:0, - applyNumberFormat:1 - }; - return len; -} - -function safe_format(p, fmtid, fillid, opts, themes, styles) { - try { - if(opts.cellNF) p.z = SSF._table[fmtid]; - } catch(e) { if(opts.WTF) throw e; } - if(p.t === 'z' && !opts.cellStyles) return; - if(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v); - if((!opts || opts.cellText !== false) && p.t !== 'z') try { - if(SSF._table[fmtid] == null) SSF.load(SSFImplicit[fmtid] || "General", fmtid); - if(p.t === 'e') p.w = p.w || BErr[p.v]; - else if(fmtid === 0) { - if(p.t === 'n') { - if((p.v|0) === p.v) p.w = SSF._general_int(p.v); - else p.w = SSF._general_num(p.v); - } - else if(p.t === 'd') { - var dd = datenum(p.v); - if((dd|0) === dd) p.w = SSF._general_int(dd); - else p.w = SSF._general_num(dd); - } - else if(p.v === undefined) return ""; - else p.w = SSF._general(p.v,_ssfopts); - } - else if(p.t === 'd') p.w = SSF.format(fmtid,datenum(p.v),_ssfopts); - else p.w = SSF.format(fmtid,p.v,_ssfopts); - } catch(e) { if(opts.WTF) throw e; } - if(!opts.cellStyles) return; - if(fillid != null) try { - p.s = styles.Fills[fillid]; - if (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) { - p.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0); - if(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb; - } - if (p.s.bgColor && p.s.bgColor.theme) { - p.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0); - if(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb; - } - } catch(e) { if(opts.WTF && styles.Fills) throw e; } -} - -function check_ws(ws, sname, i) { - if(ws && ws['!ref']) { - var range = safe_decode_range(ws['!ref']); - if(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error("Bad range (" + i + "): " + ws['!ref']); - } -} -function parse_ws_xml_dim(ws, s) { - var d = safe_decode_range(s); - if(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws["!ref"] = encode_range(d); -} -var mergecregex = /<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g; -var sheetdataregex = /<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/; -var hlinkregex = /<(?:\w:)?hyperlink [^>]*>/mg; -var dimregex = /"(\w*:\w*)"/; -var colregex = /<(?:\w:)?col\b[^>]*[\/]?>/g; -var afregex = /<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g; -var marginregex= /<(?:\w:)?pageMargins[^>]*\/>/g; -var sheetprregex = /<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/; -var sheetprregex2= /<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/; -var svsregex = /<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/; - -/* 18.3 Worksheets */ -function parse_ws_xml(data, opts, idx, rels, wb, themes, styles) { - if(!data) return data; - if(!rels) rels = {'!id':{}}; - if(DENSE != null && opts.dense == null) opts.dense = DENSE; - - /* 18.3.1.99 worksheet CT_Worksheet */ - var s = opts.dense ? ([]) : ({}); - var refguess = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }); - - var data1 = "", data2 = ""; - var mtch = data.match(sheetdataregex); - if(mtch) { - data1 = data.slice(0, mtch.index); - data2 = data.slice(mtch.index + mtch[0].length); - } else data1 = data2 = data; - - /* 18.3.1.82 sheetPr CT_SheetPr */ - var sheetPr = data1.match(sheetprregex); - if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx); - else if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||"", s, wb, idx, styles, themes); - - /* 18.3.1.35 dimension CT_SheetDimension */ - var ridx = (data1.match(/<(?:\w*:)?dimension/)||{index:-1}).index; - if(ridx > 0) { - var ref = data1.slice(ridx,ridx+50).match(dimregex); - if(ref) parse_ws_xml_dim(s, ref[1]); - } - - /* 18.3.1.88 sheetViews CT_SheetViews */ - var svs = data1.match(svsregex); - if(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb); - - /* 18.3.1.17 cols CT_Cols */ - var columns = []; - if(opts.cellStyles) { - /* 18.3.1.13 col CT_Col */ - var cols = data1.match(colregex); - if(cols) parse_ws_xml_cols(columns, cols); - } - - /* 18.3.1.80 sheetData CT_SheetData ? */ - if(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles); - - /* 18.3.1.2 autoFilter CT_AutoFilter */ - var afilter = data2.match(afregex); - if(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]); - - /* 18.3.1.55 mergeCells CT_MergeCells */ - var merges = []; - var _merge = data2.match(mergecregex); - if(_merge) for(ridx = 0; ridx != _merge.length; ++ridx) - merges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf("\"")+1)); - - /* 18.3.1.48 hyperlinks CT_Hyperlinks */ - var hlink = data2.match(hlinkregex); - if(hlink) parse_ws_xml_hlinks(s, hlink, rels); - - /* 18.3.1.62 pageMargins CT_PageMargins */ - var margins = data2.match(marginregex); - if(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0])); - - if(!s["!ref"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s["!ref"] = encode_range(refguess); - if(opts.sheetRows > 0 && 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(columns.length > 0) s["!cols"] = columns; - if(merges.length > 0) s["!merges"] = merges; - return s; -} - -function write_ws_xml_merges(merges) { - if(merges.length === 0) return ""; - var o = ''; - for(var i = 0; i != merges.length; ++i) o += ''; - return o + ''; -} - -/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */ -function parse_ws_xml_sheetpr(sheetPr, s, wb, idx) { - var data = parsexmltag(sheetPr); - if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; - if(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName)); -} -function parse_ws_xml_sheetpr2(sheetPr, body, s, wb, idx, styles, themes) { - parse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(">")), s, wb, idx); -} -function write_ws_xml_sheetpr(ws, wb, idx, opts, o) { - var needed = false; - var props = {}, payload = null; - if(opts.bookType !== 'xlsx' && wb.vbaraw) { - var cname = wb.SheetNames[idx]; - try { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {} - needed = true; - props.codeName = utf8write(escapexml(cname)); - } - - if(ws && ws["!outline"]) { - var outlineprops = {summaryBelow:1, summaryRight:1}; - if(ws["!outline"].above) outlineprops.summaryBelow = 0; - if(ws["!outline"].left) outlineprops.summaryRight = 0; - payload = (payload||"") + writextag('outlinePr', null, outlineprops); - } - - if(!needed && !payload) return; - o[o.length] = (writextag('sheetPr', payload, props)); -} - -/* 18.3.1.85 sheetProtection CT_SheetProtection */ -var sheetprot_deffalse = ["objects", "scenarios", "selectLockedCells", "selectUnlockedCells"]; -var sheetprot_deftrue = [ - "formatColumns", "formatRows", "formatCells", - "insertColumns", "insertRows", "insertHyperlinks", - "deleteColumns", "deleteRows", - "sort", "autoFilter", "pivotTables" -]; -function write_ws_xml_protection(sp) { - // algorithmName, hashValue, saltValue, spinCount - var o = ({sheet:1}); - sheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = "1"; }); - sheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = "0"; }); - /* TODO: algorithm */ - if(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase(); - return writextag('sheetProtection', null, o); -} - -function parse_ws_xml_hlinks(s, data, rels) { - var dense = Array.isArray(s); - for(var i = 0; i != data.length; ++i) { - var val = parsexmltag(utf8read(data[i]), true); - if(!val.ref) return; - var rel = ((rels || {})['!id']||[])[val.id]; - if(rel) { - val.Target = rel.Target; - if(val.location) val.Target += "#"+unescapexml(val.location); - } else { - val.Target = "#" + unescapexml(val.location); - rel = {Target: val.Target, TargetMode: 'Internal'}; - } - val.Rel = rel; - if(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; } - var rng = safe_decode_range(val.ref); - for(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) { - var addr = encode_cell({c:C,r:R}); - if(dense) { - if(!s[R]) s[R] = []; - if(!s[R][C]) s[R][C] = {t:"z",v:undefined}; - s[R][C].l = val; - } else { - if(!s[addr]) s[addr] = {t:"z",v:undefined}; - s[addr].l = val; - } - } - } -} - -function parse_ws_xml_margins(margin) { - var o = {}; - ["left", "right", "top", "bottom", "header", "footer"].forEach(function(k) { - if(margin[k]) o[k] = parseFloat(margin[k]); - }); - return o; -} -function write_ws_xml_margins(margin) { - default_margins(margin); - return writextag('pageMargins', null, margin); -} - -function parse_ws_xml_cols(columns, cols) { - var seencol = false; - for(var coli = 0; coli != cols.length; ++coli) { - var coll = parsexmltag(cols[coli], true); - if(coll.hidden) coll.hidden = parsexmlbool(coll.hidden); - var colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1; - if(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0); - delete coll.min; delete coll.max; coll.width = +coll.width; - if(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); } - process_col(coll); - while(colm <= colM) columns[colm++] = dup(coll); - } -} -function write_ws_xml_cols(ws, cols) { - var o = [""], col; - for(var i = 0; i != cols.length; ++i) { - if(!(col = cols[i])) continue; - o[o.length] = (writextag('col', null, col_obj_w(i, col))); - } - o[o.length] = ""; - return o.join(""); -} - -function parse_ws_xml_autofilter(data) { - var o = { ref: (data.match(/ref="([^"]*)"/)||[])[1]}; - return o; -} -function write_ws_xml_autofilter(data, ws, wb, idx) { - var ref = typeof data.ref == "string" ? data.ref : encode_range(data.ref); - if(!wb.Workbook) wb.Workbook = ({Sheets:[]}); - if(!wb.Workbook.Names) wb.Workbook.Names = []; - var names = wb.Workbook.Names; - var range = decode_range(ref); - if(range.s.r == range.e.r) { range.e.r = decode_range(ws["!ref"]).e.r; ref = encode_range(range); } - for(var i = 0; i < names.length; ++i) { - var name = names[i]; - if(name.Name != '_xlnm._FilterDatabase') continue; - if(name.Sheet != idx) continue; - name.Ref = "'" + wb.SheetNames[idx] + "'!" + ref; break; - } - if(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: "'" + wb.SheetNames[idx] + "'!" + ref }); - return writextag("autoFilter", null, {ref:ref}); -} - -/* 18.3.1.88 sheetViews CT_SheetViews */ -/* 18.3.1.87 sheetView CT_SheetView */ -var sviewregex = /<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/; -function parse_ws_xml_sheetviews(data, wb) { - if(!wb.Views) wb.Views = [{}]; - (data.match(sviewregex)||[]).forEach(function(r, i) { - var tag = parsexmltag(r); - // $FlowIgnore - if(!wb.Views[i]) wb.Views[i] = {}; - // $FlowIgnore - if(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale; - // $FlowIgnore - if(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true; - }); -} -function write_ws_xml_sheetviews(ws, opts, idx, wb) { - var sview = ({workbookViewId:"0"}); - // $FlowIgnore - if((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? "1" : "0"; - return writextag("sheetViews", writextag("sheetView", null, sview), {}); -} - -function write_ws_xml_cell(cell, ref, ws, opts) { - if(cell.v === undefined && typeof cell.f !== "string" || cell.t === 'z') return ""; - var vv = ""; - var oldt = cell.t, oldv = cell.v; - if(cell.t !== "z") switch(cell.t) { - case 'b': vv = cell.v ? "1" : "0"; break; - case 'n': vv = ''+cell.v; break; - case 'e': vv = BErr[cell.v]; break; - case 'd': - if(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString(); - else { - cell = dup(cell); - cell.t = 'n'; - vv = ''+(cell.v = datenum(parseDate(cell.v))); - } - if(typeof cell.z === 'undefined') cell.z = SSF._table[14]; - break; - default: vv = cell.v; break; - } - var v = writetag('v', escapexml(vv)), o = ({r:ref}); - /* TODO: cell style */ - var os = get_cell_style(opts.cellXfs, cell, opts); - if(os !== 0) o.s = os; - switch(cell.t) { - case 'n': break; - case 'd': o.t = "d"; break; - case 'b': o.t = "b"; break; - case 'e': o.t = "e"; break; - case 'z': break; - default: if(cell.v == null) { delete cell.t; break; } - if(cell.v.length > 32767) throw new Error("Text length must not exceed 32767 characters"); - if(opts && opts.bookSST) { - v = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings)); - o.t = "s"; break; - } - o.t = "str"; break; - } - if(cell.t != oldt) { cell.t = oldt; cell.v = oldv; } - if(typeof cell.f == "string" && cell.f) { - var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null; - v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : ""); - } - if(cell.l) ws['!links'].push([ref, cell.l]); - if(cell.c) ws['!comments'].push([ref, cell.c]); - return writextag('c', v, o); -} - -var parse_ws_xml_data = (function() { - var cellregex = /<(?:\w+:)?c[ \/>]/, rowregex = /<\/(?:\w+:)?row>/; - var rregex = /r=["']([^"']*)["']/, isregex = /<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/; - var refregex = /ref=["']([^"']*)["']/; - var match_v = matchtag("v"), match_f = matchtag("f"); - -return function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) { - var ri = 0, x = "", cells = [], cref = [], idx=0, i=0, cc=0, d="", p; - var tag, tagr = 0, tagc = 0; - var sstr, ftag; - var fmtid = 0, fillid = 0; - var do_format = Array.isArray(styles.CellXf), cf; - var arrayf = []; - var sharedf = []; - var dense = Array.isArray(s); - var rows = [], rowobj = {}, rowrite = false; - var sheetStubs = !!opts.sheetStubs; - for(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) { - x = marr[mt].trim(); - var xlen = x.length; - if(xlen === 0) continue; - - /* 18.3.1.73 row CT_Row */ - var rstarti = 0; - outa: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) { - case ">" /*62*/: - if(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != "/") { ++ri; break outa; } - if(opts && opts.cellStyles) { - // TODO: avoid duplication - tag = parsexmltag(x.slice(rstarti,ri), true); - tagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1; - if(opts.sheetRows && opts.sheetRows < tagr) continue; - rowobj = {}; rowrite = false; - if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); } - if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; } - if(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; } - if(rowrite) rows[tagr-1] = rowobj; - } - break; - case "<" /*60*/: rstarti = ri; break; - } - if(rstarti >= ri) break; - tag = parsexmltag(x.slice(rstarti,ri), true); - tagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1; - if(opts.sheetRows && opts.sheetRows < tagr) continue; - if(guess.s.r > tagr - 1) guess.s.r = tagr - 1; - if(guess.e.r < tagr - 1) guess.e.r = tagr - 1; - - if(opts && opts.cellStyles) { - rowobj = {}; rowrite = false; - if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); } - if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; } - if(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; } - if(rowrite) rows[tagr-1] = rowobj; - } - - /* 18.3.1.4 c CT_Cell */ - cells = x.slice(ri).split(cellregex); - for(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != "<") break; - cells = cells.slice(rslice); - for(ri = 0; ri != cells.length; ++ri) { - x = cells[ri].trim(); - if(x.length === 0) continue; - cref = x.match(rregex); idx = ri; i=0; cc=0; - x = "":"") + x; - if(cref != null && cref.length === 2) { - idx = 0; d=cref[1]; - for(i=0; i != d.length; ++i) { - if((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break; - idx = 26*idx + cc; - } - --idx; - tagc = idx; - } else ++tagc; - for(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i; - tag = parsexmltag(x.slice(0,i), true); - if(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc}); - d = x.slice(i); - p = ({t:""}); - - if((cref=d.match(match_v))!= null && cref[1] !== '') p.v=unescapexml(cref[1]); - if(opts.cellFormula) { - if((cref=d.match(match_f))!= null && cref[1] !== '') { - /* TODO: match against XLSXFutureFunctions */ - p.f=unescapexml(utf8read(cref[1])).replace(/\r\n/g, "\n"); - if(!opts.xlfn) p.f = _xlfn(p.f); - if(cref[0].indexOf('t="array"') > -1) { - p.F = (d.match(refregex)||[])[1]; - if(p.F.indexOf(":") > -1) arrayf.push([safe_decode_range(p.F), p.F]); - } else if(cref[0].indexOf('t="shared"') > -1) { - // TODO: parse formula - ftag = parsexmltag(cref[0]); - var ___f = unescapexml(utf8read(cref[1])); - if(!opts.xlfn) ___f = _xlfn(___f); - sharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r]; - } - } else if((cref=d.match(/]*\/>/))) { - ftag = parsexmltag(cref[0]); - if(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r); - } - /* TODO: factor out contains logic */ - var _tag = decode_cell(tag.r); - for(i = 0; i < arrayf.length; ++i) - if(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r) - if(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c) - p.F = arrayf[i][1]; - } - - if(tag.t == null && p.v === undefined) { - if(p.f || p.F) { - p.v = 0; p.t = "n"; - } else if(!sheetStubs) continue; - else p.t = "z"; - } - else p.t = tag.t || "n"; - if(guess.s.c > tagc) guess.s.c = tagc; - if(guess.e.c < tagc) guess.e.c = tagc; - /* 18.18.11 t ST_CellType */ - switch(p.t) { - case 'n': - if(p.v == "" || p.v == null) { - if(!sheetStubs) continue; - p.t = 'z'; - } else p.v = parseFloat(p.v); - break; - case 's': - if(typeof p.v == 'undefined') { - if(!sheetStubs) continue; - p.t = 'z'; - } else { - sstr = strs[parseInt(p.v, 10)]; - p.v = sstr.t; - p.r = sstr.r; - if(opts.cellHTML) p.h = sstr.h; - } - break; - case 'str': - p.t = "s"; - p.v = (p.v!=null) ? utf8read(p.v) : ''; - if(opts.cellHTML) p.h = escapehtml(p.v); - break; - case 'inlineStr': - cref = d.match(isregex); - p.t = 's'; - if(cref != null && (sstr = parse_si(cref[1]))) { - p.v = sstr.t; - if(opts.cellHTML) p.h = sstr.h; - } else p.v = ""; - break; - case 'b': p.v = parsexmlbool(p.v); break; - case 'd': - if(opts.cellDates) p.v = parseDate(p.v, 1); - else { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; } - break; - /* error string in .w, number in .v */ - case 'e': - if(!opts || opts.cellText !== false) p.w = p.v; - p.v = RBErr[p.v]; break; - } - /* formatting */ - fmtid = fillid = 0; - cf = null; - if(do_format && tag.s !== undefined) { - cf = styles.CellXf[tag.s]; - if(cf != null) { - if(cf.numFmtId != null) fmtid = cf.numFmtId; - if(opts.cellStyles) { - if(cf.fillId != null) fillid = cf.fillId; - } - } - } - safe_format(p, fmtid, fillid, opts, themes, styles); - if(opts.cellDates && do_format && p.t == 'n' && SSF.is_date(SSF._table[fmtid])) { p.t = 'd'; p.v = numdate(p.v); } - if(dense) { - var _r = decode_cell(tag.r); - if(!s[_r.r]) s[_r.r] = []; - s[_r.r][_r.c] = p; - } else s[tag.r] = p; - } - } - if(rows.length > 0) s['!rows'] = rows; -}; })(); - -function write_ws_xml_data(ws, opts, idx, wb) { - var o = [], r = [], range = safe_decode_range(ws['!ref']), cell="", ref, rr = "", cols = [], R=0, C=0, rows = ws['!rows']; - var dense = Array.isArray(ws); - var params = ({r:rr}), row, height = -1; - for(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C); - for(R = range.s.r; R <= range.e.r; ++R) { - r = []; - rr = encode_row(R); - for(C = range.s.c; C <= range.e.c; ++C) { - ref = cols[C] + rr; - var _cell = dense ? (ws[R]||[])[C]: ws[ref]; - if(_cell === undefined) continue; - if((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell); - } - if(r.length > 0 || (rows && rows[R])) { - params = ({r:rr}); - if(rows && rows[R]) { - row = rows[R]; - if(row.hidden) params.hidden = 1; - height = -1; - if(row.hpx) height = px2pt(row.hpx); - else if(row.hpt) height = row.hpt; - if(height > -1) { params.ht = height; params.customHeight = 1; } - if(row.level) { params.outlineLevel = row.level; } - } - o[o.length] = (writextag('row', r.join(""), params)); - } - } - if(rows) for(; R < rows.length; ++R) { - if(rows && rows[R]) { - params = ({r:R+1}); - row = rows[R]; - if(row.hidden) params.hidden = 1; - height = -1; - if (row.hpx) height = px2pt(row.hpx); - else if (row.hpt) height = row.hpt; - if (height > -1) { params.ht = height; params.customHeight = 1; } - if (row.level) { params.outlineLevel = row.level; } - o[o.length] = (writextag('row', "", params)); - } - } - return o.join(""); -} - -var WS_XML_ROOT = writextag('worksheet', null, { - 'xmlns': XMLNS.main[0], - 'xmlns:r': XMLNS.r -}); - -function write_ws_xml(idx, opts, wb, rels) { - var o = [XML_HEADER, WS_XML_ROOT]; - var s = wb.SheetNames[idx], sidx = 0, rdata = ""; - var ws = wb.Sheets[s]; - if(ws == null) ws = {}; - var ref = ws['!ref'] || 'A1'; - var range = safe_decode_range(ref); - if(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) { - if(opts.WTF) throw new Error("Range " + ref + " exceeds format limit A1:XFD1048576"); - range.e.c = Math.min(range.e.c, 0x3FFF); - range.e.r = Math.min(range.e.c, 0xFFFFF); - ref = encode_range(range); - } - if(!rels) rels = {}; - ws['!comments'] = []; - var _drawing = []; - - write_ws_xml_sheetpr(ws, wb, idx, opts, o); - - o[o.length] = (writextag('dimension', null, {'ref': ref})); - - o[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb); - - /* TODO: store in WB, process styles */ - if(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, { - defaultRowHeight:opts.sheetFormat.defaultRowHeight||'16', - baseColWidth:opts.sheetFormat.baseColWidth||'10', - outlineLevelRow:opts.sheetFormat.outlineLevelRow||'7' - })); - - if(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols'])); - - o[sidx = o.length] = ''; - ws['!links'] = []; - if(ws['!ref'] != null) { - rdata = write_ws_xml_data(ws, opts, idx, wb, rels); - if(rdata.length > 0) o[o.length] = (rdata); - } - if(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace("/>",">"); } - - /* sheetCalcPr */ - - if(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']); - - /* protectedRanges */ - /* scenarios */ - - if(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx); - - /* sortState */ - /* dataConsolidate */ - /* customSheetViews */ - - if(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges'])); - - /* phoneticPr */ - /* conditionalFormatting */ - /* dataValidations */ - - var relc = -1, rel, rId = -1; - if(ws['!links'].length > 0) { - o[o.length] = ""; -ws['!links'].forEach(function(l) { - if(!l[1].Target) return; - rel = ({"ref":l[0]}); - if(l[1].Target.charAt(0) != "#") { - rId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, ""), RELS.HLINK); - rel["r:id"] = "rId"+rId; - } - if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1)); - if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip); - o[o.length] = writextag("hyperlink",null,rel); - }); - o[o.length] = ""; - } - delete ws['!links']; - - /* printOptions */ - - if(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']); - - /* pageSetup */ - /* headerFooter */ - /* rowBreaks */ - /* colBreaks */ - /* customProperties */ - /* cellWatches */ - - if(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag("ignoredErrors", writextag("ignoredError", null, {numberStoredAsText:1, sqref:ref})); - - /* smartTags */ - - if(_drawing.length > 0) { - rId = add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); - o[o.length] = writextag("drawing", null, {"r:id":"rId" + rId}); - ws['!drawing'] = _drawing; - } - - if(ws['!comments'].length > 0) { - rId = add_rels(rels, -1, "../drawings/vmlDrawing" + (idx+1) + ".vml", RELS.VML); - o[o.length] = writextag("legacyDrawing", null, {"r:id":"rId" + rId}); - ws['!legacy'] = rId; - } - - /* legacyDrawingHF */ - /* picture */ - /* oleObjects */ - /* controls */ - /* webPublishItems */ - /* tableParts */ - /* extLst */ - - if(o.length>1) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} - -/* [MS-XLSB] 2.4.726 BrtRowHdr */ -function parse_BrtRowHdr(data, length) { - var z = ({}); - var tgt = data.l + length; - z.r = data.read_shift(4); - data.l += 4; // TODO: ixfe - var miyRw = data.read_shift(2); - data.l += 1; // TODO: top/bot padding - var flags = data.read_shift(1); - data.l = tgt; - if(flags & 0x07) z.level = flags & 0x07; - if(flags & 0x10) z.hidden = true; - if(flags & 0x20) z.hpt = miyRw / 20; - return z; -} -function write_BrtRowHdr(R, range, ws) { - var o = new_buf(17+8*16); - var row = (ws['!rows']||[])[R]||{}; - o.write_shift(4, R); - - o.write_shift(4, 0); /* TODO: ixfe */ - - var miyRw = 0x0140; - if(row.hpx) miyRw = px2pt(row.hpx) * 20; - else if(row.hpt) miyRw = row.hpt * 20; - o.write_shift(2, miyRw); - - o.write_shift(1, 0); /* top/bot padding */ - - var flags = 0x0; - if(row.level) flags |= row.level; - if(row.hidden) flags |= 0x10; - if(row.hpx || row.hpt) flags |= 0x20; - o.write_shift(1, flags); - - o.write_shift(1, 0); /* phonetic guide */ - - /* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */ - var ncolspan = 0, lcs = o.l; - o.l += 4; - - var caddr = {r:R, c:0}; - for(var i = 0; i < 16; ++i) { - if((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue; - var first = -1, last = -1; - for(var j = (i<<10); j < ((i+1)<<10); ++j) { - caddr.c = j; - var cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)]; - if(cell) { if(first < 0) first = j; last = j; } - } - if(first < 0) continue; - ++ncolspan; - o.write_shift(4, first); - o.write_shift(4, last); - } - - var l = o.l; - o.l = lcs; - o.write_shift(4, ncolspan); - o.l = l; - - return o.length > o.l ? o.slice(0, o.l) : o; -} -function write_row_header(ba, ws, range, R) { - var o = write_BrtRowHdr(R, range, ws); - if((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 'BrtRowHdr', o); -} - -/* [MS-XLSB] 2.4.820 BrtWsDim */ -var parse_BrtWsDim = parse_UncheckedRfX; -var write_BrtWsDim = write_UncheckedRfX; - -/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */ -function parse_BrtWsFmtInfo() { -} -//function write_BrtWsFmtInfo(ws, o) { } - -/* [MS-XLSB] 2.4.823 BrtWsProp */ -function parse_BrtWsProp(data, length) { - var z = {}; - var f = data[data.l]; ++data.l; - z.above = !(f & 0x40); - z.left = !(f & 0x80); - /* TODO: pull flags */ - data.l += 18; - z.name = parse_XLSBCodeName(data, length - 19); - return z; -} -function write_BrtWsProp(str, outl, o) { - if(o == null) o = new_buf(84+4*str.length); - var f = 0xC0; - if(outl) { - if(outl.above) f &= ~0x40; - if(outl.left) f &= ~0x80; - } - o.write_shift(1, f); - for(var i = 1; i < 3; ++i) o.write_shift(1,0); - write_BrtColor({auto:1}, o); - o.write_shift(-4,-1); - o.write_shift(-4,-1); - write_XLSBCodeName(str, o); - return o.slice(0, o.l); -} - -/* [MS-XLSB] 2.4.306 BrtCellBlank */ -function parse_BrtCellBlank(data) { - var cell = parse_XLSBCell(data); - return [cell]; -} -function write_BrtCellBlank(cell, ncell, o) { - if(o == null) o = new_buf(8); - return write_XLSBCell(ncell, o); -} -function parse_BrtShortBlank(data) { - var cell = parse_XLSBShortCell(data); - return [cell]; -} -function write_BrtShortBlank(cell, ncell, o) { - if(o == null) o = new_buf(4); - return write_XLSBShortCell(ncell, o); -} - -/* [MS-XLSB] 2.4.307 BrtCellBool */ -function parse_BrtCellBool(data) { - var cell = parse_XLSBCell(data); - var fBool = data.read_shift(1); - return [cell, fBool, 'b']; -} -function write_BrtCellBool(cell, ncell, o) { - if(o == null) o = new_buf(9); - write_XLSBCell(ncell, o); - o.write_shift(1, cell.v ? 1 : 0); - return o; -} -function parse_BrtShortBool(data) { - var cell = parse_XLSBShortCell(data); - var fBool = data.read_shift(1); - return [cell, fBool, 'b']; -} -function write_BrtShortBool(cell, ncell, o) { - if(o == null) o = new_buf(5); - write_XLSBShortCell(ncell, o); - o.write_shift(1, cell.v ? 1 : 0); - return o; -} - -/* [MS-XLSB] 2.4.308 BrtCellError */ -function parse_BrtCellError(data) { - var cell = parse_XLSBCell(data); - var bError = data.read_shift(1); - return [cell, bError, 'e']; -} -function write_BrtCellError(cell, ncell, o) { - if(o == null) o = new_buf(9); - write_XLSBCell(ncell, o); - o.write_shift(1, cell.v); - return o; -} -function parse_BrtShortError(data) { - var cell = parse_XLSBShortCell(data); - var bError = data.read_shift(1); - return [cell, bError, 'e']; -} -function write_BrtShortError(cell, ncell, o) { - if(o == null) o = new_buf(8); - write_XLSBShortCell(ncell, o); - o.write_shift(1, cell.v); - o.write_shift(2, 0); - o.write_shift(1, 0); - return o; -} - - -/* [MS-XLSB] 2.4.311 BrtCellIsst */ -function parse_BrtCellIsst(data) { - var cell = parse_XLSBCell(data); - var isst = data.read_shift(4); - return [cell, isst, 's']; -} -function write_BrtCellIsst(cell, ncell, o) { - if(o == null) o = new_buf(12); - write_XLSBCell(ncell, o); - o.write_shift(4, ncell.v); - return o; -} -function parse_BrtShortIsst(data) { - var cell = parse_XLSBShortCell(data); - var isst = data.read_shift(4); - return [cell, isst, 's']; -} -function write_BrtShortIsst(cell, ncell, o) { - if(o == null) o = new_buf(8); - write_XLSBShortCell(ncell, o); - o.write_shift(4, ncell.v); - return o; -} - -/* [MS-XLSB] 2.4.313 BrtCellReal */ -function parse_BrtCellReal(data) { - var cell = parse_XLSBCell(data); - var value = parse_Xnum(data); - return [cell, value, 'n']; -} -function write_BrtCellReal(cell, ncell, o) { - if(o == null) o = new_buf(16); - write_XLSBCell(ncell, o); - write_Xnum(cell.v, o); - return o; -} -function parse_BrtShortReal(data) { - var cell = parse_XLSBShortCell(data); - var value = parse_Xnum(data); - return [cell, value, 'n']; -} -function write_BrtShortReal(cell, ncell, o) { - if(o == null) o = new_buf(12); - write_XLSBShortCell(ncell, o); - write_Xnum(cell.v, o); - return o; -} - -/* [MS-XLSB] 2.4.314 BrtCellRk */ -function parse_BrtCellRk(data) { - var cell = parse_XLSBCell(data); - var value = parse_RkNumber(data); - return [cell, value, 'n']; -} -function write_BrtCellRk(cell, ncell, o) { - if(o == null) o = new_buf(12); - write_XLSBCell(ncell, o); - write_RkNumber(cell.v, o); - return o; -} -function parse_BrtShortRk(data) { - var cell = parse_XLSBShortCell(data); - var value = parse_RkNumber(data); - return [cell, value, 'n']; -} -function write_BrtShortRk(cell, ncell, o) { - if(o == null) o = new_buf(8); - write_XLSBShortCell(ncell, o); - write_RkNumber(cell.v, o); - return o; -} - -/* [MS-XLSB] 2.4.323 BrtCellRString */ -function parse_BrtCellRString(data) { - var cell = parse_XLSBCell(data); - var value = parse_RichStr(data); - return [cell, value, 'is']; -} - -/* [MS-XLSB] 2.4.317 BrtCellSt */ -function parse_BrtCellSt(data) { - var cell = parse_XLSBCell(data); - var value = parse_XLWideString(data); - return [cell, value, 'str']; -} -function write_BrtCellSt(cell, ncell, o) { - if(o == null) o = new_buf(12 + 4 * cell.v.length); - write_XLSBCell(ncell, o); - write_XLWideString(cell.v, o); - return o.length > o.l ? o.slice(0, o.l) : o; -} -function parse_BrtShortSt(data) { - var cell = parse_XLSBShortCell(data); - var value = parse_XLWideString(data); - return [cell, value, 'str']; -} -function write_BrtShortSt(cell, ncell, o) { - if(o == null) o = new_buf(8 + 4 * cell.v.length); - write_XLSBShortCell(ncell, o); - write_XLWideString(cell.v, o); - return o.length > o.l ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.4.653 BrtFmlaBool */ -function parse_BrtFmlaBool(data, length, opts) { - var end = data.l + length; - var cell = parse_XLSBCell(data); - cell.r = opts['!row']; - var value = data.read_shift(1); - var o = [cell, value, 'b']; - if(opts.cellFormula) { - data.l += 2; - var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); - o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ - } - else data.l = end; - return o; -} - -/* [MS-XLSB] 2.4.654 BrtFmlaError */ -function parse_BrtFmlaError(data, length, opts) { - var end = data.l + length; - var cell = parse_XLSBCell(data); - cell.r = opts['!row']; - var value = data.read_shift(1); - var o = [cell, value, 'e']; - if(opts.cellFormula) { - data.l += 2; - var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); - o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ - } - else data.l = end; - return o; -} - -/* [MS-XLSB] 2.4.655 BrtFmlaNum */ -function parse_BrtFmlaNum(data, length, opts) { - var end = data.l + length; - var cell = parse_XLSBCell(data); - cell.r = opts['!row']; - var value = parse_Xnum(data); - var o = [cell, value, 'n']; - if(opts.cellFormula) { - data.l += 2; - var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); - o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ - } - else data.l = end; - return o; -} - -/* [MS-XLSB] 2.4.656 BrtFmlaString */ -function parse_BrtFmlaString(data, length, opts) { - var end = data.l + length; - var cell = parse_XLSBCell(data); - cell.r = opts['!row']; - var value = parse_XLWideString(data); - var o = [cell, value, 'str']; - if(opts.cellFormula) { - data.l += 2; - var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); - o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ - } - else data.l = end; - return o; -} - -/* [MS-XLSB] 2.4.682 BrtMergeCell */ -var parse_BrtMergeCell = parse_UncheckedRfX; -var write_BrtMergeCell = write_UncheckedRfX; -/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */ -function write_BrtBeginMergeCells(cnt, o) { - if(o == null) o = new_buf(4); - o.write_shift(4, cnt); - return o; -} - -/* [MS-XLSB] 2.4.662 BrtHLink */ -function parse_BrtHLink(data, length) { - var end = data.l + length; - var rfx = parse_UncheckedRfX(data, 16); - var relId = parse_XLNullableWideString(data); - var loc = parse_XLWideString(data); - var tooltip = parse_XLWideString(data); - var display = parse_XLWideString(data); - data.l = end; - var o = ({rfx:rfx, relId:relId, loc:loc, display:display}); - if(tooltip) o.Tooltip = tooltip; - return o; -} -function write_BrtHLink(l, rId) { - var o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || "").length)); - write_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o); - write_RelID("rId" + rId, o); - var locidx = l[1].Target.indexOf("#"); - var loc = locidx == -1 ? "" : l[1].Target.slice(locidx+1); - write_XLWideString(loc || "", o); - write_XLWideString(l[1].Tooltip || "", o); - write_XLWideString("", o); - return o.slice(0, o.l); -} - -/* [MS-XLSB] 2.4.692 BrtPane */ -function parse_BrtPane(/*data, length, opts*/) { -} - -/* [MS-XLSB] 2.4.6 BrtArrFmla */ -function parse_BrtArrFmla(data, length, opts) { - var end = data.l + length; - var rfx = parse_RfX(data, 16); - var fAlwaysCalc = data.read_shift(1); - var o = [rfx]; o[2] = fAlwaysCalc; - if(opts.cellFormula) { - var formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts); - o[1] = formula; - } else data.l = end; - return o; -} - -/* [MS-XLSB] 2.4.750 BrtShrFmla */ -function parse_BrtShrFmla(data, length, opts) { - var end = data.l + length; - var rfx = parse_UncheckedRfX(data, 16); - var o = [rfx]; - if(opts.cellFormula) { - var formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts); - o[1] = formula; - data.l = end; - } else data.l = end; - return o; -} - -/* [MS-XLSB] 2.4.323 BrtColInfo */ -/* TODO: once XLS ColInfo is set, combine the functions */ -function write_BrtColInfo(C, col, o) { - if(o == null) o = new_buf(18); - var p = col_obj_w(C, col); - o.write_shift(-4, C); - o.write_shift(-4, C); - o.write_shift(4, (p.width || 10) * 256); - o.write_shift(4, 0/*ixfe*/); // style - var flags = 0; - if(col.hidden) flags |= 0x01; - if(typeof p.width == 'number') flags |= 0x02; - if(col.level) flags |= (col.level << 8); - o.write_shift(2, flags); // bit flag - return o; -} - -/* [MS-XLSB] 2.4.678 BrtMargins */ -var BrtMarginKeys = ["left","right","top","bottom","header","footer"]; -function parse_BrtMargins(data) { - var margins = ({}); - BrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); }); - return margins; -} -function write_BrtMargins(margins, o) { - if(o == null) o = new_buf(6*8); - default_margins(margins); - BrtMarginKeys.forEach(function(k) { write_Xnum((margins)[k], o); }); - return o; -} - -/* [MS-XLSB] 2.4.299 BrtBeginWsView */ -function parse_BrtBeginWsView(data) { - var f = data.read_shift(2); - data.l += 28; - return { RTL: f & 0x20 }; -} -function write_BrtBeginWsView(ws, Workbook, o) { - if(o == null) o = new_buf(30); - var f = 0x39c; - if((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20; - o.write_shift(2, f); // bit flag - o.write_shift(4, 0); - o.write_shift(4, 0); // view first row - o.write_shift(4, 0); // view first col - o.write_shift(1, 0); // gridline color ICV - o.write_shift(1, 0); - o.write_shift(2, 0); - o.write_shift(2, 100); // zoom scale - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(2, 0); - o.write_shift(4, 0); // workbook view id - return o; -} - -/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */ -function write_BrtCellIgnoreEC(ref) { - var o = new_buf(24); - o.write_shift(4, 4); - o.write_shift(4, 1); - write_UncheckedRfX(ref, o); - return o; -} - -/* [MS-XLSB] 2.4.748 BrtSheetProtection */ -function write_BrtSheetProtection(sp, o) { - if(o == null) o = new_buf(16*4+2); - o.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0); - o.write_shift(4, 1); // this record should not be written if no protection - [ - ["objects", false], // fObjects - ["scenarios", false], // fScenarios - ["formatCells", true], // fFormatCells - ["formatColumns", true], // fFormatColumns - ["formatRows", true], // fFormatRows - ["insertColumns", true], // fInsertColumns - ["insertRows", true], // fInsertRows - ["insertHyperlinks", true], // fInsertHyperlinks - ["deleteColumns", true], // fDeleteColumns - ["deleteRows", true], // fDeleteRows - ["selectLockedCells", false], // fSelLockedCells - ["sort", true], // fSort - ["autoFilter", true], // fAutoFilter - ["pivotTables", true], // fPivotTables - ["selectUnlockedCells", false] // fSelUnlockedCells - ].forEach(function(n) { -if(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0); - else o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1); - }); - return o; -} - -function parse_BrtDVal(/*data, length, opts*/) { -} -function parse_BrtDVal14(/*data, length, opts*/) { -} -/* [MS-XLSB] 2.1.7.61 Worksheet */ -function parse_ws_bin(data, _opts, idx, rels, wb, themes, styles) { - if(!data) return data; - var opts = _opts || {}; - if(!rels) rels = {'!id':{}}; - if(DENSE != null && opts.dense == null) opts.dense = DENSE; - var s = (opts.dense ? [] : {}); - - var ref; - var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; - - var state = []; - var pass = false, end = false; - var row, p, cf, R, C, addr, sstr, rr, cell; - var merges = []; - opts.biff = 12; - opts['!row'] = 0; - - var ai = 0, af = false; - - var arrayf = []; - var sharedf = {}; - var supbooks = opts.supbooks || wb.supbooks || ([[]]); - supbooks.sharedf = sharedf; - supbooks.arrayf = arrayf; - supbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; }); - if(!opts.supbooks) { - opts.supbooks = supbooks; - if(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i]; - } - - var colinfo = [], rowinfo = []; - var seencol = false; - - XLSBRecordEnum[0x0010] = { n:"BrtShortReal", f:parse_BrtShortReal }; - - recordhopper(data, function ws_parse(val, R_n, RT) { - if(end) return; - switch(RT) { - case 0x0094: /* 'BrtWsDim' */ - ref = val; break; - case 0x0000: /* 'BrtRowHdr' */ - row = val; - if(opts.sheetRows && opts.sheetRows <= row.r) end=true; - rr = encode_row(R = row.r); - opts['!row'] = row.r; - if(val.hidden || val.hpt || val.level != null) { - if(val.hpt) val.hpx = pt2px(val.hpt); - rowinfo[val.r] = val; - } - break; - - case 0x0002: /* 'BrtCellRk' */ - case 0x0003: /* 'BrtCellError' */ - case 0x0004: /* 'BrtCellBool' */ - case 0x0005: /* 'BrtCellReal' */ - case 0x0006: /* 'BrtCellSt' */ - case 0x0007: /* 'BrtCellIsst' */ - case 0x0008: /* 'BrtFmlaString' */ - case 0x0009: /* 'BrtFmlaNum' */ - case 0x000A: /* 'BrtFmlaBool' */ - case 0x000B: /* 'BrtFmlaError' */ - case 0x000D: /* 'BrtShortRk' */ - case 0x000E: /* 'BrtShortError' */ - case 0x000F: /* 'BrtShortBool' */ - case 0x0010: /* 'BrtShortReal' */ - case 0x0011: /* 'BrtShortSt' */ - case 0x0012: /* 'BrtShortIsst' */ - case 0x003E: /* 'BrtCellRString' */ - p = ({t:val[2]}); - switch(val[2]) { - case 'n': p.v = val[1]; break; - case 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break; - case 'b': p.v = val[1] ? true : false; break; - case 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break; - case 'str': p.t = 's'; p.v = val[1]; break; - case 'is': p.t = 's'; p.v = val[1].t; break; - } - if((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles); - C = val[0].c == -1 ? C + 1 : val[0].c; - if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; } - else s[encode_col(C) + rr] = p; - if(opts.cellFormula) { - af = false; - for(ai = 0; ai < arrayf.length; ++ai) { - var aii = arrayf[ai]; - if(row.r >= aii[0].s.r && row.r <= aii[0].e.r) - if(C >= aii[0].s.c && C <= aii[0].e.c) { - p.F = encode_range(aii[0]); af = true; - } - } - if(!af && val.length > 3) p.f = val[3]; - } - if(refguess.s.r > row.r) refguess.s.r = row.r; - if(refguess.s.c > C) refguess.s.c = C; - if(refguess.e.r < row.r) refguess.e.r = row.r; - if(refguess.e.c < C) refguess.e.c = C; - if(opts.cellDates && cf && p.t == 'n' && SSF.is_date(SSF._table[cf.numFmtId])) { - var _d = SSF.parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } - } - break; - - case 0x0001: /* 'BrtCellBlank' */ - case 0x000C: /* 'BrtShortBlank' */ - if(!opts.sheetStubs || pass) break; - p = ({t:'z',v:undefined}); - C = val[0].c == -1 ? C + 1 : val[0].c; - if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; } - else s[encode_col(C) + rr] = p; - if(refguess.s.r > row.r) refguess.s.r = row.r; - if(refguess.s.c > C) refguess.s.c = C; - if(refguess.e.r < row.r) refguess.e.r = row.r; - if(refguess.e.c < C) refguess.e.c = C; - break; - - case 0x00B0: /* 'BrtMergeCell' */ - merges.push(val); break; - - case 0x01EE: /* 'BrtHLink' */ - var rel = rels['!id'][val.relId]; - if(rel) { - val.Target = rel.Target; - if(val.loc) val.Target += "#"+val.loc; - val.Rel = rel; - } else if(val.relId == '') { - val.Target = "#" + val.loc; - } - for(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) { - if(opts.dense) { - if(!s[R]) s[R] = []; - if(!s[R][C]) s[R][C] = {t:'z',v:undefined}; - s[R][C].l = val; - } else { - addr = encode_cell({c:C,r:R}); - if(!s[addr]) s[addr] = {t:'z',v:undefined}; - s[addr].l = val; - } - } - break; - - case 0x01AA: /* 'BrtArrFmla' */ - if(!opts.cellFormula) break; - arrayf.push(val); - cell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])); - cell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts); - cell.F = encode_range(val[0]); - break; - case 0x01AB: /* 'BrtShrFmla' */ - if(!opts.cellFormula) break; - sharedf[encode_cell(val[0].s)] = val[1]; - cell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]); - cell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts); - break; - - /* identical to 'ColInfo' in XLS */ - case 0x003C: /* 'BrtColInfo' */ - if(!opts.cellStyles) break; - while(val.e >= val.s) { - colinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level }; - if(!seencol) { seencol = true; find_mdw_colw(val.w/256); } - process_col(colinfo[val.e+1]); - } - break; - - case 0x00A1: /* 'BrtBeginAFilter' */ - s['!autofilter'] = { ref:encode_range(val) }; - break; - - case 0x01DC: /* 'BrtMargins' */ - s['!margins'] = val; - break; - - case 0x0093: /* 'BrtWsProp' */ - if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; - if(val.name) wb.Sheets[idx].CodeName = val.name; - if(val.above || val.left) s['!outline'] = { above: val.above, left: val.left }; - break; - - case 0x0089: /* 'BrtBeginWsView' */ - if(!wb.Views) wb.Views = [{}]; - if(!wb.Views[0]) wb.Views[0] = {}; - if(val.RTL) wb.Views[0].RTL = true; - break; - - case 0x01E5: /* 'BrtWsFmtInfo' */ - break; - - case 0x0040: /* 'BrtDVal' */ - case 0x041D: /* 'BrtDVal14' */ - break; - - case 0x0097: /* 'BrtPane' */ - break; - case 0x0098: /* 'BrtSel' */ - case 0x00AF: /* 'BrtAFilterDateGroupItem' */ - case 0x0284: /* 'BrtActiveX' */ - case 0x0271: /* 'BrtBigName' */ - case 0x0232: /* 'BrtBkHim' */ - case 0x018C: /* 'BrtBrk' */ - case 0x0458: /* 'BrtCFIcon' */ - case 0x047A: /* 'BrtCFRuleExt' */ - case 0x01D7: /* 'BrtCFVO' */ - case 0x041A: /* 'BrtCFVO14' */ - case 0x0289: /* 'BrtCellIgnoreEC' */ - case 0x0451: /* 'BrtCellIgnoreEC14' */ - case 0x0031: /* 'BrtCellMeta' */ - case 0x024D: /* 'BrtCellSmartTagProperty' */ - case 0x025F: /* 'BrtCellWatch' */ - case 0x0234: /* 'BrtColor' */ - case 0x041F: /* 'BrtColor14' */ - case 0x00A8: /* 'BrtColorFilter' */ - case 0x00AE: /* 'BrtCustomFilter' */ - case 0x049C: /* 'BrtCustomFilter14' */ - case 0x01F3: /* 'BrtDRef' */ - case 0x01FB: /* 'BrtDXF' */ - case 0x0226: /* 'BrtDrawing' */ - case 0x00AB: /* 'BrtDynamicFilter' */ - case 0x00A7: /* 'BrtFilter' */ - case 0x0499: /* 'BrtFilter14' */ - case 0x00A9: /* 'BrtIconFilter' */ - case 0x049D: /* 'BrtIconFilter14' */ - case 0x0227: /* 'BrtLegacyDrawing' */ - case 0x0228: /* 'BrtLegacyDrawingHF' */ - case 0x0295: /* 'BrtListPart' */ - case 0x027F: /* 'BrtOleObject' */ - case 0x01DE: /* 'BrtPageSetup' */ - case 0x0219: /* 'BrtPhoneticInfo' */ - case 0x01DD: /* 'BrtPrintOptions' */ - case 0x0218: /* 'BrtRangeProtection' */ - case 0x044F: /* 'BrtRangeProtection14' */ - case 0x02A8: /* 'BrtRangeProtectionIso' */ - case 0x0450: /* 'BrtRangeProtectionIso14' */ - case 0x0400: /* 'BrtRwDescent' */ - case 0x0297: /* 'BrtSheetCalcProp' */ - case 0x0217: /* 'BrtSheetProtection' */ - case 0x02A6: /* 'BrtSheetProtectionIso' */ - case 0x01F8: /* 'BrtSlc' */ - case 0x0413: /* 'BrtSparkline' */ - case 0x01AC: /* 'BrtTable' */ - case 0x00AA: /* 'BrtTop10Filter' */ - case 0x0C00: /* 'BrtUid' */ - case 0x0032: /* 'BrtValueMeta' */ - case 0x0816: /* 'BrtWebExtension' */ - case 0x0415: /* 'BrtWsFmtInfoEx14' */ - break; - - case 0x0023: /* 'BrtFRTBegin' */ - pass = true; break; - case 0x0024: /* 'BrtFRTEnd' */ - pass = false; break; - case 0x0025: /* 'BrtACBegin' */ - state.push(R_n); pass = true; break; - case 0x0026: /* 'BrtACEnd' */ - state.pop(); pass = false; break; - - default: - if((R_n||"").indexOf("Begin") > 0){/* empty */} - else if((R_n||"").indexOf("End") > 0){/* empty */} - 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 < 2000000 || 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(merges.length > 0) s["!merges"] = merges; - if(colinfo.length > 0) s["!cols"] = colinfo; - if(rowinfo.length > 0) s["!rows"] = rowinfo; - return s; -} - -/* TODO: something useful -- this is a stub */ -function write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen) { - if(cell.v === undefined) return false; - var vv = ""; - switch(cell.t) { - case 'b': vv = cell.v ? "1" : "0"; break; - case 'd': // no BrtCellDate :( - cell = dup(cell); - cell.z = cell.z || SSF._table[14]; - cell.v = datenum(parseDate(cell.v)); cell.t = 'n'; - break; - /* falls through */ - case 'n': case 'e': vv = ''+cell.v; break; - default: vv = cell.v; break; - } - var o = ({r:R, c:C}); - /* TODO: cell style */ - 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), opts.revStrings); - o.t = "s"; o.v = vv; - if(last_seen) write_record(ba, "BrtShortIsst", write_BrtShortIsst(cell, o)); - else write_record(ba, "BrtCellIsst", write_BrtCellIsst(cell, o)); - } else { - o.t = "str"; - if(last_seen) write_record(ba, "BrtShortSt", write_BrtShortSt(cell, o)); - else write_record(ba, "BrtCellSt", write_BrtCellSt(cell, o)); - } - return true; - case 'n': - /* TODO: determine threshold for Real vs RK */ - if(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) { - if(last_seen) write_record(ba, "BrtShortRk", write_BrtShortRk(cell, o)); - else write_record(ba, "BrtCellRk", write_BrtCellRk(cell, o)); - } else { - if(last_seen) write_record(ba, "BrtShortReal", write_BrtShortReal(cell, o)); - else write_record(ba, "BrtCellReal", write_BrtCellReal(cell, o)); - } return true; - case 'b': - o.t = "b"; - if(last_seen) write_record(ba, "BrtShortBool", write_BrtShortBool(cell, o)); - else write_record(ba, "BrtCellBool", write_BrtCellBool(cell, o)); - return true; - case 'e': - o.t = "e"; - if(last_seen) write_record(ba, "BrtShortError", write_BrtShortError(cell, o)); - else write_record(ba, "BrtCellError", write_BrtCellError(cell, o)); - return true; - } - if(last_seen) write_record(ba, "BrtShortBlank", write_BrtShortBlank(cell, o)); - else write_record(ba, "BrtCellBlank", write_BrtCellBlank(cell, o)); - return true; -} - -function write_CELLTABLE(ba, ws, idx, opts) { - var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = []; - write_record(ba, 'BrtBeginSheetData'); - var dense = Array.isArray(ws); - var cap = range.e.r; - if(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1); - for(var R = range.s.r; R <= cap; ++R) { - rr = encode_row(R); - /* [ACCELLTABLE] */ - /* BrtRowHdr */ - write_row_header(ba, ws, range, R); - var last_seen = false; - if(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) { - /* *16384CELL */ - if(R === range.s.r) cols[C] = encode_col(C); - ref = cols[C] + rr; - var cell = dense ? (ws[R]||[])[C] : ws[ref]; - if(!cell) { last_seen = false; continue; } - /* write cell */ - last_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen); - } - } - 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) { - 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_IGNOREECS(ba, ws) { - if(!ws || !ws['!ref']) return; - write_record(ba, 'BrtBeginCellIgnoreECs'); - write_record(ba, 'BrtCellIgnoreEC', write_BrtCellIgnoreEC(safe_decode_range(ws['!ref']))); - write_record(ba, 'BrtEndCellIgnoreECs'); -} - -function write_HLINKS(ba, ws, rels) { - /* *BrtHLink */ - 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) { - /* [BrtLegacyDrawing] */ - if(ws['!comments'].length > 0) { - var rId = add_rels(rels, -1, "../drawings/vmlDrawing" + (idx+1) + ".vml", RELS.VML); - write_record(ba, "BrtLegacyDrawing", write_RelID("rId" + rId)); - ws['!legacy'] = rId; - } -} - -function write_AUTOFILTER(ba, ws, wb, idx) { - if(!ws['!autofilter']) return; - var data = ws['!autofilter']; - var ref = typeof data.ref === "string" ? data.ref : encode_range(data.ref); - - /* Update FilterDatabase defined name for the worksheet */ - if(!wb.Workbook) wb.Workbook = ({Sheets:[]}); - if(!wb.Workbook.Names) wb.Workbook.Names = []; - var names = wb.Workbook.Names; - var range = decode_range(ref); - if(range.s.r == range.e.r) { range.e.r = decode_range(ws["!ref"]).e.r; ref = encode_range(range); } - for(var i = 0; i < names.length; ++i) { - var name = names[i]; - if(name.Name != '_xlnm._FilterDatabase') continue; - if(name.Sheet != idx) continue; - name.Ref = "'" + wb.SheetNames[idx] + "'!" + ref; break; - } - if(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: "'" + wb.SheetNames[idx] + "'!" + ref }); - - write_record(ba, "BrtBeginAFilter", write_UncheckedRfX(safe_decode_range(ref))); - /* *FILTERCOLUMN */ - /* [SORTSTATE] */ - /* BrtEndAFilter */ - write_record(ba, "BrtEndAFilter"); -} - -function write_WSVIEWS2(ba, ws, Workbook) { - write_record(ba, "BrtBeginWsViews"); - { /* 1*WSVIEW2 */ - /* [ACUID] */ - write_record(ba, "BrtBeginWsView", write_BrtBeginWsView(ws, Workbook)); - /* [BrtPane] */ - /* *4BrtSel */ - /* *4SXSELECT */ - /* *FRT */ - write_record(ba, "BrtEndWsView"); - } - /* *FRT */ - write_record(ba, "BrtEndWsViews"); -} - -function write_WSFMTINFO() { - /* [ACWSFMTINFO] */ - //write_record(ba, "BrtWsFmtInfo", write_BrtWsFmtInfo(ws)); -} - -function write_SHEETPROTECT(ba, ws) { - if(!ws['!protect']) return; - /* [BrtSheetProtectionIso] */ - write_record(ba, "BrtSheetProtection", write_BrtSheetProtection(ws['!protect'])); -} - -function write_ws_bin(idx, opts, wb, rels) { - var ba = buf_array(); - var s = wb.SheetNames[idx], ws = wb.Sheets[s] || {}; - var c = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {} - var r = safe_decode_range(ws['!ref'] || "A1"); - if(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) { - if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:XFD1048576"); - r.e.c = Math.min(r.e.c, 0x3FFF); - r.e.r = Math.min(r.e.c, 0xFFFFF); - } - ws['!links'] = []; - /* passed back to write_zip and removed there */ - ws['!comments'] = []; - write_record(ba, "BrtBeginSheet"); - if(wb.vbaraw || ws['!outline']) write_record(ba, "BrtWsProp", write_BrtWsProp(c, ws['!outline'])); - write_record(ba, "BrtWsDim", write_BrtWsDim(r)); - write_WSVIEWS2(ba, ws, wb.Workbook); - write_WSFMTINFO(ba, ws); - write_COLINFOS(ba, ws, idx, opts, wb); - write_CELLTABLE(ba, ws, idx, opts, wb); - /* [BrtSheetCalcProp] */ - write_SHEETPROTECT(ba, ws); - /* *([BrtRangeProtectionIso] BrtRangeProtection) */ - /* [SCENMAN] */ - write_AUTOFILTER(ba, ws, wb, idx); - /* [SORTSTATE] */ - /* [DCON] */ - /* [USERSHVIEWS] */ - write_MERGECELLS(ba, ws); - /* [BrtPhoneticInfo] */ - /* *CONDITIONALFORMATTING */ - /* [DVALS] */ - write_HLINKS(ba, ws, rels); - /* [BrtPrintOptions] */ - if(ws['!margins']) write_record(ba, "BrtMargins", write_BrtMargins(ws['!margins'])); - /* [BrtPageSetup] */ - /* [HEADERFOOTER] */ - /* [RWBRK] */ - /* [COLBRK] */ - /* *BrtBigName */ - /* [CELLWATCHES] */ - if(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws); - /* [SMARTTAGS] */ - /* [BrtDrawing] */ - write_LEGACYDRAWING(ba, ws, idx, rels); - /* [BrtLegacyDrawingHF] */ - /* [BrtBkHim] */ - /* [OLEOBJECTS] */ - /* [ACTIVEXCONTROLS] */ - /* [WEBPUBITEMS] */ - /* [LISTPARTS] */ - /* FRTWORKSHEET */ - write_record(ba, "BrtEndSheet"); - return ba.end(); -} -RELS.CHART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"; -RELS.CHARTEX = "http://schemas.microsoft.com/office/2014/relationships/chartEx"; - -function parse_Cache(data) { - var col = []; - var num = data.match(/^/); - var f; - - /* 21.2.2.150 pt CT_NumVal */ - (data.match(/(.*?)<\/c:pt>/mg)||[]).forEach(function(pt) { - var q = pt.match(/(.*)<\/c:v><\/c:pt>/); - if(!q) return; - col[+q[1]] = num ? +q[2] : q[2]; - }); - - /* 21.2.2.71 formatCode CT_Xstring */ - var nf = unescapexml((data.match(/([\s\S]*?)<\/c:formatCode>/) || ["","General"])[1]); - - (data.match(/(.*?)<\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,""); }); - - return [col, nf, f]; -} - -/* 21.2 DrawingML - Charts */ -function parse_chart(data, name, opts, rels, wb, csheet) { - var cs = ((csheet || {"!type":"chart"})); - if(!data) return csheet; - /* 21.2.2.27 chart CT_Chart */ - - var C = 0, R = 0, col = "A"; - var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; - - /* 21.2.2.120 numCache CT_NumData */ - (data.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(nc) { - var cache = parse_Cache(nc); - refguess.s.r = refguess.s.c = 0; - refguess.e.c = C; - col = encode_col(C); - cache[0].forEach(function(n,i) { - cs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] }; - R = i; - }); - if(refguess.e.r < R) refguess.e.r = R; - ++C; - }); - if(C > 0) cs["!ref"] = encode_range(refguess); - return cs; -} -RELS.CS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet"; - -var CS_XML_ROOT = writextag('chartsheet', null, { - 'xmlns': XMLNS.main[0], - 'xmlns:r': XMLNS.r -}); - -/* 18.3 Worksheets also covers Chartsheets */ -function parse_cs_xml(data, opts, idx, rels, wb) { - if(!data) return data; - /* 18.3.1.12 chartsheet CT_ChartSheet */ - if(!rels) rels = {'!id':{}}; - var s = ({'!type':"chart", '!drawel':null, '!rel':""}); - var m; - - /* 18.3.1.83 sheetPr CT_ChartsheetPr */ - var sheetPr = data.match(sheetprregex); - if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx); - - /* 18.3.1.36 drawing CT_Drawing */ - if((m = data.match(/drawing r:id="(.*?)"/))) s['!rel'] = m[1]; - - if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; - return s; -} -function write_cs_xml(idx, opts, wb, rels) { - var o = [XML_HEADER, CS_XML_ROOT]; - o[o.length] = writextag("drawing", null, {"r:id": "rId1"}); - add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); - if(o.length>2) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } - return o.join(""); -} - -/* [MS-XLSB] 2.4.331 BrtCsProp */ -function parse_BrtCsProp(data, length) { - data.l += 10; - var name = parse_XLWideString(data, length - 10); - return { name: name }; -} - -/* [MS-XLSB] 2.1.7.7 Chart Sheet */ -function parse_cs_bin(data, opts, idx, rels, wb) { - if(!data) return data; - if(!rels) rels = {'!id':{}}; - var s = {'!type':"chart", '!drawel':null, '!rel':""}; - var state = []; - var pass = false; - recordhopper(data, function cs_parse(val, R_n, RT) { - switch(RT) { - - case 0x0226: /* 'BrtDrawing' */ - s['!rel'] = val; break; - - case 0x028B: /* 'BrtCsProp' */ - if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; - if(val.name) wb.Sheets[idx].CodeName = val.name; - break; - - case 0x0232: /* 'BrtBkHim' */ - case 0x028C: /* 'BrtCsPageSetup' */ - case 0x029D: /* 'BrtCsProtection' */ - case 0x02A7: /* 'BrtCsProtectionIso' */ - case 0x0227: /* 'BrtLegacyDrawing' */ - case 0x0228: /* 'BrtLegacyDrawingHF' */ - case 0x01DC: /* 'BrtMargins' */ - case 0x0C00: /* 'BrtUid' */ - break; - - case 0x0023: /* 'BrtFRTBegin' */ - pass = true; break; - case 0x0024: /* 'BrtFRTEnd' */ - pass = false; break; - case 0x0025: /* 'BrtACBegin' */ - state.push(R_n); break; - case 0x0026: /* 'BrtACEnd' */ - 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); - } - }, opts); - - if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; - return s; -} -function write_cs_bin() { - var ba = buf_array(); - write_record(ba, "BrtBeginSheet"); - /* [BrtCsProp] */ - /* CSVIEWS */ - /* [[BrtCsProtectionIso] BrtCsProtection] */ - /* [USERCSVIEWS] */ - /* [BrtMargins] */ - /* [BrtCsPageSetup] */ - /* [HEADERFOOTER] */ - /* BrtDrawing */ - /* [BrtLegacyDrawing] */ - /* [BrtLegacyDrawingHF] */ - /* [BrtBkHim] */ - /* [WEBPUBITEMS] */ - /* FRTCHARTSHEET */ - write_record(ba, "BrtEndSheet"); - return ba.end(); -} -/* 18.2.28 (CT_WorkbookProtection) Defaults */ -var WBPropsDef = [ - ['allowRefreshQuery', false, "bool"], - ['autoCompressPictures', true, "bool"], - ['backupFile', false, "bool"], - ['checkCompatibility', false, "bool"], - ['CodeName', ''], - ['date1904', false, "bool"], - ['defaultThemeVersion', 0, "int"], - ['filterPrivacy', false, "bool"], - ['hidePivotFieldList', false, "bool"], - ['promptedSolutions', false, "bool"], - ['publishItems', false, "bool"], - ['refreshAllConnections', false, "bool"], - ['saveExternalLinkValues', true, "bool"], - ['showBorderUnselectedTables', true, "bool"], - ['showInkAnnotation', true, "bool"], - ['showObjects', 'all'], - ['showPivotChartFilter', false, "bool"], - ['updateLinks', 'userSet'] -]; - -/* 18.2.30 (CT_BookView) Defaults */ -var WBViewDef = [ - ['activeTab', 0, "int"], - ['autoFilterDateGrouping', true, "bool"], - ['firstSheet', 0, "int"], - ['minimized', false, "bool"], - ['showHorizontalScroll', true, "bool"], - ['showSheetTabs', true, "bool"], - ['showVerticalScroll', true, "bool"], - ['tabRatio', 600, "int"], - ['visibility', 'visible'] - //window{Height,Width}, {x,y}Window -]; - -/* 18.2.19 (CT_Sheet) Defaults */ -var SheetDef = [ - //['state', 'visible'] -]; - -/* 18.2.2 (CT_CalcPr) Defaults */ -var CalcPrDef = [ - ['calcCompleted', 'true'], - ['calcMode', 'auto'], - ['calcOnSave', 'true'], - ['concurrentCalc', 'true'], - ['fullCalcOnLoad', 'false'], - ['fullPrecision', 'true'], - ['iterate', 'false'], - ['iterateCount', '100'], - ['iterateDelta', '0.001'], - ['refMode', 'A1'] -]; - -/* 18.2.3 (CT_CustomWorkbookView) Defaults */ -/*var CustomWBViewDef = [ - ['autoUpdate', 'false'], - ['changesSavedWin', 'false'], - ['includeHiddenRowCol', 'true'], - ['includePrintSettings', 'true'], - ['maximized', 'false'], - ['minimized', 'false'], - ['onlySync', 'false'], - ['personalView', 'false'], - ['showComments', 'commIndicator'], - ['showFormulaBar', 'true'], - ['showHorizontalScroll', 'true'], - ['showObjects', 'all'], - ['showSheetTabs', 'true'], - ['showStatusbar', 'true'], - ['showVerticalScroll', 'true'], - ['tabRatio', '600'], - ['xWindow', '0'], - ['yWindow', '0'] -];*/ - -function push_defaults_array(target, defaults) { - for(var j = 0; j != target.length; ++j) { var w = target[j]; - for(var i=0; i != defaults.length; ++i) { var z = defaults[i]; - if(w[z[0]] == null) w[z[0]] = z[1]; - else switch(z[2]) { - case "bool": if(typeof w[z[0]] == "string") w[z[0]] = parsexmlbool(w[z[0]]); break; - case "int": if(typeof w[z[0]] == "string") w[z[0]] = parseInt(w[z[0]], 10); break; - } - } - } -} -function push_defaults(target, defaults) { - for(var i = 0; i != defaults.length; ++i) { var z = defaults[i]; - if(target[z[0]] == null) target[z[0]] = z[1]; - else switch(z[2]) { - case "bool": if(typeof target[z[0]] == "string") target[z[0]] = parsexmlbool(target[z[0]]); break; - case "int": if(typeof target[z[0]] == "string") target[z[0]] = parseInt(target[z[0]], 10); break; - } - } -} - -function parse_wb_defaults(wb) { - push_defaults(wb.WBProps, WBPropsDef); - push_defaults(wb.CalcPr, CalcPrDef); - - push_defaults_array(wb.WBView, WBViewDef); - push_defaults_array(wb.Sheets, SheetDef); - - _ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904); -} - -function safe1904(wb) { - /* TODO: store date1904 somewhere else */ - if(!wb.Workbook) return "false"; - if(!wb.Workbook.WBProps) return "false"; - return parsexmlbool(wb.Workbook.WBProps.date1904) ? "true" : "false"; -} - -var badchars = "][*?\/\\".split(""); -function check_ws_name(n, safe) { - if(n.length > 31) { if(safe) return false; throw new Error("Sheet names cannot exceed 31 chars"); } - var _good = true; - badchars.forEach(function(c) { - if(n.indexOf(c) == -1) return; - if(!safe) throw new Error("Sheet name cannot contain : \\ / ? * [ ]"); - _good = false; - }); - return _good; -} -function check_wb_names(N, S, codes) { - N.forEach(function(n,i) { - check_ws_name(n); - for(var j = 0; j < i; ++j) if(n == N[j]) throw new Error("Duplicate Sheet Name: " + n); - if(codes) { - var cn = (S && S[i] && S[i].CodeName) || n; - if(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error("Bad Code Name: Worksheet" + cn); - } - }); -} -function check_wb(wb) { - if(!wb || !wb.SheetNames || !wb.Sheets) throw new Error("Invalid Workbook"); - if(!wb.SheetNames.length) throw new Error("Workbook is empty"); - var Sheets = (wb.Workbook && wb.Workbook.Sheets) || []; - check_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw); - for(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i); - /* TODO: validate workbook */ -} -/* 18.2 Workbook */ -var wbnsregex = /<\w+:workbook/; -function parse_wb_xml(data, opts) { - if(!data) throw new Error("Could not find file"); - var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: "" }; - var pass = false, xmlns = "xmlns"; - var dname = {}, dnstart = 0; - data.replace(tagregex, function xml_wb(x, idx) { - var y = parsexmltag(x); - switch(strip_ns(y[0])) { - case '': break; - - /* 18.2.13 fileVersion CT_FileVersion ? */ - case '': case '': break; - - /* 18.2.12 fileSharing CT_FileSharing ? */ - case '': break; - - /* 18.2.28 workbookPr CT_WorkbookPr ? */ - case '': - WBPropsDef.forEach(function(w) { - if(y[w[0]] == null) return; - switch(w[2]) { - case "bool": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break; - case "int": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break; - default: wb.WBProps[w[0]] = y[w[0]]; - } - }); - if(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName); - break; - case '': break; - - /* 18.2.29 workbookProtection CT_WorkbookProtection ? */ - case '': break; - - /* 18.2.1 bookViews CT_BookViews ? */ - case '': case '': break; - /* 18.2.30 workbookView CT_BookView + */ - case '': delete y[0]; wb.WBView.push(y); break; - case '': break; - - /* 18.2.20 sheets CT_Sheets 1 */ - case '': case '': break; // aggregate sheet - /* 18.2.19 sheet CT_Sheet + */ - case '': break; - - /* 18.2.15 functionGroups CT_FunctionGroups ? */ - case '': break; - /* 18.2.14 functionGroup CT_FunctionGroup + */ - case '': case '': break; - /* 18.2.8 externalReference CT_ExternalReference + */ - case '': break; - case '': case '': pass=false; break; - /* 18.2.5 definedName CT_DefinedName + */ - case '': { - dname.Ref = unescapexml(utf8read(data.slice(dnstart, idx))); - wb.Names.push(dname); - } break; - case '': break; - - /* 18.2.2 calcPr CT_CalcPr ? */ - case '': delete y[0]; wb.CalcPr = y; break; - case '': break; - - /* 18.2.16 oleSize CT_OleSize ? (ref required) */ - case '': case '': case '': break; - - /* 18.2.18 pivotCaches CT_PivotCaches ? */ - case '': case '': case '': break; - - /* 18.2.23 smartTagTypes CT_SmartTagTypes ? */ - case '': case '': break; - /* 18.2.22 smartTagType CT_SmartTagType ? */ - case '': break; - - /* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */ - case '': break; - - /* 18.2.26 webPublishObjects CT_WebPublishObjects ? */ - case '': case '': break; - /* 18.2.25 webPublishObject CT_WebPublishObject ? */ - case '': case '': case '': break; - /* 18.2.7 ext CT_Extension + */ - case '': pass=false; break; - - /* Others */ - case '': pass=true; break; - case '': pass=false; break; - - /* TODO */ - case ' 0); - - /* fileVersion */ - /* fileSharing */ - - var workbookPr = ({codeName:"ThisWorkbook"}); - if(wb.Workbook && wb.Workbook.WBProps) { - WBPropsDef.forEach(function(x) { -if((wb.Workbook.WBProps[x[0]]) == null) return; - if((wb.Workbook.WBProps[x[0]]) == x[1]) return; - workbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]); - }); -if(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; } - } - o[o.length] = (writextag('workbookPr', null, workbookPr)); - - /* workbookProtection */ - - var sheets = wb.Workbook && wb.Workbook.Sheets || []; - var i = 0; - - /* bookViews only written if first worksheet is hidden */ - if(sheets && sheets[0] && !!sheets[0].Hidden) { - o[o.length] = ""; - for(i = 0; i != wb.SheetNames.length; ++i) { - if(!sheets[i]) break; - if(!sheets[i].Hidden) break; - } - if(i == wb.SheetNames.length) i = 0; - o[o.length] = ''; - o[o.length] = ""; - } - - o[o.length] = ""; - for(i = 0; i != wb.SheetNames.length; ++i) { - var sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}); - sht.sheetId = ""+(i+1); - sht["r:id"] = "rId"+(i+1); - if(sheets[i]) switch(sheets[i].Hidden) { - case 1: sht.state = "hidden"; break; - case 2: sht.state = "veryHidden"; break; - } - o[o.length] = (writextag('sheet',null,sht)); - } - o[o.length] = ""; - - /* functionGroups */ - /* externalReferences */ - - if(write_names) { - o[o.length] = ""; - if(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) { - var d = {name:n.Name}; - if(n.Comment) d.comment = n.Comment; - if(n.Sheet != null) d.localSheetId = ""+n.Sheet; - if(n.Hidden) d.hidden = "1"; - if(!n.Ref) return; - o[o.length] = writextag('definedName', escapexml(n.Ref), d); - }); - o[o.length] = ""; - } - - /* calcPr */ - /* oleSize */ - /* customWorkbookViews */ - /* pivotCaches */ - /* smartTagPr */ - /* smartTagTypes */ - /* webPublishing */ - /* fileRecoveryPr */ - /* webPublishObjects */ - /* extLst */ - - if(o.length>2){ o[o.length] = ''; o[1]=o[1].replace("/>",">"); } - return o.join(""); -} -/* [MS-XLSB] 2.4.304 BrtBundleSh */ -function parse_BrtBundleSh(data, length) { - var z = {}; - z.Hidden = data.read_shift(4); //hsState ST_SheetState - z.iTabID = data.read_shift(4); - z.strRelID = parse_RelID(data,length-8); - z.name = parse_XLWideString(data); - return z; -} -function write_BrtBundleSh(data, o) { - if(!o) o = new_buf(127); - o.write_shift(4, data.Hidden); - o.write_shift(4, data.iTabID); - write_RelID(data.strRelID, o); - write_XLWideString(data.name.slice(0,31), o); - return o.length > o.l ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.4.815 BrtWbProp */ -function parse_BrtWbProp(data, length) { - var o = ({}); - var flags = data.read_shift(4); - o.defaultThemeVersion = data.read_shift(4); - var strName = (length > 8) ? parse_XLWideString(data) : ""; - if(strName.length > 0) o.CodeName = strName; - o.autoCompressPictures = !!(flags & 0x10000); - o.backupFile = !!(flags & 0x40); - o.checkCompatibility = !!(flags & 0x1000); - o.date1904 = !!(flags & 0x01); - o.filterPrivacy = !!(flags & 0x08); - o.hidePivotFieldList = !!(flags & 0x400); - o.promptedSolutions = !!(flags & 0x10); - o.publishItems = !!(flags & 0x800); - o.refreshAllConnections = !!(flags & 0x40000); - o.saveExternalLinkValues = !!(flags & 0x80); - o.showBorderUnselectedTables = !!(flags & 0x04); - o.showInkAnnotation = !!(flags & 0x20); - o.showObjects = ["all", "placeholders", "none"][(flags >> 13) & 0x03]; - o.showPivotChartFilter = !!(flags & 0x8000); - o.updateLinks = ["userSet", "never", "always"][(flags >> 8) & 0x03]; - return o; -} -function write_BrtWbProp(data, o) { - if(!o) o = new_buf(72); - var flags = 0; - if(data) { - /* TODO: mirror parse_BrtWbProp fields */ - if(data.filterPrivacy) flags |= 0x08; - } - o.write_shift(4, flags); - o.write_shift(4, 0); - write_XLSBCodeName(data && data.CodeName || "ThisWorkbook", o); - return o.slice(0, o.l); -} - -function parse_BrtFRTArchID$(data, length) { - var o = {}; - data.read_shift(4); - o.ArchID = data.read_shift(4); - data.l += length - 8; - return o; -} - -/* [MS-XLSB] 2.4.687 BrtName */ -function parse_BrtName(data, length, opts) { - var end = data.l + length; - data.l += 4; //var flags = data.read_shift(4); - data.l += 1; //var chKey = data.read_shift(1); - var itab = data.read_shift(4); - var name = parse_XLNameWideString(data); - var formula = parse_XLSBNameParsedFormula(data, 0, opts); - var comment = parse_XLNullableWideString(data); - //if(0 /* fProc */) { - // unusedstring1: XLNullableWideString - // description: XLNullableWideString - // helpTopic: XLNullableWideString - // unusedstring2: XLNullableWideString - //} - data.l = end; - var out = ({Name:name, Ptg:formula}); - if(itab < 0xFFFFFFF) out.Sheet = itab; - if(comment) out.Comment = comment; - return out; -} - -/* [MS-XLSB] 2.1.7.61 Workbook */ -function parse_wb_bin(data, opts) { - var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: "" }; - var state = []; - var pass = false; - - if(!opts) opts = {}; - opts.biff = 12; - - var Names = []; - var supbooks = ([[]]); - supbooks.SheetNames = []; - supbooks.XTI = []; - - XLSBRecordEnum[0x0010] = { n:"BrtFRTArchID$", f:parse_BrtFRTArchID$ }; - - recordhopper(data, function hopper_wb(val, R_n, RT) { - switch(RT) { - case 0x009C: /* 'BrtBundleSh' */ - supbooks.SheetNames.push(val.name); - wb.Sheets.push(val); break; - - case 0x0099: /* 'BrtWbProp' */ - wb.WBProps = val; break; - - case 0x0027: /* 'BrtName' */ - if(val.Sheet != null) opts.SID = val.Sheet; - val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts); - delete opts.SID; - delete val.Ptg; - Names.push(val); - break; - case 0x040C: /* 'BrtNameExt' */ break; - - case 0x0165: /* 'BrtSupSelf' */ - case 0x0166: /* 'BrtSupSame' */ - case 0x0163: /* 'BrtSupBookSrc' */ - case 0x029B: /* 'BrtSupAddin' */ - if(!supbooks[0].length) supbooks[0] = [RT, val]; - else supbooks.push([RT, val]); - supbooks[supbooks.length - 1].XTI = []; - break; - case 0x016A: /* 'BrtExternSheet' */ - if(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; } - supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); - supbooks.XTI = supbooks.XTI.concat(val); - break; - case 0x0169: /* 'BrtPlaceholderName' */ - break; - - case 0x0817: /* 'BrtAbsPath15' */ - case 0x009E: /* 'BrtBookView' */ - case 0x008F: /* 'BrtBeginBundleShs' */ - case 0x0298: /* 'BrtBeginFnGroup' */ - case 0x0161: /* 'BrtBeginExternals' */ - break; - - /* case 'BrtModelTimeGroupingCalcCol' */ - case 0x0C00: /* 'BrtUid' */ - case 0x0C01: /* 'BrtRevisionPtr' */ - case 0x0216: /* 'BrtBookProtection' */ - case 0x02A5: /* 'BrtBookProtectionIso' */ - case 0x009D: /* 'BrtCalcProp' */ - case 0x0262: /* 'BrtCrashRecErr' */ - case 0x0802: /* 'BrtDecoupledPivotCacheID' */ - case 0x009B: /* 'BrtFileRecover' */ - case 0x0224: /* 'BrtFileSharing' */ - case 0x02A4: /* 'BrtFileSharingIso' */ - case 0x0080: /* 'BrtFileVersion' */ - case 0x0299: /* 'BrtFnGroup' */ - case 0x0850: /* 'BrtModelRelationship' */ - case 0x084D: /* 'BrtModelTable' */ - case 0x0225: /* 'BrtOleSize' */ - case 0x0805: /* 'BrtPivotTableRef' */ - case 0x0254: /* 'BrtSmartTagType' */ - case 0x081C: /* 'BrtTableSlicerCacheID' */ - case 0x081B: /* 'BrtTableSlicerCacheIDs' */ - case 0x0822: /* 'BrtTimelineCachePivotCacheID' */ - case 0x018D: /* 'BrtUserBookView' */ - case 0x009A: /* 'BrtWbFactoid' */ - case 0x045D: /* 'BrtWbProp14' */ - case 0x0229: /* 'BrtWebOpt' */ - case 0x082B: /* 'BrtWorkBookPr15' */ - break; - - case 0x0023: /* 'BrtFRTBegin' */ - state.push(R_n); pass = true; break; - case 0x0024: /* 'BrtFRTEnd' */ - state.pop(); pass = false; break; - case 0x0025: /* 'BrtACBegin' */ - state.push(R_n); pass = true; break; - case 0x0026: /* 'BrtACEnd' */ - state.pop(); pass = false; break; - - case 0x0010: /* 'BrtFRTArchID$' */ break; - - default: - if((R_n||"").indexOf("Begin") > 0){/* empty */} - else if((R_n||"").indexOf("End") > 0){/* empty */} - else if(!pass || (opts.WTF && state[state.length-1] != "BrtACBegin" && state[state.length-1] != "BrtFRTBegin")) throw new Error("Unexpected record " + RT + " " + R_n); - } - }, opts); - - parse_wb_defaults(wb); - - // $FlowIgnore - wb.Names = Names; - - (wb).supbooks = supbooks; - return wb; -} - -function write_BUNDLESHS(ba, wb) { - write_record(ba, "BrtBeginBundleShs"); - for(var idx = 0; idx != wb.SheetNames.length; ++idx) { - var viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0; - var d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] }; - write_record(ba, "BrtBundleSh", write_BrtBundleSh(d)); - } - write_record(ba, "BrtEndBundleShs"); -} - -/* [MS-XLSB] 2.4.649 BrtFileVersion */ -function write_BrtFileVersion(data, o) { - if(!o) o = new_buf(127); - for(var i = 0; i != 4; ++i) o.write_shift(4, 0); - write_XLWideString("SheetJS", o); - write_XLWideString(XLSX.version, o); - write_XLWideString(XLSX.version, o); - write_XLWideString("7262", o); - return o.length > o.l ? o.slice(0, o.l) : o; -} - -/* [MS-XLSB] 2.4.301 BrtBookView */ -function write_BrtBookView(idx, o) { - if(!o) o = new_buf(29); - o.write_shift(-4, 0); - o.write_shift(-4, 460); - o.write_shift(4, 28800); - o.write_shift(4, 17600); - o.write_shift(4, 500); - o.write_shift(4, idx); - o.write_shift(4, idx); - var flags = 0x78; - o.write_shift(1, flags); - return o.length > o.l ? o.slice(0, o.l) : o; -} - -function write_BOOKVIEWS(ba, wb) { - /* required if hidden tab appears before visible tab */ - if(!wb.Workbook || !wb.Workbook.Sheets) return; - var sheets = wb.Workbook.Sheets; - var i = 0, vistab = -1, hidden = -1; - for(; i < sheets.length; ++i) { - if(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i; - else if(sheets[i].Hidden == 1 && hidden == -1) hidden = i; - } - if(hidden > vistab) return; - write_record(ba, "BrtBeginBookViews"); - write_record(ba, "BrtBookView", write_BrtBookView(vistab)); - /* 1*(BrtBookView *FRT) */ - write_record(ba, "BrtEndBookViews"); -} - -/* [MS-XLSB] 2.4.305 BrtCalcProp */ -/*function write_BrtCalcProp(data, o) { - if(!o) o = new_buf(26); - o.write_shift(4,0); // force recalc - o.write_shift(4,1); - o.write_shift(4,0); - write_Xnum(0, o); - o.write_shift(-4, 1023); - o.write_shift(1, 0x33); - o.write_shift(1, 0x00); - return o; -}*/ - -/* [MS-XLSB] 2.4.646 BrtFileRecover */ -/*function write_BrtFileRecover(data, o) { - if(!o) o = new_buf(1); - o.write_shift(1,0); - return o; -}*/ - -/* [MS-XLSB] 2.1.7.61 Workbook */ -function write_wb_bin(wb, opts) { - var ba = buf_array(); - write_record(ba, "BrtBeginBook"); - write_record(ba, "BrtFileVersion", write_BrtFileVersion()); - /* [[BrtFileSharingIso] BrtFileSharing] */ - write_record(ba, "BrtWbProp", write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null)); - /* [ACABSPATH] */ - /* [[BrtBookProtectionIso] BrtBookProtection] */ - write_BOOKVIEWS(ba, wb, opts); - write_BUNDLESHS(ba, wb, opts); - /* [FNGROUP] */ - /* [EXTERNALS] */ - /* *BrtName */ - /* write_record(ba, "BrtCalcProp", write_BrtCalcProp()); */ - /* [BrtOleSize] */ - /* *(BrtUserBookView *FRT) */ - /* [PIVOTCACHEIDS] */ - /* [BrtWbFactoid] */ - /* [SMARTTAGTYPES] */ - /* [BrtWebOpt] */ - /* write_record(ba, "BrtFileRecover", write_BrtFileRecover()); */ - /* [WEBPUBITEMS] */ - /* [CRERRS] */ - /* FRTWORKBOOK */ - write_record(ba, "BrtEndBook"); - - return ba.end(); -} -function parse_wb(data, name, opts) { - if(name.slice(-4)===".bin") return parse_wb_bin((data), opts); - return parse_wb_xml((data), opts); -} - -function parse_ws(data, name, idx, opts, rels, wb, themes, styles) { - if(name.slice(-4)===".bin") return parse_ws_bin((data), opts, idx, rels, wb, themes, styles); - return parse_ws_xml((data), opts, idx, rels, wb, themes, styles); -} - -function parse_cs(data, name, idx, opts, rels, wb, themes, styles) { - if(name.slice(-4)===".bin") return parse_cs_bin((data), opts, idx, rels, wb, themes, styles); - return parse_cs_xml((data), opts, idx, rels, wb, themes, styles); -} - -function parse_ms(data, name, idx, opts, rels, wb, themes, styles) { - if(name.slice(-4)===".bin") return parse_ms_bin((data), opts, idx, rels, wb, themes, styles); - return parse_ms_xml((data), opts, idx, rels, wb, themes, styles); -} - -function parse_ds(data, name, idx, opts, rels, wb, themes, styles) { - if(name.slice(-4)===".bin") return parse_ds_bin((data), opts, idx, rels, wb, themes, styles); - return parse_ds_xml((data), opts, idx, rels, wb, themes, styles); -} - -function parse_sty(data, name, themes, opts) { - if(name.slice(-4)===".bin") return parse_sty_bin((data), themes, opts); - return parse_sty_xml((data), themes, opts); -} - -function parse_theme(data, name, opts) { - return parse_theme_xml(data, opts); -} - -function parse_sst(data, name, opts) { - if(name.slice(-4)===".bin") return parse_sst_bin((data), opts); - return parse_sst_xml((data), opts); -} - -function parse_cmnt(data, name, opts) { - if(name.slice(-4)===".bin") return parse_comments_bin((data), opts); - return parse_comments_xml((data), opts); -} - -function parse_cc(data, name, opts) { - if(name.slice(-4)===".bin") return parse_cc_bin((data), name, opts); - return parse_cc_xml((data), name, opts); -} - -function parse_xlink(data, rel, name, opts) { - if(name.slice(-4)===".bin") return parse_xlink_bin((data), rel, name, opts); - return parse_xlink_xml((data), rel, name, opts); -} - -function write_wb(wb, name, opts) { - return (name.slice(-4)===".bin" ? write_wb_bin : write_wb_xml)(wb, opts); -} - -function write_ws(data, name, opts, wb, rels) { - return (name.slice(-4)===".bin" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels); -} - -// eslint-disable-next-line no-unused-vars -function write_cs(data, name, opts, wb, rels) { - return (name.slice(-4)===".bin" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels); -} - -function write_sty(data, name, opts) { - return (name.slice(-4)===".bin" ? write_sty_bin : write_sty_xml)(data, opts); -} - -function write_sst(data, name, opts) { - return (name.slice(-4)===".bin" ? write_sst_bin : write_sst_xml)(data, opts); -} - -function write_cmnt(data, name, opts) { - return (name.slice(-4)===".bin" ? write_comments_bin : write_comments_xml)(data, opts); -} -/* -function write_cc(data, name:string, opts) { - return (name.slice(-4)===".bin" ? write_cc_bin : write_cc_xml)(data, opts); -} -*/ -var attregexg2=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g; -var attregex2=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/; -function xlml_parsexmltag(tag, skip_root) { - var words = tag.split(/\s+/); - var z = ([]); if(!skip_root) z[0] = words[0]; - if(words.length === 1) return z; - var m = tag.match(attregexg2), y, j, w, i; - if(m) for(i = 0; i != m.length; ++i) { - y = m[i].match(attregex2); -if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1); - else { - if(y[1].slice(0,6) === "xmlns:") w = "xmlns"+y[1].slice(6); - else w = y[1].slice(j+1); - z[w] = y[2].slice(1,y[2].length-1); - } - } - return z; -} -function xlml_parsexmltagobj(tag) { - var words = tag.split(/\s+/); - var z = {}; - if(words.length === 1) return z; - var m = tag.match(attregexg2), y, j, w, i; - if(m) for(i = 0; i != m.length; ++i) { - y = m[i].match(attregex2); -if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1); - else { - if(y[1].slice(0,6) === "xmlns:") w = "xmlns"+y[1].slice(6); - else w = y[1].slice(j+1); - z[w] = y[2].slice(1,y[2].length-1); - } - } - return z; -} - -// ---- - -function xlml_format(format, value) { - var fmt = XLMLFormatMap[format] || unescapexml(format); - if(fmt === "General") return SSF._general(value); - return SSF.format(fmt, value); -} - -function xlml_set_custprop(Custprops, key, cp, val) { - var oval = val; - switch((cp[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]) { - case "boolean": oval = parsexmlbool(val); break; - case "i2": case "int": oval = parseInt(val, 10); break; - case "r4": case "float": oval = parseFloat(val); break; - case "date": case "dateTime.tz": oval = parseDate(val); break; - case "i8": case "string": case "fixed": case "uuid": case "bin.base64": break; - default: throw new Error("bad custprop:" + cp[0]); - } - Custprops[unescapexml(key)] = oval; -} - -function safe_format_xlml(cell, nf, o) { - if(cell.t === 'z') return; - if(!o || o.cellText !== false) try { - if(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; } - else if(nf === "General") { - if(cell.t === 'n') { - if((cell.v|0) === cell.v) cell.w = SSF._general_int(cell.v); - else cell.w = SSF._general_num(cell.v); - } - else cell.w = SSF._general(cell.v); - } - else cell.w = xlml_format(nf||"General", cell.v); - } catch(e) { if(o.WTF) throw e; } - try { - var z = XLMLFormatMap[nf]||nf||"General"; - if(o.cellNF) cell.z = z; - if(o.cellDates && cell.t == 'n' && SSF.is_date(z)) { - var _d = SSF.parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } - } - } catch(e) { if(o.WTF) throw e; } -} - -function process_style_xlml(styles, stag, opts) { - if(opts.cellStyles) { - if(stag.Interior) { - var I = stag.Interior; - if(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern; - } - } - styles[stag.ID] = stag; -} - -/* TODO: there must exist some form of OSP-blessed spec */ -function parse_xlml_data(xml, ss, data, cell, base, styles, csty, row, arrayf, o) { - var nf = "General", sid = cell.StyleID, S = {}; o = o || {}; - var interiors = []; - var i = 0; - if(sid === undefined && row) sid = row.StyleID; - if(sid === undefined && csty) sid = csty.StyleID; - while(styles[sid] !== undefined) { - if(styles[sid].nf) nf = styles[sid].nf; - if(styles[sid].Interior) interiors.push(styles[sid].Interior); - if(!styles[sid].Parent) break; - sid = styles[sid].Parent; - } - switch(data.Type) { - case 'Boolean': - cell.t = 'b'; - cell.v = parsexmlbool(xml); - break; - case 'String': - cell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml)); - cell.v = (xml.indexOf("<") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, "") : cell.r); // todo: BR etc - break; - case 'DateTime': - if(xml.slice(-1) != "Z") xml += "Z"; - cell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); - if(cell.v !== cell.v) cell.v = unescapexml(xml); - else if(cell.v<60) cell.v = cell.v -1; - if(!nf || nf == "General") nf = "yyyy-mm-dd"; - /* falls through */ - case 'Number': - if(cell.v === undefined) cell.v=+xml; - if(!cell.t) cell.t = 'n'; - break; - case 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break; - default: - if(xml == "" && ss == "") { cell.t = 'z'; } - else { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); } - break; - } - safe_format_xlml(cell, nf, o); - if(o.cellFormula !== false) { - if(cell.Formula) { - var fstr = unescapexml(cell.Formula); - /* strictly speaking, the leading = is required but some writers omit */ - if(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1); - cell.f = rc_to_a1(fstr, base); - delete cell.Formula; - if(cell.ArrayRange == "RC") cell.F = rc_to_a1("RC:RC", base); - else if(cell.ArrayRange) { - cell.F = rc_to_a1(cell.ArrayRange, base); - arrayf.push([safe_decode_range(cell.F), cell.F]); - } - } else { - for(i = 0; i < arrayf.length; ++i) - if(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r) - if(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c) - cell.F = arrayf[i][1]; - } - } - if(o.cellStyles) { - interiors.forEach(function(x) { - if(!S.patternType && x.patternType) S.patternType = x.patternType; - }); - cell.s = S; - } - if(cell.StyleID !== undefined) cell.ixfe = cell.StyleID; -} - -function xlml_clean_comment(comment) { - comment.t = comment.v || ""; - comment.t = comment.t.replace(/\r\n/g,"\n").replace(/\r/g,"\n"); - comment.v = comment.w = comment.ixfe = undefined; -} - -function xlml_normalize(d) { - if(has_buf && Buffer.isBuffer(d)) return d.toString('utf8'); - if(typeof d === 'string') return d; - /* duktape */ - if(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d))); - throw new Error("Bad input format: expected Buffer or string"); -} - -/* TODO: Everything */ -/* UOS uses CJK in tags */ -var xlmlregex = /<(\/?)([^\s?>:\/]+)(?:[\s?:\/][^>]*)?>/mg; -//var xlmlregex = /<(\/?)([a-z0-9]*:|)(\w+)[^>]*>/mg; -function parse_xlml_xml(d, _opts) { - var opts = _opts || {}; - make_ssf(SSF); - var str = debom(xlml_normalize(d)); - if(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') { - if(typeof cptable !== 'undefined') str = cptable.utils.decode(65001, char_codes(str)); - else str = utf8read(str); - } - var opening = str.slice(0, 1024).toLowerCase(), ishtml = false; - opening = opening.replace(/".*?"/g, ""); - if((opening.indexOf(">") & 1023) > Math.min((opening.indexOf(",") & 1023), (opening.indexOf(";")&1023))) { var _o = dup(opts); _o.type = "string"; return PRN.to_workbook(str, _o); } - if(opening.indexOf("= 0) ishtml = true; }); - if(ishtml) return HTML_.to_workbook(str, opts); - var Rn; - var state = [], tmp; - if(DENSE != null && opts.dense == null) opts.dense = DENSE; - var sheets = {}, sheetnames = [], cursheet = (opts.dense ? [] : {}), sheetname = ""; - var table = {}, cell = ({}), row = {};// eslint-disable-line no-unused-vars - var dtag = xlml_parsexmltag(''), didx = 0; - var c = 0, r = 0; - var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; - var styles = {}, stag = {}; - var ss = "", fidx = 0; - var merges = []; - var Props = {}, Custprops = {}, pidx = 0, cp = []; - var comments = [], comment = ({}); - var cstys = [], csty, seencol = false; - var arrayf = []; - var rowinfo = [], rowobj = {}, cc = 0, rr = 0; - var Workbook = ({ Sheets:[], WBProps:{date1904:false} }), wsprops = {}; - xlmlregex.lastIndex = 0; - str = str.replace(//mg,""); - var raw_Rn3 = ""; - while((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) { - case 'data' /*case 'Data'*/: - if(raw_Rn3 == "data") { - 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; - } - if(state[state.length-1][1]) break; - if(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*"Comment"*/"comment"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts); - else { ss = ""; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; } - break; - case 'cell' /*case 'Cell'*/: - if(Rn[1]==='/'){ - if(comments.length > 0) cell.c = comments; - if((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) { - if(opts.dense) { - if(!cursheet[r]) cursheet[r] = []; - cursheet[r][c] = cell; - } else cursheet[encode_col(c) + encode_row(r)] = cell; - } - if(cell.HRef) { - cell.l = ({Target:unescapexml(cell.HRef)}); - if(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip; - delete cell.HRef; delete cell.HRefScreenTip; - } - if(cell.MergeAcross || cell.MergeDown) { - cc = c + (parseInt(cell.MergeAcross,10)|0); - rr = r + (parseInt(cell.MergeDown,10)|0); - merges.push({s:{c:c,r:r},e:{c:cc,r:rr}}); - } - if(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; } - else if(cell.MergeAcross || cell.MergeDown) { -for(var cma = c; cma <= cc; ++cma) { - for(var cmd = r; cmd <= rr; ++cmd) { - if(cma > c || cmd > r) { - if(opts.dense) { - if(!cursheet[cmd]) cursheet[cmd] = []; - cursheet[cmd][cma] = {t:'z'}; - } else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'}; - } - } - } - c = cc + 1; - } - else ++c; - } else { - cell = xlml_parsexmltagobj(Rn[0]); - if(cell.Index) c = +cell.Index - 1; - if(c < refguess.s.c) refguess.s.c = c; - if(c > refguess.e.c) refguess.e.c = c; - if(Rn[0].slice(-2) === "/>") ++c; - comments = []; - } - break; - case 'row' /*case 'Row'*/: - if(Rn[1]==='/' || Rn[0].slice(-2) === "/>") { - if(r < refguess.s.r) refguess.s.r = r; - if(r > refguess.e.r) refguess.e.r = r; - if(Rn[0].slice(-2) === "/>") { - row = xlml_parsexmltag(Rn[0]); - if(row.Index) r = +row.Index - 1; - } - c = 0; ++r; - } else { - row = xlml_parsexmltag(Rn[0]); - if(row.Index) r = +row.Index - 1; - rowobj = {}; - if(row.AutoFitHeight == "0" || row.Height) { - rowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx); - rowinfo[r] = rowobj; - } - if(row.Hidden == "1") { rowobj.hidden = true; rowinfo[r] = rowobj; } - } - break; - case 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */ - if(Rn[1]==='/'){ - if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); - sheetnames.push(sheetname); - if(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) { - cursheet["!ref"] = encode_range(refguess); - if(opts.sheetRows && opts.sheetRows <= refguess.e.r) { - cursheet["!fullref"] = cursheet["!ref"]; - refguess.e.r = opts.sheetRows - 1; - cursheet["!ref"] = encode_range(refguess); - } - } - if(merges.length) cursheet["!merges"] = merges; - if(cstys.length > 0) cursheet["!cols"] = cstys; - if(rowinfo.length > 0) cursheet["!rows"] = rowinfo; - sheets[sheetname] = cursheet; - } else { - refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; - r = c = 0; - state.push([Rn[3], false]); - tmp = xlml_parsexmltag(Rn[0]); - sheetname = unescapexml(tmp.Name); - cursheet = (opts.dense ? [] : {}); - merges = []; - arrayf = []; - rowinfo = []; - wsprops = {name:sheetname, Hidden:0}; - Workbook.Sheets.push(wsprops); - } - break; - case 'table' /*case 'Table'*/: - if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} - else if(Rn[0].slice(-2) == "/>") break; - else { - table = xlml_parsexmltag(Rn[0]); - state.push([Rn[3], false]); - cstys = []; seencol = false; - } - break; - - case 'style' /*case 'Style'*/: - if(Rn[1]==='/') process_style_xlml(styles, stag, opts); - else stag = xlml_parsexmltag(Rn[0]); - break; - - case 'numberformat' /*case 'NumberFormat'*/: - stag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || "General"); - if(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf]; - for(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(SSF._table[ssfidx] == stag.nf) break; - if(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(SSF._table[ssfidx] == null) { SSF.load(stag.nf, ssfidx); break; } - break; - - case 'column' /*case 'Column'*/: - if(state[state.length-1][0] !== /*'Table'*/'table') break; - csty = xlml_parsexmltag(Rn[0]); - if(csty.Hidden) { csty.hidden = true; delete csty.Hidden; } - if(csty.Width) csty.wpx = parseInt(csty.Width, 10); - if(!seencol && csty.wpx > 10) { - seencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx); - for(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]); - } - if(seencol) process_col(csty); - cstys[(csty.Index-1||cstys.length)] = csty; - for(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty); - break; - - case 'namedrange' /*case 'NamedRange'*/: - if(Rn[1]==='/') break; - if(!Workbook.Names) Workbook.Names = []; - var _NamedRange = parsexmltag(Rn[0]); - var _DefinedName = ({ - Name: _NamedRange.Name, - Ref: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0}) - }); - if(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1; -Workbook.Names.push(_DefinedName); - break; - - case 'namedcell' /*case 'NamedCell'*/: break; - case 'b' /*case 'B'*/: break; - case 'i' /*case 'I'*/: break; - case 'u' /*case 'U'*/: break; - case 's' /*case 'S'*/: break; - case 'em' /*case 'EM'*/: break; - case 'h2' /*case 'H2'*/: break; - case 'h3' /*case 'H3'*/: break; - case 'sub' /*case 'Sub'*/: break; - case 'sup' /*case 'Sup'*/: break; - case 'span' /*case 'Span'*/: break; - case 'alignment' /*case 'Alignment'*/: - break; - case 'borders' /*case 'Borders'*/: break; - case 'border' /*case 'Border'*/: break; - case 'font' /*case 'Font'*/: - if(Rn[0].slice(-2) === "/>") break; - else if(Rn[1]==="/") ss += str.slice(fidx, Rn.index); - else fidx = Rn.index + Rn[0].length; - break; - case 'interior' /*case 'Interior'*/: - if(!opts.cellStyles) break; - stag.Interior = xlml_parsexmltag(Rn[0]); - break; - case 'protection' /*case 'Protection'*/: break; - - case 'author' /*case 'Author'*/: - case 'title' /*case 'Title'*/: - case 'description' /*case 'Description'*/: - case 'created' /*case 'Created'*/: - case 'keywords' /*case 'Keywords'*/: - case 'subject' /*case 'Subject'*/: - case 'category' /*case 'Category'*/: - case 'company' /*case 'Company'*/: - case 'lastauthor' /*case 'LastAuthor'*/: - case 'lastsaved' /*case 'LastSaved'*/: - case 'lastprinted' /*case 'LastPrinted'*/: - case 'version' /*case 'Version'*/: - case 'revision' /*case 'Revision'*/: - case 'totaltime' /*case 'TotalTime'*/: - case 'hyperlinkbase' /*case 'HyperlinkBase'*/: - case 'manager' /*case 'Manager'*/: - case 'contentstatus' /*case 'ContentStatus'*/: - case 'identifier' /*case 'Identifier'*/: - case 'language' /*case 'Language'*/: - case 'appname' /*case 'AppName'*/: - if(Rn[0].slice(-2) === "/>") break; - else if(Rn[1]==="/") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index)); - else pidx = Rn.index + Rn[0].length; - break; - case 'paragraphs' /*case 'Paragraphs'*/: break; - - case 'styles' /*case 'Styles'*/: - case 'workbook' /*case 'Workbook'*/: - if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} - else state.push([Rn[3], false]); - break; - - case 'comment' /*case 'Comment'*/: - if(Rn[1]==='/'){ - if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); - xlml_clean_comment(comment); - comments.push(comment); - } else { - state.push([Rn[3], false]); - tmp = xlml_parsexmltag(Rn[0]); - comment = ({a:tmp.Author}); - } - break; - - case 'autofilter' /*case 'AutoFilter'*/: - 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) !== '/') { - var AutoFilter = xlml_parsexmltag(Rn[0]); - cursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\$/g,"") }; - state.push([Rn[3], true]); - } - break; - - case 'name' /*case 'Name'*/: break; - - case 'datavalidation' /*case 'DataValidation'*/: - 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; - - case 'pixelsperinch' /*case 'PixelsPerInch'*/: - break; - case 'componentoptions' /*case 'ComponentOptions'*/: - case 'documentproperties' /*case 'DocumentProperties'*/: - case 'customdocumentproperties' /*case 'CustomDocumentProperties'*/: - case 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: - case 'pivottable' /*case 'PivotTable'*/: - case 'pivotcache' /*case 'PivotCache'*/: - case 'names' /*case 'Names'*/: - case 'mapinfo' /*case 'MapInfo'*/: - case 'pagebreaks' /*case 'PageBreaks'*/: - case 'querytable' /*case 'QueryTable'*/: - case 'sorting' /*case 'Sorting'*/: - case 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/: - case 'conditionalformatting' /*case 'ConditionalFormatting'*/: - case 'smarttagtype' /*case 'SmartTagType'*/: - case 'smarttags' /*case 'SmartTags'*/: - case 'excelworkbook' /*case 'ExcelWorkbook'*/: - case 'workbookoptions' /*case 'WorkbookOptions'*/: - case 'worksheetoptions' /*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; - - case 'null' /*case 'Null'*/: break; - - default: - /* FODS file root is */ - if(state.length == 0 && Rn[3] == "document") return parse_fods(str, opts); - /* UOS file root is */ - if(state.length == 0 && Rn[3] == "uof"/*"UOF"*/) return parse_fods(str, opts); - - var seen = true; - switch(state[state.length-1][0]) { - /* OfficeDocumentSettings */ - case 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) { - case 'allowpng' /*case 'AllowPNG'*/: break; - case 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break; - case 'downloadcomponents' /*case 'DownloadComponents'*/: break; - case 'locationofcomponents' /*case 'LocationOfComponents'*/: break; - case 'colors' /*case 'Colors'*/: break; - case 'color' /*case 'Color'*/: break; - case 'index' /*case 'Index'*/: break; - case 'rgb' /*case 'RGB'*/: break; - case 'targetscreensize' /*case 'TargetScreenSize'*/: break; - case 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break; - default: seen = false; - } break; - - /* ComponentOptions */ - case 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) { - case 'toolbar' /*case 'Toolbar'*/: break; - case 'hideofficelogo' /*case 'HideOfficeLogo'*/: break; - case 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break; - case 'label' /*case 'Label'*/: break; - case 'caption' /*case 'Caption'*/: break; - case 'maxheight' /*case 'MaxHeight'*/: break; - case 'maxwidth' /*case 'MaxWidth'*/: break; - case 'nextsheetnumber' /*case 'NextSheetNumber'*/: break; - default: seen = false; - } break; - - /* ExcelWorkbook */ - case 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) { - case 'date1904' /*case 'Date1904'*/: -Workbook.WBProps.date1904 = true; - break; - case 'windowheight' /*case 'WindowHeight'*/: break; - case 'windowwidth' /*case 'WindowWidth'*/: break; - case 'windowtopx' /*case 'WindowTopX'*/: break; - case 'windowtopy' /*case 'WindowTopY'*/: break; - case 'tabratio' /*case 'TabRatio'*/: break; - case 'protectstructure' /*case 'ProtectStructure'*/: break; - case 'protectwindow' /*case 'ProtectWindow'*/: break; - case 'protectwindows' /*case 'ProtectWindows'*/: break; - case 'activesheet' /*case 'ActiveSheet'*/: break; - case 'displayinknotes' /*case 'DisplayInkNotes'*/: break; - case 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break; - case 'supbook' /*case 'SupBook'*/: break; - case 'sheetname' /*case 'SheetName'*/: break; - case 'sheetindex' /*case 'SheetIndex'*/: break; - case 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break; - case 'sheetindexlast' /*case 'SheetIndexLast'*/: break; - case 'dll' /*case 'Dll'*/: break; - case 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break; - case 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break; - case 'iteration' /*case 'Iteration'*/: break; - case 'maxiterations' /*case 'MaxIterations'*/: break; - case 'maxchange' /*case 'MaxChange'*/: break; - case 'path' /*case 'Path'*/: break; - case 'xct' /*case 'Xct'*/: break; - case 'count' /*case 'Count'*/: break; - case 'selectedsheets' /*case 'SelectedSheets'*/: break; - case 'calculation' /*case 'Calculation'*/: break; - case 'uncalced' /*case 'Uncalced'*/: break; - case 'startupprompt' /*case 'StartupPrompt'*/: break; - case 'crn' /*case 'Crn'*/: break; - case 'externname' /*case 'ExternName'*/: break; - case 'formula' /*case 'Formula'*/: break; - case 'colfirst' /*case 'ColFirst'*/: break; - case 'collast' /*case 'ColLast'*/: break; - case 'wantadvise' /*case 'WantAdvise'*/: break; - case 'boolean' /*case 'Boolean'*/: break; - case 'error' /*case 'Error'*/: break; - case 'text' /*case 'Text'*/: break; - case 'ole' /*case 'OLE'*/: break; - case 'noautorecover' /*case 'NoAutoRecover'*/: break; - case 'publishobjects' /*case 'PublishObjects'*/: break; - case 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break; - case 'number' /*case 'Number'*/: break; - case 'refmoder1c1' /*case 'RefModeR1C1'*/: break; - case 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break; - default: seen = false; - } break; - - /* WorkbookOptions */ - case 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) { - case 'owcversion' /*case 'OWCVersion'*/: break; - case 'height' /*case 'Height'*/: break; - case 'width' /*case 'Width'*/: break; - default: seen = false; - } break; - - /* WorksheetOptions */ - case 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) { - case 'visible' /*case 'Visible'*/: - if(Rn[0].slice(-2) === "/>"){/* empty */} - 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' /*case 'Header'*/: - if(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml'); - if(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin; - break; - case 'footer' /*case 'Footer'*/: - if(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml'); - if(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin; - break; - case 'pagemargins' /*case 'PageMargins'*/: - var pagemargins = parsexmltag(Rn[0]); - if(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml'); - if(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top; - if(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left; - if(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right; - if(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom; - break; - case 'displayrighttoleft' /*case 'DisplayRightToLeft'*/: - if(!Workbook.Views) Workbook.Views = []; - if(!Workbook.Views[0]) Workbook.Views[0] = {}; - Workbook.Views[0].RTL = true; - break; - - case 'freezepanes' /*case 'FreezePanes'*/: break; - case 'frozennosplit' /*case 'FrozenNoSplit'*/: break; - - case 'splithorizontal' /*case 'SplitHorizontal'*/: - case 'splitvertical' /*case 'SplitVertical'*/: - break; - - case 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/: - break; - - case 'activerow' /*case 'ActiveRow'*/: break; - case 'activecol' /*case 'ActiveCol'*/: break; - case 'toprowbottompane' /*case 'TopRowBottomPane'*/: break; - case 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break; - - case 'unsynced' /*case 'Unsynced'*/: break; - case 'print' /*case 'Print'*/: break; - case 'printerrors' /*case 'PrintErrors'*/: break; - case 'panes' /*case 'Panes'*/: break; - case 'scale' /*case 'Scale'*/: break; - case 'pane' /*case 'Pane'*/: break; - case 'number' /*case 'Number'*/: break; - case 'layout' /*case 'Layout'*/: break; - case 'pagesetup' /*case 'PageSetup'*/: break; - case 'selected' /*case 'Selected'*/: break; - case 'protectobjects' /*case 'ProtectObjects'*/: break; - case 'enableselection' /*case 'EnableSelection'*/: break; - case 'protectscenarios' /*case 'ProtectScenarios'*/: break; - case 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break; - case 'horizontalresolution' /*case 'HorizontalResolution'*/: break; - case 'verticalresolution' /*case 'VerticalResolution'*/: break; - case 'numberofcopies' /*case 'NumberofCopies'*/: break; - case 'activepane' /*case 'ActivePane'*/: break; - case 'toprowvisible' /*case 'TopRowVisible'*/: break; - case 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break; - case 'fittopage' /*case 'FitToPage'*/: break; - case 'rangeselection' /*case 'RangeSelection'*/: break; - case 'papersizeindex' /*case 'PaperSizeIndex'*/: break; - case 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break; - case 'pagebreakzoom' /*case 'PageBreakZoom'*/: break; - case 'filteron' /*case 'FilterOn'*/: break; - case 'fitwidth' /*case 'FitWidth'*/: break; - case 'fitheight' /*case 'FitHeight'*/: break; - case 'commentslayout' /*case 'CommentsLayout'*/: break; - case 'zoom' /*case 'Zoom'*/: break; - case 'lefttoright' /*case 'LeftToRight'*/: break; - case 'gridlines' /*case 'Gridlines'*/: break; - case 'allowsort' /*case 'AllowSort'*/: break; - case 'allowfilter' /*case 'AllowFilter'*/: break; - case 'allowinsertrows' /*case 'AllowInsertRows'*/: break; - case 'allowdeleterows' /*case 'AllowDeleteRows'*/: break; - case 'allowinsertcols' /*case 'AllowInsertCols'*/: break; - case 'allowdeletecols' /*case 'AllowDeleteCols'*/: break; - case 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break; - case 'allowformatcells' /*case 'AllowFormatCells'*/: break; - case 'allowsizecols' /*case 'AllowSizeCols'*/: break; - case 'allowsizerows' /*case 'AllowSizeRows'*/: break; - case 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/: - if(!cursheet["!outline"]) cursheet["!outline"] = {}; - cursheet["!outline"].above = true; - break; - case 'tabcolorindex' /*case 'TabColorIndex'*/: break; - case 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break; - case 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break; - case 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/: - if(!cursheet["!outline"]) cursheet["!outline"] = {}; - cursheet["!outline"].left = true; - break; - case 'blackandwhite' /*case 'BlackAndWhite'*/: break; - case 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break; - case 'displaypagebreak' /*case 'DisplayPageBreak'*/: break; - case 'rowcolheadings' /*case 'RowColHeadings'*/: break; - case 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break; - case 'noorientation' /*case 'NoOrientation'*/: break; - case 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break; - case 'zeroheight' /*case 'ZeroHeight'*/: break; - case 'viewablerange' /*case 'ViewableRange'*/: break; - case 'selection' /*case 'Selection'*/: break; - case 'protectcontents' /*case 'ProtectContents'*/: break; - default: seen = false; - } break; - - /* PivotTable */ - case 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) { - case 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break; - case 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break; - case 'compactrowindent' /*case 'CompactRowIndent'*/: break; - case 'location' /*case 'Location'*/: break; - case 'pivotfield' /*case 'PivotField'*/: break; - case 'orientation' /*case 'Orientation'*/: break; - case 'layoutform' /*case 'LayoutForm'*/: break; - case 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break; - case 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break; - case 'position' /*case 'Position'*/: break; - case 'pivotitem' /*case 'PivotItem'*/: break; - case 'datatype' /*case 'DataType'*/: break; - case 'datafield' /*case 'DataField'*/: break; - case 'sourcename' /*case 'SourceName'*/: break; - case 'parentfield' /*case 'ParentField'*/: break; - case 'ptlineitems' /*case 'PTLineItems'*/: break; - case 'ptlineitem' /*case 'PTLineItem'*/: break; - case 'countofsameitems' /*case 'CountOfSameItems'*/: break; - case 'item' /*case 'Item'*/: break; - case 'itemtype' /*case 'ItemType'*/: break; - case 'ptsource' /*case 'PTSource'*/: break; - case 'cacheindex' /*case 'CacheIndex'*/: break; - case 'consolidationreference' /*case 'ConsolidationReference'*/: break; - case 'filename' /*case 'FileName'*/: break; - case 'reference' /*case 'Reference'*/: break; - case 'nocolumngrand' /*case 'NoColumnGrand'*/: break; - case 'norowgrand' /*case 'NoRowGrand'*/: break; - case 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break; - case 'hidden' /*case 'Hidden'*/: break; - case 'subtotal' /*case 'Subtotal'*/: break; - case 'basefield' /*case 'BaseField'*/: break; - case 'mapchilditems' /*case 'MapChildItems'*/: break; - case 'function' /*case 'Function'*/: break; - case 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break; - case 'printsettitles' /*case 'PrintSetTitles'*/: break; - case 'mergelabels' /*case 'MergeLabels'*/: break; - case 'defaultversion' /*case 'DefaultVersion'*/: break; - case 'refreshname' /*case 'RefreshName'*/: break; - case 'refreshdate' /*case 'RefreshDate'*/: break; - case 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break; - case 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break; - case 'versionlastupdate' /*case 'VersionLastUpdate'*/: break; - case 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break; - case 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break; - case 'calculation' /*case 'Calculation'*/: break; - default: seen = false; - } break; - - /* PageBreaks */ - case 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) { - case 'colbreaks' /*case 'ColBreaks'*/: break; - case 'colbreak' /*case 'ColBreak'*/: break; - case 'rowbreaks' /*case 'RowBreaks'*/: break; - case 'rowbreak' /*case 'RowBreak'*/: break; - case 'colstart' /*case 'ColStart'*/: break; - case 'colend' /*case 'ColEnd'*/: break; - case 'rowend' /*case 'RowEnd'*/: break; - default: seen = false; - } break; - - /* AutoFilter */ - case 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) { - case 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break; - case 'autofiltercondition' /*case 'AutoFilterCondition'*/: break; - case 'autofilterand' /*case 'AutoFilterAnd'*/: break; - case 'autofilteror' /*case 'AutoFilterOr'*/: break; - default: seen = false; - } break; - - /* QueryTable */ - case 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) { - case 'id' /*case 'Id'*/: break; - case 'autoformatfont' /*case 'AutoFormatFont'*/: break; - case 'autoformatpattern' /*case 'AutoFormatPattern'*/: break; - case 'querysource' /*case 'QuerySource'*/: break; - case 'querytype' /*case 'QueryType'*/: break; - case 'enableredirections' /*case 'EnableRedirections'*/: break; - case 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break; - case 'urlstring' /*case 'URLString'*/: break; - case 'htmltables' /*case 'HTMLTables'*/: break; - case 'connection' /*case 'Connection'*/: break; - case 'commandtext' /*case 'CommandText'*/: break; - case 'refreshinfo' /*case 'RefreshInfo'*/: break; - case 'notitles' /*case 'NoTitles'*/: break; - case 'nextid' /*case 'NextId'*/: break; - case 'columninfo' /*case 'ColumnInfo'*/: break; - case 'overwritecells' /*case 'OverwriteCells'*/: break; - case 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break; - case 'textwizardsettings' /*case 'TextWizardSettings'*/: break; - case 'source' /*case 'Source'*/: break; - case 'number' /*case 'Number'*/: break; - case 'decimal' /*case 'Decimal'*/: break; - case 'thousandseparator' /*case 'ThousandSeparator'*/: break; - case 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break; - case 'formatsettings' /*case 'FormatSettings'*/: break; - case 'fieldtype' /*case 'FieldType'*/: break; - case 'delimiters' /*case 'Delimiters'*/: break; - case 'tab' /*case 'Tab'*/: break; - case 'comma' /*case 'Comma'*/: break; - case 'autoformatname' /*case 'AutoFormatName'*/: break; - case 'versionlastedit' /*case 'VersionLastEdit'*/: break; - case 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break; - default: seen = false; - } break; - - case 'datavalidation' /*case 'DataValidation'*/: - switch(Rn[3]) { - case 'range' /*case 'Range'*/: break; - - case 'type' /*case 'Type'*/: break; - case 'min' /*case 'Min'*/: break; - case 'max' /*case 'Max'*/: break; - case 'sort' /*case 'Sort'*/: break; - case 'descending' /*case 'Descending'*/: break; - case 'order' /*case 'Order'*/: break; - case 'casesensitive' /*case 'CaseSensitive'*/: break; - case 'value' /*case 'Value'*/: break; - case 'errorstyle' /*case 'ErrorStyle'*/: break; - case 'errormessage' /*case 'ErrorMessage'*/: break; - case 'errortitle' /*case 'ErrorTitle'*/: break; - case 'inputmessage' /*case 'InputMessage'*/: break; - case 'inputtitle' /*case 'InputTitle'*/: break; - case 'combohide' /*case 'ComboHide'*/: break; - case 'inputhide' /*case 'InputHide'*/: break; - case 'condition' /*case 'Condition'*/: break; - case 'qualifier' /*case 'Qualifier'*/: break; - case 'useblank' /*case 'UseBlank'*/: break; - case 'value1' /*case 'Value1'*/: break; - case 'value2' /*case 'Value2'*/: break; - case 'format' /*case 'Format'*/: break; - - case 'cellrangelist' /*case 'CellRangeList'*/: break; - default: seen = false; - } break; - - case 'sorting' /*case 'Sorting'*/: - case 'conditionalformatting' /*case 'ConditionalFormatting'*/: - switch(Rn[3]) { - case 'range' /*case 'Range'*/: break; - case 'type' /*case 'Type'*/: break; - case 'min' /*case 'Min'*/: break; - case 'max' /*case 'Max'*/: break; - case 'sort' /*case 'Sort'*/: break; - case 'descending' /*case 'Descending'*/: break; - case 'order' /*case 'Order'*/: break; - case 'casesensitive' /*case 'CaseSensitive'*/: break; - case 'value' /*case 'Value'*/: break; - case 'errorstyle' /*case 'ErrorStyle'*/: break; - case 'errormessage' /*case 'ErrorMessage'*/: break; - case 'errortitle' /*case 'ErrorTitle'*/: break; - case 'cellrangelist' /*case 'CellRangeList'*/: break; - case 'inputmessage' /*case 'InputMessage'*/: break; - case 'inputtitle' /*case 'InputTitle'*/: break; - case 'combohide' /*case 'ComboHide'*/: break; - case 'inputhide' /*case 'InputHide'*/: break; - case 'condition' /*case 'Condition'*/: break; - case 'qualifier' /*case 'Qualifier'*/: break; - case 'useblank' /*case 'UseBlank'*/: break; - case 'value1' /*case 'Value1'*/: break; - case 'value2' /*case 'Value2'*/: break; - case 'format' /*case 'Format'*/: break; - default: seen = false; - } break; - - /* MapInfo (schema) */ - case 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) { - case 'map' /*case 'Map'*/: break; - case 'entry' /*case 'Entry'*/: break; - case 'range' /*case 'Range'*/: break; - case 'xpath' /*case 'XPath'*/: break; - case 'field' /*case 'Field'*/: break; - case 'xsdtype' /*case 'XSDType'*/: break; - case 'filteron' /*case 'FilterOn'*/: break; - case 'aggregate' /*case 'Aggregate'*/: break; - case 'elementtype' /*case 'ElementType'*/: break; - case 'attributetype' /*case 'AttributeType'*/: break; - /* These are from xsd (XML Schema Definition) */ - case 'schema' /*case 'schema'*/: - case 'element' /*case 'element'*/: - case 'complextype' /*case 'complexType'*/: - case 'datatype' /*case 'datatype'*/: - case 'all' /*case 'all'*/: - case 'attribute' /*case 'attribute'*/: - case 'extends' /*case 'extends'*/: break; - - case 'row' /*case 'row'*/: break; - default: seen = false; - } break; - - /* SmartTags (can be anything) */ - case 'smarttags' /*case 'SmartTags'*/: break; - - default: seen = false; break; - } - if(seen) break; - /* CustomDocumentProperties */ - if(Rn[3].match(/!\[CDATA/)) break; - if(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); - if(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') { - if(Rn[0].slice(-2) === "/>") break; - else if(Rn[1]==="/") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index)); - else { cp = Rn; pidx = Rn.index + Rn[0].length; } - break; - } - if(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); - } - var out = ({}); - if(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets; - out.SheetNames = sheetnames; - out.Workbook = Workbook; - out.SSF = SSF.get_table(); - out.Props = Props; - out.Custprops = Custprops; - return out; -} - -function parse_xlml(data, opts) { - fix_read_opts(opts=opts||{}); - switch(opts.type||"base64") { - case "base64": return parse_xlml_xml(Base64.decode(data), opts); - case "binary": case "buffer": case "file": return parse_xlml_xml(data, opts); - case "array": return parse_xlml_xml(a2s(data), opts); - } -} - -/* TODO */ -function write_props_xlml(wb, opts) { - var o = []; - /* DocumentProperties */ - if(wb.Props) o.push(xlml_write_docprops(wb.Props, opts)); - /* CustomDocumentProperties */ - if(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts)); - return o.join(""); -} -/* TODO */ -function write_wb_xlml() { - /* OfficeDocumentSettings */ - /* ExcelWorkbook */ - return ""; -} -/* TODO */ -function write_sty_xlml(wb, opts) { - /* Styles */ - var styles = ['']; - opts.cellXfs.forEach(function(xf, id) { - var payload = []; - payload.push(writextag('NumberFormat', null, {"ss:Format": escapexml(SSF._table[xf.numFmtId])})); - - var o = {"ss:ID": "s" + (21+id)}; - styles.push(writextag('Style', payload.join(""), o)); - }); - return writextag("Styles", styles.join("")); -} -function write_name_xlml(n) { return writextag("NamedRange", null, {"ss:Name": n.Name, "ss:RefersTo":"=" + a1_to_rc(n.Ref, {r:0,c:0})}); } -function write_names_xlml(wb) { - if(!((wb||{}).Workbook||{}).Names) return ""; -var names = wb.Workbook.Names; - var out = []; - for(var i = 0; i < names.length; ++i) { - var n = names[i]; - if(n.Sheet != null) continue; - if(n.Name.match(/^_xlfn\./)) continue; - out.push(write_name_xlml(n)); - } - return writextag("Names", out.join("")); -} -function write_ws_xlml_names(ws, opts, idx, wb) { - if(!ws) return ""; - if(!((wb||{}).Workbook||{}).Names) return ""; -var names = wb.Workbook.Names; - var out = []; - for(var i = 0; i < names.length; ++i) { - var n = names[i]; - if(n.Sheet != idx) continue; - /*switch(n.Name) { - case "_": continue; - }*/ - if(n.Name.match(/^_xlfn\./)) continue; - out.push(write_name_xlml(n)); - } - return out.join(""); -} -/* WorksheetOptions */ -function write_ws_xlml_wsopts(ws, opts, idx, wb) { - if(!ws) return ""; - var o = []; - /* NOTE: spec technically allows any order, but stick with implied order */ - - /* FitToPage */ - /* DoNotDisplayColHeaders */ - /* DoNotDisplayRowHeaders */ - /* ViewableRange */ - /* Selection */ - /* GridlineColor */ - /* Name */ - /* ExcelWorksheetType */ - /* IntlMacro */ - /* Unsynced */ - /* Selected */ - /* CodeName */ - - if(ws['!margins']) { - o.push(""); - if(ws['!margins'].header) o.push(writextag("Header", null, {'x:Margin':ws['!margins'].header})); - if(ws['!margins'].footer) o.push(writextag("Footer", null, {'x:Margin':ws['!margins'].footer})); - o.push(writextag("PageMargins", null, { - 'x:Bottom': ws['!margins'].bottom || "0.75", - 'x:Left': ws['!margins'].left || "0.7", - 'x:Right': ws['!margins'].right || "0.7", - 'x:Top': ws['!margins'].top || "0.75" - })); - o.push(""); - } - - /* PageSetup */ - /* DisplayPageBreak */ - /* TransitionExpressionEvaluation */ - /* TransitionFormulaEntry */ - /* Print */ - /* Zoom */ - /* PageLayoutZoom */ - /* PageBreakZoom */ - /* ShowPageBreakZoom */ - /* DefaultRowHeight */ - /* DefaultColumnWidth */ - /* StandardWidth */ - - if(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) { - /* Visible */ - if(wb.Workbook.Sheets[idx].Hidden) o.push(writextag("Visible", (wb.Workbook.Sheets[idx].Hidden == 1 ? "SheetHidden" : "SheetVeryHidden"), {})); - else { - /* Selected */ - for(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break; - if(i == idx) o.push(""); - } - } - - /* LeftColumnVisible */ - - if(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(""); - - /* GridlineColorIndex */ - /* DisplayFormulas */ - /* DoNotDisplayGridlines */ - /* DoNotDisplayHeadings */ - /* DoNotDisplayOutline */ - /* ApplyAutomaticOutlineStyles */ - /* NoSummaryRowsBelowDetail */ - /* NoSummaryColumnsRightDetail */ - /* DoNotDisplayZeros */ - /* ActiveRow */ - /* ActiveColumn */ - /* FilterOn */ - /* RangeSelection */ - /* TopRowVisible */ - /* TopRowBottomPane */ - /* LeftColumnRightPane */ - /* ActivePane */ - /* SplitHorizontal */ - /* SplitVertical */ - /* FreezePanes */ - /* FrozenNoSplit */ - /* TabColorIndex */ - /* Panes */ - - /* NOTE: Password not supported in XLML Format */ - if(ws['!protect']) { - o.push(writetag("ProtectContents", "True")); - if(ws['!protect'].objects) o.push(writetag("ProtectObjects", "True")); - if(ws['!protect'].scenarios) o.push(writetag("ProtectScenarios", "True")); - if(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag("EnableSelection", "NoSelection")); - else if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag("EnableSelection", "UnlockedCells")); - [ - [ "formatCells", "AllowFormatCells" ], - [ "formatColumns", "AllowSizeCols" ], - [ "formatRows", "AllowSizeRows" ], - [ "insertColumns", "AllowInsertCols" ], - [ "insertRows", "AllowInsertRows" ], - [ "insertHyperlinks", "AllowInsertHyperlinks" ], - [ "deleteColumns", "AllowDeleteCols" ], - [ "deleteRows", "AllowDeleteRows" ], - [ "sort", "AllowSort" ], - [ "autoFilter", "AllowFilter" ], - [ "pivotTables", "AllowUsePivotTables" ] - ].forEach(function(x) { if(ws['!protect'][x[0]]) o.push("<"+x[1]+"/>"); }); - } - - if(o.length == 0) return ""; - return writextag("WorksheetOptions", o.join(""), {xmlns:XLMLNS.x}); -} -function write_ws_xlml_comment(comments) { - return comments.map(function(c) { - // TODO: formatted text - var t = xlml_unfixstr(c.t||""); - var d =writextag("ss:Data", t, {"xmlns":"http://www.w3.org/TR/REC-html40"}); - return writextag("Comment", d, {"ss:Author":c.a}); - }).join(""); -} -function write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr){ - if(!cell || (cell.v == undefined && cell.f == undefined)) return ""; - - var attr = {}; - if(cell.f) attr["ss:Formula"] = "=" + escapexml(a1_to_rc(cell.f, addr)); - if(cell.F && cell.F.slice(0, ref.length) == ref) { - var end = decode_cell(cell.F.slice(ref.length + 1)); - attr["ss:ArrayRange"] = "RC:R" + (end.r == addr.r ? "" : "[" + (end.r - addr.r) + "]") + "C" + (end.c == addr.c ? "" : "[" + (end.c - addr.c) + "]"); - } - - if(cell.l && cell.l.Target) { - attr["ss:HRef"] = escapexml(cell.l.Target); - if(cell.l.Tooltip) attr["x:HRefScreenTip"] = escapexml(cell.l.Tooltip); - } - - if(ws['!merges']) { - var marr = ws['!merges']; - for(var mi = 0; mi != marr.length; ++mi) { - if(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue; - if(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c; - if(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r; - } - } - - var t = "", p = ""; - switch(cell.t) { - case 'z': if(!opts.sheetStubs) return ""; break; - case 'n': t = 'Number'; p = String(cell.v); break; - case 'b': t = 'Boolean'; p = (cell.v ? "1" : "0"); break; - case 'e': t = 'Error'; p = BErr[cell.v]; break; - case 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || SSF._table[14]; break; - case 's': t = 'String'; p = escapexlml(cell.v||""); break; - } - /* TODO: cell style */ - var os = get_cell_style(opts.cellXfs, cell, opts); - attr["ss:StyleID"] = "s" + (21+os); - attr["ss:Index"] = addr.c + 1; - var _v = (cell.v != null ? p : ""); - var m = cell.t == 'z' ? "" : ('' + _v + ''); - - if((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c); - - return writextag("Cell", m, attr); -} -function write_ws_xlml_row(R, row) { - var o = ''; -} -/* TODO */ -function write_ws_xlml_table(ws, opts, idx, wb) { - if(!ws['!ref']) return ""; - var range = safe_decode_range(ws['!ref']); - var marr = ws['!merges'] || [], mi = 0; - var o = []; - if(ws['!cols']) ws['!cols'].forEach(function(n, i) { - process_col(n); - var w = !!n.width; - var p = col_obj_w(i, n); - var k = {"ss:Index":i+1}; - if(w) k['ss:Width'] = width2px(p.width); - if(n.hidden) k['ss:Hidden']="1"; - o.push(writextag("Column",null,k)); - }); - var dense = Array.isArray(ws); - for(var R = range.s.r; R <= range.e.r; ++R) { - var row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])]; - for(var C = range.s.c; C <= range.e.c; ++C) { - var skip = false; - for(mi = 0; mi != marr.length; ++mi) { - if(marr[mi].s.c > C) continue; - if(marr[mi].s.r > R) continue; - if(marr[mi].e.c < C) continue; - if(marr[mi].e.r < R) continue; - if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true; - break; - } - if(skip) continue; - var addr = {r:R,c:C}; - var ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref]; - row.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr)); - } - row.push(""); - if(row.length > 2) o.push(row.join("")); - } - return o.join(""); -} -function write_ws_xlml(idx, opts, wb) { - var o = []; - var s = wb.SheetNames[idx]; - var ws = wb.Sheets[s]; - - var t = ws ? write_ws_xlml_names(ws, opts, idx, wb) : ""; - if(t.length > 0) o.push("" + t + ""); - - /* Table */ - t = ws ? write_ws_xlml_table(ws, opts, idx, wb) : ""; - if(t.length > 0) o.push("
" + t + "
"); - - /* WorksheetOptions */ - o.push(write_ws_xlml_wsopts(ws, opts, idx, wb)); - - return o.join(""); -} -function write_xlml(wb, opts) { - if(!opts) opts = {}; - if(!wb.SSF) wb.SSF = SSF.get_table(); - if(wb.SSF) { - make_ssf(SSF); SSF.load_table(wb.SSF); - // $FlowIgnore - opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; - opts.ssf = wb.SSF; - opts.cellXfs = []; - get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); - } - var d = []; - d.push(write_props_xlml(wb, opts)); - d.push(write_wb_xlml(wb, opts)); - d.push(""); - d.push(""); - for(var i = 0; i < wb.SheetNames.length; ++i) - d.push(writextag("Worksheet", write_ws_xlml(i, opts, wb), {"ss:Name":escapexml(wb.SheetNames[i])})); - d[2] = write_sty_xlml(wb, opts); - d[3] = write_names_xlml(wb, opts); - return XML_HEADER + writextag("Workbook", d.join(""), { - 'xmlns': XLMLNS.ss, - 'xmlns:o': XLMLNS.o, - 'xmlns:x': XLMLNS.x, - 'xmlns:ss': XLMLNS.ss, - 'xmlns:dt': XLMLNS.dt, - 'xmlns:html': XLMLNS.html - }); -} -/* [MS-OLEDS] 2.3.8 CompObjStream */ -function parse_compobj(obj) { - var v = {}; - var o = obj.content; -/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */ - o.l = 28; - - v.AnsiUserType = o.read_shift(0, "lpstr-ansi"); - v.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o); - - if(o.length - o.l <= 4) return v; - - var m = o.read_shift(4); - if(m == 0 || m > 40) return v; - o.l-=4; v.Reserved1 = o.read_shift(0, "lpstr-ansi"); - - if(o.length - o.l <= 4) return v; - m = o.read_shift(4); - if(m !== 0x71b239f4) return v; - v.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o); - - m = o.read_shift(4); - if(m == 0 || m > 40) return v; - o.l-=4; v.Reserved2 = o.read_shift(0, "lpwstr"); -} - -/* - Continue logic for: - - 2.4.58 Continue - - 2.4.59 ContinueBigName - - 2.4.60 ContinueFrt - - 2.4.61 ContinueFrt11 - - 2.4.62 ContinueFrt12 -*/ -function slurp(R, blob, length, opts) { - var l = length; - var bufs = []; - var d = blob.slice(blob.l,blob.l+l); - if(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(R.n) { - case 'BOF': case 'FilePass': case 'FileLock': case 'InterfaceHdr': case 'RRDInfo': case 'RRDHead': case 'UsrExcl': case 'EOF': - break; - case 'BoundSheet8': - break; - default: - opts.enc.insitu(d); - } - bufs.push(d); - blob.l += l; - var next = (XLSRecordEnum[__readUInt16LE(blob,blob.l)]); - var start = 0; - while(next != null && next.n.slice(0,8) === 'Continue') { - l = __readUInt16LE(blob,blob.l+2); - start = blob.l + 4; - if(next.n == 'ContinueFrt') start += 4; - else if(next.n.slice(0,11) == 'ContinueFrt') { - start += 12; - } - d = blob.slice(start,blob.l+4+l); - bufs.push(d); - blob.l += 4+l; - next = (XLSRecordEnum[__readUInt16LE(blob, blob.l)]); - } - var b = (bconcat(bufs)); - prep_blob(b, 0); - var ll = 0; b.lens = []; - for(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; } - if(b.length < length) throw "XLS Record " + (R && R.n || "??") + " Truncated: " + b.length + " < " + length; - return R.f(b, b.length, opts); -} - -function safe_format_xf(p, opts, date1904) { - if(p.t === 'z') return; - if(!p.XF) return; - var fmtid = 0; - try { - fmtid = p.z || p.XF.numFmtId || 0; - if(opts.cellNF) p.z = SSF._table[fmtid]; - } catch(e) { if(opts.WTF) throw e; } - if(!opts || opts.cellText !== false) try { - if(p.t === 'e') { p.w = p.w || BErr[p.v]; } - else if(fmtid === 0 || fmtid == "General") { - if(p.t === 'n') { - if((p.v|0) === p.v) p.w = SSF._general_int(p.v); - else p.w = SSF._general_num(p.v); - } - else p.w = SSF._general(p.v); - } - else p.w = SSF.format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF}); - } catch(e) { if(opts.WTF) throw e; } - if(opts.cellDates && fmtid && p.t == 'n' && SSF.is_date(SSF._table[fmtid] || String(fmtid))) { - var _d = SSF.parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } - } -} - -function make_cell(val, ixfe, t) { - return ({v:val, ixfe:ixfe, t:t}); -} - -// 2.3.2 -function parse_workbook(blob, options) { - var wb = ({opts:{}}); - var Sheets = {}; - if(DENSE != null && options.dense == null) options.dense = DENSE; - var out = ((options.dense ? [] : {})); - var Directory = {}; - var range = ({}); - var last_formula = null; - var sst = ([]); - var cur_sheet = ""; - var Preamble = {}; - var lastcell, last_cell = "", cc, cmnt, rngC, rngR; - var sharedf = {}; - var arrayf = []; - var temp_val; - var country; - var XFs = []; /* XF records */ - var palette = []; - var Workbook = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }), wsprops = {}; - var get_rgb = function getrgb(icv) { - if(icv < 8) return XLSIcv[icv]; - if(icv < 64) return palette[icv-8] || XLSIcv[icv]; - return XLSIcv[icv]; - }; - var process_cell_style = function pcs(cell, line, options) { - var xfd = line.XF.data; - if(!xfd || !xfd.patternType || !options || !options.cellStyles) return; - line.s = ({}); - line.s.patternType = xfd.patternType; - var t; - if((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; } - if((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; } - }; - var addcell = function addcell(cell, line, options) { - if(file_depth > 1) return; - if(options.sheetRows && cell.r >= options.sheetRows) return; - if(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options); - delete line.ixfe; delete line.XF; - lastcell = cell; - last_cell = encode_cell(cell); - if(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}}; - if(cell.r < range.s.r) range.s.r = cell.r; - if(cell.c < range.s.c) range.s.c = cell.c; - if(cell.r + 1 > range.e.r) range.e.r = cell.r + 1; - if(cell.c + 1 > range.e.c) range.e.c = cell.c + 1; - if(options.cellFormula && line.f) { - for(var afi = 0; afi < arrayf.length; ++afi) { - if(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue; - if(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue; - line.F = encode_range(arrayf[afi][0]); - if(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f; - if(line.f) line.f = "" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts); - break; - } - } - { - if(options.dense) { - if(!out[cell.r]) out[cell.r] = []; - out[cell.r][cell.c] = line; - } else out[last_cell] = line; - } - }; - var opts = ({ - enc: false, // encrypted - sbcch: 0, // cch in the preceding SupBook - snames: [], // sheetnames - sharedf: sharedf, // shared formulae by address - arrayf: arrayf, // array formulae array - rrtabid: [], // RRTabId - lastuser: "", // Last User from WriteAccess - biff: 8, // BIFF version - codepage: 0, // CP from CodePage record - winlocked: 0, // fLockWn from WinProtect - cellStyles: !!options && !!options.cellStyles, - WTF: !!options && !!options.wtf - }); - if(options.password) opts.password = options.password; - var themes; - var merges = []; - var objects = []; - var colinfo = [], rowinfo = []; - // eslint-disable-next-line no-unused-vars - var defwidth = 0, defheight = 0; // twips / MDW respectively - var seencol = false; - var supbooks = ([]); // 1-indexed, will hold extern names - supbooks.SheetNames = opts.snames; - supbooks.sharedf = opts.sharedf; - supbooks.arrayf = opts.arrayf; - supbooks.names = []; - supbooks.XTI = []; - var last_Rn = ''; - var file_depth = 0; /* TODO: make a real stack */ - var BIFF2Fmt = 0, BIFF2FmtTable = []; - var FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */ - var last_lbl; - - /* explicit override for some broken writers */ - opts.codepage = 1200; - set_cp(1200); - var seen_codepage = false; - while(blob.l < blob.length - 1) { - var s = blob.l; - var RecordType = blob.read_shift(2); - if(RecordType === 0 && last_Rn === 'EOF') break; - var length = (blob.l === blob.length ? 0 : blob.read_shift(2)); - var R = XLSRecordEnum[RecordType]; - //console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length); - //if(!R) console.log(blob.slice(blob.l, blob.l + length)); - if(R && R.f) { - if(options.bookSheets) { - if(last_Rn === 'BoundSheet8' && R.n !== 'BoundSheet8') break; - } - last_Rn = R.n; - if(R.r === 2 || R.r == 12) { - var rt = blob.read_shift(2); length -= 2; - if(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error("rt mismatch: " + rt + "!=" + RecordType); - if(R.r == 12){ - blob.l += 10; length -= 10; - } // skip FRT - } - //console.error(R,blob.l,length,blob.length); - var val = ({}); - if(R.n === 'EOF') val = R.f(blob, length, opts); - else val = slurp(R, blob, length, opts); - var Rn = R.n; -if(file_depth == 0 && Rn != 'BOF') continue; - /* nested switch statements to workaround V8 128 limit */ - switch(Rn) { - /* Workbook Options */ - case 'Date1904': -wb.opts.Date1904 = Workbook.WBProps.date1904 = val; break; - case 'WriteProtect': wb.opts.WriteProtect = true; break; - case 'FilePass': - if(!opts.enc) blob.l = 0; - opts.enc = val; - if(!options.password) throw new Error("File is password-protected"); - if(val.valid == null) throw new Error("Encryption scheme unsupported"); - if(!val.valid) throw new Error("Password is incorrect"); - break; - case 'WriteAccess': opts.lastuser = val; break; - case 'FileSharing': break; //TODO - case 'CodePage': - var cpval = Number(val); - /* overrides based on test cases */ - switch(cpval) { - case 0x5212: cpval = 1200; break; - case 0x8000: cpval = 10000; break; - case 0x8001: cpval = 1252; break; - } - set_cp(opts.codepage = cpval); - seen_codepage = true; - break; - case 'RRTabId': opts.rrtabid = val; break; - case 'WinProtect': opts.winlocked = val; break; - case 'Template': break; // TODO - case 'BookBool': break; // TODO - case 'UsesELFs': break; - case 'MTRSettings': break; - case 'RefreshAll': - case 'CalcCount': - case 'CalcDelta': - case 'CalcIter': - case 'CalcMode': - case 'CalcPrecision': - case 'CalcSaveRecalc': - wb.opts[Rn] = val; break; - case 'CalcRefMode': opts.CalcRefMode = val; break; // TODO: implement R1C1 - case 'Uncalced': break; - case 'ForceFullCalculation': wb.opts.FullCalc = val; break; - case 'WsBool': - if(val.fDialog) out["!type"] = "dialog"; - if(!val.fBelow) (out["!outline"] || (out["!outline"] = {})).above = true; - if(!val.fRight) (out["!outline"] || (out["!outline"] = {})).left = true; - break; // TODO - case 'XF': - XFs.push(val); break; - case 'ExtSST': break; // TODO - case 'BookExt': break; // TODO - case 'RichTextStream': break; - case 'BkHim': break; - - case 'SupBook': - supbooks.push([val]); - supbooks[supbooks.length-1].XTI = []; - break; - case 'ExternName': - supbooks[supbooks.length-1].push(val); - break; - case 'Index': break; // TODO - case 'Lbl': - last_lbl = ({ - Name: val.Name, - Ref: stringify_formula(val.rgce,range,null,supbooks,opts) - }); - if(val.itab > 0) last_lbl.Sheet = val.itab - 1; - supbooks.names.push(last_lbl); - if(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; } - supbooks[supbooks.length-1].push(val); - if(val.Name == "_xlnm._FilterDatabase" && val.itab > 0) - if(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d') - FilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) }; - break; - case 'ExternCount': opts.ExternCount = val; break; - case 'ExternSheet': - if(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; } - supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break; - case 'NameCmt': - /* TODO: search for correct name */ - if(opts.biff < 8) break; - if(last_lbl != null) last_lbl.Comment = val[1]; - break; - - case 'Protect': out["!protect"] = val; break; /* for sheet or book */ - case 'Password': if(val !== 0 && opts.WTF) console.error("Password verifier: " + val); break; - case 'Prot4Rev': case 'Prot4RevPass': break; /*TODO: Revision Control*/ - - case 'BoundSheet8': { - Directory[val.pos] = val; - opts.snames.push(val.name); - } break; - case 'EOF': { - if(--file_depth) break; - if(range.e) { - if(range.e.r > 0 && range.e.c > 0) { - range.e.r--; range.e.c--; - out["!ref"] = encode_range(range); - if(options.sheetRows && options.sheetRows <= range.e.r) { - var tmpri = range.e.r; - range.e.r = options.sheetRows - 1; - out["!fullref"] = out["!ref"]; - out["!ref"] = encode_range(range); - range.e.r = tmpri; - } - range.e.r++; range.e.c++; - } - if(merges.length > 0) out["!merges"] = merges; - if(objects.length > 0) out["!objects"] = objects; - if(colinfo.length > 0) out["!cols"] = colinfo; - if(rowinfo.length > 0) out["!rows"] = rowinfo; - Workbook.Sheets.push(wsprops); - } - if(cur_sheet === "") Preamble = out; else Sheets[cur_sheet] = out; - out = ((options.dense ? [] : {})); - } break; - case 'BOF': { - if(opts.biff === 8) opts.biff = { -0x0009:2, -0x0209:3, -0x0409:4 - }[RecordType] || { -0x0200:2, -0x0300:3, -0x0400:4, -0x0500:5, -0x0600:8, -0x0002:2, -0x0007:2 - }[val.BIFFVer] || 8; - opts.biffguess = val.BIFFVer == 0; - if(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); } - if(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2; - if(file_depth++) break; - out = ((options.dense ? [] : {})); - - if(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); } - - if(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) { - if(cur_sheet === "") cur_sheet = "Sheet1"; - range = {s:{r:0,c:0},e:{r:0,c:0}}; - /* fake BoundSheet8 */ - var fakebs8 = {pos: blob.l - length, name:cur_sheet}; - Directory[fakebs8.pos] = fakebs8; - opts.snames.push(cur_sheet); - } - else cur_sheet = (Directory[s] || {name:""}).name; - if(val.dt == 0x20) out["!type"] = "chart"; - if(val.dt == 0x40) out["!type"] = "macro"; - merges = []; - objects = []; - opts.arrayf = arrayf = []; - colinfo = []; rowinfo = []; - defwidth = defheight = 0; - seencol = false; - wsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet }; - } break; - - case 'Number': case 'BIFF2NUM': case 'BIFF2INT': { - if(out["!type"] == "chart") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c; - temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}); - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:val.c, r:val.r}, temp_val, options); - } break; - case 'BoolErr': { - temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}); - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:val.c, r:val.r}, temp_val, options); - } break; - case 'RK': { - temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}); - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:val.c, r:val.r}, temp_val, options); - } break; - case 'MulRk': { - for(var j = val.c; j <= val.C; ++j) { - var ixfe = val.rkrec[j-val.c][0]; - temp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}); - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:j, r:val.r}, temp_val, options); - } - } break; - case 'Formula': { - if(val.val == 'String') { last_formula = val; break; } - temp_val = make_cell(val.val, val.cell.ixfe, val.tt); - temp_val.XF = XFs[temp_val.ixfe]; - if(options.cellFormula) { - var _f = val.formula; - if(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') { - var _fr = _f[0][0][1][0], _fc = _f[0][0][1][1]; - var _fe = encode_cell({r:_fr, c:_fc}); - if(sharedf[_fe]) temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); - else temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F; - } else temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); - } - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell(val.cell, temp_val, options); - last_formula = val; - } break; - case 'String': { - if(last_formula) { /* technically always true */ - last_formula.val = val; - temp_val = make_cell(val, last_formula.cell.ixfe, 's'); - temp_val.XF = XFs[temp_val.ixfe]; - if(options.cellFormula) { - temp_val.f = ""+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts); - } - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell(last_formula.cell, temp_val, options); - last_formula = null; - } else throw new Error("String record expects Formula"); - } break; - case 'Array': { - arrayf.push(val); - var _arraystart = encode_cell(val[0].s); - cc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart]; - if(options.cellFormula && cc) { - if(!last_formula) break; /* technically unreachable */ - if(!_arraystart || !cc) break; - cc.f = ""+stringify_formula(val[1], range, val[0], supbooks, opts); - cc.F = encode_range(val[0]); - } - } break; - case 'ShrFmla': { - if(!options.cellFormula) break; - if(last_cell) { - /* TODO: capture range */ - if(!last_formula) break; /* technically unreachable */ - sharedf[encode_cell(last_formula.cell)]= val[0]; - cc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)]; - (cc||{}).f = ""+stringify_formula(val[0], range, lastcell, supbooks, opts); - } - } break; - case 'LabelSst': - temp_val=make_cell(sst[val.isst].t, val.ixfe, 's'); - if(sst[val.isst].h) temp_val.h = sst[val.isst].h; - temp_val.XF = XFs[temp_val.ixfe]; - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:val.c, r:val.r}, temp_val, options); - break; - case 'Blank': if(options.sheetStubs) { - temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}); - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:val.c, r:val.r}, temp_val, options); - } break; - case 'MulBlank': if(options.sheetStubs) { - for(var _j = val.c; _j <= val.C; ++_j) { - var _ixfe = val.ixfe[_j-val.c]; - temp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}); - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:_j, r:val.r}, temp_val, options); - } - } break; - case 'RString': - case 'Label': case 'BIFF2STR': - temp_val=make_cell(val.val, val.ixfe, 's'); - temp_val.XF = XFs[temp_val.ixfe]; - if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; - safe_format_xf(temp_val, options, wb.opts.Date1904); - addcell({c:val.c, r:val.r}, temp_val, options); - break; - - case 'Dimensions': { - if(file_depth === 1) range = val; /* TODO: stack */ - } break; - case 'SST': { - sst = val; - } break; - case 'Format': { /* val = [id, fmt] */ - if(opts.biff == 4) { - BIFF2FmtTable[BIFF2Fmt++] = val[1]; - for(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(SSF._table[b4idx] == val[1]) break; - if(b4idx >= 163) SSF.load(val[1], BIFF2Fmt + 163); - } - else SSF.load(val[1], val[0]); - } break; - case 'BIFF2FORMAT': { - BIFF2FmtTable[BIFF2Fmt++] = val; - for(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(SSF._table[b2idx] == val) break; - if(b2idx >= 163) SSF.load(val, BIFF2Fmt + 163); - } break; - - case 'MergeCells': merges = merges.concat(val); break; - - case 'Obj': objects[val.cmo[0]] = opts.lastobj = val; break; - case 'TxO': opts.lastobj.TxO = val; break; - case 'ImData': opts.lastobj.ImData = val; break; - - case 'HLink': { - for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) - for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { - cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; - if(cc) cc.l = val[1]; - } - } break; - case 'HLinkTooltip': { - for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) - for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { - cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; - if(cc && cc.l) cc.l.Tooltip = val[1]; - } - } break; - - /* Comments */ - case 'Note': { - if(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */ - cc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])]; - var noteobj = objects[val[2]]; - if(!cc) { - if(options.dense) { - if(!out[val[0].r]) out[val[0].r] = []; - cc = out[val[0].r][val[0].c] = ({t:"z"}); - } else { - cc = out[encode_cell(val[0])] = ({t:"z"}); - } - range.e.r = Math.max(range.e.r, val[0].r); - range.s.r = Math.min(range.s.r, val[0].r); - range.e.c = Math.max(range.e.c, val[0].c); - range.s.c = Math.min(range.s.c, val[0].c); - } - if(!cc.c) cc.c = []; - cmnt = {a:val[1],t:noteobj.TxO.t}; - cc.c.push(cmnt); - } break; - - default: switch(R.n) { /* nested */ - case 'ClrtClient': break; - case 'XFExt': update_xfext(XFs[val.ixfe], val.ext); break; - - case 'DefColWidth': defwidth = val; break; - case 'DefaultRowHeight': defheight = val[1]; break; // TODO: flags - - case 'ColInfo': { - if(!opts.cellStyles) break; - while(val.e >= val.s) { - colinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) }; - if(!seencol) { seencol = true; find_mdw_colw(val.w/256); } - process_col(colinfo[val.e+1]); - } - } break; - case 'Row': { - var rowobj = {}; - if(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; } - if(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; } - if(val.hpt) { - rowinfo[val.r] = rowobj; - rowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt); - } - } break; - - case 'LeftMargin': - case 'RightMargin': - case 'TopMargin': - case 'BottomMargin': - if(!out['!margins']) default_margins(out['!margins'] = {}); - out['!margins'][Rn.slice(0,-6).toLowerCase()] = val; - break; - - case 'Selection': break; - - case 'Setup': // TODO - if(!out['!margins']) default_margins(out['!margins'] = {}); - out['!margins'].header = val.header; - out['!margins'].footer = val.footer; - break; - - case 'Window2': // TODO - // $FlowIgnore - if(val.RTL) Workbook.Views[0].RTL = true; - break; - - case 'Header': break; // TODO - case 'Footer': break; // TODO - case 'HCenter': break; // TODO - case 'VCenter': break; // TODO - case 'Pls': break; // TODO - case 'GCW': break; - case 'LHRecord': break; - case 'DBCell': break; // TODO - case 'EntExU2': break; // TODO - case 'SxView': break; // TODO - case 'Sxvd': break; // TODO - case 'SXVI': break; // TODO - case 'SXVDEx': break; // TODO - case 'SxIvd': break; // TODO - case 'SXString': break; // TODO - case 'Sync': break; - case 'Addin': break; - case 'SXDI': break; // TODO - case 'SXLI': break; // TODO - case 'SXEx': break; // TODO - case 'QsiSXTag': break; // TODO - case 'Feat': break; - case 'FeatHdr': case 'FeatHdr11': break; - case 'Feature11': case 'Feature12': case 'List12': break; - case 'Country': country = val; break; - case 'RecalcId': break; - case 'DxGCol': break; // TODO: htmlify - case 'Fbi': case 'Fbi2': case 'GelFrame': break; - case 'Font': break; // TODO - case 'XFCRC': break; // TODO - case 'Style': break; // TODO - case 'StyleExt': break; // TODO - case 'Palette': palette = val; break; - case 'Theme': themes = val; break; - /* Protection */ - case 'ScenarioProtect': break; - case 'ObjProtect': break; - - /* Conditional Formatting */ - case 'CondFmt12': break; - - /* Table */ - case 'Table': break; // TODO - case 'TableStyles': break; // TODO - case 'TableStyle': break; // TODO - case 'TableStyleElement': break; // TODO - - /* PivotTable */ - case 'SXStreamID': break; // TODO - case 'SXVS': break; // TODO - case 'DConRef': break; // TODO - case 'SXAddl': break; // TODO - case 'DConBin': break; // TODO - case 'DConName': break; // TODO - case 'SXPI': break; // TODO - case 'SxFormat': break; // TODO - case 'SxSelect': break; // TODO - case 'SxRule': break; // TODO - case 'SxFilt': break; // TODO - case 'SxItm': break; // TODO - case 'SxDXF': break; // TODO - - /* Scenario Manager */ - case 'ScenMan': break; - - /* Data Consolidation */ - case 'DCon': break; - - /* Watched Cell */ - case 'CellWatch': break; - - /* Print Settings */ - case 'PrintRowCol': break; - case 'PrintGrid': break; - case 'PrintSize': break; - - case 'XCT': break; - case 'CRN': break; - - case 'Scl': { - //console.log("Zoom Level:", val[0]/val[1],val); - } break; - case 'SheetExt': { - /* empty */ - } break; - case 'SheetExtOptional': { - /* empty */ - } break; - - /* VBA */ - case 'ObNoMacros': { - /* empty */ - } break; - case 'ObProj': { - /* empty */ - } break; - case 'CodeName': { -if(!cur_sheet) Workbook.WBProps.CodeName = val || "ThisWorkbook"; - else wsprops.CodeName = val || wsprops.name; - } break; - case 'GUIDTypeLib': { - /* empty */ - } break; - - case 'WOpt': break; // TODO: WTF? - case 'PhoneticInfo': break; - - case 'OleObjectSize': break; - - /* Differential Formatting */ - case 'DXF': case 'DXFN': case 'DXFN12': case 'DXFN12List': case 'DXFN12NoCB': break; - - /* Data Validation */ - case 'Dv': case 'DVal': break; - - /* Data Series */ - case 'BRAI': case 'Series': case 'SeriesText': break; - - /* Data Connection */ - case 'DConn': break; - case 'DbOrParamQry': break; - case 'DBQueryExt': break; - - case 'OleDbConn': break; - case 'ExtString': break; - - /* Formatting */ - case 'IFmtRecord': break; - case 'CondFmt': case 'CF': case 'CF12': case 'CFEx': break; - - /* Explicitly Ignored */ - case 'Excel9File': break; - case 'Units': break; - case 'InterfaceHdr': case 'Mms': case 'InterfaceEnd': case 'DSF': break; - case 'BuiltInFnGroupCount': /* 2.4.30 0x0E or 0x10 but excel 2011 generates 0x11? */ break; - /* View Stuff */ - case 'Window1': case 'HideObj': case 'GridSet': case 'Guts': - case 'UserBView': case 'UserSViewBegin': case 'UserSViewEnd': break; - case 'Pane': break; - default: switch(R.n) { /* nested */ - /* Chart */ - case 'Dat': - case 'Begin': case 'End': - case 'StartBlock': 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; - - /* Chart Group */ - case 'Line': case 'Bar': break; - case 'Surf': break; - - /* Axis Group */ - case 'AxisParent': break; - case 'Pos': break; - case 'ValueRange': break; - - /* Pivot Chart */ - case 'SXViewEx9': break; // TODO - case 'SXViewLink': break; - case 'PivotChartBits': break; - case 'SBaseRef': break; - case 'TextPropsStream': break; - - /* Chart Misc */ - case 'LnExt': break; - case 'MkrExt': break; - case 'CrtCoopt': break; - - /* Query Table */ - case 'Qsi': case 'Qsif': case 'Qsir': case 'QsiSXTag': break; - case 'TxtQry': break; - - /* Filter */ - case 'FilterMode': break; - case 'AutoFilter': case 'AutoFilterInfo': break; - case 'AutoFilter12': break; - case 'DropDownObjIds': break; - case 'Sort': break; - case 'SortData': break; - - /* Drawing */ - case 'ShapePropsStream': break; - case 'MsoDrawing': case 'MsoDrawingGroup': case 'MsoDrawingSelection': break; - /* Pub Stuff */ - case 'WebPub': case 'AutoWebPub': break; - - /* Print Stuff */ - case 'HeaderFooter': case 'HFPicture': case 'PLV': - case 'HorizontalPageBreaks': case 'VerticalPageBreaks': break; - /* Behavioral */ - case 'Backup': case 'CompressPictures': case 'Compat12': break; - - /* Should not Happen */ - case 'Continue': case 'ContinueFrt12': break; - - /* Future Records */ - case 'FrtFontList': case 'FrtWrapper': break; - - default: switch(R.n) { /* nested */ - /* BIFF5 records */ - case 'TabIdConf': case 'Radar': case 'RadarArea': case 'DropBar': case 'Intl': case 'CoordList': case 'SerAuxErrBar': break; - - /* BIFF2-4 records */ - case 'BIFF2FONTCLR': case 'BIFF2FMTCNT': case 'BIFF2FONTXTRA': break; - case 'BIFF2XF': case 'BIFF3XF': case 'BIFF4XF': break; - case 'BIFF2XFINDEX': break; - case 'BIFF4FMTCNT': case 'BIFF2ROW': case 'BIFF2WINDOW2': break; - - /* Miscellaneous */ - case 'SCENARIO': case 'DConBin': case 'PicF': case 'DataLabExt': - case 'Lel': case 'BopPop': case 'BopPopCustom': case 'RealTimeData': - case 'Name': break; - case 'LHNGraph': case 'FnGroupName': case 'AddMenu': case 'LPr': break; - case 'ListObj': case 'ListField': break; - case 'RRSort': break; - case 'BigName': break; - case 'ToolbarHdr': case 'ToolbarEnd': break; - case 'DDEObjName': break; - case 'FRTArchId$': break; - default: if(options.WTF) throw 'Unrecognized Record ' + R.n; - }}}} - } else blob.l += length; - } - wb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;}); - if(!options.bookSheets) wb.Sheets=Sheets; - if(!wb.SheetNames.length && Preamble["!ref"]) { - wb.SheetNames.push("Sheet1"); - /*jshint -W069 */ - if(wb.Sheets) wb.Sheets["Sheet1"] = Preamble; - /*jshint +W069 */ - } else wb.Preamble=Preamble; - if(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; }); - wb.Strings = sst; - wb.SSF = SSF.get_table(); - if(opts.enc) wb.Encryption = opts.enc; - if(themes) wb.Themes = themes; - wb.Metadata = {}; - if(country !== undefined) wb.Metadata.Country = country; - if(supbooks.names.length > 0) Workbook.Names = supbooks.names; - wb.Workbook = Workbook; - return wb; -} - -/* TODO: split props*/ -var PSCLSID = { - SI: "e0859ff2f94f6810ab9108002b27b3d9", - DSI: "02d5cdd59c2e1b10939708002b2cf9ae", - UDI: "05d5cdd59c2e1b10939708002b2cf9ae" -}; -function parse_xls_props(cfb, props, o) { - /* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */ - var DSI = CFB.find(cfb, '/!DocumentSummaryInformation'); - if(DSI && DSI.size > 0) try { - var DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI); - for(var d in DocSummary) props[d] = DocSummary[d]; - } catch(e) {if(o.WTF) throw e;/* empty */} - - /* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/ - var SI = CFB.find(cfb, '/!SummaryInformation'); - if(SI && SI.size > 0) try { - var Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI); - for(var s in Summary) if(props[s] == null) props[s] = Summary[s]; - } catch(e) {if(o.WTF) throw e;/* empty */} - - if(props.HeadingPairs && props.TitlesOfParts) { - load_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o); - delete props.HeadingPairs; delete props.TitlesOfParts; - } -} -function write_xls_props(wb, cfb) { - var DSEntries = [], SEntries = [], CEntries = []; - var i = 0, Keys; - if(wb.Props) { - Keys = keys(wb.Props); - // $FlowIgnore - for(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]); - } - if(wb.Custprops) { - Keys = keys(wb.Custprops); - // $FlowIgnore - for(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]); - } - var CEntries2 = []; - for(i = 0; i < CEntries.length; ++i) { - if(XLSPSSkip.indexOf(CEntries[i][0]) > -1) continue; - if(CEntries[i][1] == null) continue; - CEntries2.push(CEntries[i]); - } - if(SEntries.length) CFB.utils.cfb_add(cfb, "/\u0005SummaryInformation", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI)); - if(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, "/\u0005DocumentSummaryInformation", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI)); -} - -function parse_xlscfb(cfb, options) { -if(!options) options = {}; -fix_read_opts(options); -reset_cp(); -if(options.codepage) set_ansi(options.codepage); -var CompObj, WB; -if(cfb.FullPaths) { - if(CFB.find(cfb, '/encryption')) throw new Error("File is password-protected"); - CompObj = CFB.find(cfb, '!CompObj'); - WB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book'); -} else { - switch(options.type) { - case 'base64': cfb = s2a(Base64.decode(cfb)); break; - case 'binary': cfb = s2a(cfb); break; - case 'buffer': break; - case 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break; - } - prep_blob(cfb, 0); - WB = ({content: cfb}); -} -var WorkbookP; - -var _data; -if(CompObj) parse_compobj(CompObj); -if(options.bookProps && !options.bookSheets) WorkbookP = ({}); -else { - var T = has_buf ? 'buffer' : 'array'; - if(WB && WB.content) WorkbookP = parse_workbook(WB.content, options); - /* Quattro Pro 7-8 */ - else if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); - /* Quattro Pro 9 */ - else if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); - /* Works 4 for Mac */ - else if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error("Unsupported Works 4 for Mac file"); - else throw new Error("Cannot find Workbook stream"); - if(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb); -} - -var props = {}; -if(cfb.FullPaths) parse_xls_props(cfb, props, options); - -WorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */ -if(options.bookFiles) WorkbookP.cfb = cfb; -/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */ -return WorkbookP; -} - - -function write_xlscfb(wb, opts) { - var o = opts || {}; - var cfb = CFB.utils.cfb_new({root:"R"}); - var wbpath = "/Workbook"; - switch(o.bookType || "xls") { - case "xls": o.bookType = "biff8"; - /* falls through */ - case "xla": if(!o.bookType) o.bookType = "xla"; - /* falls through */ - case "biff8": wbpath = "/Workbook"; o.biff = 8; break; - case "biff5": wbpath = "/Book"; o.biff = 5; break; - default: throw new Error("invalid type " + o.bookType + " for XLS CFB"); - } - CFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o)); - if(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb); - // TODO: SI, DSI, CO - if(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == "string" ? "binary" : "buffer"})); - return cfb; -} -/* [MS-XLSB] 2.3 Record Enumeration */ -var XLSBRecordEnum = { -0x0000: { n:"BrtRowHdr", f:parse_BrtRowHdr }, -0x0001: { n:"BrtCellBlank", f:parse_BrtCellBlank }, -0x0002: { n:"BrtCellRk", f:parse_BrtCellRk }, -0x0003: { n:"BrtCellError", f:parse_BrtCellError }, -0x0004: { n:"BrtCellBool", f:parse_BrtCellBool }, -0x0005: { n:"BrtCellReal", f:parse_BrtCellReal }, -0x0006: { n:"BrtCellSt", f:parse_BrtCellSt }, -0x0007: { n:"BrtCellIsst", f:parse_BrtCellIsst }, -0x0008: { n:"BrtFmlaString", f:parse_BrtFmlaString }, -0x0009: { n:"BrtFmlaNum", f:parse_BrtFmlaNum }, -0x000A: { n:"BrtFmlaBool", f:parse_BrtFmlaBool }, -0x000B: { n:"BrtFmlaError", f:parse_BrtFmlaError }, -0x000C: { n:"BrtShortBlank", f:parse_BrtShortBlank }, -0x000D: { n:"BrtShortRk", f:parse_BrtShortRk }, -0x000E: { n:"BrtShortError", f:parse_BrtShortError }, -0x000F: { n:"BrtShortBool", f:parse_BrtShortBool }, -0x0010: { n:"BrtShortReal", f:parse_BrtShortReal }, -0x0011: { n:"BrtShortSt", f:parse_BrtShortSt }, -0x0012: { n:"BrtShortIsst", f:parse_BrtShortIsst }, -0x0013: { n:"BrtSSTItem", f:parse_RichStr }, -0x0014: { n:"BrtPCDIMissing" }, -0x0015: { n:"BrtPCDINumber" }, -0x0016: { n:"BrtPCDIBoolean" }, -0x0017: { n:"BrtPCDIError" }, -0x0018: { n:"BrtPCDIString" }, -0x0019: { n:"BrtPCDIDatetime" }, -0x001A: { n:"BrtPCDIIndex" }, -0x001B: { n:"BrtPCDIAMissing" }, -0x001C: { n:"BrtPCDIANumber" }, -0x001D: { n:"BrtPCDIABoolean" }, -0x001E: { n:"BrtPCDIAError" }, -0x001F: { n:"BrtPCDIAString" }, -0x0020: { n:"BrtPCDIADatetime" }, -0x0021: { n:"BrtPCRRecord" }, -0x0022: { n:"BrtPCRRecordDt" }, -0x0023: { n:"BrtFRTBegin" }, -0x0024: { n:"BrtFRTEnd" }, -0x0025: { n:"BrtACBegin" }, -0x0026: { n:"BrtACEnd" }, -0x0027: { n:"BrtName", f:parse_BrtName }, -0x0028: { n:"BrtIndexRowBlock" }, -0x002A: { n:"BrtIndexBlock" }, -0x002B: { n:"BrtFont", f:parse_BrtFont }, -0x002C: { n:"BrtFmt", f:parse_BrtFmt }, -0x002D: { n:"BrtFill", f:parse_BrtFill }, -0x002E: { n:"BrtBorder", f:parse_BrtBorder }, -0x002F: { n:"BrtXF", f:parse_BrtXF }, -0x0030: { n:"BrtStyle" }, -0x0031: { n:"BrtCellMeta" }, -0x0032: { n:"BrtValueMeta" }, -0x0033: { n:"BrtMdb" }, -0x0034: { n:"BrtBeginFmd" }, -0x0035: { n:"BrtEndFmd" }, -0x0036: { n:"BrtBeginMdx" }, -0x0037: { n:"BrtEndMdx" }, -0x0038: { n:"BrtBeginMdxTuple" }, -0x0039: { n:"BrtEndMdxTuple" }, -0x003A: { n:"BrtMdxMbrIstr" }, -0x003B: { n:"BrtStr" }, -0x003C: { n:"BrtColInfo", f:parse_ColInfo }, -0x003E: { n:"BrtCellRString", f:parse_BrtCellRString }, -0x003F: { n:"BrtCalcChainItem$", f:parse_BrtCalcChainItem$ }, -0x0040: { n:"BrtDVal", f:parse_BrtDVal }, -0x0041: { n:"BrtSxvcellNum" }, -0x0042: { n:"BrtSxvcellStr" }, -0x0043: { n:"BrtSxvcellBool" }, -0x0044: { n:"BrtSxvcellErr" }, -0x0045: { n:"BrtSxvcellDate" }, -0x0046: { n:"BrtSxvcellNil" }, -0x0080: { n:"BrtFileVersion" }, -0x0081: { n:"BrtBeginSheet" }, -0x0082: { n:"BrtEndSheet" }, -0x0083: { n:"BrtBeginBook", f:parsenoop, p:0 }, -0x0084: { n:"BrtEndBook" }, -0x0085: { n:"BrtBeginWsViews" }, -0x0086: { n:"BrtEndWsViews" }, -0x0087: { n:"BrtBeginBookViews" }, -0x0088: { n:"BrtEndBookViews" }, -0x0089: { n:"BrtBeginWsView", f:parse_BrtBeginWsView }, -0x008A: { n:"BrtEndWsView" }, -0x008B: { n:"BrtBeginCsViews" }, -0x008C: { n:"BrtEndCsViews" }, -0x008D: { n:"BrtBeginCsView" }, -0x008E: { n:"BrtEndCsView" }, -0x008F: { n:"BrtBeginBundleShs" }, -0x0090: { n:"BrtEndBundleShs" }, -0x0091: { n:"BrtBeginSheetData" }, -0x0092: { n:"BrtEndSheetData" }, -0x0093: { n:"BrtWsProp", f:parse_BrtWsProp }, -0x0094: { n:"BrtWsDim", f:parse_BrtWsDim, p:16 }, -0x0097: { n:"BrtPane", f:parse_BrtPane }, -0x0098: { n:"BrtSel" }, -0x0099: { n:"BrtWbProp", f:parse_BrtWbProp }, -0x009A: { n:"BrtWbFactoid" }, -0x009B: { n:"BrtFileRecover" }, -0x009C: { n:"BrtBundleSh", f:parse_BrtBundleSh }, -0x009D: { n:"BrtCalcProp" }, -0x009E: { n:"BrtBookView" }, -0x009F: { n:"BrtBeginSst", f:parse_BrtBeginSst }, -0x00A0: { n:"BrtEndSst" }, -0x00A1: { n:"BrtBeginAFilter", f:parse_UncheckedRfX }, -0x00A2: { n:"BrtEndAFilter" }, -0x00A3: { n:"BrtBeginFilterColumn" }, -0x00A4: { n:"BrtEndFilterColumn" }, -0x00A5: { n:"BrtBeginFilters" }, -0x00A6: { n:"BrtEndFilters" }, -0x00A7: { n:"BrtFilter" }, -0x00A8: { n:"BrtColorFilter" }, -0x00A9: { n:"BrtIconFilter" }, -0x00AA: { n:"BrtTop10Filter" }, -0x00AB: { n:"BrtDynamicFilter" }, -0x00AC: { n:"BrtBeginCustomFilters" }, -0x00AD: { n:"BrtEndCustomFilters" }, -0x00AE: { n:"BrtCustomFilter" }, -0x00AF: { n:"BrtAFilterDateGroupItem" }, -0x00B0: { n:"BrtMergeCell", f:parse_BrtMergeCell }, -0x00B1: { n:"BrtBeginMergeCells" }, -0x00B2: { n:"BrtEndMergeCells" }, -0x00B3: { n:"BrtBeginPivotCacheDef" }, -0x00B4: { n:"BrtEndPivotCacheDef" }, -0x00B5: { n:"BrtBeginPCDFields" }, -0x00B6: { n:"BrtEndPCDFields" }, -0x00B7: { n:"BrtBeginPCDField" }, -0x00B8: { n:"BrtEndPCDField" }, -0x00B9: { n:"BrtBeginPCDSource" }, -0x00BA: { n:"BrtEndPCDSource" }, -0x00BB: { n:"BrtBeginPCDSRange" }, -0x00BC: { n:"BrtEndPCDSRange" }, -0x00BD: { n:"BrtBeginPCDFAtbl" }, -0x00BE: { n:"BrtEndPCDFAtbl" }, -0x00BF: { n:"BrtBeginPCDIRun" }, -0x00C0: { n:"BrtEndPCDIRun" }, -0x00C1: { n:"BrtBeginPivotCacheRecords" }, -0x00C2: { n:"BrtEndPivotCacheRecords" }, -0x00C3: { n:"BrtBeginPCDHierarchies" }, -0x00C4: { n:"BrtEndPCDHierarchies" }, -0x00C5: { n:"BrtBeginPCDHierarchy" }, -0x00C6: { n:"BrtEndPCDHierarchy" }, -0x00C7: { n:"BrtBeginPCDHFieldsUsage" }, -0x00C8: { n:"BrtEndPCDHFieldsUsage" }, -0x00C9: { n:"BrtBeginExtConnection" }, -0x00CA: { n:"BrtEndExtConnection" }, -0x00CB: { n:"BrtBeginECDbProps" }, -0x00CC: { n:"BrtEndECDbProps" }, -0x00CD: { n:"BrtBeginECOlapProps" }, -0x00CE: { n:"BrtEndECOlapProps" }, -0x00CF: { n:"BrtBeginPCDSConsol" }, -0x00D0: { n:"BrtEndPCDSConsol" }, -0x00D1: { n:"BrtBeginPCDSCPages" }, -0x00D2: { n:"BrtEndPCDSCPages" }, -0x00D3: { n:"BrtBeginPCDSCPage" }, -0x00D4: { n:"BrtEndPCDSCPage" }, -0x00D5: { n:"BrtBeginPCDSCPItem" }, -0x00D6: { n:"BrtEndPCDSCPItem" }, -0x00D7: { n:"BrtBeginPCDSCSets" }, -0x00D8: { n:"BrtEndPCDSCSets" }, -0x00D9: { n:"BrtBeginPCDSCSet" }, -0x00DA: { n:"BrtEndPCDSCSet" }, -0x00DB: { n:"BrtBeginPCDFGroup" }, -0x00DC: { n:"BrtEndPCDFGroup" }, -0x00DD: { n:"BrtBeginPCDFGItems" }, -0x00DE: { n:"BrtEndPCDFGItems" }, -0x00DF: { n:"BrtBeginPCDFGRange" }, -0x00E0: { n:"BrtEndPCDFGRange" }, -0x00E1: { n:"BrtBeginPCDFGDiscrete" }, -0x00E2: { n:"BrtEndPCDFGDiscrete" }, -0x00E3: { n:"BrtBeginPCDSDTupleCache" }, -0x00E4: { n:"BrtEndPCDSDTupleCache" }, -0x00E5: { n:"BrtBeginPCDSDTCEntries" }, -0x00E6: { n:"BrtEndPCDSDTCEntries" }, -0x00E7: { n:"BrtBeginPCDSDTCEMembers" }, -0x00E8: { n:"BrtEndPCDSDTCEMembers" }, -0x00E9: { n:"BrtBeginPCDSDTCEMember" }, -0x00EA: { n:"BrtEndPCDSDTCEMember" }, -0x00EB: { n:"BrtBeginPCDSDTCQueries" }, -0x00EC: { n:"BrtEndPCDSDTCQueries" }, -0x00ED: { n:"BrtBeginPCDSDTCQuery" }, -0x00EE: { n:"BrtEndPCDSDTCQuery" }, -0x00EF: { n:"BrtBeginPCDSDTCSets" }, -0x00F0: { n:"BrtEndPCDSDTCSets" }, -0x00F1: { n:"BrtBeginPCDSDTCSet" }, -0x00F2: { n:"BrtEndPCDSDTCSet" }, -0x00F3: { n:"BrtBeginPCDCalcItems" }, -0x00F4: { n:"BrtEndPCDCalcItems" }, -0x00F5: { n:"BrtBeginPCDCalcItem" }, -0x00F6: { n:"BrtEndPCDCalcItem" }, -0x00F7: { n:"BrtBeginPRule" }, -0x00F8: { n:"BrtEndPRule" }, -0x00F9: { n:"BrtBeginPRFilters" }, -0x00FA: { n:"BrtEndPRFilters" }, -0x00FB: { n:"BrtBeginPRFilter" }, -0x00FC: { n:"BrtEndPRFilter" }, -0x00FD: { n:"BrtBeginPNames" }, -0x00FE: { n:"BrtEndPNames" }, -0x00FF: { n:"BrtBeginPName" }, -0x0100: { n:"BrtEndPName" }, -0x0101: { n:"BrtBeginPNPairs" }, -0x0102: { n:"BrtEndPNPairs" }, -0x0103: { n:"BrtBeginPNPair" }, -0x0104: { n:"BrtEndPNPair" }, -0x0105: { n:"BrtBeginECWebProps" }, -0x0106: { n:"BrtEndECWebProps" }, -0x0107: { n:"BrtBeginEcWpTables" }, -0x0108: { n:"BrtEndECWPTables" }, -0x0109: { n:"BrtBeginECParams" }, -0x010A: { n:"BrtEndECParams" }, -0x010B: { n:"BrtBeginECParam" }, -0x010C: { n:"BrtEndECParam" }, -0x010D: { n:"BrtBeginPCDKPIs" }, -0x010E: { n:"BrtEndPCDKPIs" }, -0x010F: { n:"BrtBeginPCDKPI" }, -0x0110: { n:"BrtEndPCDKPI" }, -0x0111: { n:"BrtBeginDims" }, -0x0112: { n:"BrtEndDims" }, -0x0113: { n:"BrtBeginDim" }, -0x0114: { n:"BrtEndDim" }, -0x0115: { n:"BrtIndexPartEnd" }, -0x0116: { n:"BrtBeginStyleSheet" }, -0x0117: { n:"BrtEndStyleSheet" }, -0x0118: { n:"BrtBeginSXView" }, -0x0119: { n:"BrtEndSXVI" }, -0x011A: { n:"BrtBeginSXVI" }, -0x011B: { n:"BrtBeginSXVIs" }, -0x011C: { n:"BrtEndSXVIs" }, -0x011D: { n:"BrtBeginSXVD" }, -0x011E: { n:"BrtEndSXVD" }, -0x011F: { n:"BrtBeginSXVDs" }, -0x0120: { n:"BrtEndSXVDs" }, -0x0121: { n:"BrtBeginSXPI" }, -0x0122: { n:"BrtEndSXPI" }, -0x0123: { n:"BrtBeginSXPIs" }, -0x0124: { n:"BrtEndSXPIs" }, -0x0125: { n:"BrtBeginSXDI" }, -0x0126: { n:"BrtEndSXDI" }, -0x0127: { n:"BrtBeginSXDIs" }, -0x0128: { n:"BrtEndSXDIs" }, -0x0129: { n:"BrtBeginSXLI" }, -0x012A: { n:"BrtEndSXLI" }, -0x012B: { n:"BrtBeginSXLIRws" }, -0x012C: { n:"BrtEndSXLIRws" }, -0x012D: { n:"BrtBeginSXLICols" }, -0x012E: { n:"BrtEndSXLICols" }, -0x012F: { n:"BrtBeginSXFormat" }, -0x0130: { n:"BrtEndSXFormat" }, -0x0131: { n:"BrtBeginSXFormats" }, -0x0132: { n:"BrtEndSxFormats" }, -0x0133: { n:"BrtBeginSxSelect" }, -0x0134: { n:"BrtEndSxSelect" }, -0x0135: { n:"BrtBeginISXVDRws" }, -0x0136: { n:"BrtEndISXVDRws" }, -0x0137: { n:"BrtBeginISXVDCols" }, -0x0138: { n:"BrtEndISXVDCols" }, -0x0139: { n:"BrtEndSXLocation" }, -0x013A: { n:"BrtBeginSXLocation" }, -0x013B: { n:"BrtEndSXView" }, -0x013C: { n:"BrtBeginSXTHs" }, -0x013D: { n:"BrtEndSXTHs" }, -0x013E: { n:"BrtBeginSXTH" }, -0x013F: { n:"BrtEndSXTH" }, -0x0140: { n:"BrtBeginISXTHRws" }, -0x0141: { n:"BrtEndISXTHRws" }, -0x0142: { n:"BrtBeginISXTHCols" }, -0x0143: { n:"BrtEndISXTHCols" }, -0x0144: { n:"BrtBeginSXTDMPS" }, -0x0145: { n:"BrtEndSXTDMPs" }, -0x0146: { n:"BrtBeginSXTDMP" }, -0x0147: { n:"BrtEndSXTDMP" }, -0x0148: { n:"BrtBeginSXTHItems" }, -0x0149: { n:"BrtEndSXTHItems" }, -0x014A: { n:"BrtBeginSXTHItem" }, -0x014B: { n:"BrtEndSXTHItem" }, -0x014C: { n:"BrtBeginMetadata" }, -0x014D: { n:"BrtEndMetadata" }, -0x014E: { n:"BrtBeginEsmdtinfo" }, -0x014F: { n:"BrtMdtinfo" }, -0x0150: { n:"BrtEndEsmdtinfo" }, -0x0151: { n:"BrtBeginEsmdb" }, -0x0152: { n:"BrtEndEsmdb" }, -0x0153: { n:"BrtBeginEsfmd" }, -0x0154: { n:"BrtEndEsfmd" }, -0x0155: { n:"BrtBeginSingleCells" }, -0x0156: { n:"BrtEndSingleCells" }, -0x0157: { n:"BrtBeginList" }, -0x0158: { n:"BrtEndList" }, -0x0159: { n:"BrtBeginListCols" }, -0x015A: { n:"BrtEndListCols" }, -0x015B: { n:"BrtBeginListCol" }, -0x015C: { n:"BrtEndListCol" }, -0x015D: { n:"BrtBeginListXmlCPr" }, -0x015E: { n:"BrtEndListXmlCPr" }, -0x015F: { n:"BrtListCCFmla" }, -0x0160: { n:"BrtListTrFmla" }, -0x0161: { n:"BrtBeginExternals" }, -0x0162: { n:"BrtEndExternals" }, -0x0163: { n:"BrtSupBookSrc", f:parse_RelID}, -0x0165: { n:"BrtSupSelf" }, -0x0166: { n:"BrtSupSame" }, -0x0167: { n:"BrtSupTabs" }, -0x0168: { n:"BrtBeginSupBook" }, -0x0169: { n:"BrtPlaceholderName" }, -0x016A: { n:"BrtExternSheet", f:parse_ExternSheet }, -0x016B: { n:"BrtExternTableStart" }, -0x016C: { n:"BrtExternTableEnd" }, -0x016E: { n:"BrtExternRowHdr" }, -0x016F: { n:"BrtExternCellBlank" }, -0x0170: { n:"BrtExternCellReal" }, -0x0171: { n:"BrtExternCellBool" }, -0x0172: { n:"BrtExternCellError" }, -0x0173: { n:"BrtExternCellString" }, -0x0174: { n:"BrtBeginEsmdx" }, -0x0175: { n:"BrtEndEsmdx" }, -0x0176: { n:"BrtBeginMdxSet" }, -0x0177: { n:"BrtEndMdxSet" }, -0x0178: { n:"BrtBeginMdxMbrProp" }, -0x0179: { n:"BrtEndMdxMbrProp" }, -0x017A: { n:"BrtBeginMdxKPI" }, -0x017B: { n:"BrtEndMdxKPI" }, -0x017C: { n:"BrtBeginEsstr" }, -0x017D: { n:"BrtEndEsstr" }, -0x017E: { n:"BrtBeginPRFItem" }, -0x017F: { n:"BrtEndPRFItem" }, -0x0180: { n:"BrtBeginPivotCacheIDs" }, -0x0181: { n:"BrtEndPivotCacheIDs" }, -0x0182: { n:"BrtBeginPivotCacheID" }, -0x0183: { n:"BrtEndPivotCacheID" }, -0x0184: { n:"BrtBeginISXVIs" }, -0x0185: { n:"BrtEndISXVIs" }, -0x0186: { n:"BrtBeginColInfos" }, -0x0187: { n:"BrtEndColInfos" }, -0x0188: { n:"BrtBeginRwBrk" }, -0x0189: { n:"BrtEndRwBrk" }, -0x018A: { n:"BrtBeginColBrk" }, -0x018B: { n:"BrtEndColBrk" }, -0x018C: { n:"BrtBrk" }, -0x018D: { n:"BrtUserBookView" }, -0x018E: { n:"BrtInfo" }, -0x018F: { n:"BrtCUsr" }, -0x0190: { n:"BrtUsr" }, -0x0191: { n:"BrtBeginUsers" }, -0x0193: { n:"BrtEOF" }, -0x0194: { n:"BrtUCR" }, -0x0195: { n:"BrtRRInsDel" }, -0x0196: { n:"BrtRREndInsDel" }, -0x0197: { n:"BrtRRMove" }, -0x0198: { n:"BrtRREndMove" }, -0x0199: { n:"BrtRRChgCell" }, -0x019A: { n:"BrtRREndChgCell" }, -0x019B: { n:"BrtRRHeader" }, -0x019C: { n:"BrtRRUserView" }, -0x019D: { n:"BrtRRRenSheet" }, -0x019E: { n:"BrtRRInsertSh" }, -0x019F: { n:"BrtRRDefName" }, -0x01A0: { n:"BrtRRNote" }, -0x01A1: { n:"BrtRRConflict" }, -0x01A2: { n:"BrtRRTQSIF" }, -0x01A3: { n:"BrtRRFormat" }, -0x01A4: { n:"BrtRREndFormat" }, -0x01A5: { n:"BrtRRAutoFmt" }, -0x01A6: { n:"BrtBeginUserShViews" }, -0x01A7: { n:"BrtBeginUserShView" }, -0x01A8: { n:"BrtEndUserShView" }, -0x01A9: { n:"BrtEndUserShViews" }, -0x01AA: { n:"BrtArrFmla", f:parse_BrtArrFmla }, -0x01AB: { n:"BrtShrFmla", f:parse_BrtShrFmla }, -0x01AC: { n:"BrtTable" }, -0x01AD: { n:"BrtBeginExtConnections" }, -0x01AE: { n:"BrtEndExtConnections" }, -0x01AF: { n:"BrtBeginPCDCalcMems" }, -0x01B0: { n:"BrtEndPCDCalcMems" }, -0x01B1: { n:"BrtBeginPCDCalcMem" }, -0x01B2: { n:"BrtEndPCDCalcMem" }, -0x01B3: { n:"BrtBeginPCDHGLevels" }, -0x01B4: { n:"BrtEndPCDHGLevels" }, -0x01B5: { n:"BrtBeginPCDHGLevel" }, -0x01B6: { n:"BrtEndPCDHGLevel" }, -0x01B7: { n:"BrtBeginPCDHGLGroups" }, -0x01B8: { n:"BrtEndPCDHGLGroups" }, -0x01B9: { n:"BrtBeginPCDHGLGroup" }, -0x01BA: { n:"BrtEndPCDHGLGroup" }, -0x01BB: { n:"BrtBeginPCDHGLGMembers" }, -0x01BC: { n:"BrtEndPCDHGLGMembers" }, -0x01BD: { n:"BrtBeginPCDHGLGMember" }, -0x01BE: { n:"BrtEndPCDHGLGMember" }, -0x01BF: { n:"BrtBeginQSI" }, -0x01C0: { n:"BrtEndQSI" }, -0x01C1: { n:"BrtBeginQSIR" }, -0x01C2: { n:"BrtEndQSIR" }, -0x01C3: { n:"BrtBeginDeletedNames" }, -0x01C4: { n:"BrtEndDeletedNames" }, -0x01C5: { n:"BrtBeginDeletedName" }, -0x01C6: { n:"BrtEndDeletedName" }, -0x01C7: { n:"BrtBeginQSIFs" }, -0x01C8: { n:"BrtEndQSIFs" }, -0x01C9: { n:"BrtBeginQSIF" }, -0x01CA: { n:"BrtEndQSIF" }, -0x01CB: { n:"BrtBeginAutoSortScope" }, -0x01CC: { n:"BrtEndAutoSortScope" }, -0x01CD: { n:"BrtBeginConditionalFormatting" }, -0x01CE: { n:"BrtEndConditionalFormatting" }, -0x01CF: { n:"BrtBeginCFRule" }, -0x01D0: { n:"BrtEndCFRule" }, -0x01D1: { n:"BrtBeginIconSet" }, -0x01D2: { n:"BrtEndIconSet" }, -0x01D3: { n:"BrtBeginDatabar" }, -0x01D4: { n:"BrtEndDatabar" }, -0x01D5: { n:"BrtBeginColorScale" }, -0x01D6: { n:"BrtEndColorScale" }, -0x01D7: { n:"BrtCFVO" }, -0x01D8: { n:"BrtExternValueMeta" }, -0x01D9: { n:"BrtBeginColorPalette" }, -0x01DA: { n:"BrtEndColorPalette" }, -0x01DB: { n:"BrtIndexedColor" }, -0x01DC: { n:"BrtMargins", f:parse_BrtMargins }, -0x01DD: { n:"BrtPrintOptions" }, -0x01DE: { n:"BrtPageSetup" }, -0x01DF: { n:"BrtBeginHeaderFooter" }, -0x01E0: { n:"BrtEndHeaderFooter" }, -0x01E1: { n:"BrtBeginSXCrtFormat" }, -0x01E2: { n:"BrtEndSXCrtFormat" }, -0x01E3: { n:"BrtBeginSXCrtFormats" }, -0x01E4: { n:"BrtEndSXCrtFormats" }, -0x01E5: { n:"BrtWsFmtInfo", f:parse_BrtWsFmtInfo }, -0x01E6: { n:"BrtBeginMgs" }, -0x01E7: { n:"BrtEndMGs" }, -0x01E8: { n:"BrtBeginMGMaps" }, -0x01E9: { n:"BrtEndMGMaps" }, -0x01EA: { n:"BrtBeginMG" }, -0x01EB: { n:"BrtEndMG" }, -0x01EC: { n:"BrtBeginMap" }, -0x01ED: { n:"BrtEndMap" }, -0x01EE: { n:"BrtHLink", f:parse_BrtHLink }, -0x01EF: { n:"BrtBeginDCon" }, -0x01F0: { n:"BrtEndDCon" }, -0x01F1: { n:"BrtBeginDRefs" }, -0x01F2: { n:"BrtEndDRefs" }, -0x01F3: { n:"BrtDRef" }, -0x01F4: { n:"BrtBeginScenMan" }, -0x01F5: { n:"BrtEndScenMan" }, -0x01F6: { n:"BrtBeginSct" }, -0x01F7: { n:"BrtEndSct" }, -0x01F8: { n:"BrtSlc" }, -0x01F9: { n:"BrtBeginDXFs" }, -0x01FA: { n:"BrtEndDXFs" }, -0x01FB: { n:"BrtDXF" }, -0x01FC: { n:"BrtBeginTableStyles" }, -0x01FD: { n:"BrtEndTableStyles" }, -0x01FE: { n:"BrtBeginTableStyle" }, -0x01FF: { n:"BrtEndTableStyle" }, -0x0200: { n:"BrtTableStyleElement" }, -0x0201: { n:"BrtTableStyleClient" }, -0x0202: { n:"BrtBeginVolDeps" }, -0x0203: { n:"BrtEndVolDeps" }, -0x0204: { n:"BrtBeginVolType" }, -0x0205: { n:"BrtEndVolType" }, -0x0206: { n:"BrtBeginVolMain" }, -0x0207: { n:"BrtEndVolMain" }, -0x0208: { n:"BrtBeginVolTopic" }, -0x0209: { n:"BrtEndVolTopic" }, -0x020A: { n:"BrtVolSubtopic" }, -0x020B: { n:"BrtVolRef" }, -0x020C: { n:"BrtVolNum" }, -0x020D: { n:"BrtVolErr" }, -0x020E: { n:"BrtVolStr" }, -0x020F: { n:"BrtVolBool" }, -0x0210: { n:"BrtBeginCalcChain$" }, -0x0211: { n:"BrtEndCalcChain$" }, -0x0212: { n:"BrtBeginSortState" }, -0x0213: { n:"BrtEndSortState" }, -0x0214: { n:"BrtBeginSortCond" }, -0x0215: { n:"BrtEndSortCond" }, -0x0216: { n:"BrtBookProtection" }, -0x0217: { n:"BrtSheetProtection" }, -0x0218: { n:"BrtRangeProtection" }, -0x0219: { n:"BrtPhoneticInfo" }, -0x021A: { n:"BrtBeginECTxtWiz" }, -0x021B: { n:"BrtEndECTxtWiz" }, -0x021C: { n:"BrtBeginECTWFldInfoLst" }, -0x021D: { n:"BrtEndECTWFldInfoLst" }, -0x021E: { n:"BrtBeginECTwFldInfo" }, -0x0224: { n:"BrtFileSharing" }, -0x0225: { n:"BrtOleSize" }, -0x0226: { n:"BrtDrawing", f:parse_RelID }, -0x0227: { n:"BrtLegacyDrawing" }, -0x0228: { n:"BrtLegacyDrawingHF" }, -0x0229: { n:"BrtWebOpt" }, -0x022A: { n:"BrtBeginWebPubItems" }, -0x022B: { n:"BrtEndWebPubItems" }, -0x022C: { n:"BrtBeginWebPubItem" }, -0x022D: { n:"BrtEndWebPubItem" }, -0x022E: { n:"BrtBeginSXCondFmt" }, -0x022F: { n:"BrtEndSXCondFmt" }, -0x0230: { n:"BrtBeginSXCondFmts" }, -0x0231: { n:"BrtEndSXCondFmts" }, -0x0232: { n:"BrtBkHim" }, -0x0234: { n:"BrtColor" }, -0x0235: { n:"BrtBeginIndexedColors" }, -0x0236: { n:"BrtEndIndexedColors" }, -0x0239: { n:"BrtBeginMRUColors" }, -0x023A: { n:"BrtEndMRUColors" }, -0x023C: { n:"BrtMRUColor" }, -0x023D: { n:"BrtBeginDVals" }, -0x023E: { n:"BrtEndDVals" }, -0x0241: { n:"BrtSupNameStart" }, -0x0242: { n:"BrtSupNameValueStart" }, -0x0243: { n:"BrtSupNameValueEnd" }, -0x0244: { n:"BrtSupNameNum" }, -0x0245: { n:"BrtSupNameErr" }, -0x0246: { n:"BrtSupNameSt" }, -0x0247: { n:"BrtSupNameNil" }, -0x0248: { n:"BrtSupNameBool" }, -0x0249: { n:"BrtSupNameFmla" }, -0x024A: { n:"BrtSupNameBits" }, -0x024B: { n:"BrtSupNameEnd" }, -0x024C: { n:"BrtEndSupBook" }, -0x024D: { n:"BrtCellSmartTagProperty" }, -0x024E: { n:"BrtBeginCellSmartTag" }, -0x024F: { n:"BrtEndCellSmartTag" }, -0x0250: { n:"BrtBeginCellSmartTags" }, -0x0251: { n:"BrtEndCellSmartTags" }, -0x0252: { n:"BrtBeginSmartTags" }, -0x0253: { n:"BrtEndSmartTags" }, -0x0254: { n:"BrtSmartTagType" }, -0x0255: { n:"BrtBeginSmartTagTypes" }, -0x0256: { n:"BrtEndSmartTagTypes" }, -0x0257: { n:"BrtBeginSXFilters" }, -0x0258: { n:"BrtEndSXFilters" }, -0x0259: { n:"BrtBeginSXFILTER" }, -0x025A: { n:"BrtEndSXFilter" }, -0x025B: { n:"BrtBeginFills" }, -0x025C: { n:"BrtEndFills" }, -0x025D: { n:"BrtBeginCellWatches" }, -0x025E: { n:"BrtEndCellWatches" }, -0x025F: { n:"BrtCellWatch" }, -0x0260: { n:"BrtBeginCRErrs" }, -0x0261: { n:"BrtEndCRErrs" }, -0x0262: { n:"BrtCrashRecErr" }, -0x0263: { n:"BrtBeginFonts" }, -0x0264: { n:"BrtEndFonts" }, -0x0265: { n:"BrtBeginBorders" }, -0x0266: { n:"BrtEndBorders" }, -0x0267: { n:"BrtBeginFmts" }, -0x0268: { n:"BrtEndFmts" }, -0x0269: { n:"BrtBeginCellXFs" }, -0x026A: { n:"BrtEndCellXFs" }, -0x026B: { n:"BrtBeginStyles" }, -0x026C: { n:"BrtEndStyles" }, -0x0271: { n:"BrtBigName" }, -0x0272: { n:"BrtBeginCellStyleXFs" }, -0x0273: { n:"BrtEndCellStyleXFs" }, -0x0274: { n:"BrtBeginComments" }, -0x0275: { n:"BrtEndComments" }, -0x0276: { n:"BrtBeginCommentAuthors" }, -0x0277: { n:"BrtEndCommentAuthors" }, -0x0278: { n:"BrtCommentAuthor", f:parse_BrtCommentAuthor }, -0x0279: { n:"BrtBeginCommentList" }, -0x027A: { n:"BrtEndCommentList" }, -0x027B: { n:"BrtBeginComment", f:parse_BrtBeginComment}, -0x027C: { n:"BrtEndComment" }, -0x027D: { n:"BrtCommentText", f:parse_BrtCommentText }, -0x027E: { n:"BrtBeginOleObjects" }, -0x027F: { n:"BrtOleObject" }, -0x0280: { n:"BrtEndOleObjects" }, -0x0281: { n:"BrtBeginSxrules" }, -0x0282: { n:"BrtEndSxRules" }, -0x0283: { n:"BrtBeginActiveXControls" }, -0x0284: { n:"BrtActiveX" }, -0x0285: { n:"BrtEndActiveXControls" }, -0x0286: { n:"BrtBeginPCDSDTCEMembersSortBy" }, -0x0288: { n:"BrtBeginCellIgnoreECs" }, -0x0289: { n:"BrtCellIgnoreEC" }, -0x028A: { n:"BrtEndCellIgnoreECs" }, -0x028B: { n:"BrtCsProp", f:parse_BrtCsProp }, -0x028C: { n:"BrtCsPageSetup" }, -0x028D: { n:"BrtBeginUserCsViews" }, -0x028E: { n:"BrtEndUserCsViews" }, -0x028F: { n:"BrtBeginUserCsView" }, -0x0290: { n:"BrtEndUserCsView" }, -0x0291: { n:"BrtBeginPcdSFCIEntries" }, -0x0292: { n:"BrtEndPCDSFCIEntries" }, -0x0293: { n:"BrtPCDSFCIEntry" }, -0x0294: { n:"BrtBeginListParts" }, -0x0295: { n:"BrtListPart" }, -0x0296: { n:"BrtEndListParts" }, -0x0297: { n:"BrtSheetCalcProp" }, -0x0298: { n:"BrtBeginFnGroup" }, -0x0299: { n:"BrtFnGroup" }, -0x029A: { n:"BrtEndFnGroup" }, -0x029B: { n:"BrtSupAddin" }, -0x029C: { n:"BrtSXTDMPOrder" }, -0x029D: { n:"BrtCsProtection" }, -0x029F: { n:"BrtBeginWsSortMap" }, -0x02A0: { n:"BrtEndWsSortMap" }, -0x02A1: { n:"BrtBeginRRSort" }, -0x02A2: { n:"BrtEndRRSort" }, -0x02A3: { n:"BrtRRSortItem" }, -0x02A4: { n:"BrtFileSharingIso" }, -0x02A5: { n:"BrtBookProtectionIso" }, -0x02A6: { n:"BrtSheetProtectionIso" }, -0x02A7: { n:"BrtCsProtectionIso" }, -0x02A8: { n:"BrtRangeProtectionIso" }, -0x02A9: { n:"BrtDValList" }, -0x0400: { n:"BrtRwDescent" }, -0x0401: { n:"BrtKnownFonts" }, -0x0402: { n:"BrtBeginSXTupleSet" }, -0x0403: { n:"BrtEndSXTupleSet" }, -0x0404: { n:"BrtBeginSXTupleSetHeader" }, -0x0405: { n:"BrtEndSXTupleSetHeader" }, -0x0406: { n:"BrtSXTupleSetHeaderItem" }, -0x0407: { n:"BrtBeginSXTupleSetData" }, -0x0408: { n:"BrtEndSXTupleSetData" }, -0x0409: { n:"BrtBeginSXTupleSetRow" }, -0x040A: { n:"BrtEndSXTupleSetRow" }, -0x040B: { n:"BrtSXTupleSetRowItem" }, -0x040C: { n:"BrtNameExt" }, -0x040D: { n:"BrtPCDH14" }, -0x040E: { n:"BrtBeginPCDCalcMem14" }, -0x040F: { n:"BrtEndPCDCalcMem14" }, -0x0410: { n:"BrtSXTH14" }, -0x0411: { n:"BrtBeginSparklineGroup" }, -0x0412: { n:"BrtEndSparklineGroup" }, -0x0413: { n:"BrtSparkline" }, -0x0414: { n:"BrtSXDI14" }, -0x0415: { n:"BrtWsFmtInfoEx14" }, -0x0416: { n:"BrtBeginConditionalFormatting14" }, -0x0417: { n:"BrtEndConditionalFormatting14" }, -0x0418: { n:"BrtBeginCFRule14" }, -0x0419: { n:"BrtEndCFRule14" }, -0x041A: { n:"BrtCFVO14" }, -0x041B: { n:"BrtBeginDatabar14" }, -0x041C: { n:"BrtBeginIconSet14" }, -0x041D: { n:"BrtDVal14", f: parse_BrtDVal14 }, -0x041E: { n:"BrtBeginDVals14" }, -0x041F: { n:"BrtColor14" }, -0x0420: { n:"BrtBeginSparklines" }, -0x0421: { n:"BrtEndSparklines" }, -0x0422: { n:"BrtBeginSparklineGroups" }, -0x0423: { n:"BrtEndSparklineGroups" }, -0x0425: { n:"BrtSXVD14" }, -0x0426: { n:"BrtBeginSXView14" }, -0x0427: { n:"BrtEndSXView14" }, -0x0428: { n:"BrtBeginSXView16" }, -0x0429: { n:"BrtEndSXView16" }, -0x042A: { n:"BrtBeginPCD14" }, -0x042B: { n:"BrtEndPCD14" }, -0x042C: { n:"BrtBeginExtConn14" }, -0x042D: { n:"BrtEndExtConn14" }, -0x042E: { n:"BrtBeginSlicerCacheIDs" }, -0x042F: { n:"BrtEndSlicerCacheIDs" }, -0x0430: { n:"BrtBeginSlicerCacheID" }, -0x0431: { n:"BrtEndSlicerCacheID" }, -0x0433: { n:"BrtBeginSlicerCache" }, -0x0434: { n:"BrtEndSlicerCache" }, -0x0435: { n:"BrtBeginSlicerCacheDef" }, -0x0436: { n:"BrtEndSlicerCacheDef" }, -0x0437: { n:"BrtBeginSlicersEx" }, -0x0438: { n:"BrtEndSlicersEx" }, -0x0439: { n:"BrtBeginSlicerEx" }, -0x043A: { n:"BrtEndSlicerEx" }, -0x043B: { n:"BrtBeginSlicer" }, -0x043C: { n:"BrtEndSlicer" }, -0x043D: { n:"BrtSlicerCachePivotTables" }, -0x043E: { n:"BrtBeginSlicerCacheOlapImpl" }, -0x043F: { n:"BrtEndSlicerCacheOlapImpl" }, -0x0440: { n:"BrtBeginSlicerCacheLevelsData" }, -0x0441: { n:"BrtEndSlicerCacheLevelsData" }, -0x0442: { n:"BrtBeginSlicerCacheLevelData" }, -0x0443: { n:"BrtEndSlicerCacheLevelData" }, -0x0444: { n:"BrtBeginSlicerCacheSiRanges" }, -0x0445: { n:"BrtEndSlicerCacheSiRanges" }, -0x0446: { n:"BrtBeginSlicerCacheSiRange" }, -0x0447: { n:"BrtEndSlicerCacheSiRange" }, -0x0448: { n:"BrtSlicerCacheOlapItem" }, -0x0449: { n:"BrtBeginSlicerCacheSelections" }, -0x044A: { n:"BrtSlicerCacheSelection" }, -0x044B: { n:"BrtEndSlicerCacheSelections" }, -0x044C: { n:"BrtBeginSlicerCacheNative" }, -0x044D: { n:"BrtEndSlicerCacheNative" }, -0x044E: { n:"BrtSlicerCacheNativeItem" }, -0x044F: { n:"BrtRangeProtection14" }, -0x0450: { n:"BrtRangeProtectionIso14" }, -0x0451: { n:"BrtCellIgnoreEC14" }, -0x0457: { n:"BrtList14" }, -0x0458: { n:"BrtCFIcon" }, -0x0459: { n:"BrtBeginSlicerCachesPivotCacheIDs" }, -0x045A: { n:"BrtEndSlicerCachesPivotCacheIDs" }, -0x045B: { n:"BrtBeginSlicers" }, -0x045C: { n:"BrtEndSlicers" }, -0x045D: { n:"BrtWbProp14" }, -0x045E: { n:"BrtBeginSXEdit" }, -0x045F: { n:"BrtEndSXEdit" }, -0x0460: { n:"BrtBeginSXEdits" }, -0x0461: { n:"BrtEndSXEdits" }, -0x0462: { n:"BrtBeginSXChange" }, -0x0463: { n:"BrtEndSXChange" }, -0x0464: { n:"BrtBeginSXChanges" }, -0x0465: { n:"BrtEndSXChanges" }, -0x0466: { n:"BrtSXTupleItems" }, -0x0468: { n:"BrtBeginSlicerStyle" }, -0x0469: { n:"BrtEndSlicerStyle" }, -0x046A: { n:"BrtSlicerStyleElement" }, -0x046B: { n:"BrtBeginStyleSheetExt14" }, -0x046C: { n:"BrtEndStyleSheetExt14" }, -0x046D: { n:"BrtBeginSlicerCachesPivotCacheID" }, -0x046E: { n:"BrtEndSlicerCachesPivotCacheID" }, -0x046F: { n:"BrtBeginConditionalFormattings" }, -0x0470: { n:"BrtEndConditionalFormattings" }, -0x0471: { n:"BrtBeginPCDCalcMemExt" }, -0x0472: { n:"BrtEndPCDCalcMemExt" }, -0x0473: { n:"BrtBeginPCDCalcMemsExt" }, -0x0474: { n:"BrtEndPCDCalcMemsExt" }, -0x0475: { n:"BrtPCDField14" }, -0x0476: { n:"BrtBeginSlicerStyles" }, -0x0477: { n:"BrtEndSlicerStyles" }, -0x0478: { n:"BrtBeginSlicerStyleElements" }, -0x0479: { n:"BrtEndSlicerStyleElements" }, -0x047A: { n:"BrtCFRuleExt" }, -0x047B: { n:"BrtBeginSXCondFmt14" }, -0x047C: { n:"BrtEndSXCondFmt14" }, -0x047D: { n:"BrtBeginSXCondFmts14" }, -0x047E: { n:"BrtEndSXCondFmts14" }, -0x0480: { n:"BrtBeginSortCond14" }, -0x0481: { n:"BrtEndSortCond14" }, -0x0482: { n:"BrtEndDVals14" }, -0x0483: { n:"BrtEndIconSet14" }, -0x0484: { n:"BrtEndDatabar14" }, -0x0485: { n:"BrtBeginColorScale14" }, -0x0486: { n:"BrtEndColorScale14" }, -0x0487: { n:"BrtBeginSxrules14" }, -0x0488: { n:"BrtEndSxrules14" }, -0x0489: { n:"BrtBeginPRule14" }, -0x048A: { n:"BrtEndPRule14" }, -0x048B: { n:"BrtBeginPRFilters14" }, -0x048C: { n:"BrtEndPRFilters14" }, -0x048D: { n:"BrtBeginPRFilter14" }, -0x048E: { n:"BrtEndPRFilter14" }, -0x048F: { n:"BrtBeginPRFItem14" }, -0x0490: { n:"BrtEndPRFItem14" }, -0x0491: { n:"BrtBeginCellIgnoreECs14" }, -0x0492: { n:"BrtEndCellIgnoreECs14" }, -0x0493: { n:"BrtDxf14" }, -0x0494: { n:"BrtBeginDxF14s" }, -0x0495: { n:"BrtEndDxf14s" }, -0x0499: { n:"BrtFilter14" }, -0x049A: { n:"BrtBeginCustomFilters14" }, -0x049C: { n:"BrtCustomFilter14" }, -0x049D: { n:"BrtIconFilter14" }, -0x049E: { n:"BrtPivotCacheConnectionName" }, -0x0800: { n:"BrtBeginDecoupledPivotCacheIDs" }, -0x0801: { n:"BrtEndDecoupledPivotCacheIDs" }, -0x0802: { n:"BrtDecoupledPivotCacheID" }, -0x0803: { n:"BrtBeginPivotTableRefs" }, -0x0804: { n:"BrtEndPivotTableRefs" }, -0x0805: { n:"BrtPivotTableRef" }, -0x0806: { n:"BrtSlicerCacheBookPivotTables" }, -0x0807: { n:"BrtBeginSxvcells" }, -0x0808: { n:"BrtEndSxvcells" }, -0x0809: { n:"BrtBeginSxRow" }, -0x080A: { n:"BrtEndSxRow" }, -0x080C: { n:"BrtPcdCalcMem15" }, -0x0813: { n:"BrtQsi15" }, -0x0814: { n:"BrtBeginWebExtensions" }, -0x0815: { n:"BrtEndWebExtensions" }, -0x0816: { n:"BrtWebExtension" }, -0x0817: { n:"BrtAbsPath15" }, -0x0818: { n:"BrtBeginPivotTableUISettings" }, -0x0819: { n:"BrtEndPivotTableUISettings" }, -0x081B: { n:"BrtTableSlicerCacheIDs" }, -0x081C: { n:"BrtTableSlicerCacheID" }, -0x081D: { n:"BrtBeginTableSlicerCache" }, -0x081E: { n:"BrtEndTableSlicerCache" }, -0x081F: { n:"BrtSxFilter15" }, -0x0820: { n:"BrtBeginTimelineCachePivotCacheIDs" }, -0x0821: { n:"BrtEndTimelineCachePivotCacheIDs" }, -0x0822: { n:"BrtTimelineCachePivotCacheID" }, -0x0823: { n:"BrtBeginTimelineCacheIDs" }, -0x0824: { n:"BrtEndTimelineCacheIDs" }, -0x0825: { n:"BrtBeginTimelineCacheID" }, -0x0826: { n:"BrtEndTimelineCacheID" }, -0x0827: { n:"BrtBeginTimelinesEx" }, -0x0828: { n:"BrtEndTimelinesEx" }, -0x0829: { n:"BrtBeginTimelineEx" }, -0x082A: { n:"BrtEndTimelineEx" }, -0x082B: { n:"BrtWorkBookPr15" }, -0x082C: { n:"BrtPCDH15" }, -0x082D: { n:"BrtBeginTimelineStyle" }, -0x082E: { n:"BrtEndTimelineStyle" }, -0x082F: { n:"BrtTimelineStyleElement" }, -0x0830: { n:"BrtBeginTimelineStylesheetExt15" }, -0x0831: { n:"BrtEndTimelineStylesheetExt15" }, -0x0832: { n:"BrtBeginTimelineStyles" }, -0x0833: { n:"BrtEndTimelineStyles" }, -0x0834: { n:"BrtBeginTimelineStyleElements" }, -0x0835: { n:"BrtEndTimelineStyleElements" }, -0x0836: { n:"BrtDxf15" }, -0x0837: { n:"BrtBeginDxfs15" }, -0x0838: { n:"brtEndDxfs15" }, -0x0839: { n:"BrtSlicerCacheHideItemsWithNoData" }, -0x083A: { n:"BrtBeginItemUniqueNames" }, -0x083B: { n:"BrtEndItemUniqueNames" }, -0x083C: { n:"BrtItemUniqueName" }, -0x083D: { n:"BrtBeginExtConn15" }, -0x083E: { n:"BrtEndExtConn15" }, -0x083F: { n:"BrtBeginOledbPr15" }, -0x0840: { n:"BrtEndOledbPr15" }, -0x0841: { n:"BrtBeginDataFeedPr15" }, -0x0842: { n:"BrtEndDataFeedPr15" }, -0x0843: { n:"BrtTextPr15" }, -0x0844: { n:"BrtRangePr15" }, -0x0845: { n:"BrtDbCommand15" }, -0x0846: { n:"BrtBeginDbTables15" }, -0x0847: { n:"BrtEndDbTables15" }, -0x0848: { n:"BrtDbTable15" }, -0x0849: { n:"BrtBeginDataModel" }, -0x084A: { n:"BrtEndDataModel" }, -0x084B: { n:"BrtBeginModelTables" }, -0x084C: { n:"BrtEndModelTables" }, -0x084D: { n:"BrtModelTable" }, -0x084E: { n:"BrtBeginModelRelationships" }, -0x084F: { n:"BrtEndModelRelationships" }, -0x0850: { n:"BrtModelRelationship" }, -0x0851: { n:"BrtBeginECTxtWiz15" }, -0x0852: { n:"BrtEndECTxtWiz15" }, -0x0853: { n:"BrtBeginECTWFldInfoLst15" }, -0x0854: { n:"BrtEndECTWFldInfoLst15" }, -0x0855: { n:"BrtBeginECTWFldInfo15" }, -0x0856: { n:"BrtFieldListActiveItem" }, -0x0857: { n:"BrtPivotCacheIdVersion" }, -0x0858: { n:"BrtSXDI15" }, -0x0859: { n:"BrtBeginModelTimeGroupings" }, -0x085A: { n:"BrtEndModelTimeGroupings" }, -0x085B: { n:"BrtBeginModelTimeGrouping" }, -0x085C: { n:"BrtEndModelTimeGrouping" }, -0x085D: { n:"BrtModelTimeGroupingCalcCol" }, -0x0C00: { n:"BrtUid" }, -0x0C01: { n:"BrtRevisionPtr" }, -0x13e7: { n:"BrtBeginCalcFeatures" }, -0x13e8: { n:"BrtEndCalcFeatures" }, -0x13e9: { n:"BrtCalcFeature" }, -0xFFFF: { n:"" } -}; - -var XLSBRE; -function make_XLSBRE() { - XLSBRE = evert_key(XLSBRecordEnum, 'n'); - /*jshint -W069 */ - XLSBRE["BrtFRTArchID$"] = 0x0010; - /*jshint +W069 */ -} - -/* [MS-XLS] 2.3 Record Enumeration (and other sources) */ -var XLSRecordEnum = { - /* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */ -0x0006: { n:"Formula", f:parse_Formula }, -0x000a: { n:'EOF', f:parsenoop2 }, -0x000c: { n:"CalcCount", f:parseuint16 }, -0x000d: { n:"CalcMode", f:parseuint16 }, -0x000e: { n:"CalcPrecision", f:parsebool }, -0x000f: { n:"CalcRefMode", f:parsebool }, -0x0010: { n:"CalcDelta", f:parse_Xnum }, -0x0011: { n:"CalcIter", f:parsebool }, -0x0012: { n:"Protect", f:parsebool }, -0x0013: { n:"Password", f:parseuint16 }, -0x0014: { n:"Header", f:parse_XLHeaderFooter }, -0x0015: { n:"Footer", f:parse_XLHeaderFooter }, -0x0017: { n:"ExternSheet", f:parse_ExternSheet }, -0x0018: { n:"Lbl", f:parse_Lbl }, -0x0019: { n:"WinProtect", f:parsebool }, -0x001a: { n:"VerticalPageBreaks" }, -0x001b: { n:"HorizontalPageBreaks" }, -0x001c: { n:"Note", f:parse_Note }, -0x001d: { n:"Selection" }, -0x0022: { n:"Date1904", f:parsebool }, -0x0023: { n:"ExternName", f:parse_ExternName }, -0x0026: { n:"LeftMargin", f:parse_Xnum }, -0x0027: { n:"RightMargin", f:parse_Xnum }, -0x0028: { n:"TopMargin", f:parse_Xnum }, -0x0029: { n:"BottomMargin", f:parse_Xnum }, -0x002a: { n:"PrintRowCol", f:parsebool }, -0x002b: { n:"PrintGrid", f:parsebool }, -0x002f: { n:"FilePass", f:parse_FilePass }, -0x0031: { n:"Font", f:parse_Font }, -0x0033: { n:"PrintSize", f:parseuint16 }, -0x003c: { n:"Continue" }, -0x003d: { n:"Window1", f:parse_Window1 }, -0x0040: { n:"Backup", f:parsebool }, -0x0041: { n:"Pane", f:parse_Pane }, -0x0042: { n:'CodePage', f:parseuint16 }, -0x004d: { n:"Pls" }, -0x0050: { n:"DCon" }, -0x0051: { n:"DConRef" }, -0x0052: { n:"DConName" }, -0x0055: { n:"DefColWidth", f:parseuint16 }, -0x0059: { n:"XCT" }, -0x005a: { n:"CRN" }, -0x005b: { n:"FileSharing" }, -0x005c: { n:'WriteAccess', f:parse_WriteAccess }, -0x005d: { n:"Obj", f:parse_Obj }, -0x005e: { n:"Uncalced" }, -0x005f: { n:"CalcSaveRecalc", f:parsebool }, -0x0060: { n:"Template" }, -0x0061: { n:"Intl" }, -0x0063: { n:"ObjProtect", f:parsebool }, -0x007d: { n:"ColInfo", f:parse_ColInfo }, -0x0080: { n:"Guts", f:parse_Guts }, -0x0081: { n:"WsBool", f:parse_WsBool }, -0x0082: { n:"GridSet", f:parseuint16 }, -0x0083: { n:"HCenter", f:parsebool }, -0x0084: { n:"VCenter", f:parsebool }, -0x0085: { n:'BoundSheet8', f:parse_BoundSheet8 }, -0x0086: { n:"WriteProtect" }, -0x008c: { n:"Country", f:parse_Country }, -0x008d: { n:"HideObj", f:parseuint16 }, -0x0090: { n:"Sort" }, -0x0092: { n:"Palette", f:parse_Palette }, -0x0097: { n:"Sync" }, -0x0098: { n:"LPr" }, -0x0099: { n:"DxGCol" }, -0x009a: { n:"FnGroupName" }, -0x009b: { n:"FilterMode" }, -0x009c: { n:"BuiltInFnGroupCount", f:parseuint16 }, -0x009d: { n:"AutoFilterInfo" }, -0x009e: { n:"AutoFilter" }, -0x00a0: { n:"Scl", f:parse_Scl }, -0x00a1: { n:"Setup", f:parse_Setup }, -0x00ae: { n:"ScenMan" }, -0x00af: { n:"SCENARIO" }, -0x00b0: { n:"SxView" }, -0x00b1: { n:"Sxvd" }, -0x00b2: { n:"SXVI" }, -0x00b4: { n:"SxIvd" }, -0x00b5: { n:"SXLI" }, -0x00b6: { n:"SXPI" }, -0x00b8: { n:"DocRoute" }, -0x00b9: { n:"RecipName" }, -0x00bd: { n:"MulRk", f:parse_MulRk }, -0x00be: { n:"MulBlank", f:parse_MulBlank }, -0x00c1: { n:'Mms', f:parsenoop2 }, -0x00c5: { n:"SXDI" }, -0x00c6: { n:"SXDB" }, -0x00c7: { n:"SXFDB" }, -0x00c8: { n:"SXDBB" }, -0x00c9: { n:"SXNum" }, -0x00ca: { n:"SxBool", f:parsebool }, -0x00cb: { n:"SxErr" }, -0x00cc: { n:"SXInt" }, -0x00cd: { n:"SXString" }, -0x00ce: { n:"SXDtr" }, -0x00cf: { n:"SxNil" }, -0x00d0: { n:"SXTbl" }, -0x00d1: { n:"SXTBRGIITM" }, -0x00d2: { n:"SxTbpg" }, -0x00d3: { n:"ObProj" }, -0x00d5: { n:"SXStreamID" }, -0x00d7: { n:"DBCell" }, -0x00d8: { n:"SXRng" }, -0x00d9: { n:"SxIsxoper" }, -0x00da: { n:"BookBool", f:parseuint16 }, -0x00dc: { n:"DbOrParamQry" }, -0x00dd: { n:"ScenarioProtect", f:parsebool }, -0x00de: { n:"OleObjectSize" }, -0x00e0: { n:"XF", f:parse_XF }, -0x00e1: { n:'InterfaceHdr', f:parse_InterfaceHdr }, -0x00e2: { n:'InterfaceEnd', f:parsenoop2 }, -0x00e3: { n:"SXVS" }, -0x00e5: { n:"MergeCells", f:parse_MergeCells }, -0x00e9: { n:"BkHim" }, -0x00eb: { n:"MsoDrawingGroup" }, -0x00ec: { n:"MsoDrawing" }, -0x00ed: { n:"MsoDrawingSelection" }, -0x00ef: { n:"PhoneticInfo" }, -0x00f0: { n:"SxRule" }, -0x00f1: { n:"SXEx" }, -0x00f2: { n:"SxFilt" }, -0x00f4: { n:"SxDXF" }, -0x00f5: { n:"SxItm" }, -0x00f6: { n:"SxName" }, -0x00f7: { n:"SxSelect" }, -0x00f8: { n:"SXPair" }, -0x00f9: { n:"SxFmla" }, -0x00fb: { n:"SxFormat" }, -0x00fc: { n:"SST", f:parse_SST }, -0x00fd: { n:"LabelSst", f:parse_LabelSst }, -0x00ff: { n:"ExtSST", f:parse_ExtSST }, -0x0100: { n:"SXVDEx" }, -0x0103: { n:"SXFormula" }, -0x0122: { n:"SXDBEx" }, -0x0137: { n:"RRDInsDel" }, -0x0138: { n:"RRDHead" }, -0x013b: { n:"RRDChgCell" }, -0x013d: { n:"RRTabId", f:parseuint16a }, -0x013e: { n:"RRDRenSheet" }, -0x013f: { n:"RRSort" }, -0x0140: { n:"RRDMove" }, -0x014a: { n:"RRFormat" }, -0x014b: { n:"RRAutoFmt" }, -0x014d: { n:"RRInsertSh" }, -0x014e: { n:"RRDMoveBegin" }, -0x014f: { n:"RRDMoveEnd" }, -0x0150: { n:"RRDInsDelBegin" }, -0x0151: { n:"RRDInsDelEnd" }, -0x0152: { n:"RRDConflict" }, -0x0153: { n:"RRDDefName" }, -0x0154: { n:"RRDRstEtxp" }, -0x015f: { n:"LRng" }, -0x0160: { n:"UsesELFs", f:parsebool }, -0x0161: { n:"DSF", f:parsenoop2 }, -0x0191: { n:"CUsr" }, -0x0192: { n:"CbUsr" }, -0x0193: { n:"UsrInfo" }, -0x0194: { n:"UsrExcl" }, -0x0195: { n:"FileLock" }, -0x0196: { n:"RRDInfo" }, -0x0197: { n:"BCUsrs" }, -0x0198: { n:"UsrChk" }, -0x01a9: { n:"UserBView" }, -0x01aa: { n:"UserSViewBegin" }, -0x01ab: { n:"UserSViewEnd" }, -0x01ac: { n:"RRDUserView" }, -0x01ad: { n:"Qsi" }, -0x01ae: { n:"SupBook", f:parse_SupBook }, -0x01af: { n:"Prot4Rev", f:parsebool }, -0x01b0: { n:"CondFmt" }, -0x01b1: { n:"CF" }, -0x01b2: { n:"DVal" }, -0x01b5: { n:"DConBin" }, -0x01b6: { n:"TxO", f:parse_TxO }, -0x01b7: { n:"RefreshAll", f:parsebool }, -0x01b8: { n:"HLink", f:parse_HLink }, -0x01b9: { n:"Lel" }, -0x01ba: { n:"CodeName", f:parse_XLUnicodeString }, -0x01bb: { n:"SXFDBType" }, -0x01bc: { n:"Prot4RevPass", f:parseuint16 }, -0x01bd: { n:"ObNoMacros" }, -0x01be: { n:"Dv" }, -0x01c0: { n:"Excel9File", f:parsenoop2 }, -0x01c1: { n:"RecalcId", f:parse_RecalcId, r:2}, -0x01c2: { n:"EntExU2", f:parsenoop2 }, -0x0200: { n:"Dimensions", f:parse_Dimensions }, -0x0201: { n:"Blank", f:parse_Blank }, -0x0203: { n:"Number", f:parse_Number }, -0x0204: { n:"Label", f:parse_Label }, -0x0205: { n:"BoolErr", f:parse_BoolErr }, -0x0207: { n:"String", f:parse_String }, -0x0208: { n:'Row', f:parse_Row }, -0x020b: { n:"Index" }, -0x0221: { n:"Array", f:parse_Array }, -0x0225: { n:"DefaultRowHeight", f:parse_DefaultRowHeight }, -0x0236: { n:"Table" }, -0x023e: { n:"Window2", f:parse_Window2 }, -0x027e: { n:"RK", f:parse_RK }, -0x0293: { n:"Style" }, -0x0418: { n:"BigName" }, -0x041e: { n:"Format", f:parse_Format }, -0x043c: { n:"ContinueBigName" }, -0x04bc: { n:"ShrFmla", f:parse_ShrFmla }, -0x0800: { n:"HLinkTooltip", f:parse_HLinkTooltip }, -0x0801: { n:"WebPub" }, -0x0802: { n:"QsiSXTag" }, -0x0803: { n:"DBQueryExt" }, -0x0804: { n:"ExtString" }, -0x0805: { n:"TxtQry" }, -0x0806: { n:"Qsir" }, -0x0807: { n:"Qsif" }, -0x0808: { n:"RRDTQSIF" }, -0x0809: { n:'BOF', f:parse_BOF }, -0x080a: { n:"OleDbConn" }, -0x080b: { n:"WOpt" }, -0x080c: { n:"SXViewEx" }, -0x080d: { n:"SXTH" }, -0x080e: { n:"SXPIEx" }, -0x080f: { n:"SXVDTEx" }, -0x0810: { n:"SXViewEx9" }, -0x0812: { n:"ContinueFrt" }, -0x0813: { n:"RealTimeData" }, -0x0850: { n:"ChartFrtInfo" }, -0x0851: { n:"FrtWrapper" }, -0x0852: { n:"StartBlock" }, -0x0853: { n:"EndBlock" }, -0x0854: { n:"StartObject" }, -0x0855: { n:"EndObject" }, -0x0856: { n:"CatLab" }, -0x0857: { n:"YMult" }, -0x0858: { n:"SXViewLink" }, -0x0859: { n:"PivotChartBits" }, -0x085a: { n:"FrtFontList" }, -0x0862: { n:"SheetExt" }, -0x0863: { n:"BookExt", r:12}, -0x0864: { n:"SXAddl" }, -0x0865: { n:"CrErr" }, -0x0866: { n:"HFPicture" }, -0x0867: { n:'FeatHdr', f:parsenoop2 }, -0x0868: { n:"Feat" }, -0x086a: { n:"DataLabExt" }, -0x086b: { n:"DataLabExtContents" }, -0x086c: { n:"CellWatch" }, -0x0871: { n:"FeatHdr11" }, -0x0872: { n:"Feature11" }, -0x0874: { n:"DropDownObjIds" }, -0x0875: { n:"ContinueFrt11" }, -0x0876: { n:"DConn" }, -0x0877: { n:"List12" }, -0x0878: { n:"Feature12" }, -0x0879: { n:"CondFmt12" }, -0x087a: { n:"CF12" }, -0x087b: { n:"CFEx" }, -0x087c: { n:"XFCRC", f:parse_XFCRC, r:12 }, -0x087d: { n:"XFExt", f:parse_XFExt, r:12 }, -0x087e: { n:"AutoFilter12" }, -0x087f: { n:"ContinueFrt12" }, -0x0884: { n:"MDTInfo" }, -0x0885: { n:"MDXStr" }, -0x0886: { n:"MDXTuple" }, -0x0887: { n:"MDXSet" }, -0x0888: { n:"MDXProp" }, -0x0889: { n:"MDXKPI" }, -0x088a: { n:"MDB" }, -0x088b: { n:"PLV" }, -0x088c: { n:"Compat12", f:parsebool, r:12 }, -0x088d: { n:"DXF" }, -0x088e: { n:"TableStyles", r:12 }, -0x088f: { n:"TableStyle" }, -0x0890: { n:"TableStyleElement" }, -0x0892: { n:"StyleExt" }, -0x0893: { n:"NamePublish" }, -0x0894: { n:"NameCmt", f:parse_NameCmt, r:12 }, -0x0895: { n:"SortData" }, -0x0896: { n:"Theme", f:parse_Theme, r:12 }, -0x0897: { n:"GUIDTypeLib" }, -0x0898: { n:"FnGrp12" }, -0x0899: { n:"NameFnGrp12" }, -0x089a: { n:"MTRSettings", f:parse_MTRSettings, r:12 }, -0x089b: { n:"CompressPictures", f:parsenoop2 }, -0x089c: { n:"HeaderFooter" }, -0x089d: { n:"CrtLayout12" }, -0x089e: { n:"CrtMlFrt" }, -0x089f: { n:"CrtMlFrtContinue" }, -0x08a3: { n:"ForceFullCalculation", f:parse_ForceFullCalculation }, -0x08a4: { n:"ShapePropsStream" }, -0x08a5: { n:"TextPropsStream" }, -0x08a6: { n:"RichTextStream" }, -0x08a7: { n:"CrtLayout12A" }, -0x1001: { n:"Units" }, -0x1002: { n:"Chart" }, -0x1003: { n:"Series" }, -0x1006: { n:"DataFormat" }, -0x1007: { n:"LineFormat" }, -0x1009: { n:"MarkerFormat" }, -0x100a: { n:"AreaFormat" }, -0x100b: { n:"PieFormat" }, -0x100c: { n:"AttachedLabel" }, -0x100d: { n:"SeriesText" }, -0x1014: { n:"ChartFormat" }, -0x1015: { n:"Legend" }, -0x1016: { n:"SeriesList" }, -0x1017: { n:"Bar" }, -0x1018: { n:"Line" }, -0x1019: { n:"Pie" }, -0x101a: { n:"Area" }, -0x101b: { n:"Scatter" }, -0x101c: { n:"CrtLine" }, -0x101d: { n:"Axis" }, -0x101e: { n:"Tick" }, -0x101f: { n:"ValueRange" }, -0x1020: { n:"CatSerRange" }, -0x1021: { n:"AxisLine" }, -0x1022: { n:"CrtLink" }, -0x1024: { n:"DefaultText" }, -0x1025: { n:"Text" }, -0x1026: { n:"FontX", f:parseuint16 }, -0x1027: { n:"ObjectLink" }, -0x1032: { n:"Frame" }, -0x1033: { n:"Begin" }, -0x1034: { n:"End" }, -0x1035: { n:"PlotArea" }, -0x103a: { n:"Chart3d" }, -0x103c: { n:"PicF" }, -0x103d: { n:"DropBar" }, -0x103e: { n:"Radar" }, -0x103f: { n:"Surf" }, -0x1040: { n:"RadarArea" }, -0x1041: { n:"AxisParent" }, -0x1043: { n:"LegendException" }, -0x1044: { n:"ShtProps", f:parse_ShtProps }, -0x1045: { n:"SerToCrt" }, -0x1046: { n:"AxesUsed" }, -0x1048: { n:"SBaseRef" }, -0x104a: { n:"SerParent" }, -0x104b: { n:"SerAuxTrend" }, -0x104e: { n:"IFmtRecord" }, -0x104f: { n:"Pos" }, -0x1050: { n:"AlRuns" }, -0x1051: { n:"BRAI" }, -0x105b: { n:"SerAuxErrBar" }, -0x105c: { n:"ClrtClient", f:parse_ClrtClient }, -0x105d: { n:"SerFmt" }, -0x105f: { n:"Chart3DBarShape" }, -0x1060: { n:"Fbi" }, -0x1061: { n:"BopPop" }, -0x1062: { n:"AxcExt" }, -0x1063: { n:"Dat" }, -0x1064: { n:"PlotGrowth" }, -0x1065: { n:"SIIndex" }, -0x1066: { n:"GelFrame" }, -0x1067: { n:"BopPopCustom" }, -0x1068: { n:"Fbi2" }, - -0x0000: { n:"Dimensions", f:parse_Dimensions }, -0x0001: { n:"BIFF2BLANK" }, -0x0002: { n:"BIFF2INT", f:parse_BIFF2INT }, -0x0003: { n:"BIFF2NUM", f:parse_BIFF2NUM }, -0x0004: { n:"BIFF2STR", f:parse_BIFF2STR }, -0x0005: { n:"BoolErr", f:parse_BoolErr }, -0x0007: { n:"String", f:parse_BIFF2STRING }, -0x0008: { n:"BIFF2ROW" }, -0x0009: { n:'BOF', f:parse_BOF }, -0x000b: { n:"Index" }, -0x0016: { n:"ExternCount", f:parseuint16 }, -0x001e: { n:"BIFF2FORMAT", f:parse_BIFF2Format }, -0x001f: { n:"BIFF2FMTCNT" }, /* 16-bit cnt of BIFF2FORMAT records */ -0x0020: { n:"BIFF2COLINFO" }, -0x0021: { n:"Array", f:parse_Array }, -0x0024: { n:"COLWIDTH" }, -0x0025: { n:"DefaultRowHeight", f:parse_DefaultRowHeight }, - // 0x2c ?? - // 0x2d ?? - // 0x2e ?? - // 0x30 FONTCOUNT: number of fonts -0x0032: { n:"BIFF2FONTXTRA", f:parse_BIFF2FONTXTRA }, - // 0x35: INFOOPTS - // 0x36: TABLE (BIFF2 only) - // 0x37: TABLE2 (BIFF2 only) - // 0x38: WNDESK - // 0x39 ?? - // 0x3a: BEGINPREF - // 0x3b: ENDPREF -0x003e: { n:"BIFF2WINDOW2" }, - // 0x3f ?? - // 0x46: SHOWSCROLL - // 0x47: SHOWFORMULA - // 0x48: STATUSBAR - // 0x49: SHORTMENUS - // 0x4A: - // 0x4B: - // 0x4C: - // 0x4E: - // 0x4F: - // 0x58: TOOLBAR (BIFF3) - - /* - - - */ -0x0034: { n:"DDEObjName" }, -0x0043: { n:"BIFF2XF" }, -0x0044: { n:"BIFF2XFINDEX", f:parseuint16 }, -0x0045: { n:"BIFF2FONTCLR" }, -0x0056: { n:"BIFF4FMTCNT" }, /* 16-bit cnt, similar to BIFF2 */ -0x007e: { n:"RK" }, /* Not necessarily same as 0x027e */ -0x007f: { n:"ImData", f:parse_ImData }, -0x0087: { n:"Addin" }, -0x0088: { n:"Edg" }, -0x0089: { n:"Pub" }, - // 0x8A - // 0x8B LH: alternate menu key flag (BIFF3/4) - // 0x8E - // 0x8F -0x0091: { n:"Sub" }, - // 0x93 STYLE -0x0094: { n:"LHRecord" }, -0x0095: { n:"LHNGraph" }, -0x0096: { n:"Sound" }, - // 0xA2 FNPROTO: function prototypes (BIFF4) - // 0xA3 - // 0xA8 -0x00a9: { n:"CoordList" }, -0x00ab: { n:"GCW" }, -0x00bc: { n:"ShrFmla" }, /* Not necessarily same as 0x04bc */ -0x00bf: { n:"ToolbarHdr" }, -0x00c0: { n:"ToolbarEnd" }, -0x00c2: { n:"AddMenu" }, -0x00c3: { n:"DelMenu" }, -0x00d6: { n:"RString", f:parse_RString }, -0x00df: { n:"UDDesc" }, -0x00ea: { n:"TabIdConf" }, -0x0162: { n:"XL5Modify" }, -0x01a5: { n:"FileSharing2" }, -0x0206: { n:"Formula", f:parse_Formula }, -0x0209: { n:'BOF', f:parse_BOF }, -0x0218: { n:"Lbl", f:parse_Lbl }, -0x0223: { n:"ExternName", f:parse_ExternName }, -0x0231: { n:"Font" }, -0x0243: { n:"BIFF3XF" }, -0x0406: { n:"Formula", f:parse_Formula }, -0x0409: { n:'BOF', f:parse_BOF }, -0x0443: { n:"BIFF4XF" }, -0x086d: { n:"FeatInfo" }, -0x0873: { n:"FeatInfo11" }, -0x0881: { n:"SXAddl12" }, -0x08c0: { n:"AutoWebPub" }, -0x08c1: { n:"ListObj" }, -0x08c2: { n:"ListField" }, -0x08c3: { n:"ListDV" }, -0x08c4: { n:"ListCondFmt" }, -0x08c5: { n:"ListCF" }, -0x08c6: { n:"FMQry" }, -0x08c7: { n:"FMSQry" }, -0x08c8: { n:"PLV" }, -0x08c9: { n:"LnExt" }, -0x08ca: { n:"MkrExt" }, -0x08cb: { n:"CrtCoopt" }, -0x08d6: { n:"FRTArchId$", r:12 }, - -0x7262: {} -}; - -var XLSRE = evert_key(XLSRecordEnum, 'n'); -function write_biff_rec(ba, type, payload, length) { - var t = typeof type == "number" ? type : (+type || +XLSRE[type]); - if(isNaN(t)) return; - var len = length || (payload||[]).length || 0; - var o = ba.next(4); - o.write_shift(2, t); - o.write_shift(2, len); - if(len > 0 && is_buf(payload)) ba.push(payload); -} - -function write_biff_continue(ba, type, payload, length) { - var len = length || (payload||[]).length || 0; - if(len <= 8224) return write_biff_rec(ba, type, payload, len); - var t = +type || +XLSRE[type]; - if(isNaN(t)) return; - var parts = payload.parts || [], sidx = 0; - var i = 0, w = 0; - while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } - var o = ba.next(4); - o.write_shift(2, t); - o.write_shift(2, w); - ba.push(payload.slice(i, i + w)); - i += w; - while(i < len) { - o = ba.next(4); - o.write_shift(2, 0x3c); // TODO: figure out correct continue type - w = 0; - while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } - o.write_shift(2, w); - ba.push(payload.slice(i, i+w)); i+= w; - } -} - -function write_BIFF2Cell(out, r, c) { - if(!out) out = new_buf(7); - out.write_shift(2, r); - out.write_shift(2, c); - out.write_shift(2, 0); - out.write_shift(1, 0); - return out; -} - -function write_BIFF2BERR(r, c, val, t) { - var out = new_buf(9); - write_BIFF2Cell(out, r, c); - write_Bes(val, t || 'b', out); - return out; -} - -/* TODO: codepage, large strings */ -function write_BIFF2LABEL(r, c, val) { - var out = new_buf(8 + 2*val.length); - write_BIFF2Cell(out, r, c); - out.write_shift(1, val.length); - out.write_shift(val.length, val, 'sbcs'); - return out.l < out.length ? out.slice(0, out.l) : out; -} - -function write_ws_biff2_cell(ba, cell, R, C) { - if(cell.v != null) switch(cell.t) { - case 'd': case 'n': - var v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v; - if((v == (v|0)) && (v >= 0) && (v < 65536)) - write_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v)); - else - write_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v)); - return; - case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return; - /* TODO: codepage, sst */ - case 's': case 'str': - write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||"").slice(0,255))); - return; - } - write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C)); -} - -function write_ws_biff2(ba, ws, idx, opts) { - var dense = Array.isArray(ws); - var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = []; - if(range.e.c > 0xFF || range.e.r > 0x3FFF) { - if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); - range.e.c = Math.min(range.e.c, 0xFF); - range.e.r = Math.min(range.e.c, 0x3FFF); - ref = encode_range(range); - } - for(var R = range.s.r; R <= range.e.r; ++R) { - rr = encode_row(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 cell */ - write_ws_biff2_cell(ba, cell, R, C, opts); - } - } -} - -/* Based on test files */ -function write_biff2_buf(wb, opts) { - var o = opts || {}; - if(DENSE != null && o.dense == null) o.dense = DENSE; - var ba = buf_array(); - var idx = 0; - for(var i=0;i 0xFF || range.e.r >= MAX_ROWS) { - if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); - range.e.c = Math.min(range.e.c, 0xFF); - range.e.r = Math.min(range.e.c, MAX_ROWS-1); - } - - write_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts)); - /* [Uncalced] Index */ - write_biff_rec(ba, "CalcMode", writeuint16(1)); - write_biff_rec(ba, "CalcCount", writeuint16(100)); - write_biff_rec(ba, "CalcRefMode", writebool(true)); - write_biff_rec(ba, "CalcIter", writebool(false)); - write_biff_rec(ba, "CalcDelta", write_Xnum(0.001)); - write_biff_rec(ba, "CalcSaveRecalc", writebool(true)); - write_biff_rec(ba, "PrintRowCol", writebool(false)); - write_biff_rec(ba, "PrintGrid", writebool(false)); - write_biff_rec(ba, "GridSet", writeuint16(1)); - write_biff_rec(ba, "Guts", write_Guts([0,0])); - /* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */ - /* Header (string) */ - /* Footer (string) */ - write_biff_rec(ba, "HCenter", writebool(false)); - write_biff_rec(ba, "VCenter", writebool(false)); - /* ... */ - if(b8) write_ws_cols_biff8(ba, ws["!cols"], ws); - /* ... */ - write_biff_rec(ba, 0x200, write_Dimensions(range, opts)); - /* ... */ - - if(b8) ws['!links'] = []; - for(var R = range.s.r; R <= range.e.r; ++R) { - rr = encode_row(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 cell */ - write_ws_biff8_cell(ba, cell, R, C, opts); - if(b8 && cell.l) ws['!links'].push([ref, cell.l]); - } - } - var cname = _sheet.CodeName || _sheet.name || s; - /* ... */ - if(b8) write_biff_rec(ba, "Window2", write_Window2((_WB.Views||[])[0])); - /* ... */ - if(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, "MergeCells", write_MergeCells(ws['!merges'])); - /* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */ - if(b8) write_ws_biff8_hlinks(ba, ws); - /* [DVAL] */ - write_biff_rec(ba, "CodeName", write_XLUnicodeString(cname, opts)); - /* *WebPub *CellWatch [SheetExt] */ - if(b8) write_FEAT(ba, ws); - /* *FEAT11 *RECORD12 */ - write_biff_rec(ba, "EOF"); - return ba.end(); -} - -/* [MS-XLS] 2.1.7.20.3 */ -function write_biff8_global(wb, bufs, opts) { - var A = buf_array(); - var _WB = ((wb||{}).Workbook||{}); - var _sheets = (_WB.Sheets||[]); - var _wb = _WB.WBProps||{}; - var b8 = opts.biff == 8, b5 = opts.biff == 5; - write_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts)); - if(opts.bookType == "xla") write_biff_rec(A, "Addin"); - write_biff_rec(A, "InterfaceHdr", b8 ? writeuint16(0x04b0) : null); - write_biff_rec(A, "Mms", writezeroes(2)); - if(b5) write_biff_rec(A, "ToolbarHdr"); - if(b5) write_biff_rec(A, "ToolbarEnd"); - write_biff_rec(A, "InterfaceEnd"); - write_biff_rec(A, "WriteAccess", write_WriteAccess("SheetJS", opts)); - /* [FileSharing] */ - write_biff_rec(A, "CodePage", writeuint16(b8 ? 0x04b0 : 0x04E4)); - /* *2047 Lel */ - if(b8) write_biff_rec(A, "DSF", writeuint16(0)); - if(b8) write_biff_rec(A, "Excel9File"); - write_biff_rec(A, "RRTabId", write_RRTabId(wb.SheetNames.length)); - if(b8 && wb.vbaraw) write_biff_rec(A, "ObProj"); - /* [ObNoMacros] */ - if(b8 && wb.vbaraw) { - var cname = _wb.CodeName || "ThisWorkbook"; - write_biff_rec(A, "CodeName", write_XLUnicodeString(cname, opts)); - } - write_biff_rec(A, "BuiltInFnGroupCount", writeuint16(0x11)); - /* *FnGroupName *FnGrp12 */ - /* *Lbl */ - /* [OleObjectSize] */ - write_biff_rec(A, "WinProtect", writebool(false)); - write_biff_rec(A, "Protect", writebool(false)); - write_biff_rec(A, "Password", writeuint16(0)); - if(b8) write_biff_rec(A, "Prot4Rev", writebool(false)); - if(b8) write_biff_rec(A, "Prot4RevPass", writeuint16(0)); - write_biff_rec(A, "Window1", write_Window1(opts)); - write_biff_rec(A, "Backup", writebool(false)); - write_biff_rec(A, "HideObj", writeuint16(0)); - write_biff_rec(A, "Date1904", writebool(safe1904(wb)=="true")); - write_biff_rec(A, "CalcPrecision", writebool(true)); - if(b8) write_biff_rec(A, "RefreshAll", writebool(false)); - write_biff_rec(A, "BookBool", writeuint16(0)); - /* ... */ - write_FONTS_biff8(A, wb, opts); - write_FMTS_biff8(A, wb.SSF, opts); - write_CELLXFS_biff8(A, opts); - /* ... */ - if(b8) write_biff_rec(A, "UsesELFs", writebool(false)); - var a = A.end(); - - var C = buf_array(); - /* METADATA [MTRSettings] [ForceFullCalculation] */ - if(b8) write_biff_rec(C, "Country", write_Country()); - /* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */ - - /* BIFF8: [SST *Continue] ExtSST */ - if(b8 && opts.Strings) write_biff_continue(C, "SST", write_SST(opts.Strings, opts)); - - /* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */ - write_biff_rec(C, "EOF"); - var c = C.end(); - - var B = buf_array(); - var blen = 0, j = 0; - for(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length; - var start = a.length + blen + c.length; - for(j = 0; j < wb.SheetNames.length; ++j) { - var _sheet = _sheets[j] || ({}); - write_biff_rec(B, "BoundSheet8", write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts)); - start += bufs[j].length; - } - /* 1*BoundSheet8 */ - var b = B.end(); - if(blen != b.length) throw new Error("BS8 " + blen + " != " + b.length); - - var out = []; - if(a.length) out.push(a); - if(b.length) out.push(b); - if(c.length) out.push(c); - return bconcat(out); -} - -/* [MS-XLS] 2.1.7.20 Workbook Stream */ -function write_biff8_buf(wb, opts) { - var o = opts || {}; - var bufs = []; - - if(wb && !wb.SSF) { - wb.SSF = SSF.get_table(); - } - if(wb && wb.SSF) { - make_ssf(SSF); SSF.load_table(wb.SSF); - // $FlowIgnore - o.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0; - o.ssf = wb.SSF; - } - - o.Strings = []; o.Strings.Count = 0; o.Strings.Unique = 0; - fix_write_opts(o); - - o.cellXfs = []; - get_cell_style(o.cellXfs, {}, {revssf:{"General":0}}); - - if(!wb.Props) wb.Props = {}; - - for(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb); - bufs.unshift(write_biff8_global(wb, bufs, o)); - return bconcat(bufs); -} - -function write_biff_buf(wb, opts) { - for(var i = 0; i <= wb.SheetNames.length; ++i) { - var ws = wb.Sheets[wb.SheetNames[i]]; - if(!ws || !ws["!ref"]) continue; - var range = decode_range(ws["!ref"]); - if(range.e.c > 255) { // note: 255 is IV - if(typeof console != "undefined" && console.error) console.error("Worksheet '" + wb.SheetNames[i] + "' extends beyond column IV (255). Data may be lost."); - } - } - - var o = opts || {}; - switch(o.biff || 2) { - case 8: case 5: return write_biff8_buf(wb, opts); - case 4: case 3: case 2: return write_biff2_buf(wb, opts); - } - throw new Error("invalid type " + o.bookType + " for BIFF"); -} -/* note: browser DOM element cannot see mso- style attrs, must parse */ -var HTML_ = (function() { - function html_to_sheet(str, _opts) { - var opts = _opts || {}; - if(DENSE != null && opts.dense == null) opts.dense = DENSE; - var ws = opts.dense ? ([]) : ({}); - str = str.replace(//g, ""); - var mtch = str.match(/"); - var mtch2 = str.match(/<\/table/i); - var i = mtch.index, j = mtch2 && mtch2.index || str.length; - var rows = split_regex(str.slice(i, j), /(:?]*>)/i, ""); - var R = -1, C = 0, RS = 0, CS = 0; - var range = {s:{r:10000000, c:10000000},e:{r:0,c:0}}; - var merges = []; - for(i = 0; i < rows.length; ++i) { - var row = rows[i].trim(); - var hd = row.slice(0,3).toLowerCase(); - if(hd == "/i); - for(j = 0; j < cells.length; ++j) { - var cell = cells[j].trim(); - if(!cell.match(/")) > -1) m = m.slice(cc+1); - for(var midx = 0; midx < merges.length; ++midx) { - var _merge = merges[midx]; - if(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; } - } - var tag = parsexmltag(cell.slice(0, cell.indexOf(">"))); - CS = tag.colspan ? +tag.colspan : 1; - if((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}}); - var _t = tag.t || tag["data-t"] || ""; - /* TODO: generate stub cells */ - if(!m.length) { C += CS; continue; } - m = htmldecode(m); - if(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R; - if(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C; - if(!m.length) continue; - var o = {t:'s', v:m}; - if(opts.raw || !m.trim().length || _t == 's'){} - else if(m === 'TRUE') o = {t:'b', v:true}; - else if(m === 'FALSE') o = {t:'b', v:false}; - else if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)}; - else if(!isNaN(fuzzydate(m).getDate())) { - o = ({t:'d', v:parseDate(m)}); - if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}); - o.z = opts.dateNF || SSF._table[14]; - } - if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; } - else ws[encode_cell({r:R, c:C})] = o; - C += CS; - } - } - ws['!ref'] = encode_range(range); - if(merges.length) ws["!merges"] = merges; - return ws; - } - function html_to_book(str, opts) { - var mtch = str.match(/[\s\S]*?<\/table>/gi); - if(!mtch || mtch.length == 0) throw new Error("Invalid HTML: could not find
"); - if(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts); - var wb = utils.book_new(); - mtch.forEach(function(s, idx) { utils.book_append_sheet(wb, html_to_sheet(s, opts), "Sheet" + (idx+1)); }); - return wb; - } - function make_html_row(ws, r, R, o) { - var M = (ws['!merges'] ||[]); - var oo = []; - for(var C = r.s.c; C <= r.e.c; ++C) { - var RS = 0, CS = 0; - for(var j = 0; j < M.length; ++j) { - if(M[j].s.r > R || M[j].s.c > C) continue; - if(M[j].e.r < R || M[j].e.c < C) continue; - if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } - RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; - } - if(RS < 0) continue; - var coord = encode_cell({r:R,c:C}); - var cell = o.dense ? (ws[R]||[])[C] : ws[coord]; - /* TODO: html entities */ - var w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || "")) || ""; - var sp = ({}); - if(RS > 1) sp.rowspan = RS; - if(CS > 1) sp.colspan = CS; - if(o.editable) w = '' + w + ''; - else if(cell) { - sp["data-t"] = cell && cell.t || 'z'; - if(cell.v != null) sp["data-v"] = cell.v; - if(cell.z != null) sp["data-z"] = cell.z; - if(cell.l && (cell.l.Target || "#").charAt(0) != "#") w = '' + w + ''; - } - sp.id = (o.id || "sjs") + "-" + coord; - oo.push(writextag('td', w, sp)); - } - var preamble = ""; - return preamble + oo.join("") + ""; - } - function make_html_preamble(ws, R, o) { - var out = []; - return out.join("") + ''; - } - var _BEGIN = 'SheetJS Table Export'; - var _END = ''; - function sheet_to_html(ws, opts/*, wb:?Workbook*/) { - var o = opts || {}; - var header = o.header != null ? o.header : _BEGIN; - var footer = o.footer != null ? o.footer : _END; - var out = [header]; - var r = decode_range(ws['!ref']); - o.dense = Array.isArray(ws); - out.push(make_html_preamble(ws, r, o)); - for(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o)); - out.push("
" + footer); - return out.join(""); - - } - return { - to_workbook: html_to_book, - to_sheet: html_to_sheet, - _row: make_html_row, - BEGIN: _BEGIN, - END: _END, - _preamble: make_html_preamble, - from_sheet: sheet_to_html - }; -})(); - -function sheet_add_dom(ws, table, _opts) { - var opts = _opts || {}; - if(DENSE != null) opts.dense = DENSE; - var or_R = 0, or_C = 0; - if(opts.origin != null) { - if(typeof opts.origin == 'number') or_R = opts.origin; - else { - var _origin = typeof opts.origin == "string" ? decode_cell(opts.origin) : opts.origin; - or_R = _origin.r; or_C = _origin.c; - } - } - - var rows = table.getElementsByTagName('tr'); - var sheetRows = Math.min(opts.sheetRows||10000000, rows.length); - var range = {s:{r:0,c:0},e:{r:or_R,c:or_C}}; - if(ws["!ref"]) { - var _range = decode_range(ws["!ref"]); - range.s.r = Math.min(range.s.r, _range.s.r); - range.s.c = Math.min(range.s.c, _range.s.c); - range.e.r = Math.max(range.e.r, _range.e.r); - range.e.c = Math.max(range.e.c, _range.e.c); - if(or_R == -1) range.e.r = or_R = _range.e.r + 1; - } - var merges = [], midx = 0; - var rowinfo = ws["!rows"] || (ws["!rows"] = []); - var _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0; - if(!ws["!cols"]) ws['!cols'] = []; - for(; _R < rows.length && R < sheetRows; ++_R) { - var row = rows[_R]; - if (is_dom_element_hidden(row)) { - if (opts.display) continue; - rowinfo[R] = {hidden: true}; - } - var elts = (row.children); - for(_C = C = 0; _C < elts.length; ++_C) { - var elt = elts[_C]; - if (opts.display && is_dom_element_hidden(elt)) continue; - var v = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML); - var z = elt.getAttribute('data-z') || elt.getAttribute('z'); - for(midx = 0; midx < merges.length; ++midx) { - var m = merges[midx]; - if(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; } - } - /* TODO: figure out how to extract nonstandard mso- style */ - CS = +elt.getAttribute("colspan") || 1; - if( ((RS = (+elt.getAttribute("rowspan") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}}); - var o = {t:'s', v:v}; - var _t = elt.getAttribute("data-t") || elt.getAttribute("t") || ""; - if(v != null) { - if(v.length == 0) o.t = _t || 'z'; - else if(opts.raw || v.trim().length == 0 || _t == "s"){} - else if(v === 'TRUE') o = {t:'b', v:true}; - else if(v === 'FALSE') o = {t:'b', v:false}; - else if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)}; - else if(!isNaN(fuzzydate(v).getDate())) { - o = ({t:'d', v:parseDate(v)}); - if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}); - o.z = opts.dateNF || SSF._table[14]; - } - } - if(o.z === undefined && z != null) o.z = z; - /* The first link is used. Links are assumed to be fully specified. - * TODO: The right way to process relative links is to make a new */ - var l = "", Aelts = elt.getElementsByTagName("A"); - if(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti) if(Aelts[Aelti].hasAttribute("href")) { - l = Aelts[Aelti].getAttribute("href"); if(l.charAt(0) != "#") break; - } - if(l && l.charAt(0) != "#") o.l = ({ Target: l }); - if(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; } - else ws[encode_cell({c:C + or_C, r:R + or_R})] = o; - if(range.e.c < C + or_C) range.e.c = C + or_C; - C += CS; - } - ++R; - } - if(merges.length) ws['!merges'] = (ws["!merges"] || []).concat(merges); - range.e.r = Math.max(range.e.r, R - 1 + or_R); - ws['!ref'] = encode_range(range); - if(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance - return ws; -} - -function parse_dom_table(table, _opts) { - var opts = _opts || {}; - var ws = opts.dense ? ([]) : ({}); - return sheet_add_dom(ws, table, _opts); -} - -function table_to_book(table, opts) { - return sheet_to_workbook(parse_dom_table(table, opts), opts); -} - -function is_dom_element_hidden(element) { - var display = ''; - var get_computed_style = get_get_computed_style_function(element); - if(get_computed_style) display = get_computed_style(element).getPropertyValue('display'); - if(!display) display = element.style && element.style.display; - return display === 'none'; -} - -/* global getComputedStyle */ -function get_get_computed_style_function(element) { - // The proper getComputedStyle implementation is the one defined in the element window - if(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle; - // If it is not available, try to get one from the global namespace - if(typeof getComputedStyle === 'function') return getComputedStyle; - return null; -} -/* OpenDocument */ -var parse_content_xml = (function() { - - var parse_text_p = function(text) { - /* 6.1.2 White Space Characters */ - var fixed = text - .replace(/[\t\r\n]/g, " ").trim().replace(/ +/g, " ") - .replace(//g," ") - .replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(" "); }) - .replace(/]*\/>/g,"\t") - .replace(//g,"\n"); - var v = unescapexml(fixed.replace(/<[^>]*>/g,"")); - - return [v]; - }; - - var number_formats = { - /* ods name: [short ssf fmt, long ssf fmt] */ - day: ["d", "dd"], - month: ["m", "mm"], - year: ["y", "yy"], - hours: ["h", "hh"], - minutes: ["m", "mm"], - seconds: ["s", "ss"], - "am-pm": ["A/P", "AM/PM"], - "day-of-week": ["ddd", "dddd"], - era: ["e", "ee"], - /* there is no native representation of LO "Q" format */ - quarter: ["\\Qm", "m\\\"th quarter\""] - }; - - return function pcx(d, _opts) { - var opts = _opts || {}; - if(DENSE != null && opts.dense == null) opts.dense = DENSE; - var str = xlml_normalize(d); - var state = [], tmp; - var tag; - var NFtag = {name:""}, NF = "", pidx = 0; - var sheetag; - var rowtag; - var Sheets = {}, SheetNames = []; - var ws = opts.dense ? ([]) : ({}); - var Rn, q; - var ctag = ({value:""}); - var textp = "", textpidx = 0, textptag; - var textR = []; - var R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}}; - var row_ol = 0; - var number_format_map = {}; - var merges = [], mrange = {}, mR = 0, mC = 0; - var rowinfo = [], rowpeat = 1, colpeat = 1; - var arrayf = []; - var WB = {Names:[]}; - var atag = ({}); - var _Ref = ["", ""]; - var comments = [], comment = ({}); - var creator = "", creatoridx = 0; - var isstub = false, intable = false; - var i = 0; - xlmlregex.lastIndex = 0; - str = str.replace(//mg,"").replace(//gm,""); - while((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,""))) { - - case 'table': case '工作表': // 9.1.2 - if(Rn[1]==='/') { - if(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range); - else ws['!ref'] = "A1:A1"; - if(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) { - ws['!fullref'] = ws['!ref']; - range.e.r = opts.sheetRows - 1; - ws['!ref'] = encode_range(range); - } - if(merges.length) ws['!merges'] = merges; - if(rowinfo.length) ws["!rows"] = rowinfo; - sheetag.name = sheetag['名称'] || sheetag.name; - if(typeof JSON !== 'undefined') JSON.stringify(sheetag); - SheetNames.push(sheetag.name); - Sheets[sheetag.name] = ws; - intable = false; - } - else if(Rn[0].charAt(Rn[0].length-2) !== '/') { - sheetag = parsexmltag(Rn[0], false); - R = C = -1; - range.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0; - ws = opts.dense ? ([]) : ({}); merges = []; - rowinfo = []; - intable = true; - } - break; - - case 'table-row-group': // 9.1.9 - if(Rn[1] === "/") --row_ol; else ++row_ol; - break; - case 'table-row': case '行': // 9.1.3 - if(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; } - rowtag = parsexmltag(Rn[0], false); - if(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0; - rowpeat = +rowtag['number-rows-repeated'] || 1; - /* TODO: remove magic */ - if(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol}; - C = -1; break; - case 'covered-table-cell': // 9.1.5 - if(Rn[1] !== '/') ++C; - if(opts.sheetStubs) { - if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; } - else ws[encode_cell({r:R,c:C})] = {t:'z'}; - } - textp = ""; textR = []; - break; /* stub */ - case 'table-cell': case '数据': - if(Rn[0].charAt(Rn[0].length-2) === '/') { - ++C; - ctag = parsexmltag(Rn[0], false); - colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); - q = ({t:'z', v:null}); - if(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula)); - if((ctag['数据类型'] || ctag['value-type']) == "string") { - q.t = "s"; q.v = unescapexml(ctag['string-value'] || ""); - if(opts.dense) { - if(!ws[R]) ws[R] = []; - ws[R][C] = q; - } else { - ws[encode_cell({r:R,c:C})] = q; - } - } - C+= colpeat-1; - } else if(Rn[1]!=='/') { - ++C; - textp = ""; textpidx = 0; textR = []; - colpeat = 1; - var rptR = rowpeat ? R + rowpeat - 1 : R; - if(C > range.e.c) range.e.c = C; - if(C < range.s.c) range.s.c = C; - if(R < range.s.r) range.s.r = R; - if(rptR > range.e.r) range.e.r = rptR; - ctag = parsexmltag(Rn[0], false); - comments = []; comment = ({}); - q = ({t:ctag['数据类型'] || ctag['value-type'], v:null}); - if(opts.cellFormula) { - if(ctag.formula) ctag.formula = unescapexml(ctag.formula); - if(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) { - mR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0; - mC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0; - mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; - q.F = encode_range(mrange); - arrayf.push([mrange, q.F]); - } - if(ctag.formula) q.f = ods_to_csf_formula(ctag.formula); - else for(i = 0; i < arrayf.length; ++i) - if(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r) - if(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c) - q.F = arrayf[i][1]; - } - if(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) { - mR = parseInt(ctag['number-rows-spanned'],10) || 0; - mC = parseInt(ctag['number-columns-spanned'],10) || 0; - mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; - merges.push(mrange); - } - - /* 19.675.2 table:number-columns-repeated */ - if(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10); - - /* 19.385 office:value-type */ - switch(q.t) { - case 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break; - case 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break; - case 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break; - case 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break; - case 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']); - if(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); } - q.z = 'm/d/yy'; break; - case 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400; - if(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); } - q.z = 'HH:MM:SS'; break; - case 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break; - default: - if(q.t === 'string' || q.t === 'text' || !q.t) { - q.t = 's'; - if(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; } - } else throw new Error('Unsupported value type ' + q.t); - } - } else { - isstub = false; - if(q.t === 's') { - q.v = textp || ''; - if(textR.length) q.R = textR; - isstub = textpidx == 0; - } - if(atag.Target) q.l = atag; - if(comments.length > 0) { q.c = comments; comments = []; } - if(textp && opts.cellText !== false) q.w = textp; - if(isstub) { q.t = "z"; delete q.v; } - if(!isstub || opts.sheetStubs) { - if(!(opts.sheetRows && opts.sheetRows <= R)) { - for(var rpt = 0; rpt < rowpeat; ++rpt) { - colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); - if(opts.dense) { - if(!ws[R + rpt]) ws[R + rpt] = []; - ws[R + rpt][C] = rpt == 0 ? q : dup(q); - while(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q); - } else { - ws[encode_cell({r:R + rpt,c:C})] = q; - while(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q); - } - if(range.e.c <= C) range.e.c = C; - } - } - } - colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); - C += colpeat-1; colpeat = 0; - q = {}; - textp = ""; textR = []; - } - atag = ({}); - break; // 9.1.4 - - /* pure state */ - case 'document': // TODO: is the root for FODS - case 'document-content': case '电子表格文档': // 3.1.3.2 - case 'spreadsheet': case '主体': // 3.7 - case 'scripts': // 3.12 - case 'styles': // TODO - case 'font-face-decls': // 3.14 - case 'master-styles': // 3.15.4 -- relevant for FODS - if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} - else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); - break; - - case 'annotation': // 14.1 - if(Rn[1]==='/'){ - if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; - comment.t = textp; - if(textR.length) comment.R = textR; - comment.a = creator; - comments.push(comment); - } - else if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);} - creator = ""; creatoridx = 0; - textp = ""; textpidx = 0; textR = []; - break; - - case 'creator': // 4.3.2.7 - if(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); } - else creatoridx = Rn.index + Rn[0].length; - break; - - /* ignore state */ - case 'meta': case '元数据': // TODO: FODS/UOF - case 'settings': // TODO: - case 'config-item-set': // TODO: - case 'config-item-map-indexed': // TODO: - case 'config-item-map-entry': // TODO: - case 'config-item-map-named': // TODO: - case 'shapes': // 9.2.8 - case 'frame': // 10.4.2 - case 'text-box': // 10.4.3 - case 'image': // 10.4.4 - case 'data-pilot-tables': // 9.6.2 - case 'list-style': // 16.30 - case 'form': // 13.13 - case 'dde-links': // 9.8 - case 'event-listeners': // TODO - case 'chart': // TODO - if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} - else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]); - textp = ""; textpidx = 0; textR = []; - break; - - case 'scientific-number': // TODO: - break; - case 'currency-symbol': // TODO: - break; - case 'currency-style': // TODO: - break; - case 'number-style': // 16.27.2 - case 'percentage-style': // 16.27.9 - case 'date-style': // 16.27.10 - case 'time-style': // 16.27.18 - if(Rn[1]==='/'){ - number_format_map[NFtag.name] = NF; - if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; - } else if(Rn[0].charAt(Rn[0].length-2) !== '/') { - NF = ""; - NFtag = parsexmltag(Rn[0], false); - state.push([Rn[3], true]); - } break; - - case 'script': break; // 3.13 - case 'libraries': break; // TODO: - case 'automatic-styles': break; // 3.15.3 - - case 'default-style': // TODO: - case 'page-layout': break; // TODO: - case 'style': // 16.2 - break; - case 'map': break; // 16.3 - case 'font-face': break; // 16.21 - - case 'paragraph-properties': break; // 17.6 - case 'table-properties': break; // 17.15 - case 'table-column-properties': break; // 17.16 - case 'table-row-properties': break; // 17.17 - case 'table-cell-properties': break; // 17.18 - - case 'number': // 16.27.3 - switch(state[state.length-1][0]) { - case 'time-style': - case 'date-style': - tag = parsexmltag(Rn[0], false); - NF += number_formats[Rn[3]][tag.style==='long'?1:0]; break; - } break; - - case 'fraction': break; // TODO 16.27.6 - - case 'day': // 16.27.11 - case 'month': // 16.27.12 - case 'year': // 16.27.13 - case 'era': // 16.27.14 - case 'day-of-week': // 16.27.15 - case 'week-of-year': // 16.27.16 - case 'quarter': // 16.27.17 - case 'hours': // 16.27.19 - case 'minutes': // 16.27.20 - case 'seconds': // 16.27.21 - case 'am-pm': // 16.27.22 - switch(state[state.length-1][0]) { - case 'time-style': - case 'date-style': - tag = parsexmltag(Rn[0], false); - NF += number_formats[Rn[3]][tag.style==='long'?1:0]; break; - } break; - - case 'boolean-style': break; // 16.27.23 - case 'boolean': break; // 16.27.24 - case 'text-style': break; // 16.27.25 - case 'text': // 16.27.26 - if(Rn[0].slice(-2) === "/>") break; - else if(Rn[1]==="/") switch(state[state.length-1][0]) { - case 'number-style': - case 'date-style': - case 'time-style': - NF += str.slice(pidx, Rn.index); - break; - } - else pidx = Rn.index + Rn[0].length; - break; - - case 'named-range': // 9.4.12 - tag = parsexmltag(Rn[0], false); - _Ref = ods_to_csf_3D(tag['cell-range-address']); - var nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}); - if(intable) nrange.Sheet = SheetNames.length; - WB.Names.push(nrange); - break; - - case 'text-content': break; // 16.27.27 - case 'text-properties': break; // 16.27.27 - case 'embedded-text': break; // 16.27.4 - - case 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3 - - case 'forms': break; // 12.25.2 13.2 - case 'table-column': break; // 9.1.6 - case 'table-header-rows': break; // 9.1.7 - case 'table-rows': break; // 9.1.12 - /* TODO: outline levels */ - case 'table-column-group': break; // 9.1.10 - case 'table-header-columns': break; // 9.1.11 - case 'table-columns': break; // 9.1.12 - - case 'null-date': break; // 9.4.2 TODO: date1904 - - case 'graphic-properties': break; // 17.21 - case 'calculation-settings': break; // 9.4.1 - case 'named-expressions': break; // 9.4.11 - case 'label-range': break; // 9.4.9 - case 'label-ranges': break; // 9.4.10 - case 'named-expression': break; // 9.4.13 - case 'sort': break; // 9.4.19 - case 'sort-by': break; // 9.4.20 - case 'sort-groups': break; // 9.4.22 - - case 'tab': break; // 6.1.4 - case 'line-break': break; // 6.1.5 - case 'span': break; // 6.1.7 - case 'p': case '文本串': // 5.1.3 - if(['master-styles'].indexOf(state[state.length-1][0]) > -1) break; - if(Rn[1]==='/' && (!ctag || !ctag['string-value'])) { - var ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag); - textp = (textp.length > 0 ? textp + "\n" : "") + ptp[0]; - } else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; } - break; // - case 's': break; // - - case 'database-range': // 9.4.15 - if(Rn[1]==='/') break; - try { - _Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']); - Sheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] }; - } catch(e) {/* empty */} - break; - - case 'date': break; // <*:date> - - case 'object': break; // 10.4.6.2 - case 'title': case '标题': break; // <*:title> OR - case 'desc': break; // <*:desc> - case 'binary-data': break; // 10.4.5 TODO: b64 blob - - /* 9.2 Advanced Tables */ - case 'table-source': break; // 9.2.6 - case 'scenario': break; // 9.2.6 - - case 'iteration': break; // 9.4.3 - case 'content-validations': break; // 9.4.4 - case 'filter': break; // 9.5.2 - case 'filter-and': break; // 9.5.3 - case 'filter-or': break; // 9.5.4 - case 'filter-condition': break; // 9.5.5 - - case 'list-level-style-bullet': break; // 16.31 - case 'page-count': break; // TODO - case 'time': break; // TODO - - /* 9.3 Advanced Table Cells */ - case 'cell-range-source': break; // 9.3.1 - case 'property': break; // 13.8 - - case 'a': // 6.1.8 hyperlink - if(Rn[1]!== '/') { - atag = parsexmltag(Rn[0], false); - if(!atag.href) break; - atag.Target = unescapexml(atag.href); delete atag.href; - if(atag.Target.charAt(0) == "#" && atag.Target.indexOf(".") > -1) { - _Ref = ods_to_csf_3D(atag.Target.slice(1)); - atag.Target = "#" + _Ref[0] + "!" + _Ref[1]; - } else if(atag.Target.match(/^\.\.[\\\/]/)) atag.Target = atag.Target.slice(3); - } - break; - - /* non-standard */ - case 'table-protection': break; - case 'data-pilot-grand-total': break; // ', - '', - '', - '', - '', - '', - '', - '' - ].join(""); - - var payload = '' + master_styles + ''; - - return function wso() { - return XML_HEADER + payload; - }; -})(); -var write_content_ods = (function() { - /* 6.1.2 White Space Characters */ - var write_text_p = function(text) { - return escapexml(text) - .replace(/ +/g, function($$){return '';}) - .replace(/\t/g, "") - .replace(/\n/g, "") - .replace(/^ /, "").replace(/ $/, ""); - }; - - var null_cell_xml = ' \n'; - var covered_cell_xml = ' \n'; - var write_ws = function(ws, wb, i) { - /* Section 9 Tables */ - var o = []; - o.push(' \n'); - var R=0,C=0, range = decode_range(ws['!ref']||"A1"); - var marr = ws['!merges'] || [], mi = 0; - var dense = Array.isArray(ws); - if(ws["!cols"]) { - for(C = 0; C <= range.e.c; ++C) o.push(' \n'); - } - var H = "", ROWS = ws["!rows"]||[]; - for(R = 0; R < range.s.r; ++R) { - H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : ""; - o.push(' \n'); - } - for(; R <= range.e.r; ++R) { - H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : ""; - o.push(' \n'); - for(C=0; C < range.s.c; ++C) o.push(null_cell_xml); - for(; C <= range.e.c; ++C) { - var skip = false, ct = {}, textp = ""; - for(mi = 0; mi != marr.length; ++mi) { - if(marr[mi].s.c > C) continue; - if(marr[mi].s.r > R) continue; - if(marr[mi].e.c < C) continue; - if(marr[mi].e.r < R) continue; - if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true; - ct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1); - ct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1); - break; - } - if(skip) { o.push(covered_cell_xml); continue; } - var ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref]; - if(cell && cell.f) { - ct['table:formula'] = escapexml(csf_to_ods_formula(cell.f)); - if(cell.F) { - if(cell.F.slice(0, ref.length) == ref) { - var _Fref = decode_range(cell.F); - ct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1); - ct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1); - } - } - } - if(!cell) { o.push(null_cell_xml); continue; } - switch(cell.t) { - case 'b': - textp = (cell.v ? 'TRUE' : 'FALSE'); - ct['office:value-type'] = "boolean"; - ct['office:boolean-value'] = (cell.v ? 'true' : 'false'); - break; - case 'n': - textp = (cell.w||String(cell.v||0)); - ct['office:value-type'] = "float"; - ct['office:value'] = (cell.v||0); - break; - case 's': case 'str': - textp = cell.v == null ? "" : cell.v; - ct['office:value-type'] = "string"; - break; - case 'd': - textp = (cell.w||(parseDate(cell.v).toISOString())); - ct['office:value-type'] = "date"; - ct['office:date-value'] = (parseDate(cell.v).toISOString()); - ct['table:style-name'] = "ce1"; - break; - //case 'e': - default: o.push(null_cell_xml); continue; - } - var text_p = write_text_p(textp); - if(cell.l && cell.l.Target) { - var _tgt = cell.l.Target; - _tgt = _tgt.charAt(0) == "#" ? "#" + csf_to_ods_3D(_tgt.slice(1)) : _tgt; - // TODO: choose correct parent path format based on link delimiters - if(_tgt.charAt(0) != "#" && !_tgt.match(/^\w+:/)) _tgt = '../' + _tgt; - text_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, "&")}); - } - o.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\n'); - } - o.push(' \n'); - } - o.push(' \n'); - return o.join(""); - }; - - var write_automatic_styles_ods = function(o, wb) { - o.push(' \n'); - - o.push(' \n'); - o.push(' \n'); - o.push(' /\n'); - o.push(' \n'); - o.push(' /\n'); - o.push(' \n'); - o.push(' \n'); - - /* column styles */ - var cidx = 0; - wb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) { - if(!ws) return; - if(ws["!cols"]) { - for(var C = 0; C < ws["!cols"].length; ++C) if(ws["!cols"][C]) { - var colobj = ws["!cols"][C]; - if(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue; - process_col(colobj); - colobj.ods = cidx; - var w = ws["!cols"][C].wpx + "px"; - o.push(' \n'); - o.push(' \n'); - o.push(' \n'); - ++cidx; - } - } - }); - - /* row styles */ - var ridx = 0; - wb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) { - if(!ws) return; - if(ws["!rows"]) { - for(var R = 0; R < ws["!rows"].length; ++R) if(ws["!rows"][R]) { - ws["!rows"][R].ods = ridx; - var h = ws["!rows"][R].hpx + "px"; - o.push(' \n'); - o.push(' \n'); - o.push(' \n'); - ++ridx; - } - } - }); - - /* table */ - o.push(' \n'); - o.push(' \n'); - o.push(' \n'); - - /* table cells, text */ - o.push(' \n'); - - /* page-layout */ - - o.push(' \n'); - }; - - return function wcx(wb, opts) { - var o = [XML_HEADER]; - /* 3.1.3.2 */ - var attr = wxt_helper({ - 'xmlns:office': "urn:oasis:names:tc:opendocument:xmlns:office:1.0", - 'xmlns:table': "urn:oasis:names:tc:opendocument:xmlns:table:1.0", - 'xmlns:style': "urn:oasis:names:tc:opendocument:xmlns:style:1.0", - 'xmlns:text': "urn:oasis:names:tc:opendocument:xmlns:text: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:meta': "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", - 'xmlns:number': "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", - 'xmlns:presentation': "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", - 'xmlns:svg': "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", - 'xmlns:chart': "urn:oasis:names:tc:opendocument:xmlns:chart:1.0", - 'xmlns:dr3d': "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", - 'xmlns:math': "http://www.w3.org/1998/Math/MathML", - 'xmlns:form': "urn:oasis:names:tc:opendocument:xmlns:form:1.0", - 'xmlns:script': "urn:oasis:names:tc:opendocument:xmlns:script:1.0", - 'xmlns:ooo': "http://openoffice.org/2004/office", - 'xmlns:ooow': "http://openoffice.org/2004/writer", - 'xmlns:oooc': "http://openoffice.org/2004/calc", - 'xmlns:dom': "http://www.w3.org/2001/xml-events", - 'xmlns:xforms': "http://www.w3.org/2002/xforms", - 'xmlns:xsd': "http://www.w3.org/2001/XMLSchema", - 'xmlns:xsi': "http://www.w3.org/2001/XMLSchema-instance", - 'xmlns:sheet': "urn:oasis:names:tc:opendocument:sh33tjs:1.0", - 'xmlns:rpt': "http://openoffice.org/2005/report", - 'xmlns:of': "urn:oasis:names:tc:opendocument:xmlns:of:1.2", - 'xmlns:xhtml': "http://www.w3.org/1999/xhtml", - 'xmlns:grddl': "http://www.w3.org/2003/g/data-view#", - 'xmlns:tableooo': "http://openoffice.org/2009/table", - 'xmlns:drawooo': "http://openoffice.org/2010/draw", - 'xmlns:calcext': "urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0", - 'xmlns:loext': "urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", - 'xmlns:field': "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0", - 'xmlns:formx': "urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0", - 'xmlns:css3t': "http://www.w3.org/TR/css3-text/", - 'office:version': "1.2" - }); - - var fods = wxt_helper({ - 'xmlns:config': "urn:oasis:names:tc:opendocument:xmlns:config:1.0", - 'office:mimetype': "application/vnd.oasis.opendocument.spreadsheet" - }); - - if(opts.bookType == "fods") { - o.push('\n'); - o.push(write_meta_ods().replace(/office:document-meta/g, "office:meta")); - // TODO: settings (equiv of settings.xml for ODS) - } else o.push('\n'); - // o.push(' \n'); - write_automatic_styles_ods(o, wb); - o.push(' \n'); - o.push(' \n'); - for(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts)); - o.push(' \n'); - o.push(' \n'); - if(opts.bookType == "fods") o.push(''); - else o.push(''); - return o.join(""); - }; -})(); - -function write_ods(wb, opts) { - if(opts.bookType == "fods") return write_content_ods(wb, opts); - - var zip = zip_new(); - var f = ""; - - var manifest = []; - var rdf = []; - - /* Part 3 Section 3.3 MIME Media Type */ - f = "mimetype"; - zip_add_file(zip, f, "application/vnd.oasis.opendocument.spreadsheet"); - - /* Part 1 Section 2.2 Documents */ - f = "content.xml"; - zip_add_file(zip, f, write_content_ods(wb, opts)); - manifest.push([f, "text/xml"]); - rdf.push([f, "ContentFile"]); - - /* TODO: these are hard-coded styles to satiate excel */ - f = "styles.xml"; - zip_add_file(zip, f, write_styles_ods(wb, opts)); - manifest.push([f, "text/xml"]); - rdf.push([f, "StylesFile"]); - - /* TODO: this is hard-coded to satiate excel */ - f = "meta.xml"; - zip_add_file(zip, f, XML_HEADER + write_meta_ods()); - manifest.push([f, "text/xml"]); - rdf.push([f, "MetadataFile"]); - - /* Part 3 Section 6 Metadata Manifest File */ - f = "manifest.rdf"; - zip_add_file(zip, f, write_rdf(rdf/*, opts*/)); - manifest.push([f, "application/rdf+xml"]); - - /* Part 3 Section 4 Manifest File */ - f = "META-INF/manifest.xml"; - zip_add_file(zip, f, write_manifest(manifest/*, opts*/)); - - return zip; -} - -var NUMBERS = !Object.defineProperty ? (void 0) :(function() { - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __markAsModule = function(target) { - return __defProp(target, "__esModule", { value: true }); - }; - var __export = function(target, all) { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __reExport = function(target, module, copyDefault, desc) { - if (module && typeof module === "object" || typeof module === "function") - for (var keys = __getOwnPropNames(module), i = 0, n = keys.length, key; i < n; i++) { - key = keys[i]; - if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default")) - __defProp(target, key, { get: function(k) { - return module[k]; - }.bind(null, key), enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable }); - } - return target; - }; - var __toCommonJS = /* @__PURE__ */ function(cache) { - return function(module, temp) { - return cache && cache.get(module) || (temp = __reExport(__markAsModule({}), module, 1), cache && cache.set(module, temp), temp); - }; - }(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0); - - // 83_numbers.ts - var numbers_exports = {}; - __export(numbers_exports, { - parse_numbers: function() { - return numbers_default; - } - }); - - // src/util.ts - var u8_to_dataview = function(array) { - return new DataView(array.buffer, array.byteOffset, array.byteLength); - }; - var u8str = function(u8) { - return typeof TextDecoder != "undefined" ? new TextDecoder().decode(u8) : utf8read(a2s(u8)); - }; - var u8concat = function(u8a) { - var len = u8a.reduce(function(acc, x) { - return acc + x.length; - }, 0); - var out = new Uint8Array(len); - var off = 0; - u8a.forEach(function(u8) { - out.set(u8, off); - off += u8.length; - }); - return out; - }; - var popcnt = function(x) { - x -= x >> 1 & 1431655765; - x = (x & 858993459) + (x >> 2 & 858993459); - return (x + (x >> 4) & 252645135) * 16843009 >>> 24; - }; - var readDecimal128LE = function(buf, offset) { - var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1; - var mantissa = buf[offset + 14] & 1; - for (var j = offset + 13; j >= offset; --j) - mantissa = mantissa * 256 + buf[j]; - return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176); - }; - - // src/proto.ts - function parse_varint49(buf, ptr) { - var l = ptr ? ptr[0] : 0; - var usz = buf[l] & 127; - varint: - if (buf[l++] >= 128) { - usz |= (buf[l] & 127) << 7; - if (buf[l++] < 128) - break varint; - usz |= (buf[l] & 127) << 14; - if (buf[l++] < 128) - break varint; - usz |= (buf[l] & 127) << 21; - if (buf[l++] < 128) - break varint; - usz += (buf[l] & 127) * Math.pow(2, 28); - ++l; - if (buf[l++] < 128) - break varint; - usz += (buf[l] & 127) * Math.pow(2, 35); - ++l; - if (buf[l++] < 128) - break varint; - usz += (buf[l] & 127) * Math.pow(2, 42); - ++l; - if (buf[l++] < 128) - break varint; - } - if (ptr) - ptr[0] = l; - return usz; - } - function varint_to_i32(buf) { - var l = 0, i32 = buf[l] & 127; - varint: - if (buf[l++] >= 128) { - i32 |= (buf[l] & 127) << 7; - if (buf[l++] < 128) - break varint; - i32 |= (buf[l] & 127) << 14; - if (buf[l++] < 128) - break varint; - i32 |= (buf[l] & 127) << 21; - if (buf[l++] < 128) - break varint; - i32 |= (buf[l] & 127) << 28; - } - return i32; - } - function parse_shallow(buf) { - var out = [], ptr = [0]; - while (ptr[0] < buf.length) { - var off = ptr[0]; - var num = parse_varint49(buf, ptr); - var type = num & 7; - num = Math.floor(num / 8); - var len = 0; - var res; - if (num == 0) - break; - switch (type) { - case 0: - { - var l = ptr[0]; - while (buf[ptr[0]++] >= 128) - ; - res = buf.slice(l, ptr[0]); - } - break; - case 5: - len = 4; - res = buf.slice(ptr[0], ptr[0] + len); - ptr[0] += len; - break; - case 1: - len = 8; - res = buf.slice(ptr[0], ptr[0] + len); - ptr[0] += len; - break; - case 2: - len = parse_varint49(buf, ptr); - res = buf.slice(ptr[0], ptr[0] + len); - ptr[0] += len; - break; - case 3: - case 4: - default: - throw new Error("PB Type ".concat(type, " for Field ").concat(num, " at offset ").concat(off)); - } - var v = { offset: off, data: res, type: type }; - if (out[num] == null) - out[num] = [v]; - else - out[num].push(v); - } - return out; - } - function mappa(data, cb) { - if (!data) - return []; - return data.map(function(d) { - var _a; - try { - return cb(d.data); - } catch (e) { - var m = (_a = e.message) == null ? void 0 : _a.match(/at offset (\d+)/); - if (m) - e.message = e.message.replace(/at offset (\d+)/, "at offset " + (+m[1] + d.offset)); - throw e; - } - }); - } - - // src/frame.ts - function deframe(buf) { - var out = []; - var l = 0; - while (l < buf.length) { - var t = buf[l++]; - var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16; - l += 3; - out.push(parse_snappy_chunk(t, buf.slice(l, l + len))); - l += len; - } - if (l !== buf.length) - throw new Error("data is not a valid framed stream!"); - return u8concat(out); - } - function parse_snappy_chunk(type, buf) { - if (type != 0) - throw new Error("Unexpected Snappy chunk type ".concat(type)); - var ptr = [0]; - var usz = parse_varint49(buf, ptr); - var chunks = []; - while (ptr[0] < buf.length) { - var tag = buf[ptr[0]] & 3; - if (tag == 0) { - var len = buf[ptr[0]++] >> 2; - if (len < 60) - ++len; - else { - var c = len - 59; - len = buf[ptr[0]]; - if (c > 1) - len |= buf[ptr[0] + 1] << 8; - if (c > 2) - len |= buf[ptr[0] + 2] << 16; - if (c > 3) - len |= buf[ptr[0] + 3] << 24; - len >>>= 0; - len++; - ptr[0] += c; - } - chunks.push(buf.slice(ptr[0], ptr[0] + len)); - ptr[0] += len; - continue; - } else { - var offset = 0, length = 0; - if (tag == 1) { - length = (buf[ptr[0]] >> 2 & 7) + 4; - offset = (buf[ptr[0]++] & 224) << 3; - offset |= buf[ptr[0]++]; - } else { - length = (buf[ptr[0]++] >> 2) + 1; - if (tag == 2) { - offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8; - ptr[0] += 2; - } else { - offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0; - ptr[0] += 4; - } - } - chunks = [u8concat(chunks)]; - if (offset == 0) - throw new Error("Invalid offset 0"); - if (offset > chunks[0].length) - throw new Error("Invalid offset beyond length"); - if (length >= offset) { - chunks.push(chunks[0].slice(-offset)); - length -= offset; - while (length >= chunks[chunks.length - 1].length) { - chunks.push(chunks[chunks.length - 1]); - length -= chunks[chunks.length - 1].length; - } - } - chunks.push(chunks[0].slice(-offset, -offset + length)); - } - } - var o = u8concat(chunks); - if (o.length != usz) - throw new Error("Unexpected length: ".concat(o.length, " != ").concat(usz)); - return o; - } - - // src/iwa.ts - function parse_iwa(buf) { - var out = [], ptr = [0]; - while (ptr[0] < buf.length) { - var len = parse_varint49(buf, ptr); - var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len)); - ptr[0] += len; - var res = { - id: varint_to_i32(ai[1][0].data), - messages: [] - }; - ai[2].forEach(function(b) { - var mi = parse_shallow(b.data); - var fl = varint_to_i32(mi[3][0].data); - res.messages.push({ - meta: mi, - data: buf.slice(ptr[0], ptr[0] + fl) - }); - ptr[0] += fl; - }); - out.push(res); - } - return out; - } - - // src/cell.ts - function parse_old_storage(buf, sst, rsst) { - var dv = u8_to_dataview(buf); - var ctype = buf[buf[0] == 4 ? 1 : 2]; - var flags = dv.getUint32(4, true); - var data_offset = 12 + popcnt(flags & 3470) * 4; - var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1); - if (flags & 512) { - ridx = dv.getUint32(data_offset, true); - data_offset += 4; - } - data_offset += popcnt(flags & 12288) * 4; - if (flags & 16) { - sidx = dv.getUint32(data_offset, true); - data_offset += 4; - } - if (flags & 32) { - ieee = dv.getFloat64(data_offset, true); - data_offset += 8; - } - if (flags & 64) { - dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3); - data_offset += 8; - } - var ret; - switch (ctype) { - case 0: - break; - case 2: - ret = { t: "n", v: ieee }; - break; - case 3: - ret = { t: "s", v: sst[sidx] }; - break; - case 5: - ret = { t: "d", v: dt }; - break; - case 6: - ret = { t: "b", v: ieee > 0 }; - break; - case 7: - ret = { t: "n", v: ieee }; - break; - case 8: - ret = { t: "e", v: 0 }; - break; - case 9: - { - if (ridx > -1) - ret = { t: "s", v: rsst[ridx] }; - else if (sidx > -1) - ret = { t: "s", v: sst[sidx] }; - else if (!isNaN(ieee)) - ret = { t: "n", v: ieee }; - else - throw new Error("Unsupported cell type ".concat(buf.slice(0, 4))); - } - break; - default: - throw new Error("Unsupported cell type ".concat(buf.slice(0, 4))); - } - return ret; - } - function parse_storage(buf, sst, rsst) { - var dv = u8_to_dataview(buf); - var ctype = buf[1]; - var flags = dv.getUint32(8, true); - var data_offset = 12; - var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1); - if (flags & 1) { - d128 = readDecimal128LE(buf, data_offset); - data_offset += 16; - } - if (flags & 2) { - ieee = dv.getFloat64(data_offset, true); - data_offset += 8; - } - if (flags & 4) { - dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3); - data_offset += 8; - } - if (flags & 8) { - sidx = dv.getUint32(data_offset, true); - data_offset += 4; - } - if (flags & 16) { - ridx = dv.getUint32(data_offset, true); - data_offset += 4; - } - var ret; - switch (ctype) { - case 0: - break; - case 2: - ret = { t: "n", v: d128 }; - break; - case 3: - ret = { t: "s", v: sst[sidx] }; - break; - case 5: - ret = { t: "d", v: dt }; - break; - case 6: - ret = { t: "b", v: ieee > 0 }; - break; - case 7: - ret = { t: "n", v: ieee }; - break; - case 8: - ret = { t: "e", v: 0 }; - break; - case 9: - { - if (ridx > -1) - ret = { t: "s", v: rsst[ridx] }; - else - throw new Error("Unsupported cell type ".concat(ctype, " : ").concat(flags & 31, " : ").concat(buf.slice(0, 4))); - } - break; - case 10: - ret = { t: "n", v: d128 }; - break; - default: - throw new Error("Unsupported cell type ".concat(ctype, " : ").concat(flags & 31, " : ").concat(buf.slice(0, 4))); - } - return ret; - } - function parse(buf, sst, rsst) { - switch (buf[0]) { - case 3: - case 4: - return parse_old_storage(buf, sst, rsst); - case 5: - return parse_storage(buf, sst, rsst); - default: - throw new Error("Unsupported payload version ".concat(buf[0])); - } - } - - // src/numbers.ts - var encode_col = function(C) { - var s = ""; - for (++C; C; C = Math.floor((C - 1) / 26)) - s = String.fromCharCode((C - 1) % 26 + 65) + s; - return s; - }; - var encode_cell = function(c) { - return "".concat(encode_col(c.c)).concat(c.r + 1); - }; - var encode_range = function(r) { - return encode_cell(r.s) + ":" + encode_cell(r.e); - }; - var book_new = function() { - return { Sheets: {}, SheetNames: [] }; - }; - var book_append_sheet = function(wb, ws, name) { - if (!name) - for (var i = 1; i < 9999; ++i) { - if (wb.SheetNames.indexOf(name = "Sheet ".concat(i)) == -1) - break; - } - else if (wb.SheetNames.indexOf(name) > -1) - for (var i = 1; i < 9999; ++i) { - if (wb.SheetNames.indexOf("".concat(name, "_").concat(i)) == -1) { - name = "".concat(name, "_").concat(i); - break; - } - } - wb.SheetNames.push(name); - wb.Sheets[name] = ws; - }; - function parse_numbers(cfb) { - var out = []; - cfb.FullPaths.forEach(function(p) { - if (p.match(/\.iwpv2/)) - throw new Error("Unsupported password protection"); - }); - cfb.FileIndex.forEach(function(s) { - if (!s.name.match(/\.iwa$/)) - return; - var o; - try { - o = deframe(s.content); - } catch (e) { - return console.log("?? " + s.content.length + " " + (e.message || e)); - } - var packets; - try { - packets = parse_iwa(o); - } catch (e) { - return console.log("## " + (e.message || e)); - } - packets.forEach(function(packet) { - out[+packet.id] = packet.messages; - }); - }); - if (!out.length) - throw new Error("File has no messages"); - var docroot; - out.forEach(function(iwams) { - iwams.forEach(function(iwam) { - var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0; - if (mtype == 1) { - if (!docroot) - docroot = iwam; - else - throw new Error("Document has multiple roots"); - } - }); - }); - if (!docroot) - throw new Error("Cannot find Document root"); - return parse_docroot(out, docroot); - } - var numbers_default = parse_numbers; - function parse_Reference(buf) { - var pb = parse_shallow(buf); - return parse_varint49(pb[1][0].data); - } - function parse_TST_TableDataList(M, root) { - var pb = parse_shallow(root.data); - var type = varint_to_i32(pb[1][0].data); - var entries = pb[3]; - var data = []; - (entries || []).forEach(function(entry) { - var le = parse_shallow(entry.data); - var key = varint_to_i32(le[1][0].data) >>> 0; - switch (type) { - case 1: - data[key] = u8str(le[3][0].data); - break; - case 8: - { - var rt = M[parse_Reference(le[9][0].data)][0]; - var rtp = parse_shallow(rt.data); - var rtpref = M[parse_Reference(rtp[1][0].data)][0]; - var mtype = varint_to_i32(rtpref.meta[1][0].data); - if (mtype != 2001) - throw new Error("2000 unexpected reference to ".concat(mtype)); - var tswpsa = parse_shallow(rtpref.data); - data[key] = tswpsa[3].map(function(x) { - return u8str(x.data); - }).join(""); - } - break; - } - }); - return data; - } - function parse_TST_TileRowInfo(u8) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j; - var pb = parse_shallow(u8); - var R = varint_to_i32(pb[1][0].data) >>> 0; - var pre_bnc = (_b = (_a = pb[3]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data; - var pre_bnc_offsets = ((_d = (_c = pb[4]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && u8_to_dataview(pb[4][0].data); - var storage = (_f = (_e = pb[6]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data; - var storage_offsets = ((_h = (_g = pb[7]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data) && u8_to_dataview(pb[7][0].data); - var wide_offsets = ((_j = (_i = pb[8]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && varint_to_i32(pb[8][0].data) > 0 || false; - var width = wide_offsets ? 4 : 1; - var cells = []; - var off = 0; - for (var C = 0; C < pre_bnc_offsets.byteLength / 2; ++C) { - if (storage && storage_offsets) { - off = storage_offsets.getUint16(C * 2, true) * width; - if (off < storage.length) { - cells[C] = storage.subarray(off, storage_offsets.getUint16(C * 2 + 2, true) * width); - continue; - } - } - if (pre_bnc && pre_bnc_offsets) { - off = pre_bnc_offsets.getUint16(C * 2, true) * width; - if (off < pre_bnc.length) - cells[C] = pre_bnc.subarray(off, pre_bnc_offsets.getUint16(C * 2 + 2, true) * width); - } - } - return { R: R, cells: cells }; - } - function parse_TST_Tile(M, root) { - var pb = parse_shallow(root.data); - var ri = mappa(pb[5], parse_TST_TileRowInfo); - return ri.reduce(function(acc, x) { - if (!acc[x.R]) - acc[x.R] = []; - x.cells.forEach(function(cell, C) { - if (acc[x.R][C]) - throw new Error("Duplicate cell r=".concat(x.R, " c=").concat(C)); - acc[x.R][C] = cell; - }); - return acc; - }, []); - } - function parse_TST_TableModelArchive(M, root, ws) { - var _a; - var pb = parse_shallow(root.data); - var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }; - range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1; - if (range.e.r < 0) - throw new Error("Invalid row varint ".concat(pb[6][0].data)); - range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1; - if (range.e.c < 0) - throw new Error("Invalid col varint ".concat(pb[7][0].data)); - ws["!ref"] = encode_range(range); - { - var store = parse_shallow(pb[4][0].data); - var sst = parse_TST_TableDataList(M, M[parse_Reference(store[4][0].data)][0]); - var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_Reference(store[17][0].data)][0]) : []; - { - var tile = parse_shallow(store[3][0].data); - var tiles = []; - tile[1].forEach(function(t) { - var tl = parse_shallow(t.data); - var ref = M[parse_Reference(tl[2][0].data)][0]; - var mtype = varint_to_i32(ref.meta[1][0].data); - if (mtype != 6002) - throw new Error("6001 unexpected reference to ".concat(mtype)); - tiles.push({ id: varint_to_i32(tl[1][0].data), ref: parse_TST_Tile(M, ref) }); - }); - tiles.forEach(function(tile2) { - tile2.ref.forEach(function(row, R) { - row.forEach(function(buf, C) { - var addr = encode_cell({ r: R, c: C }); - var res = parse(buf, sst, rsst); - if (res) - ws[addr] = res; - }); - }); - }); - } - } - } - function parse_TST_TableInfoArchive(M, root) { - var pb = parse_shallow(root.data); - var out = { "!ref": "A1" }; - var tableref = M[parse_Reference(pb[2][0].data)]; - var mtype = varint_to_i32(tableref[0].meta[1][0].data); - if (mtype != 6001) - throw new Error("6000 unexpected reference to ".concat(mtype)); - parse_TST_TableModelArchive(M, tableref[0], out); - return out; - } - function parse_sheetroot(M, root) { - var _a; - var pb = parse_shallow(root.data); - var out = { - name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : "", - sheets: [] - }; - var shapeoffs = mappa(pb[2], parse_Reference); - shapeoffs.forEach(function(off) { - M[off].forEach(function(m) { - var mtype = varint_to_i32(m.meta[1][0].data); - if (mtype == 6e3) - out.sheets.push(parse_TST_TableInfoArchive(M, m)); - }); - }); - return out; - } - function parse_docroot(M, root) { - var out = book_new(); - var pb = parse_shallow(root.data); - var sheetoffs = mappa(pb[1], parse_Reference); - sheetoffs.forEach(function(off) { - M[off].forEach(function(m) { - var mtype = varint_to_i32(m.meta[1][0].data); - if (mtype == 2) { - var root2 = parse_sheetroot(M, m); - root2.sheets.forEach(function(sheet) { - book_append_sheet(out, sheet, root2.name); - }); - } - }); - }); - if (out.SheetNames.length == 0) - throw new Error("Empty NUMBERS file"); - return out; - } - return __toCommonJS(numbers_exports); -})(); -/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */ -function fix_opts_func(defaults) { - return function fix_opts(opts) { - for(var i = 0; i != defaults.length; ++i) { - var d = defaults[i]; - if(opts[d[0]] === undefined) opts[d[0]] = d[1]; - if(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]); - } - }; -} - -var fix_read_opts = function(opts) { -fix_opts_func([ - ['cellNF', false], /* emit cell number format string as .z */ - ['cellHTML', true], /* emit html string as .h */ - ['cellFormula', true], /* emit formulae as .f */ - ['cellStyles', false], /* emits style/theme as .s */ - ['cellText', true], /* emit formatted text as .w */ - ['cellDates', false], /* emit date cells with type `d` */ - - ['sheetStubs', false], /* emit empty cells */ - ['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */ - - ['bookDeps', false], /* parse calculation chains */ - ['bookSheets', false], /* only try to get sheet names (no Sheets) */ - ['bookProps', false], /* only try to get properties (no Sheets) */ - ['bookFiles', false], /* include raw file structure (keys, files, cfb) */ - ['bookVBA', false], /* include vba raw data (vbaraw) */ - - ['password',''], /* password */ - ['WTF', false] /* WTF mode (throws errors) */ -])(opts); -}; - -var fix_write_opts = fix_opts_func([ - ['cellDates', false], /* write date cells with type `d` */ - - ['bookSST', false], /* Generate Shared String Table */ - - ['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */ - - ['compression', false], /* Use file compression */ - - ['WTF', false] /* WTF mode (throws errors) */ -]); -function get_sheet_type(n) { - if(RELS.WS.indexOf(n) > -1) return "sheet"; - if(RELS.CS && n == RELS.CS) return "chart"; - if(RELS.DS && n == RELS.DS) return "dialog"; - if(RELS.MS && n == RELS.MS) return "macro"; - return (n && n.length) ? n : "sheet"; -} -function safe_parse_wbrels(wbrels, sheets) { - if(!wbrels) return 0; - try { - wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; }); - } catch(e) { return null; } - return !wbrels || wbrels.length === 0 ? null : wbrels; -} - -function safe_parse_sheet(zip, path, relsPath, sheet, idx, sheetRels, sheets, stype, opts, wb, themes, styles) { - try { - sheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path); - var data = getzipdata(zip, path); - var _ws; - switch(stype) { - case 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; - case 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); - if(!_ws || !_ws['!drawel']) break; - var dfile = resolve_path(_ws['!drawel'].Target, path); - var drelsp = get_rels_path(dfile); - var draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile)); - var chartp = resolve_path(draw, dfile); - var crelsp = get_rels_path(chartp); - _ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws); - break; - case 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; - case 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; - default: throw new Error("Unrecognized sheet type " + stype); - } - sheets[sheet] = _ws; - - /* scan rels for comments */ - var comments = []; - if(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) { - if(sheetRels[sheet][n].Type == RELS.CMNT) { - var dfile = resolve_path(sheetRels[sheet][n].Target, path); - comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts); - if(!comments || !comments.length) return; - sheet_insert_comments(_ws, comments); - } - }); - } catch(e) { if(opts.WTF) throw e; } -} - -function strip_front_slash(x) { return x.charAt(0) == '/' ? x.slice(1) : x; } - -function parse_zip(zip, opts) { - make_ssf(SSF); - opts = opts || {}; - fix_read_opts(opts); - - /* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */ - if(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts); - /* UOC */ - if(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts); - /* Numbers */ - if(safegetzipfile(zip, 'Index/Document.iwa')) { - if(typeof Uint8Array == "undefined") throw new Error('NUMBERS file parsing requires Uint8Array support'); - if(typeof NUMBERS != "undefined") { - if(zip.FileIndex) return NUMBERS.parse_numbers(zip); - var _zip = CFB.utils.cfb_new(); - zipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); }); - return NUMBERS.parse_numbers(_zip); - } - throw new Error('Unsupported NUMBERS file'); - } - if(!safegetzipfile(zip, '[Content_Types].xml')) { - if(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file'); - if(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file'); - throw new Error('Unsupported ZIP file'); - } - - var entries = zipentries(zip); - var dir = parse_ct((getzipstr(zip, '[Content_Types].xml'))); - var xlsb = false; - var sheets, binname; - if(dir.workbooks.length === 0) { - binname = "xl/workbook.xml"; - if(getzipdata(zip,binname, true)) dir.workbooks.push(binname); - } - if(dir.workbooks.length === 0) { - binname = "xl/workbook.bin"; - if(!getzipdata(zip,binname,true)) throw new Error("Could not find workbook"); - dir.workbooks.push(binname); - xlsb = true; - } - if(dir.workbooks[0].slice(-3) == "bin") xlsb = true; - - var themes = ({}); - var styles = ({}); - if(!opts.bookSheets && !opts.bookProps) { - strs = []; - if(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; } - - if(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\//,''), true)||"",dir.themes[0], opts); - - if(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts); - } - - /*var externbooks = */dir.links.map(function(link) { - try { - var rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link); - return parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts); - } catch(e) {} - }); - - var wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts); - - var props = {}, propdata = ""; - - if(dir.coreprops.length) { - propdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true); - if(propdata) props = parse_core_props(propdata); - if(dir.extprops.length !== 0) { - propdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true); - if(propdata) parse_ext_props(propdata, props, opts); - } - } - - var custprops = {}; - if(!opts.bookSheets || opts.bookProps) { - if (dir.custprops.length !== 0) { - propdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true); - if(propdata) custprops = parse_cust_props(propdata, opts); - } - } - - var out = ({}); - if(opts.bookSheets || opts.bookProps) { - if(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; }); - else if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames; - if(opts.bookProps) { out.Props = props; out.Custprops = custprops; } - if(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets; - if(opts.bookSheets ? out.SheetNames : opts.bookProps) return out; - } - sheets = {}; - - var deps = {}; - if(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts); - - var i=0; - var sheetRels = ({}); - var path, relsPath; - - { - var wbsheets = wb.Sheets; - props.Worksheets = wbsheets.length; - props.SheetNames = []; - for(var j = 0; j != wbsheets.length; ++j) { - props.SheetNames[j] = wbsheets[j].name; - } - } - - var wbext = xlsb ? "bin" : "xml"; - var wbrelsi = dir.workbooks[0].lastIndexOf("/"); - var wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + "_rels/" + dir.workbooks[0].slice(wbrelsi+1) + ".rels").replace(/^\//,""); - if(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels'; - var wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile); - if(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets); - - /* Numbers iOS hack */ - var nmode = (getzipdata(zip,"xl/worksheets/sheet.xml",true))?1:0; - wsloop: for(i = 0; i != props.Worksheets; ++i) { - var stype = "sheet"; - if(wbrels && wbrels[i]) { - path = 'xl/' + (wbrels[i][1]).replace(/[\/]?xl\//, ""); - if(!safegetzipfile(zip, path)) path = wbrels[i][1]; - if(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\/.*$/,"") + wbrels[i][1]; - stype = wbrels[i][2]; - } else { - path = 'xl/worksheets/sheet'+(i+1-nmode)+"." + wbext; - path = path.replace(/sheet0\./,"sheet."); - } - relsPath = path.replace(/^(.*)(\/)([^\/]*)$/, "$1/_rels/$3.rels"); - if(opts && opts.sheets != null) switch(typeof opts.sheets) { - case "number": if(i != opts.sheets) continue wsloop; break; - case "string": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break; - default: if(Array.isArray && Array.isArray(opts.sheets)) { - var snjseen = false; - for(var snj = 0; snj != opts.sheets.length; ++snj) { - if(typeof opts.sheets[snj] == "number" && opts.sheets[snj] == i) snjseen=1; - if(typeof opts.sheets[snj] == "string" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1; - } - if(!snjseen) continue wsloop; - } - } - safe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles); - } - - out = ({ - Directory: dir, - Workbook: wb, - Props: props, - Custprops: custprops, - Deps: deps, - Sheets: sheets, - SheetNames: props.SheetNames, - Strings: strs, - Styles: styles, - Themes: themes, - SSF: SSF.get_table() - }); - if(opts && opts.bookFiles) { - if(zip.files) { - out.keys = entries; - out.files = zip.files; - } else { - out.keys = []; - out.files = {}; - zip.FullPaths.forEach(function(p, idx) { - p = p.replace(/^Root Entry[\/]/, ""); - out.keys.push(p); - out.files[p] = zip.FileIndex[idx]; - }); - } - } - if(opts && opts.bookVBA) { - if(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true); - else if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true); - } - return out; -} - -/* [MS-OFFCRYPTO] 2.1.1 */ -function parse_xlsxcfb(cfb, _opts) { - var opts = _opts || {}; - var f = 'Workbook', data = CFB.find(cfb, f); - try { - f = '/!DataSpaces/Version'; - data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); - /*var version = */parse_DataSpaceVersionInfo(data.content); - - /* 2.3.4.1 */ - f = '/!DataSpaces/DataSpaceMap'; - data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); - var dsm = parse_DataSpaceMap(data.content); - if(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== "StrongEncryptionDataSpace" || dsm[0].comps[0].v !== "EncryptedPackage") - throw new Error("ECMA-376 Encrypted file bad " + f); - - /* 2.3.4.2 */ - f = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace'; - data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); - var seds = parse_DataSpaceDefinition(data.content); - if(seds.length != 1 || seds[0] != "StrongEncryptionTransform") - throw new Error("ECMA-376 Encrypted file bad " + f); - - /* 2.3.4.3 */ - f = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary'; - data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); - /*var hdr = */parse_Primary(data.content); - } catch(e) {} - - f = '/EncryptionInfo'; - data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); - var einfo = parse_EncryptionInfo(data.content); - - /* 2.3.4.4 */ - f = '/EncryptedPackage'; - data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); - -/*global decrypt_agile */ -if(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || "", opts); -/*global decrypt_std76 */ -if(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || "", opts); - throw new Error("File is password-protected"); -} - -function write_zip(wb, opts) { - if(opts.bookType == "ods") return write_ods(wb, opts); - return write_zip_xlsxb(wb, opts); -} - -function write_zip_xlsxb(wb, opts) { - _shapeid = 1024; - if(wb && !wb.SSF) { - wb.SSF = SSF.get_table(); - } - if(wb && wb.SSF) { - make_ssf(SSF); SSF.load_table(wb.SSF); - // $FlowIgnore - opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; - opts.ssf = wb.SSF; - } - opts.rels = {}; opts.wbrels = {}; - opts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0; - if(browser_has_Map) opts.revStrings = new Map(); - else { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; } - var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; - var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; - var ct = new_ct(); - fix_write_opts(opts = opts || {}); - var zip = zip_new(); - var f = "", rId = 0; - - opts.cellXfs = []; - get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); - - if(!wb.Props) wb.Props = {}; - - f = "docProps/core.xml"; - zip_add_file(zip, f, write_core_props(wb.Props, opts)); - ct.coreprops.push(f); - add_rels(opts.rels, 2, f, RELS.CORE_PROPS); - -f = "docProps/app.xml"; - if(wb.Props && wb.Props.SheetNames){/* empty */} - else if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; - else { - var _sn = []; - for(var _i = 0; _i < wb.SheetNames.length; ++_i) - if((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]); - wb.Props.SheetNames = _sn; - } - wb.Props.Worksheets = wb.Props.SheetNames.length; - zip_add_file(zip, f, write_ext_props(wb.Props, opts)); - ct.extprops.push(f); - add_rels(opts.rels, 3, f, RELS.EXT_PROPS); - - if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { - f = "docProps/custom.xml"; - zip_add_file(zip, f, write_cust_props(wb.Custprops, opts)); - ct.custprops.push(f); - add_rels(opts.rels, 4, f, RELS.CUST_PROPS); - } - - for(rId=1;rId <= wb.SheetNames.length; ++rId) { - var wsrels = {'!id':{}}; - var ws = wb.Sheets[wb.SheetNames[rId-1]]; - var _type = (ws || {})["!type"] || "sheet"; - switch(_type) { - case "chart": - /* falls through */ - default: - f = "xl/worksheets/sheet" + rId + "." + wbext; - zip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels)); - ct.sheets.push(f); - add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); - } - - if(ws) { - var comments = ws['!comments']; - var need_vml = false; - if(comments && comments.length > 0) { - var cf = "xl/comments" + rId + "." + wbext; - zip_add_file(zip, cf, write_cmnt(comments, cf, opts)); - ct.comments.push(cf); - add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); - need_vml = true; - } - if(ws['!legacy']) { - if(need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + (rId) + ".vml", write_comments_vml(rId, ws['!comments'])); - } - delete ws['!comments']; - delete ws['!legacy']; - } - - if(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels)); - } - - if(opts.Strings != null && opts.Strings.length > 0) { - f = "xl/sharedStrings." + wbext; - zip_add_file(zip, f, write_sst(opts.Strings, f, opts)); - ct.strs.push(f); - add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); - } - - f = "xl/workbook." + wbext; - zip_add_file(zip, f, write_wb(wb, f, opts)); - ct.workbooks.push(f); - add_rels(opts.rels, 1, f, RELS.WB); - - /* TODO: something more intelligent with themes */ - - f = "xl/theme/theme1.xml"; - zip_add_file(zip, f, write_theme(wb.Themes, opts)); - ct.themes.push(f); - add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); - - /* TODO: something more intelligent with styles */ - - f = "xl/styles." + wbext; - zip_add_file(zip, f, write_sty(wb, f, opts)); - ct.styles.push(f); - add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); - - if(wb.vbaraw && vbafmt) { - f = "xl/vbaProject.bin"; - zip_add_file(zip, f, wb.vbaraw); - ct.vba.push(f); - add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); - } - - zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); - zip_add_file(zip, '_rels/.rels', write_rels(opts.rels)); - zip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); - - delete opts.revssf; delete opts.ssf; - return zip; -} - - -function write_zip_xlsx(wb, opts) { - _shapeid = 1024; - if(wb && !wb.SSF) { - wb.SSF = SSF.get_table(); - } - if(wb && wb.SSF) { - make_ssf(SSF); SSF.load_table(wb.SSF); - // $FlowIgnore - opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; - opts.ssf = wb.SSF; - } - opts.rels = {}; opts.wbrels = {}; - opts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0; - if(browser_has_Map) opts.revStrings = new Map(); - else { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; } - var wbext = "xml"; - var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; - var ct = new_ct(); - fix_write_opts(opts = opts || {}); - var zip = zip_new(); - var f = "", rId = 0; - - opts.cellXfs = []; - get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); - - if(!wb.Props) wb.Props = {}; - - f = "docProps/core.xml"; - zip_add_file(zip, f, write_core_props(wb.Props, opts)); - ct.coreprops.push(f); - add_rels(opts.rels, 2, f, RELS.CORE_PROPS); - -f = "docProps/app.xml"; - if(wb.Props && wb.Props.SheetNames){/* empty */} - else if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; - else { - var _sn = []; - for(var _i = 0; _i < wb.SheetNames.length; ++_i) - if((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]); - wb.Props.SheetNames = _sn; - } - wb.Props.Worksheets = wb.Props.SheetNames.length; - zip_add_file(zip, f, write_ext_props(wb.Props, opts)); - ct.extprops.push(f); - add_rels(opts.rels, 3, f, RELS.EXT_PROPS); - - if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { - f = "docProps/custom.xml"; - zip_add_file(zip, f, write_cust_props(wb.Custprops, opts)); - ct.custprops.push(f); - add_rels(opts.rels, 4, f, RELS.CUST_PROPS); - } - - for(rId=1;rId <= wb.SheetNames.length; ++rId) { - var wsrels = {'!id':{}}; - var ws = wb.Sheets[wb.SheetNames[rId-1]]; - var _type = (ws || {})["!type"] || "sheet"; - switch(_type) { - case "chart": - /* falls through */ - default: - f = "xl/worksheets/sheet" + rId + "." + wbext; - zip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels)); - ct.sheets.push(f); - add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); - } - - if(ws) { - var comments = ws['!comments']; - var need_vml = false; - if(comments && comments.length > 0) { - var cf = "xl/comments" + rId + "." + wbext; - zip_add_file(zip, cf, write_comments_xml(comments, opts)); - ct.comments.push(cf); - add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); - need_vml = true; - } - if(ws['!legacy']) { - if(need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + (rId) + ".vml", write_comments_vml(rId, ws['!comments'])); - } - delete ws['!comments']; - delete ws['!legacy']; - } - - if(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels)); - } - - if(opts.Strings != null && opts.Strings.length > 0) { - f = "xl/sharedStrings." + wbext; - zip_add_file(zip, f, write_sst_xml(opts.Strings, opts)); - ct.strs.push(f); - add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); - } - - f = "xl/workbook." + wbext; - zip_add_file(zip, f, write_wb_xml(wb, opts)); - ct.workbooks.push(f); - add_rels(opts.rels, 1, f, RELS.WB); - - /* TODO: something more intelligent with themes */ - - f = "xl/theme/theme1.xml"; - zip_add_file(zip, f, write_theme(wb.Themes, opts)); - ct.themes.push(f); - add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); - - /* TODO: something more intelligent with styles */ - - f = "xl/styles." + wbext; - zip_add_file(zip, f, write_sty_xml(wb, opts)); - ct.styles.push(f); - add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); - - if(wb.vbaraw && vbafmt) { - f = "xl/vbaProject.bin"; - zip_add_file(zip, f, wb.vbaraw); - ct.vba.push(f); - add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); - } - - zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); - zip_add_file(zip, '_rels/.rels', write_rels(opts.rels)); - zip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); - - delete opts.revssf; delete opts.ssf; - return zip; -} - -function firstbyte(f,o) { - var x = ""; - switch((o||{}).type || "base64") { - case 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; - case 'base64': x = Base64.decode(f.slice(0,12)); break; - case 'binary': x = f; break; - case 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; - default: throw new Error("Unrecognized type " + (o && o.type || "undefined")); - } - return [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)]; -} - -function read_cfb(cfb, opts) { - if(CFB.find(cfb, "EncryptedPackage")) return parse_xlsxcfb(cfb, opts); - return parse_xlscfb(cfb, opts); -} - -function read_zip(data, opts) { - var zip, d = data; - var o = opts||{}; - if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; - zip = zip_read(d, o); - return parse_zip(zip, o); -} - -function read_plaintext(data, o) { - var i = 0; - main: while(i < data.length) switch(data.charCodeAt(i)) { - case 0x0A: case 0x0D: case 0x20: ++i; break; - case 0x3C: return parse_xlml(data.slice(i),o); - default: break main; - } - return PRN.to_workbook(data, o); -} - -function read_plaintext_raw(data, o) { - var str = "", bytes = firstbyte(data, o); - switch(o.type) { - case 'base64': str = Base64.decode(data); break; - case 'binary': str = data; break; - case 'buffer': str = data.toString('binary'); break; - case 'array': str = cc2str(data); break; - default: throw new Error("Unrecognized type " + o.type); - } - if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str); - return read_plaintext(str, o); -} - -function read_utf16(data, o) { - var d = data; - if(o.type == 'base64') d = Base64.decode(d); - d = cptable.utils.decode(1200, d.slice(2), 'str'); - o.type = "binary"; - return read_plaintext(d, o); -} - -function bstrify(data) { - return !data.match(/[^\x00-\x7F]/) ? data : utf8write(data); -} - -function read_prn(data, d, o, str) { - if(str) { o.type = "string"; return PRN.to_workbook(data, o); } - return PRN.to_workbook(d, o); -} - -function readSync(data, opts) { - reset_cp(); - var o = opts||{}; - if(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = "array", o)); - if(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== "undefined" ? "buffer" : "array"; - var d = data, n = [0,0,0,0], str = false; - if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } - _ssfopts = {}; - if(o.dateNF) _ssfopts.dateNF = o.dateNF; - if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; - if(o.type == "file") { o.type = has_buf ? "buffer" : "binary"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = "array"; } - if(o.type == "string") { str = true; o.type = "binary"; o.codepage = 65001; d = bstrify(data); } - if(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') { - // $FlowIgnore - var ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo="bar"; - // $FlowIgnore - if(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);} - } - switch((n = firstbyte(d, o))[0]) { - case 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break; - case 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break; - case 0x3C: return parse_xlml(d, o); - case 0x49: - if(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error("TIFF Image File is not a spreadsheet"); - if(n[1] === 0x44) return read_wb_ID(d, o); - break; - case 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break; - case 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str); - case 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str); - case 0xFF: - if(n[1] === 0xFE) { return read_utf16(d, o); } - else if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); - break; - case 0x00: - if(n[1] === 0x00) { - if(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); - if(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o); - } - break; - case 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o); - case 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break; - case 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o); - case 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error("PNG Image File is not a spreadsheet"); break; - } - if(DBF.versions.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o); - return read_prn(data, d, o, str); -} - -function readFileSync(filename, opts) { - var o = opts||{}; o.type = 'file'; - return readSync(filename, o); -} -function write_obj_str(factory) { - return function write_str(wb, o) { - var idx = 0; - if(o.sheet) { - if(typeof o.sheet == "number") idx = o.sheet; - else idx = wb.SheetNames.indexOf(o.sheet); - if(!wb.SheetNames[idx]) throw new Error("Sheet not found: " + o.sheet + " : " + (typeof o.sheet)); - } - return factory.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb); - }; -} - -var write_htm_str = write_obj_str(HTML_); -var write_csv_str = write_obj_str({from_sheet:sheet_to_csv}); -var write_slk_str = write_obj_str(typeof SYLK !== "undefined" ? SYLK : {}); -var write_dif_str = write_obj_str(typeof DIF !== "undefined" ? DIF : {}); -var write_prn_str = write_obj_str(typeof PRN !== "undefined" ? PRN : {}); -var write_rtf_str = write_obj_str(typeof RTF !== "undefined" ? RTF : {}); -var write_txt_str = write_obj_str({from_sheet:sheet_to_txt}); -var write_dbf_buf = write_obj_str(typeof DBF !== "undefined" ? DBF : {}); -var write_eth_str = write_obj_str(typeof ETH !== "undefined" ? ETH : {}); -var write_wk1_buf = write_obj_str(typeof WK_ !== "undefined" ? {from_sheet:WK_.sheet_to_wk1} : {}); - -function write_cfb_ctr(cfb, o) { - switch(o.type) { - case "base64": case "binary": break; - case "buffer": case "array": o.type = ""; break; - case "file": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : ""})); - case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); - default: throw new Error("Unrecognized type " + o.type); - } - return CFB.write(cfb, o); -} - -function write_zip_type(wb, opts) { - var o = dup(opts||{}); - var z = write_zip(wb, o); - return write_zip_denouement(z, o); -} -function write_zip_typeXLSX(wb, opts) { - var o = dup(opts||{}); - var z = write_zip_xlsx(wb, o); - return write_zip_denouement(z, o); -} -function write_zip_denouement(z, o) { - var oopts = {}; - if(o.compression) oopts.compression = 'DEFLATE'; - if(o.password) oopts.type = has_buf ? "nodebuffer" : "string"; - else switch(o.type) { - case "base64": oopts.type = "base64"; break; - case "binary": oopts.type = "string"; break; - case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); - case "buffer": - case "file": oopts.type = has_buf ? "nodebuffer" : "string"; break; - default: throw new Error("Unrecognized type " + o.type); - } - var out = z.FullPaths ? CFB.write(z, {fileType:"zip", type: {"nodebuffer": "buffer", "string": "binary"}[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts); - if(typeof Deno !== "undefined") { - if(typeof out == "string") { - if(o.type == "binary" || o.type == "base64") return out; - out = new Uint8Array(s2ab(out)); - } - } -/*jshint -W083 */ - if(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef -/*jshint +W083 */ - if(o.type === "file") return write_dl(o.file, out); - return o.type == "string" ? utf8read(out) : out; -} - -function write_cfb_type(wb, opts) { - var o = opts||{}; - var cfb = write_xlscfb(wb, o); - return write_cfb_ctr(cfb, o); -} - -function write_string_type(out, opts, bom) { - if(!bom) bom = ""; - var o = bom + out; - switch(opts.type) { - case "base64": return Base64.encode(utf8write(o)); - case "binary": return utf8write(o); - case "string": return out; - case "file": return write_dl(opts.file, o, 'utf8'); - case "buffer": { - if(has_buf) return Buffer_from(o, 'utf8'); - else if(typeof TextEncoder !== "undefined") return new TextEncoder().encode(o); - else return write_string_type(o, {type:'binary'}).split("").map(function(c) { return c.charCodeAt(0); }); - } - } - throw new Error("Unrecognized type " + opts.type); -} - -function write_stxt_type(out, opts) { - switch(opts.type) { - case "base64": return Base64.encode(out); - case "binary": return out; - case "string": return out; /* override in sheet_to_txt */ - case "file": return write_dl(opts.file, out, 'binary'); - case "buffer": { - if(has_buf) return Buffer_from(out, 'binary'); - else return out.split("").map(function(c) { return c.charCodeAt(0); }); - } - } - throw new Error("Unrecognized type " + opts.type); -} - -/* TODO: test consistency */ -function write_binary_type(out, opts) { - switch(opts.type) { - case "string": - case "base64": - case "binary": - var bstr = ""; - // $FlowIgnore - for(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]); - return opts.type == 'base64' ? Base64.encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr; - case "file": return write_dl(opts.file, out); - case "buffer": return out; - default: throw new Error("Unrecognized type " + opts.type); - } -} - -function writeSyncXLSX(wb, opts) { - reset_cp(); - check_wb(wb); - var o = dup(opts||{}); - if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } - if(o.type == "array") { o.type = "binary"; var out = (writeSyncXLSX(wb, o)); o.type = "array"; return s2ab(out); } - return write_zip_typeXLSX(wb, o); -} - -function writeSync(wb, opts) { - reset_cp(); - check_wb(wb); - var o = dup(opts||{}); - if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } - if(o.type == "array") { o.type = "binary"; var out = (writeSync(wb, o)); o.type = "array"; return s2ab(out); } - switch(o.bookType || 'xlsb') { - case 'xml': - case 'xlml': return write_string_type(write_xlml(wb, o), o); - case 'slk': - case 'sylk': return write_string_type(write_slk_str(wb, o), o); - case 'htm': - case 'html': return write_string_type(write_htm_str(wb, o), o); - case 'txt': return write_stxt_type(write_txt_str(wb, o), o); - case 'csv': return write_string_type(write_csv_str(wb, o), o, "\ufeff"); - case 'dif': return write_string_type(write_dif_str(wb, o), o); - case 'dbf': return write_binary_type(write_dbf_buf(wb, o), o); - case 'prn': return write_string_type(write_prn_str(wb, o), o); - case 'rtf': return write_string_type(write_rtf_str(wb, o), o); - case 'eth': return write_string_type(write_eth_str(wb, o), o); - case 'fods': return write_string_type(write_ods(wb, o), o); - case 'wk1': return write_binary_type(write_wk1_buf(wb, o), o); - case 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o); - case 'biff2': if(!o.biff) o.biff = 2; /* falls through */ - case 'biff3': if(!o.biff) o.biff = 3; /* falls through */ - case 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o); - case 'biff5': if(!o.biff) o.biff = 5; /* falls through */ - case 'biff8': - case 'xla': - case 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o); - case 'xlsx': - case 'xlsm': - case 'xlam': - case 'xlsb': - case 'ods': return write_zip_type(wb, o); - default: throw new Error ("Unrecognized bookType |" + o.bookType + "|"); - } -} - -function resolve_book_type(o) { - if(o.bookType) return; - var _BT = { - "xls": "biff8", - "htm": "html", - "slk": "sylk", - "socialcalc": "eth", - "Sh33tJS": "WTF" - }; - var ext = o.file.slice(o.file.lastIndexOf(".")).toLowerCase(); - if(ext.match(/^\.[a-z]+$/)) o.bookType = ext.slice(1); - o.bookType = _BT[o.bookType] || o.bookType; -} - -function writeFileSync(wb, filename, opts) { - var o = opts||{}; o.type = 'file'; - o.file = filename; - resolve_book_type(o); - return writeSync(wb, o); -} - -function writeFileSyncXLSX(wb, filename, opts) { - var o = opts||{}; o.type = 'file'; - o.file = filename; - resolve_book_type(o); - return writeSyncXLSX(wb, o); -} - - -function writeFileAsync(filename, wb, opts, cb) { - var o = opts||{}; o.type = 'file'; - o.file = filename; - resolve_book_type(o); - o.type = 'buffer'; - var _cb = cb; if(!(_cb instanceof Function)) _cb = (opts); - return _fs.writeFile(filename, writeSync(wb, o), _cb); -} -function make_json_row(sheet, r, R, cols, header, hdr, dense, o) { - var rr = encode_row(R); - var defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, "raw"); - var isempty = true; - var row = (header === 1) ? [] : {}; - if(header !== 1) { - if(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; } - else row.__rowNum__ = R; - } - if(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) { - var val = dense ? sheet[R][C] : sheet[cols[C] + rr]; - if(val === undefined || val.t === undefined) { - if(defval === undefined) continue; - if(hdr[C] != null) { row[hdr[C]] = defval; } - continue; - } - var v = val.v; - switch(val.t){ - case 'z': if(v == null) break; continue; - case 'e': v = (v == 0 ? null : void 0); break; - case 's': case 'd': case 'b': case 'n': break; - default: throw new Error('unrecognized type ' + val.t); - } - if(hdr[C] != null) { - if(v == null) { - if(val.t == "e" && v === null) row[hdr[C]] = null; - else if(defval !== undefined) row[hdr[C]] = defval; - else if(raw && v === null) row[hdr[C]] = null; - else continue; - } else { - row[hdr[C]] = raw || (o.rawNumbers && val.t == "n") ? v : format_cell(val,v,o); - } - if(v != null) isempty = false; - } - } - return { row: row, isempty: isempty }; -} - - -function sheet_to_json(sheet, opts) { - if(sheet == null || sheet["!ref"] == null) return []; - var val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=""; - var r = {s:{r:0,c:0},e:{r:0,c:0}}; - var o = opts || {}; - var range = o.range != null ? o.range : sheet["!ref"]; - if(o.header === 1) header = 1; - else if(o.header === "A") header = 2; - else if(Array.isArray(o.header)) header = 3; - else if(o.header == null) header = 0; - switch(typeof range) { - case 'string': r = safe_decode_range(range); break; - case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; - default: r = range; - } - if(header > 0) offset = 0; - var rr = encode_row(r.s.r); - var cols = []; - var out = []; - var outi = 0, counter = 0; - var dense = Array.isArray(sheet); - var R = r.s.r, C = 0, CC = 0; - if(dense && !sheet[R]) sheet[R] = []; - for(C = r.s.c; C <= r.e.c; ++C) { - cols[C] = encode_col(C); - val = dense ? sheet[R][C] : sheet[cols[C] + rr]; - switch(header) { - case 1: hdr[C] = C - r.s.c; break; - case 2: hdr[C] = cols[C]; break; - case 3: hdr[C] = o.header[C - r.s.c]; break; - default: - if(val == null) val = {w: "__EMPTY", t: "s"}; - vv = v = format_cell(val, null, o); - counter = 0; - for(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + "_" + (++counter); - hdr[C] = vv; - } - } - for (R = r.s.r + offset; R <= r.e.r; ++R) { - var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); - if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row; - } - out.length = outi; - return out; -} - -var qreg = /"/g; -function make_csv_row(sheet, r, R, cols, fs, rs, FS, o) { - var isempty = true; - var row = [], txt = "", rr = encode_row(R); - for(var C = r.s.c; C <= r.e.c; ++C) { - if (!cols[C]) continue; - var val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr]; - if(val == null) txt = ""; - else if(val.v != null) { - isempty = false; - txt = ''+(o.rawNumbers && val.t == "n" ? val.v : format_cell(val, null, o)); - for(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = "\"" + txt.replace(qreg, '""') + "\""; break; } - if(txt == "ID") txt = '"ID"'; - } else if(val.f != null && !val.F) { - isempty = false; - txt = '=' + val.f; if(txt.indexOf(",") >= 0) txt = '"' + txt.replace(qreg, '""') + '"'; - } else txt = ""; - /* NOTE: Excel CSV does not support array formulae */ - row.push(txt); - } - if(o.blankrows === false && isempty) return null; - return row.join(FS); -} - -function sheet_to_csv(sheet, opts) { - var out = []; - var o = opts == null ? {} : opts; - if(sheet == null || sheet["!ref"] == null) return ""; - 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); - var colinfo = o.skipHidden && sheet["!cols"] || []; - var rowinfo = o.skipHidden && sheet["!rows"] || []; - for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); - for(var R = r.s.r; R <= r.e.r; ++R) { - if ((rowinfo[R]||{}).hidden) continue; - row = make_csv_row(sheet, r, R, cols, fs, rs, FS, o); - if(row == null) { continue; } - if(o.strip) row = row.replace(endregex,""); - out.push(row + RS); - } - delete o.dense; - return out.join(""); -} - -function sheet_to_txt(sheet, opts) { - if(!opts) opts = {}; opts.FS = "\t"; opts.RS = "\n"; - var s = sheet_to_csv(sheet, opts); - if(typeof cptable == 'undefined' || opts.type == 'string') return s; - var o = cptable.utils.encode(1200, s, 'str'); - return String.fromCharCode(255) + String.fromCharCode(254) + o; -} - -function sheet_to_formulae(sheet) { - var y = "", x, val=""; - if(sheet == null || sheet["!ref"] == null) return []; - var r = safe_decode_range(sheet['!ref']), rr = "", cols = [], C; - var cmds = []; - var dense = Array.isArray(sheet); - for(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C); - for(var R = r.s.r; R <= r.e.r; ++R) { - rr = encode_row(R); - for(C = r.s.c; C <= r.e.c; ++C) { - y = cols[C] + rr; - x = dense ? (sheet[R]||[])[C] : sheet[y]; - val = ""; - if(x === undefined) continue; - else if(x.F != null) { - y = x.F; - if(!x.f) continue; - val = x.f; - if(y.indexOf(":") == -1) y = y + ":" + y; - } - if(x.f != null) val = x.f; - else if(x.t == 'z') continue; - else if(x.t == 'n' && x.v != null) val = "" + x.v; - else if(x.t == 'b') val = x.v ? "TRUE" : "FALSE"; - else if(x.w !== undefined) val = "'" + x.w; - else if(x.v === undefined) continue; - else if(x.t == 's') val = "'" + x.v; - else val = ""+x.v; - cmds[cmds.length] = y + "=" + val; - } - } - return cmds; -} - -function sheet_add_json(_ws, js, opts) { - var o = opts || {}; - var offset = +!o.skipHeader; - var ws = _ws || ({}); - var _R = 0, _C = 0; - if(ws && o.origin != null) { - if(typeof o.origin == 'number') _R = o.origin; - else { - var _origin = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin; - _R = _origin.r; _C = _origin.c; - } - } - var cell; - var range = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}); - if(ws['!ref']) { - var _range = safe_decode_range(ws['!ref']); - range.e.c = Math.max(range.e.c, _range.e.c); - range.e.r = Math.max(range.e.r, _range.e.r); - if(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; } - } else { - if(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; } - } - var hdr = o.header || [], C = 0; - - js.forEach(function (JS, R) { - keys(JS).forEach(function(k) { - if((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k; - var v = JS[k]; - var t = 'z'; - var z = ""; - var ref = encode_cell({c:_C + C,r:_R + R + offset}); - cell = utils.sheet_get_cell(ws, ref); - if(v && typeof v === 'object' && !(v instanceof Date)){ - ws[ref] = v; - } else { - if(typeof v == 'number') t = 'n'; - else if(typeof v == 'boolean') t = 'b'; - else if(typeof v == 'string') t = 's'; - else if(v instanceof Date) { - t = 'd'; - if(!o.cellDates) { t = 'n'; v = datenum(v); } - z = (o.dateNF || SSF._table[14]); - } - else if(v === null && o.nullError) { t = 'e'; v = 0; } - if(!cell) ws[ref] = cell = ({t:t, v:v}); - else { - cell.t = t; cell.v = v; - delete cell.w; delete cell.R; - if(z) cell.z = z; - } - if(z) cell.z = z; - } - }); - }); - range.e.c = Math.max(range.e.c, _C + hdr.length - 1); - var __R = encode_row(_R); - if(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]}; - ws['!ref'] = encode_range(range); - return ws; -} -function json_to_sheet(js, opts) { return sheet_add_json(null, js, opts); } - -var utils = { - encode_col: encode_col, - encode_row: encode_row, - encode_cell: encode_cell, - encode_range: encode_range, - decode_col: decode_col, - decode_row: decode_row, - split_cell: split_cell, - decode_cell: decode_cell, - decode_range: decode_range, - format_cell: format_cell, - sheet_add_aoa: sheet_add_aoa, - sheet_add_json: sheet_add_json, - sheet_add_dom: sheet_add_dom, - aoa_to_sheet: aoa_to_sheet, - json_to_sheet: json_to_sheet, - table_to_sheet: parse_dom_table, - table_to_book: table_to_book, - sheet_to_csv: sheet_to_csv, - sheet_to_txt: sheet_to_txt, - sheet_to_json: sheet_to_json, - sheet_to_html: HTML_.from_sheet, - sheet_to_formulae: sheet_to_formulae, - sheet_to_row_object_array: sheet_to_json -}; - -(function(utils) { -utils.consts = utils.consts || {}; -function add_consts(R/*Array*/) { R.forEach(function(a){ utils.consts[a[0]] = a[1]; }); } - -function get_default(x, y, z) { return x[y] != null ? x[y] : (x[y] = z); } - -/* get cell, creating a stub if necessary */ -function ws_get_cell_stub(ws, R, C) { - /* A1 cell address */ - if(typeof R == "string") { - /* dense */ - if(Array.isArray(ws)) { - var RC = decode_cell(R); - if(!ws[RC.r]) ws[RC.r] = []; - return ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'}); - } - return ws[R] || (ws[R] = {t:'z'}); - } - /* cell address object */ - if(typeof R != "number") return ws_get_cell_stub(ws, encode_cell(R)); - /* R and C are 0-based indices */ - return ws_get_cell_stub(ws, encode_cell({r:R,c:C||0})); -} -utils.sheet_get_cell = ws_get_cell_stub; - -/* find sheet index for given name / validate index */ -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 + "|"); -} - -/* simple blank workbook object */ -utils.book_new = function() { - return { SheetNames: [], Sheets: {} }; -}; - -/* add a worksheet to the end of a given workbook */ -utils.book_append_sheet = function(wb, ws, name) { - if(!name) for(var i = 1; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = "Sheet" + i) == -1) break; - if(!name || wb.SheetNames.length >= 0xFFFF) throw new Error("Too many worksheets"); - 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; -}; - -/* set sheet visibility (visible/hidden/very hidden) */ -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); - // $FlowIgnore - get_default(wb.Workbook.Sheets,idx, {}); - - switch(vis) { - case 0: case 1: case 2: break; - default: throw new Error("Bad sheet visibility setting " + vis); - } - // $FlowIgnore - wb.Workbook.Sheets[idx].Hidden = vis; -}; -add_consts([ - ["SHEET_VISIBLE", 0], - ["SHEET_HIDDEN", 1], - ["SHEET_VERY_HIDDEN", 2] -]); - -/* set number format */ -utils.cell_set_number_format = function(cell, fmt) { - cell.z = fmt; - return cell; -}; - -/* set cell hyperlink */ -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_set_internal_link = function(cell, range, tooltip) { return utils.cell_set_hyperlink(cell, "#" + range, tooltip); }; - -/* add to cell comments */ -utils.cell_add_comment = function(cell, text, author) { - if(!cell.c) cell.c = []; - cell.c.push({t:text, a:author||"SheetJS"}); -}; - -/* set array formula and flush related cells */ -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 strmod = undefined; - if(!strmod) return; - var Readable = strmod.Readable; - if(!Readable) return; - - var write_csv_stream = function(sheet, opts) { - var stream = Readable(); - 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); - var colinfo = o.skipHidden && sheet["!cols"] || []; - var rowinfo = o.skipHidden && sheet["!rows"] || []; - for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); - var R = r.s.r; - var BOM = false; - stream._read = function() { - if(!BOM) { BOM = true; return stream.push("\uFEFF"); } - while(R <= r.e.r) { - ++R; - if ((rowinfo[R-1]||{}).hidden) continue; - row = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o); - if(row != null) { - if(o.strip) row = row.replace(endregex,""); - stream.push(row + RS); - break; - } - } - if(R > r.e.r) return stream.push(null); - }; - return stream; - }; - - var write_html_stream = function(ws, opts) { - var stream = Readable(); - - var o = opts || {}; - var header = o.header != null ? o.header : HTML_.BEGIN; - var footer = o.footer != null ? o.footer : HTML_.END; - stream.push(header); - var r = decode_range(ws['!ref']); - o.dense = Array.isArray(ws); - stream.push(HTML_._preamble(ws, r, o)); - var R = r.s.r; - var end = false; - stream._read = function() { - if(R > r.e.r) { - if(!end) { end = true; stream.push("" + footer); } - return stream.push(null); - } - while(R <= r.e.r) { - stream.push(HTML_._row(ws, r, R, o)); - ++R; - break; - } - }; - return stream; - }; - - var write_json_stream = function(sheet, opts) { - var stream = Readable({objectMode:true}); - - if(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; } - var val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=""; - var r = {s:{r:0,c:0},e:{r:0,c:0}}; - var o = opts || {}; - var range = o.range != null ? o.range : sheet["!ref"]; - if(o.header === 1) header = 1; - else if(o.header === "A") header = 2; - else if(Array.isArray(o.header)) header = 3; - switch(typeof range) { - case 'string': r = safe_decode_range(range); break; - case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; - default: r = range; - } - if(header > 0) offset = 0; - var rr = encode_row(r.s.r); - var cols = []; - var counter = 0; - var dense = Array.isArray(sheet); - var R = r.s.r, C = 0, CC = 0; - if(dense && !sheet[R]) sheet[R] = []; - for(C = r.s.c; C <= r.e.c; ++C) { - cols[C] = encode_col(C); - val = dense ? sheet[R][C] : sheet[cols[C] + rr]; - switch(header) { - case 1: hdr[C] = C - r.s.c; break; - case 2: hdr[C] = cols[C]; break; - case 3: hdr[C] = o.header[C - r.s.c]; break; - default: - if(val == null) val = {w: "__EMPTY", t: "s"}; - vv = v = format_cell(val, null, o); - counter = 0; - for(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + "_" + (++counter); - hdr[C] = vv; - } - } - R = r.s.r + offset; - stream._read = function() { - if(R > r.e.r) return stream.push(null); - while(R <= r.e.r) { - //if ((rowinfo[R-1]||{}).hidden) continue; - var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); - ++R; - if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) { - stream.push(row.row); - break; - } - } - }; - return stream; - }; - - XLSX.stream = { - to_json: write_json_stream, - to_html: write_html_stream, - to_csv: write_csv_stream - }; -})(); - -if(typeof parse_xlscfb !== "undefined") XLSX.parse_xlscfb = parse_xlscfb; -XLSX.parse_zip = parse_zip; -XLSX.read = readSync; //xlsread -XLSX.readFile = readFileSync; //readFile -XLSX.readFileSync = readFileSync; -XLSX.write = writeSync; -XLSX.writeFile = writeFileSync; -XLSX.writeFileSync = writeFileSync; -XLSX.writeFileAsync = writeFileAsync; -XLSX.utils = utils; -XLSX.writeXLSX = writeSyncXLSX; -XLSX.writeFileXLSX = writeFileSyncXLSX; -XLSX.SSF = SSF; -if(typeof CFB !== "undefined") XLSX.CFB = CFB; -} -/*global define */ -if(typeof exports !== 'undefined') make_xlsx_lib(exports); -else if(typeof module !== 'undefined' && module.exports) make_xlsx_lib(module.exports); -else if(typeof define === 'function' && define.amd) define('xlsx', function() { if(!XLSX.version) make_xlsx_lib(XLSX); return XLSX; }); -else make_xlsx_lib(XLSX); -/* NOTE: the following extra line is needed for "Lightning Locker Service" */ -if(typeof window !== 'undefined' && !window.XLSX) try { window.XLSX = XLSX; } catch(e) {} diff --git a/dist/xlsx.min.js b/dist/xlsx.min.js deleted file mode 100644 index a0de97e..0000000 --- a/dist/xlsx.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ -var DO_NOT_EXPORT_CODEPAGE=true;var XLSX={};function make_xlsx_lib(e){e.version="0.18.2";var r=1200,t=1252;if(typeof module!=="undefined"&&typeof require!=="undefined"){if(typeof cptable==="undefined"){if(typeof global!=="undefined")global.cptable=undefined;else if(typeof window!=="undefined")window.cptable=undefined}}var a=[874,932,936,949,950,1e4];for(var n=0;n<=8;++n)a.push(1250+n);var i={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969};var s=function(e){if(a.indexOf(e)==-1)return;t=i[0]=e};function f(){s(1252)}var l=function(e){r=e;s(e)};function o(){l(1200);f()}function c(e){var r=[];for(var t=0,a=e.length;t>1;++t)r[t]=String.fromCharCode(e.charCodeAt(2*t)+(e.charCodeAt(2*t+1)<<8));return r.join("")}function h(e){var r=[];for(var t=0;t>1;++t)r[t]=String.fromCharCode(e.charCodeAt(2*t+1)+(e.charCodeAt(2*t)<<8));return r.join("")}var d=function(e){var r=e.charCodeAt(0),t=e.charCodeAt(1);if(r==255&&t==254)return u(e.slice(2));if(r==254&&t==255)return h(e.slice(2));if(r==65279)return e.slice(1);return e};var v=function Hb(e){return String.fromCharCode(e)};var p=function Vb(e){return String.fromCharCode(e)};if(typeof cptable!=="undefined"){l=function(e){r=e;s(e)};d=function(e){if(e.charCodeAt(0)===255&&e.charCodeAt(1)===254){return cptable.utils.decode(1200,c(e.slice(2)))}return e};v=function Xb(e){if(r===1200)return String.fromCharCode(e);return cptable.utils.decode(r,[e&255,e>>8])[0]};p=function Gb(e){return cptable.utils.decode(t,[e])[0]}}var m=null;var b=true;var g=function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{encode:function(r){var t="";var a=0,n=0,i=0,s=0,f=0,l=0,o=0;for(var c=0;c>2;n=r.charCodeAt(c++);f=(a&3)<<4|n>>4;i=r.charCodeAt(c++);l=(n&15)<<2|i>>6;o=i&63;if(isNaN(n)){l=o=64}else if(isNaN(i)){o=64}t+=e.charAt(s)+e.charAt(f)+e.charAt(l)+e.charAt(o)}return t},decode:function(r){var t="";var a=0,n=0,i=0,s=0,f=0,l=0,o=0;r=r.replace(/[^\w\+\/\=]/g,"");for(var c=0;c>4;t+=String.fromCharCode(a);l=e.indexOf(r.charAt(c++));n=(f&15)<<4|l>>2;if(l!==64){t+=String.fromCharCode(n)}o=e.indexOf(r.charAt(c++));i=(l&3)<<6|o;if(o!==64){t+=String.fromCharCode(i)}}return t}}}();var w=typeof Buffer!=="undefined"&&typeof process!=="undefined"&&typeof process.versions!=="undefined"&&!!process.versions.node;var k=function(){};if(typeof Buffer!=="undefined"){var E=!Buffer.from;if(!E)try{Buffer.from("foo","utf8")}catch(S){E=true}k=E?function(e,r){return r?new Buffer(e,r):new Buffer(e)}:Buffer.from.bind(Buffer);if(!Buffer.alloc)Buffer.alloc=function(e){return new Buffer(e)};if(!Buffer.allocUnsafe)Buffer.allocUnsafe=function(e){return new Buffer(e)}}function B(e){return w?Buffer.alloc(e):typeof Uint8Array!="undefined"?new Uint8Array(e):new Array(e)}function C(e){return w?Buffer.allocUnsafe(e):typeof Uint8Array!="undefined"?new Uint8Array(e):new Array(e)}var y=function zb(e){if(w)return k(e,"binary");return e.split("").map(function(e){return e.charCodeAt(0)&255})};function T(e){if(typeof ArrayBuffer==="undefined")return y(e);var r=new ArrayBuffer(e.length),t=new Uint8Array(r);for(var a=0;a!=e.length;++a)t[a]=e.charCodeAt(a)&255;return r}function _(e){if(Array.isArray(e))return e.map(function(e){return String.fromCharCode(e)}).join("");var r=[];for(var t=0;t>6&31;n[t++]=128|s&63}else if(s>=55296&&s<57344){s=(s&1023)+64;var f=e.charCodeAt(++i)&1023;n[t++]=240|s>>8&7;n[t++]=128|s>>2&63;n[t++]=128|f>>6&15|(s&3)<<4;n[t++]=128|f&63}else{n[t++]=224|s>>12&15;n[t++]=128|s>>6&63;n[t++]=128|s&63}if(t>a){r.push(n.slice(0,t));t=0;n=B(65535);a=65530}}r.push(n.slice(0,t));return F(r)}var F=function(e){if(typeof Uint8Array!=="undefined"){var r=0,t=0;for(r=0;r=0)r+=e.charAt(t--);return r}function t(e,r){var t="";while(t.length=r?a:t("0",r-a.length)+a}function n(e,r){var a=""+e;return a.length>=r?a:t(" ",r-a.length)+a}function i(e,r){var a=""+e;return a.length>=r?a:a+t(" ",r-a.length)}function s(e,r){var a=""+Math.round(e);return a.length>=r?a:t("0",r-a.length)+a}function f(e,r){var a=""+e;return a.length>=r?a:t("0",r-a.length)+a}var l=Math.pow(2,32);function o(e,r){if(e>l||e<-l)return s(e,r);var t=Math.round(e);return f(t,r)}function c(e,r){r=r||0;return e.length>=7+r&&(e.charCodeAt(r)|32)===103&&(e.charCodeAt(r+1)|32)===101&&(e.charCodeAt(r+2)|32)===110&&(e.charCodeAt(r+3)|32)===101&&(e.charCodeAt(r+4)|32)===114&&(e.charCodeAt(r+5)|32)===97&&(e.charCodeAt(r+6)|32)===108}var u=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]];var h=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function d(e){e[0]="General";e[1]="0";e[2]="0.00";e[3]="#,##0";e[4]="#,##0.00";e[9]="0%";e[10]="0.00%";e[11]="0.00E+00";e[12]="# ?/?";e[13]="# ??/??";e[14]="m/d/yy";e[15]="d-mmm-yy";e[16]="d-mmm";e[17]="mmm-yy";e[18]="h:mm AM/PM";e[19]="h:mm:ss AM/PM";e[20]="h:mm";e[21]="h:mm:ss";e[22]="m/d/yy h:mm";e[37]="#,##0 ;(#,##0)";e[38]="#,##0 ;[Red](#,##0)";e[39]="#,##0.00;(#,##0.00)";e[40]="#,##0.00;[Red](#,##0.00)";e[45]="mm:ss";e[46]="[h]:mm:ss";e[47]="mmss.0";e[48]="##0.0E+0";e[49]="@";e[56]='"上午/下午 "hh"時"mm"分"ss"秒 "'}var v={};d(v);var p=[];var m=0;for(m=5;m<=8;++m)p[m]=32+m;for(m=23;m<=26;++m)p[m]=0;for(m=27;m<=31;++m)p[m]=14;for(m=50;m<=58;++m)p[m]=14;for(m=59;m<=62;++m)p[m]=m-58;for(m=67;m<=68;++m)p[m]=m-58;for(m=72;m<=75;++m)p[m]=m-58;for(m=67;m<=68;++m)p[m]=m-57;for(m=76;m<=78;++m)p[m]=m-56;for(m=79;m<=81;++m)p[m]=m-34;var b=[];b[5]=b[63]='"$"#,##0_);\\("$"#,##0\\)';b[6]=b[64]='"$"#,##0_);[Red]\\("$"#,##0\\)';b[7]=b[65]='"$"#,##0.00_);\\("$"#,##0.00\\)';b[8]=b[66]='"$"#,##0.00_);[Red]\\("$"#,##0.00\\)';b[41]='_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)';b[42]='_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)';b[43]='_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)';b[44]='_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)';function g(e,r,t){var a=e<0?-1:1;var n=e*a;var i=0,s=1,f=0;var l=1,o=0,c=0;var u=Math.floor(n);while(or){if(o>r){c=l;f=i}else{c=o;f=s}}if(!t)return[0,a*f,c];var h=Math.floor(a*f/c);return[h,a*f-h*c,c]}function w(e,r,t){if(e>2958465||e<0)return null;var a=e|0,n=Math.floor(86400*(e-a)),i=0;var s=[];var f={D:a,T:n,u:86400*(e-a)-n,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(f.u)<1e-6)f.u=0;if(r&&r.date1904)a+=1462;if(f.u>.9999){f.u=0;if(++n==86400){f.T=n=0;++a;++f.D}}if(a===60){s=t?[1317,10,29]:[1900,2,29];i=3}else if(a===0){s=t?[1317,8,29]:[1900,1,0];i=6}else{if(a>60)--a;var l=new Date(1900,0,1);l.setDate(l.getDate()+a-1);s=[l.getFullYear(),l.getMonth()+1,l.getDate()];i=l.getDay();if(a<60)i=(i+6)%7;if(t)i=_(l,s)}f.y=s[0];f.m=s[1];f.d=s[2];f.S=n%60;n=Math.floor(n/60);f.M=n%60;n=Math.floor(n/60);f.H=n;f.q=i;return f}e.parse_date_code=w;var k=new Date(1899,11,31,0,0,0);var E=k.getTime();var S=new Date(1900,2,1,0,0,0);function B(e,r){var t=e.getTime();if(r)t-=1461*24*60*60*1e3;else if(e>=S)t+=24*60*60*1e3;return(t-(E+(e.getTimezoneOffset()-k.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function C(e){return e.toString(10)}e._general_int=C;var y=function H(){var e=/(?:\.0*|(\.\d*[1-9])0+)$/;function r(r){return r.indexOf(".")==-1?r:r.replace(e,"$1")}var t=/(?:\.0*|(\.\d*[1-9])0+)[Ee]/;var a=/(E[+-])(\d)$/;function n(e){if(e.indexOf("E")==-1)return e;return e.replace(t,"$1E").replace(a,"$10$2")}function i(e){var t=e<0?12:11;var a=r(e.toFixed(12));if(a.length<=t)return a;a=e.toPrecision(10);if(a.length<=t)return a;return e.toExponential(5)}function s(e){var t=r(e.toFixed(11));return t.length>(e<0?12:11)||t==="0"||t==="-0"?e.toPrecision(6):t}function f(e){var t=Math.floor(Math.log(Math.abs(e))*Math.LOG10E),a;if(t>=-4&&t<=-1)a=e.toPrecision(10+t);else if(Math.abs(t)<=9)a=i(e);else if(t===10)a=e.toFixed(10).substr(0,12);else a=s(e);return r(n(a.toUpperCase()))}return f}();e._general_num=y;function T(e,r){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":return(e|0)===e?e.toString(10):y(e);case"undefined":return"";case"object":if(e==null)return"";if(e instanceof Date)return U(14,B(e,r&&r.date1904),r);}throw new Error("unsupported value in General format: "+e)}e._general=T;function _(e,r){r[0]-=581;var t=e.getDay();if(e<60)t=(t+6)%7;return t}function x(e,r,t,n){var i="",s=0,f=0,l=t.y,o,c=0;switch(e){case 98:l=t.y+543;case 121:switch(r.length){case 1:;case 2:o=l%100;c=2;break;default:o=l%1e4;c=4;break;}break;case 109:switch(r.length){case 1:;case 2:o=t.m;c=r.length;break;case 3:return h[t.m-1][1];case 5:return h[t.m-1][0];default:return h[t.m-1][2];}break;case 100:switch(r.length){case 1:;case 2:o=t.d;c=r.length;break;case 3:return u[t.q][0];default:return u[t.q][1];}break;case 104:switch(r.length){case 1:;case 2:o=1+(t.H+11)%12;c=r.length;break;default:throw"bad hour format: "+r;}break;case 72:switch(r.length){case 1:;case 2:o=t.H;c=r.length;break;default:throw"bad hour format: "+r;}break;case 77:switch(r.length){case 1:;case 2:o=t.M;c=r.length;break;default:throw"bad minute format: "+r;}break;case 115:if(r!="s"&&r!="ss"&&r!=".0"&&r!=".00"&&r!=".000")throw"bad second format: "+r;if(t.u===0&&(r=="s"||r=="ss"))return a(t.S,r.length);if(n>=2)f=n===3?1e3:100;else f=n===1?10:1;s=Math.round(f*(t.S+t.u));if(s>=60*f)s=0;if(r==="s")return s===0?"0":""+s/f;i=a(s,2+n);if(r==="ss")return i.substr(0,2);return"."+i.substr(2,r.length-1);case 90:switch(r){case"[h]":;case"[hh]":o=t.D*24+t.H;break;case"[m]":;case"[mm]":o=(t.D*24+t.H)*60+t.M;break;case"[s]":;case"[ss]":o=((t.D*24+t.H)*60+t.M)*60+Math.round(t.S+t.u);break;default:throw"bad abstime format: "+r;}c=r.length===3?1:2;break;case 101:o=l;c=1;break;}var d=c>0?a(o,c):"";return d}function A(e){var r=3;if(e.length<=r)return e;var t=e.length%r,a=e.substr(0,t);for(;t!=e.length;t+=r)a+=(a.length>0?",":"")+e.substr(t,r);return a}var R=function V(){var e=/%/g;function s(r,a,n){var i=a.replace(e,""),s=a.length-i.length;return R(r,i,n*Math.pow(10,2*s))+t("%",s)}function f(e,r,t){var a=r.length-1;while(r.charCodeAt(a-1)===44)--a;return R(e,r.substr(0,a),t/Math.pow(10,3*(r.length-a)))}function l(e,r){var t;var a=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(r==0)return"0.0E+0";else if(r<0)return"-"+l(e,-r);var n=e.indexOf(".");if(n===-1)n=e.indexOf("E");var i=Math.floor(Math.log(r)*Math.LOG10E)%n;if(i<0)i+=n;t=(r/Math.pow(10,i)).toPrecision(a+1+(n+i)%n);if(t.indexOf("e")===-1){var s=Math.floor(Math.log(r)*Math.LOG10E);if(t.indexOf(".")===-1)t=t.charAt(0)+"."+t.substr(1)+"E+"+(s-t.length+i);else t+="E+"+(s-i);while(t.substr(0,2)==="0."){t=t.charAt(0)+t.substr(2,n)+"."+t.substr(2+n);t=t.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.")}t=t.replace(/\+-/,"-")}t=t.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(e,r,t,a){return r+t+a.substr(0,(n+i)%n)+"."+a.substr(i)+"E"})}else t=r.toExponential(a);if(e.match(/E\+00$/)&&t.match(/e[+-]\d$/))t=t.substr(0,t.length-1)+"0"+t.charAt(t.length-1);if(e.match(/E\-/)&&t.match(/e\+/))t=t.replace(/e\+/,"e");return t.replace("e","E")}var c=/# (\?+)( ?)\/( ?)(\d+)/;function u(e,r,i){var s=parseInt(e[4],10),f=Math.round(r*s),l=Math.floor(f/s);var o=f-l*s,c=s;return i+(l===0?"":""+l)+" "+(o===0?t(" ",e[1].length+1+e[4].length):n(o,e[1].length)+e[2]+"/"+e[3]+a(c,e[4].length))}function h(e,r,a){return a+(r===0?"":""+r)+t(" ",e[1].length+2+e[4].length)}var d=/^#*0*\.([0#]+)/;var v=/\).*[0#]/;var p=/\(###\) ###\\?-####/;function m(e){var r="",t;for(var a=0;a!=e.length;++a)switch(t=e.charCodeAt(a)){case 35:break;case 63:r+=" ";break;case 48:r+="0";break;default:r+=String.fromCharCode(t);}return r}function b(e,r){var t=Math.pow(10,r);return""+Math.round(e*t)/t}function w(e,r){var t=e-Math.floor(e),a=Math.pow(10,r);if(r<(""+Math.round(t*a)).length)return 0;return Math.round(t*a)}function k(e,r){if(r<(""+Math.round((e-Math.floor(e))*Math.pow(10,r))).length){return 1}return 0}function E(e){if(e<2147483647&&e>-2147483648)return""+(e>=0?e|0:e-1|0);return""+Math.floor(e)}function S(e,h,B){if(e.charCodeAt(0)===40&&!h.match(v)){var C=h.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");if(B>=0)return S("n",C,B);return"("+S("n",C,-B)+")"}if(h.charCodeAt(h.length-1)===44)return f(e,h,B);if(h.indexOf("%")!==-1)return s(e,h,B);if(h.indexOf("E")!==-1)return l(h,B);if(h.charCodeAt(0)===36)return"$"+S(e,h.substr(h.charAt(1)==" "?2:1),B);var y;var T,_,x,F=Math.abs(B),I=B<0?"-":"";if(h.match(/^00+$/))return I+o(F,h.length);if(h.match(/^[#?]+$/)){y=o(B,0);if(y==="0")y="";return y.length>h.length?y:m(h.substr(0,h.length-y.length))+y}if(T=h.match(c))return u(T,F,I);if(h.match(/^#+0+$/))return I+o(F,h.length-h.indexOf("0"));if(T=h.match(d)){y=b(B,T[1].length).replace(/^([^\.]+)$/,"$1."+m(T[1])).replace(/\.$/,"."+m(T[1])).replace(/\.(\d*)$/,function(e,r){return"."+r+t("0",m(T[1]).length-r.length)});return h.indexOf("0.")!==-1?y:y.replace(/^0\./,".")}h=h.replace(/^#+([0.])/,"$1");if(T=h.match(/^(0*)\.(#*)$/)){return I+b(F,T[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,T[1].length?"0.":".")}if(T=h.match(/^#{1,3},##0(\.?)$/))return I+A(o(F,0));if(T=h.match(/^#,##0\.([#0]*0)$/)){return B<0?"-"+S(e,h,-B):A(""+(Math.floor(B)+k(B,T[1].length)))+"."+a(w(B,T[1].length),T[1].length)}if(T=h.match(/^#,#*,#0/))return S(e,h.replace(/^#,#*,/,""),B);if(T=h.match(/^([0#]+)(\\?-([0#]+))+$/)){y=r(S(e,h.replace(/[\\-]/g,""),B));_=0;return r(r(h.replace(/\\/g,"")).replace(/[0#]/g,function(e){return _=0)return T("n",l,f);return"("+T("n",l,-f)+")"}if(s.charCodeAt(s.length-1)===44)return B(e,s,f);if(s.indexOf("%")!==-1)return C(e,s,f);if(s.indexOf("E")!==-1)return y(s,f);if(s.charCodeAt(0)===36)return"$"+T(e,s.substr(s.charAt(1)==" "?2:1),f);var o;var u,b,w,k=Math.abs(f),E=f<0?"-":"";if(s.match(/^00+$/))return E+a(k,s.length);if(s.match(/^[#?]+$/)){o=""+f;if(f===0)o="";return o.length>s.length?o:m(s.substr(0,s.length-o.length))+o}if(u=s.match(c))return h(u,k,E);if(s.match(/^#+0+$/))return E+a(k,s.length-s.indexOf("0"));if(u=s.match(d)){o=(""+f).replace(/^([^\.]+)$/,"$1."+m(u[1])).replace(/\.$/,"."+m(u[1]));o=o.replace(/\.(\d*)$/,function(e,r){return"."+r+t("0",m(u[1]).length-r.length)});return s.indexOf("0.")!==-1?o:o.replace(/^0\./,".")}s=s.replace(/^#+([0.])/,"$1");if(u=s.match(/^(0*)\.(#*)$/)){return E+(""+k).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,u[1].length?"0.":".")}if(u=s.match(/^#{1,3},##0(\.?)$/))return E+A(""+k);if(u=s.match(/^#,##0\.([#0]*0)$/)){return f<0?"-"+T(e,s,-f):A(""+f)+"."+t("0",u[1].length)}if(u=s.match(/^#,#*,#0/))return T(e,s.replace(/^#,#*,/,""),f);if(u=s.match(/^([0#]+)(\\?-([0#]+))+$/)){o=r(T(e,s.replace(/[\\-]/g,""),f));b=0;return r(r(s.replace(/\\/g,"")).replace(/[0#]/g,function(e){return b-1||t=="\\"&&e.charAt(r+1)=="-"&&"0#".indexOf(e.charAt(r+2))>-1)){}break;case"?":while(e.charAt(++r)===t){}break;case"*":++r;if(e.charAt(r)==" "||e.charAt(r)=="*")++r;break;case"(":;case")":++r;break;case"1":;case"2":;case"3":;case"4":;case"5":;case"6":;case"7":;case"8":;case"9":while(r-1){}break;case" ":++r;break;default:++r;break;}}return false}e.is_date=D;function P(e,r,t,a){var n=[],i="",s=0,f="",l="t",o,u,h;var d="H";while(s=12?"P":"A";m.t="T";d="h";s+=3}else if(e.substr(s,5).toUpperCase()==="AM/PM"){if(o!=null)m.v=o.H>=12?"PM":"AM";m.t="T";s+=5;d="h"}else if(e.substr(s,5).toUpperCase()==="上午/下午"){if(o!=null)m.v=o.H>=12?"下午":"上午";m.t="T";s+=5;d="h"}else{m.t="t";++s}if(o==null&&m.t==="T")return"";n[n.length]=m;l=f;break;case"[":i=f;while(e.charAt(s++)!=="]"&&s-1){i=(i.match(/\$([^-\[\]]*)/)||[])[1]||"$";if(!D(e))n[n.length]={t:"t",v:i}}break;case".":if(o!=null){i=f;while(++s-1)i+=f;n[n.length]={t:"n",v:i};break;case"?":i=f;while(e.charAt(++s)===f)i+=f;n[n.length]={t:f,v:i};l=f;break;case"*":++s;if(e.charAt(s)==" "||e.charAt(s)=="*")++s;break;case"(":;case")":n[n.length]={t:a===1?"t":f,v:f};++s;break;case"1":;case"2":;case"3":;case"4":;case"5":;case"6":;case"7":;case"8":;case"9":i=f;while(s-1)i+=e.charAt(s);n[n.length]={t:"D",v:i};break;case" ":n[n.length]={t:f,v:f};++s;break;case"$":n[n.length]={t:"t",v:"$"};++s;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(f)===-1)throw new Error("unrecognized character "+f+" in "+e);n[n.length]={t:"t",v:f};++s;break;}}var b=0,g=0,k;for(s=n.length-1,l="t";s>=0;--s){switch(n[s].t){case"h":;case"H":n[s].t=d;l="h";if(b<1)b=1;break;case"s":if(k=n[s].v.match(/\.0+$/))g=Math.max(g,k[0].length-1);if(b<3)b=3;case"d":;case"y":;case"M":;case"e":l=n[s].t;break;case"m":if(l==="s"){n[s].t="M";if(b<2)b=2}break;case"X":break;case"Z":if(b<1&&n[s].v.match(/[Hh]/))b=1;if(b<2&&n[s].v.match(/[Mm]/))b=2;if(b<3&&n[s].v.match(/[Ss]/))b=3;}}switch(b){case 0:break;case 1:if(o.u>=.5){o.u=0;++o.S}if(o.S>=60){o.S=0;++o.M}if(o.M>=60){o.M=0;++o.H}break;case 2:if(o.u>=.5){o.u=0;++o.S}if(o.S>=60){o.S=0;++o.M}break;}var E="",S;for(s=0;s0){if(E.charCodeAt(0)==40){C=r<0&&E.charCodeAt(0)===45?-r:r;y=R("n",E,C)}else{C=r<0&&a>1?-r:r;y=R("n",E,C);if(C<0&&n[0]&&n[0].t=="t"){y=y.substr(1);n[0].v="-"+n[0].v}}S=y.length-1;var _=n.length;for(s=0;s-1){_=s;break}var A=n.length;if(_===n.length&&y.indexOf("E")===-1){for(s=n.length-1;s>=0;--s){if(n[s]==null||"n?".indexOf(n[s].t)===-1)continue;if(S>=n[s].v.length-1){S-=n[s].v.length;n[s].v=y.substr(S+1,n[s].v.length)}else if(S<0)n[s].v="";else{n[s].v=y.substr(0,S+1);S=-1}n[s].t="t";A=s}if(S>=0&&A=0;--s){if(n[s]==null||"n?".indexOf(n[s].t)===-1)continue;u=n[s].v.indexOf(".")>-1&&s===_?n[s].v.indexOf(".")-1:n[s].v.length-1;B=n[s].v.substr(u+1);for(;u>=0;--u){if(S>=0&&(n[s].v.charAt(u)==="0"||n[s].v.charAt(u)==="#"))B=y.charAt(S--)+B}n[s].v=B;n[s].t="t";A=s}if(S>=0&&A-1&&s===_?n[s].v.indexOf(".")+1:0;B=n[s].v.substr(0,u);for(;u-1){C=a>1&&r<0&&s>0&&n[s-1].v==="-"?-r:r;n[s].v=R(n[s].t,n[s].v,C);n[s].t="t"}var F="";for(s=0;s!==n.length;++s)if(n[s]!=null)F+=n[s].v;return F}e._eval=P;var O=/\[[=<>]/;var N=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function L(e,r){if(r==null)return false;var t=parseFloat(r[2]);switch(r[1]){case"=":if(e==t)return true;break;case">":if(e>t)return true;break;case"<":if(e":if(e!=t)return true;break;case">=":if(e>=t)return true;break;case"<=":if(e<=t)return true;break;}return false}function M(e,r){var t=F(e);var a=t.length,n=t[a-1].indexOf("@");if(a<4&&n>-1)--a;if(t.length>4)throw new Error("cannot find right format for |"+t.join("|")+"|");if(typeof r!=="number")return[4,t.length===4||n>-1?t[t.length-1]:"@"];switch(t.length){case 1:t=n>-1?["General","General","General",t[0]]:[t[0],t[0],t[0],"@"];break;case 2:t=n>-1?[t[0],t[0],t[0],t[1]]:[t[0],t[1],t[0],"@"];break;case 3:t=n>-1?[t[0],t[1],t[0],t[2]]:[t[0],t[1],t[2],"@"];break;case 4:break;}var i=r>0?t[0]:r<0?t[1]:t[2];if(t[0].indexOf("[")===-1&&t[1].indexOf("[")===-1)return[a,i];if(t[0].match(O)!=null||t[1].match(O)!=null){var s=t[0].match(N);var f=t[1].match(N);return L(r,s)?[a,t[0]]:L(r,f)?[a,t[1]]:[a,t[s!=null&&f!=null?2:1]]}return[a,i]}function U(e,r,t){if(t==null)t={};var a="";switch(typeof e){case"string":if(e=="m/d/yy"&&t.dateNF)a=t.dateNF;else a=e;break;case"number":if(e==14&&t.dateNF)a=t.dateNF;else a=(t.table!=null?t.table:v)[e];if(a==null)a=t.table&&t.table[p[e]]||v[p[e]];if(a==null)a=b[e]||"General";break;}if(c(a,0))return T(r,t);if(r instanceof Date)r=B(r,t.date1904);var n=M(a,r);if(c(n[1]))return T(r,t);if(r===true)r="TRUE";else if(r===false)r="FALSE";else if(r===""||r==null)return"";return P(n[1],r,t,n[0])}function W(e,r){if(typeof r!="number"){r=+r||-1;for(var t=0;t<392;++t){if(v[t]==undefined){if(r<0)r=t;continue}if(v[t]==e){r=t;break}}if(r<0)r=391}v[r]=e;return r}e.load=W;e._table=v;e.get_table=function X(){return v};e.load_table=function G(e){for(var r=0;r!=392;++r)if(e[r]!==undefined)W(e[r],r)};e.init_table=d;e.format=U};O(P);var N={"General Number":"General","General Date":P._table[22],"Long Date":"dddd, mmmm dd, yyyy","Medium Date":P._table[15],"Short Date":P._table[14],"Long Time":P._table[19],"Medium Time":P._table[18],"Short Time":P._table[20],Currency:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',Fixed:P._table[2],Standard:P._table[4],Percent:P._table[10],Scientific:P._table[11],"Yes/No":'"Yes";"Yes";"No";@',"True/False":'"True";"True";"False";@',"On/Off":'"Yes";"Yes";"No";@'};var L={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"};var M=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function U(e){var r=typeof e=="number"?P._table[e]:e;r=r.replace(M,"(\\d+)");return new RegExp("^"+r+"$")}function W(e,r,t){var a=-1,n=-1,i=-1,s=-1,f=-1,l=-1;(r.match(M)||[]).forEach(function(e,r){var o=parseInt(t[r+1],10);switch(e.toLowerCase().charAt(0)){case"y":a=o;break;case"d":i=o;break;case"h":s=o;break;case"s":l=o;break;case"m":if(s>=0)f=o;else n=o;break;}});if(l>=0&&f==-1&&n>=0){f=n;n=-1}var o=(""+(a>=0?a:(new Date).getFullYear())).slice(-4)+"-"+("00"+(n>=1?n:1)).slice(-2)+"-"+("00"+(i>=1?i:1)).slice(-2);if(o.length==7)o="0"+o;if(o.length==8)o="20"+o;var c=("00"+(s>=0?s:0)).slice(-2)+":"+("00"+(f>=0?f:0)).slice(-2)+":"+("00"+(l>=0?l:0)).slice(-2);if(s==-1&&f==-1&&l==-1)return o;if(a==-1&&n==-1&&i==-1)return c;return o+"T"+c}var H=true;var V;(function(e){e(V={})})(function(e){e.version="1.2.0";function r(){var e=0,r=new Array(256);for(var t=0;t!=256;++t){e=t;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;r[t]=e}return typeof Int32Array!=="undefined"?new Int32Array(r):r}var t=r();function a(e){var r=0,t=0,a=0,n=typeof Int32Array!=="undefined"?new Int32Array(4096):new Array(4096);for(a=0;a!=256;++a)n[a]=e[a];for(a=0;a!=256;++a){t=e[a];for(r=256+a;r<4096;r+=256)t=n[r]=t>>>8^e[t&255]; -}var i=[];for(a=1;a!=16;++a)i[a-1]=typeof Int32Array!=="undefined"?n.subarray(a*256,a*256+256):n.slice(a*256,a*256+256);return i}var n=a(t);var i=n[0],s=n[1],f=n[2],l=n[3],o=n[4];var c=n[5],u=n[6],h=n[7],d=n[8],v=n[9];var p=n[10],m=n[11],b=n[12],g=n[13],w=n[14];function k(e,r){var a=r^-1;for(var n=0,i=e.length;n>>8^t[(a^e.charCodeAt(n++))&255];return~a}function E(e,r){var a=r^-1,n=e.length-15,k=0;for(;k>8&255]^b[e[k++]^a>>16&255]^m[e[k++]^a>>>24]^p[e[k++]]^v[e[k++]]^d[e[k++]]^h[e[k++]]^u[e[k++]]^c[e[k++]]^o[e[k++]]^l[e[k++]]^f[e[k++]]^s[e[k++]]^i[e[k++]]^t[e[k++]];n+=15;while(k>>8^t[(a^e[k++])&255];return~a}function S(e,r){var a=r^-1;for(var n=0,i=e.length,s=0,f=0;n>>8^t[(a^s)&255]}else if(s<2048){a=a>>>8^t[(a^(192|s>>6&31))&255];a=a>>>8^t[(a^(128|s&63))&255]}else if(s>=55296&&s<57344){s=(s&1023)+64;f=e.charCodeAt(n++)&1023;a=a>>>8^t[(a^(240|s>>8&7))&255];a=a>>>8^t[(a^(128|s>>2&63))&255];a=a>>>8^t[(a^(128|f>>6&15|(s&3)<<4))&255];a=a>>>8^t[(a^(128|f&63))&255]}else{a=a>>>8^t[(a^(224|s>>12&15))&255];a=a>>>8^t[(a^(128|s>>6&63))&255];a=a>>>8^t[(a^(128|s&63))&255]}}return~a}e.table=t;e.bstr=k;e.buf=E;e.str=S});var X=function $b(){var e={};e.version="1.2.1";function r(e,r){var t=e.split("/"),a=r.split("/");for(var n=0,i=0,s=Math.min(t.length,a.length);n>>1;e._W(2,t);var a=r.getFullYear()-1980;a=a<<4|r.getMonth()+1;a=a<<5|r.getDate();e._W(2,a)}function i(e){var r=e._R(2)&65535;var t=e._R(2)&65535;var a=new Date;var n=t&31;t>>>=5;var i=t&15;t>>>=4;a.setMilliseconds(0);a.setFullYear(t+1980);a.setMonth(i-1);a.setDate(n);var s=r&31;r>>>=5;var f=r&63;r>>>=6;a.setHours(r);a.setMinutes(f);a.setSeconds(s<<1);return a}function s(e){Qr(e,0);var r={};var t=0;while(e.l<=e.length-4){var a=e._R(2);var n=e._R(2),i=e.l+n;var s={};switch(a){case 21589:{t=e._R(1);if(t&1)s.mtime=e._R(4);if(n>5){if(t&2)s.atime=e._R(4);if(t&4)s.ctime=e._R(4)}if(s.mtime)s.mt=new Date(s.mtime*1e3)}break;}e.l=i;r[a]=s}return r}var f;function l(){return f||(f=require("fs"))}function o(e,r){if(e[0]==80&&e[1]==75)return Ie(e,r);if((e[0]|32)==109&&(e[1]|32)==105)return He(e,r);if(e.length<512)throw new Error("CFB file size "+e.length+" < 512");var t=3;var a=512;var n=0;var i=0;var s=0;var f=0;var l=0;var o=[];var v=e.slice(0,512);Qr(v,0);var m=c(v);t=m[0];switch(t){case 3:a=512;break;case 4:a=4096;break;case 0:if(m[1]==0)return Ie(e,r);default:throw new Error("Major Version: Expected 3 or 4 saw "+t);}if(a!==512){v=e.slice(0,a);Qr(v,28)}var g=e.slice(0,a);u(v,t);var w=v._R(4,"i");if(t===3&&w!==0)throw new Error("# Directory Sectors: Expected 0 saw "+w);v.l+=4;s=v._R(4,"i");v.l+=4;v.chk("00100000","Mini Stream Cutoff Size: ");f=v._R(4,"i");n=v._R(4,"i");l=v._R(4,"i");i=v._R(4,"i");for(var k=-1,S=0;S<109;++S){k=v._R(4,"i");if(k<0)break;o[S]=k}var B=h(e,a);p(l,i,B,a,o);var C=b(B,s,o,a);C[s].name="!Directory";if(n>0&&f!==L)C[f].name="!MiniFAT";C[o[0]].name="!FAT";C.fat_addrs=o;C.ssz=a;var y={},T=[],_=[],x=[];E(s,C,B,T,n,y,_,f);d(_,x,T);T.shift();var A={FileIndex:_,FullPaths:x};if(r&&r.raw)A.raw={header:g,sectors:B};return A}function c(e){if(e[e.l]==80&&e[e.l+1]==75)return[0,0];e.chk(M,"Header Signature: ");e.l+=16;var r=e._R(2,"u");return[e._R(2,"u"),r]}function u(e,r){var t=9;e.l+=2;switch(t=e._R(2)){case 9:if(r!=3)throw new Error("Sector Shift: Expected 9 saw "+t);break;case 12:if(r!=4)throw new Error("Sector Shift: Expected 12 saw "+t);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+t);}e.chk("0600","Mini Sector Shift: ");e.chk("000000000000","Reserved: ")}function h(e,r){var t=Math.ceil(e.length/r)-1;var a=[];for(var n=1;n0&&s>=0){i.push(r.slice(s*N,s*N+N));n-=N;s=Gr(t,s*4)}if(i.length===0)return et(0);return F(i).slice(0,e.size)}function p(e,r,t,a,n){var i=L;if(e===L){if(r!==0)throw new Error("DIFAT chain shorter than expected")}else if(e!==-1){var s=t[e],f=(a>>>2)-1;if(!s)return;for(var l=0;l=0;){n[l]=true;i[i.length]=l;s.push(e[l]);var c=t[Math.floor(l*4/a)];o=l*4&f;if(a<4+o)throw new Error("FAT boundary crossed: "+l+" 4 "+a);if(!e[c])break;l=Gr(e[c],o)}return{nodes:i,data:gr([s])}}function b(e,r,t,a){var n=e.length,i=[];var s=[],f=[],l=[];var o=a-1,c=0,u=0,h=0,d=0;for(c=0;c=n)h-=n;if(s[h])continue;l=[];var v=[];for(u=h;u>=0;){v[u]=true;s[u]=true;f[f.length]=u;l.push(e[u]);var p=t[Math.floor(u*4/a)];d=u*4&o;if(a<4+d)throw new Error("FAT boundary crossed: "+u+" 4 "+a);if(!e[p])break;u=Gr(e[p],d);if(v[u])break}i[h]={nodes:f,data:gr([l])}}return i}function E(e,r,t,a,n,i,s,f){var l=0,o=a.length?2:0;var c=r[e].data;var u=0,h=0,d;for(;u0&&l!==L)r[l].name="!StreamData"}else if(b.size>=4096){b.storage="fat";if(r[b.start]===undefined)r[b.start]=m(t,b.start,r.fat_addrs,r.ssz);r[b.start].name=b.name;b.content=r[b.start].data.slice(0,b.size)}else{b.storage="minifat";if(b.size<0)b.size=0;else if(l!==L&&b.start!==L&&r[l]){b.content=v(b,r[l].data,(r[f]||{}).data)}}if(b.content)Qr(b.content,0);i[d]=b;s.push(b)}}function S(e,r){return new Date((Xr(e,r+4)/1e7*Math.pow(2,32)+Xr(e,r)/1e7-11644473600)*1e3)}function T(e,r){l();return o(f.readFileSync(e),r)}function _(e,r){var t=r&&r.type;if(!t){if(w&&Buffer.isBuffer(e))t="buffer"}switch(t||"base64"){case"file":return T(e,r);case"base64":return o(y(g.decode(e)),r);case"binary":return o(y(e),r);}return o(e,r)}function x(e,r){var t=r||{},a=t.root||"Root Entry";if(!e.FullPaths)e.FullPaths=[];if(!e.FileIndex)e.FileIndex=[];if(e.FullPaths.length!==e.FileIndex.length)throw new Error("inconsistent CFB structure");if(e.FullPaths.length===0){e.FullPaths[0]=a+"/";e.FileIndex[0]={name:a,type:5}}if(t.CLSID)e.FileIndex[0].clsid=t.CLSID;A(e)}function A(e){var r="Sh33tJ5";if(X.find(e,"/"+r))return;var t=et(4);t[0]=55;t[1]=t[3]=50;t[2]=54;e.FileIndex.push({name:r,type:2,content:t,size:4,L:69,R:69,C:69});e.FullPaths.push(e.FullPaths[0]+r);R(e)}function R(e,n){x(e);var i=false,s=false;for(var f=e.FullPaths.length-1;f>=0;--f){var l=e.FileIndex[f];switch(l.type){case 0:if(s)i=true;else{e.FileIndex.pop();e.FullPaths.pop()}break;case 1:;case 2:;case 5:s=true;if(isNaN(l.R*l.L*l.C))i=true;if(l.R>-1&&l.L>-1&&l.R==l.L)i=true;break;default:i=true;break;}}if(!i&&!n)return;var o=new Date(1987,1,19),c=0;var u=Object.create?Object.create(null):{};var h=[];for(f=0;f1?1:-1;v.size=0;v.type=5}else if(p.slice(-1)=="/"){for(c=f+1;c=h.length?-1:c;for(c=f+1;c=h.length?-1:c;v.type=1}else{if(t(e.FullPaths[f+1]||"")==t(p))v.R=f+1;v.type=2}}}function P(e,r){var t=r||{};if(t.fileType=="mad")return Ve(e,t);R(e);switch(t.fileType){case"zip":return Pe(e,t);}var a=function(e){var r=0,t=0;for(var a=0;a0){if(i<4096)r+=i+63>>6;else t+=i+511>>9}}var s=e.FullPaths.length+3>>2;var f=r+7>>3;var l=r+127>>7;var o=f+t+s+l;var c=o+127>>7;var u=c<=109?0:Math.ceil((c-109)/127);while(o+c+u+127>>7>c)u=++c<=109?0:Math.ceil((c-109)/127);var h=[1,u,c,l,s,t,r,0];e.FileIndex[0].size=r<<6;h[7]=(e.FileIndex[0].start=h[0]+h[1]+h[2]+h[3]+h[4]+h[5])+(h[6]+7>>3);return h}(e);var n=et(a[7]<<9);var i=0,s=0;{for(i=0;i<8;++i)n._W(1,U[i]);for(i=0;i<8;++i)n._W(2,0);n._W(2,62);n._W(2,3);n._W(2,65534);n._W(2,9);n._W(2,6);for(i=0;i<3;++i)n._W(2,0);n._W(4,0);n._W(4,a[2]);n._W(4,a[0]+a[1]+a[2]+a[3]-1);n._W(4,0);n._W(4,1<<12);n._W(4,a[3]?a[0]+a[1]+a[2]-1:L);n._W(4,a[3]);n._W(-4,a[1]?a[0]-1:L);n._W(4,a[1]);for(i=0;i<109;++i)n._W(-4,i>9)}f(a[6]+7>>3);while(n.l&511)n._W(-4,H.ENDOFCHAIN);s=i=0;for(l=0;l=4096)continue;c.start=s;f(o+63>>6)}while(n.l&511)n._W(-4,H.ENDOFCHAIN);for(i=0;i=4096){n.l=c.start+1<<9;if(w&&Buffer.isBuffer(c.content)){c.content.copy(n,n.l,0,c.size);n.l+=c.size+511&-512}else{for(l=0;l0&&c.size<4096){if(w&&Buffer.isBuffer(c.content)){c.content.copy(n,n.l,0,c.size);n.l+=c.size+63&-64}else{for(l=0;l>16|r>>8|r)&255}var re=typeof Uint8Array!=="undefined";var te=re?new Uint8Array(1<<8):[];for(var ae=0;ae<1<<8;++ae)te[ae]=ee(ae);function ne(e,r){var t=te[e&255];if(r<=8)return t>>>8-r;t=t<<8|te[e>>8&255];if(r<=16)return t>>>16-r;t=t<<8|te[e>>16&255];return t>>>24-r}function ie(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=6?0:e[a+1]<<8))>>>t&3}function se(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=5?0:e[a+1]<<8))>>>t&7}function fe(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=4?0:e[a+1]<<8))>>>t&15}function le(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=3?0:e[a+1]<<8))>>>t&31}function oe(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=1?0:e[a+1]<<8))>>>t&127}function ce(e,r,t){var a=r&7,n=r>>>3,i=(1<>>a;if(t<8-a)return s&i;s|=e[n+1]<<8-a;if(t<16-a)return s&i;s|=e[n+2]<<16-a;if(t<24-a)return s&i;s|=e[n+3]<<24-a;return s&i}function ue(e,r,t){var a=r&7,n=r>>>3;if(a<=5)e[n]|=(t&7)<>8-a}return r+3}function he(e,r,t){var a=r&7,n=r>>>3;t=(t&1)<>>3;t<<=a;e[n]|=t&255;t>>>=8;e[n+1]=t;return r+8}function ve(e,r,t){var a=r&7,n=r>>>3;t<<=a;e[n]|=t&255;t>>>=8;e[n+1]=t&255;e[n+2]=t>>>8;return r+16}function pe(e,r){var t=e.length,a=2*t>r?2*t:r+5,n=0;if(t>=r)return e;if(w){var i=C(a);if(e.copy)e.copy(i);else for(;n>a-u;for(s=(1<=0;--s)r[f|s<0)r[r.l++]=e[t++]}return r.l}function i(r,t){var n=0;var i=0;var s=re?new Uint16Array(32768):[];while(i0)t[t.l++]=r[i++];n=t.l*8;continue}n=ue(t,n,+!!(i+f==r.length)+2);var l=0;while(f-- >0){var o=r[i];l=(l<<5^o)&32767;var c=-1,u=0;if(c=s[l]){c|=i&~32767;if(c>i)c-=32768;if(c2){o=a[u];if(o<=22)n=de(t,n,te[o+1]>>1)-1;else{de(t,n,3);n+=5;de(t,n,te[o-23]>>5);n+=3}var h=o<8?0:o-4>>2;if(h>0){ve(t,n,u-Q[o]);n+=h}o=e[i-c];n=de(t,n,te[o]>>3);n-=3;var d=o<4?0:o-2>>1;if(d>0){ve(t,n,i-c-Z[o]);n+=d}for(var v=0;v>8-v;for(var p=(1<<7-v)-1;p>=0;--p)ye[d|p<>>=3){case 16:i=3+ie(e,r);r+=2;d=m[m.length-1];while(i-- >0)m.push(d);break;case 17:i=3+se(e,r);r+=3;while(i-- >0)m.push(0);break;case 18:i=11+oe(e,r);r+=7;while(i-- >0)m.push(0);break;default:m.push(d);if(l>>0;var f=0,l=0;while((a&1)==0){a=se(e,t);t+=3;if(a>>>1==0){if(t&7)t+=8-(t&7);var o=e[t>>>3]|e[(t>>>3)+1]<<8;t+=32;if(o>0){if(!r&&s0){n[i++]=e[t>>>3];t+=8}}continue}else if(a>>1==1){f=9;l=5}else{t=xe(e,t);f=Te;l=_e}for(;;){if(!r&&s>>1==1?ge[c]:Be[c];t+=u&15;u>>>=4;if((u>>>8&255)===0)n[i++]=u;else if(u==256)break;else{u-=257;var h=u<8?0:u-4>>2;if(h>5)h=0;var d=i+Q[u];if(h>0){d+=ce(e,t,h);t+=h}c=ce(e,t,l);u=a>>>1==1?we[c]:Ce[c];t+=u&15;u>>>=4;var v=u<4?0:u-2>>1;var p=Z[u];if(v>0){p+=ce(e,t,v);t+=v}if(!r&&s>>3];return[n.slice(0,i),t+7>>>3]}function Re(e,r){var t=e.slice(e.l||0);var a=Ae(t,r);e.l+=a[1];return a[0]}function Fe(e,r){if(e){if(typeof console!=="undefined")console.error(r)}else throw new Error(r)}function Ie(e,r){var t=e;Qr(t,0);var a=[],n=[];var i={FileIndex:a,FullPaths:n};x(i,{root:r.root});var f=t.length-4;while((t[f]!=80||t[f+1]!=75||t[f+2]!=5||t[f+3]!=6)&&f>=0)--f;t.l=f+4;t.l+=4;var l=t._R(2);t.l+=6;var o=t._R(4);t.l=o;for(f=0;f0){t=t.slice(0,t.length-1);t=t.slice(0,t.lastIndexOf("/")+1);if(i.slice(0,t.length)==t)break}}var s=(a[1]||"").match(/boundary="(.*?)"/);if(!s)throw new Error("MAD cannot find boundary");var f="--"+(s[1]||"");var l=[],o=[];var c={FileIndex:l,FullPaths:o};x(c);var u,h=0;for(n=0;n=32&&d<128)++u;var p=u>=h*4/5;n.push(a);n.push("Content-Location: "+(t.root||"file:///C:/SheetJS/")+s);n.push("Content-Transfer-Encoding: "+(p?"quoted-printable":"base64"));n.push("Content-Type: "+Ne(f,s));n.push("");n.push(p?Me(c):Le(c))}n.push(a+"--\r\n");return n.join("\r\n")}function Xe(e){var r={};x(r,e);return r}function Ge(e,r,t,n){var i=n&&n.unsafe;if(!i)x(e);var s=!i&&X.find(e,r);if(!s){var f=e.FullPaths[0];if(r.slice(0,f.length)==f)f=r;else{if(f.slice(-1)!="/")f+="/";f=(f+r).replace("//","/")}s={name:a(r),type:2};e.FileIndex.push(s);e.FullPaths.push(f);if(!i)X.utils.cfb_gc(e)}s.content=t;s.size=t?t.length:0;if(n){if(n.CLSID)s.clsid=n.CLSID;if(n.mt)s.mt=n.mt;if(n.ct)s.ct=n.ct}return s}function ze(e,r){x(e);var t=X.find(e,r);if(t)for(var a=0;a3)a=true;switch(n[i].slice(n[i].length-1)){case"Y":throw new Error("Unsupported ISO Duration Field: "+n[i].slice(n[i].length-1));case"D":t*=24;case"H":t*=60;case"M":if(!a)throw new Error("Unsupported ISO Duration Field: M");else t*=60;case"S":break;}r+=t*parseInt(n[i],10)}return r}var fe=new Date("2017-02-19T19:06:09.000Z"); -if(isNaN(fe.getFullYear()))fe=new Date("2/19/17");var le=fe.getFullYear()==2017;function oe(e,r){var t=new Date(e);if(le){if(r>0)t.setTime(t.getTime()+t.getTimezoneOffset()*60*1e3);else if(r<0)t.setTime(t.getTime()-t.getTimezoneOffset()*60*1e3);return t}if(e instanceof Date)return e;if(fe.getFullYear()==1917&&!isNaN(t.getFullYear())){var a=t.getFullYear();if(e.indexOf(""+a)>-1)return t;t.setFullYear(t.getFullYear()+100);return t}var n=e.match(/\d+/g)||["2017","2","19","0","0","0"];var i=new Date(+n[0],+n[1]-1,+n[2],+n[3]||0,+n[4]||0,+n[5]||0);if(e.indexOf("Z")>-1)i=new Date(i.getTime()-i.getTimezoneOffset()*60*1e3);return i}function ce(e,r){if(w&&Buffer.isBuffer(e)){if(r){if(e[0]==255&&e[1]==254)return e.slice(2).toString("utf16le");if(e[1]==254&&e[2]==255)return h(e.slice(2).toString("binary"))}return e.toString("binary")}var t=[];for(var a=0;a!=e.length;++a)t.push(String.fromCharCode(e[a]));return t.join("")}function ue(e){if(typeof JSON!="undefined"&&!Array.isArray(e))return JSON.parse(JSON.stringify(e));if(typeof e!="object"||e==null)return e;if(e instanceof Date)return new Date(e.getTime());var r={};for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))r[t]=ue(e[t]);return r}function he(e,r){var t="";while(t.length3&&ve.indexOf(s)==-1)return t}else if(s.match(/[a-z]/))return t;if(a<0||a>8099)return t;if((n>0||i>1)&&a!=101)return r;if(e.match(/[^-0-9:,\/\\]/))return t;return r}var me="abacaba".split(/(:?b)/i).length==5;function be(e,r,t){if(me||typeof r=="string")return e.split(r);var a=e.split(r),n=[a[0]];for(var i=1;i\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g;var De=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/gm;if(!Fe.match(De))De=/<[^>]*>/g;var Pe=/<\w*:/,Oe=/<(\/?)\w+:/;function Ne(e,r,t){var a={};var n=0,i=0;for(;n!==e.length;++n)if((i=e.charCodeAt(n))===32||i===10||i===13)break;if(!r)a[0]=e.slice(0,n);if(n===e.length)return a;var s=e.match(Ie),f=0,l="",o=0,c="",u="",h=1;if(s)for(o=0;o!=s.length;++o){u=s[o];for(i=0;i!=u.length;++i)if(u.charCodeAt(i)===61)break;c=u.slice(0,i).trim();while(u.charCodeAt(i+1)==32)++i;h=(n=u.charCodeAt(i+1))==34||n==39?1:0;l=u.slice(i+1+h,u.length-h);for(f=0;f!=c.length;++f)if(c.charCodeAt(f)===58)break;if(f===c.length){if(c.indexOf("_")>0)c=c.slice(0,c.indexOf("_"));a[c]=l;if(!t)a[c.toLowerCase()]=l}else{var d=(f===5&&c.slice(0,5)==="xmlns"?"xmlns":"")+c.slice(f+1);if(a[d]&&c.slice(f-3,f)=="ext")continue;a[d]=l;if(!t)a[d.toLowerCase()]=l}}return a}function Le(e){return e.replace(Oe,"<$1")}var Me={""":'"',"'":"'",">":">","<":"<","&":"&"};var Ue=q(Me);var We=function(){var e=/&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/gi,r=/_x([\da-fA-F]{4})_/gi;return function t(a){var n=a+"",i=n.indexOf("-1?16:10))||e}).replace(r,function(e,r){return String.fromCharCode(parseInt(r,16))});var s=n.indexOf("]]>");return t(n.slice(0,i))+n.slice(i+9,s)+t(n.slice(s+3))}}();var He=/[&<>'"]/g,Ve=/[\u0000-\u0008\u000b-\u001f]/g;function Xe(e){var r=e+"";return r.replace(He,function(e){return Ue[e]}).replace(Ve,function(e){return"_x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+"_"})}function Ge(e){return Xe(e).replace(/ /g,"_x0020_")}var ze=/[\u0000-\u001f]/g;function je(e){var r=e+"";return r.replace(He,function(e){return Ue[e]}).replace(/\n/g,"
").replace(ze,function(e){return"&#x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+";"})}function $e(e){var r=e+"";return r.replace(He,function(e){return Ue[e]}).replace(ze,function(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"})}var Ke=function(){var e=/&#(\d+);/g;function r(e,r){return String.fromCharCode(parseInt(r,10))}return function t(a){return a.replace(e,r)}}();var Ye=function(){return function e(r){return r.replace(/(\r\n|[\r\n])/g," ")}}();function Je(e){switch(e){case 1:;case true:;case"1":;case"true":;case"TRUE":return true;default:return false;}}var qe=function Kb(e){var r="",t=0,a=0,n=0,i=0,s=0,f=0;while(t191&&a<224){s=(a&31)<<6;s|=n&63;r+=String.fromCharCode(s);continue}i=e.charCodeAt(t++);if(a<240){r+=String.fromCharCode((a&15)<<12|(n&63)<<6|i&63);continue}s=e.charCodeAt(t++);f=((a&7)<<18|(n&63)<<12|(i&63)<<6|s&63)-65536;r+=String.fromCharCode(55296+(f>>>10&1023));r+=String.fromCharCode(56320+(f&1023))}return r};var Qe=function(e){var r=[],t=0,a=0,n=0;while(t>6)));r.push(String.fromCharCode(128+(a&63)));break;case a>=55296&&a<57344:a-=55296;n=e.charCodeAt(t++)-56320+(a<<10);r.push(String.fromCharCode(240+(n>>18&7)));r.push(String.fromCharCode(144+(n>>12&63)));r.push(String.fromCharCode(128+(n>>6&63)));r.push(String.fromCharCode(128+(n&63)));break;default:r.push(String.fromCharCode(224+(a>>12)));r.push(String.fromCharCode(128+(a>>6&63)));r.push(String.fromCharCode(128+(a&63)));}}return r.join("")};if(w){var Ze=function Yb(e){var r=Buffer.alloc(2*e.length),t,a,n=1,i=0,s=0,f;for(a=0;a>>10&1023);t=56320+(t&1023)}if(s!==0){r[i++]=s&255;r[i++]=s>>>8;s=0}r[i++]=t%256;r[i++]=t>>>8}return r.slice(0,i).toString("ucs2")};var er="foo bar baz☃🍣";if(qe(er)==Ze(er))qe=Ze;var rr=function Jb(e){return k(e,"binary").toString("utf8")};if(qe(er)==rr(er))qe=rr;Qe=function(e){return k(e,"utf8").toString("binary")}}var tr=function(){var e={};return function r(t,a){var n=t+"|"+(a||"");if(e[n])return e[n];return e[n]=new RegExp("<(?:\\w+:)?"+t+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)",a||"")}}();var ar=function(){var e=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map(function(e){return[new RegExp("&"+e[0]+";","ig"),e[1]]});return function r(t){var a=t.replace(/^[\t\n\r ]+/,"").replace(/[\t\n\r ]+$/,"").replace(/>\s+/g,">").replace(/\s+/g,"\n").replace(/<[^>]*>/g,"");for(var n=0;n([\\s\\S]*?)","g")}}();var ir=/<\/?(?:vt:)?variant>/g,sr=/<(?:vt:)([^>]*)>([\s\S]*)"+r+""}function cr(e){return Y(e).map(function(r){return" "+r+'="'+e[r]+'"'}).join("")}function ur(e,r,t){return"<"+e+(t!=null?cr(t):"")+(r!=null?(r.match(lr)?' xml:space="preserve"':"")+">"+r+""}function hr(e,r){try{return e.toISOString().replace(/\.\d*/,"")}catch(t){if(r)throw t}return""}function dr(e,r){switch(typeof e){case"string":var t=ur("vt:lpwstr",Xe(e));if(r)t=t.replace(/"/g,"_x0022_");return t;case"number":return ur((e|0)==e?"vt:i4":"vt:r8",Xe(String(e)));case"boolean":return ur("vt:bool",e?"true":"false");}if(e instanceof Date)return ur("vt:filetime",hr(e));throw new Error("Unable to serialize "+e)}var vr={dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"};vr.main=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"];var pr={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 mr(e,r){var t=1-2*(e[r+7]>>>7);var a=((e[r+7]&127)<<4)+(e[r+6]>>>4&15);var n=e[r+6]&15;for(var i=5;i>=0;--i)n=n*256+e[r+i];if(a==2047)return n==0?t*Infinity:NaN;if(a==0)a=-1022;else{a-=1023;n+=Math.pow(2,52)}return t*Math.pow(2,a-52)*n}function br(e,r,t){var a=(r<0||1/r==-Infinity?1:0)<<7,n=0,i=0;var s=a?-r:r;if(!isFinite(s)){n=2047;i=isNaN(r)?26985:0}else if(s==0)n=i=0;else{n=Math.floor(Math.log(s)/Math.LN2);i=s*Math.pow(2,52-n);if(n<=-1023&&(!isFinite(i)||i>4|a}var gr=function(e){var r=[],t=10240;for(var a=0;a0?Cr(e,r+4,r+4+t-1):""};var _r=Tr;var xr=function(e,r){var t=Xr(e,r);return t>0?Cr(e,r+4,r+4+t-1):""};var Ar=xr;var Rr=function(e,r){var t=2*Xr(e,r);return t>0?Cr(e,r+4,r+4+t-1):""};var Fr=Rr;var Ir,Dr;Ir=Dr=function qb(e,r){var t=Xr(e,r);return t>0?kr(e,r+4,r+4+t):""};var Pr=function(e,r){var t=Xr(e,r);return t>0?Cr(e,r+4,r+4+t):""};var Or=Pr;var Nr,Lr;Nr=Lr=function(e,r){return mr(e,r)};var Mr=function Qb(e){return Array.isArray(e)||typeof Uint8Array!=="undefined"&&e instanceof Uint8Array};if(w){kr=function(e,r,t){if(!Buffer.isBuffer(e))return Er(e,r,t);return e.toString("utf16le",r,t).replace(I,"")};Sr=function(e,r,t){return Buffer.isBuffer(e)?e.toString("hex",r,r+t):Br(e,r,t)};Tr=function Zb(e,r){if(!Buffer.isBuffer(e))return _r(e,r);var t=e.readUInt32LE(r);return t>0?e.toString("utf8",r+4,r+4+t-1):""};xr=function eg(e,r){if(!Buffer.isBuffer(e))return Ar(e,r);var t=e.readUInt32LE(r);return t>0?e.toString("utf8",r+4,r+4+t-1):""};Rr=function rg(e,r){if(!Buffer.isBuffer(e))return Fr(e,r);var t=2*e.readUInt32LE(r);return e.toString("utf16le",r+4,r+4+t-1)};Ir=function tg(e,r){if(!Buffer.isBuffer(e))return Dr(e,r);var t=e.readUInt32LE(r);return e.toString("utf16le",r+4,r+4+t)};Pr=function ag(e,r){if(!Buffer.isBuffer(e))return Or(e,r);var t=e.readUInt32LE(r);return e.toString("utf8",r+4,r+4+t)};Cr=function ng(e,r,t){return Buffer.isBuffer(e)?e.toString("utf8",r,t):yr(e,r,t)};gr=function(e){return e[0].length>0&&Buffer.isBuffer(e[0][0])?Buffer.concat(e[0].map(function(e){return Buffer.isBuffer(e)?e:k(e)})):wr(e)};F=function(e){return Buffer.concat(e.map(function(e){return Buffer.isBuffer(e)?e:k(e)}))};Nr=function ig(e,r){if(Buffer.isBuffer(e))return e.readDoubleLE(r);return Lr(e,r)};Mr=function sg(e){return Buffer.isBuffer(e)||Array.isArray(e)||typeof Uint8Array!=="undefined"&&e instanceof Uint8Array}}function Ur(){kr=function(e,r,t){return cptable.utils.decode(1200,e.slice(r,t)).replace(I,"")};Cr=function(e,r,t){return cptable.utils.decode(65001,e.slice(r,t))};Tr=function(e,r){var a=Xr(e,r);return a>0?cptable.utils.decode(t,e.slice(r+4,r+4+a-1)):""};xr=function(e,t){var a=Xr(e,t);return a>0?cptable.utils.decode(r,e.slice(t+4,t+4+a-1)):""};Rr=function(e,r){var t=2*Xr(e,r);return t>0?cptable.utils.decode(1200,e.slice(r+4,r+4+t-1)):""};Ir=function(e,r){var t=Xr(e,r);return t>0?cptable.utils.decode(1200,e.slice(r+4,r+4+t)):""};Pr=function(e,r){var t=Xr(e,r);return t>0?cptable.utils.decode(65001,e.slice(r+4,r+4+t)):""}}if(typeof cptable!=="undefined")Ur();var Wr=function(e,r){return e[r]};var Hr=function(e,r){return e[r+1]*(1<<8)+e[r]};var Vr=function(e,r){var t=e[r+1]*(1<<8)+e[r];return t<32768?t:(65535-t+1)*-1};var Xr=function(e,r){return e[r+3]*(1<<24)+(e[r+2]<<16)+(e[r+1]<<8)+e[r]};var Gr=function(e,r){return e[r+3]<<24|e[r+2]<<16|e[r+1]<<8|e[r]};var zr=function(e,r){return e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3]};function jr(e,t){var a="",n,i,s=[],f,l,o,c;switch(t){case"dbcs":c=this.l;if(w&&Buffer.isBuffer(this))a=this.slice(this.l,this.l+2*e).toString("utf16le");else for(o=0;o0?Gr:zr)(this,this.l);this.l+=4;return n}else{i=Xr(this,this.l);this.l+=4}return i;case 8:;case-8:if(t==="f"){if(e==8)i=Nr(this,this.l);else i=Nr([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0);this.l+=8;return i}else e=8;case 16:a=Sr(this,this.l,e);break;};}this.l+=e;return a}var $r=function(e,r,t){e[t]=r&255;e[t+1]=r>>>8&255;e[t+2]=r>>>16&255;e[t+3]=r>>>24&255};var Kr=function(e,r,t){e[t]=r&255;e[t+1]=r>>8&255;e[t+2]=r>>16&255;e[t+3]=r>>24&255};var Yr=function(e,r,t){e[t]=r&255;e[t+1]=r>>>8&255};function Jr(e,r,a){var n=0,i=0;if(a==="dbcs"){for(i=0;i!=r.length;++i)Yr(this,r.charCodeAt(i),this.l+2*i);n=2*r.length}else if(a==="sbcs"){if(typeof cptable!=="undefined"&&t==874){for(i=0;i!=r.length;++i){var s=cptable.utils.encode(t,r.charAt(i));this[this.l+i]=s[0]}}else{r=r.replace(/[^\x00-\x7F]/g,"_");for(i=0;i!=r.length;++i)this[this.l+i]=r.charCodeAt(i)&255}n=r.length}else if(a==="hex"){for(;i>8}while(this.l>>=8;this[this.l+1]=r&255;break;case 3:n=3;this[this.l]=r&255;r>>>=8;this[this.l+1]=r&255;r>>>=8;this[this.l+2]=r&255;break;case 4:n=4;$r(this,r,this.l);break;case 8:n=8;if(a==="f"){br(this,r,this.l);break};case 16:break;case-4:n=4;Kr(this,r,this.l);break;}this.l+=n;return this}function qr(e,r){var t=Sr(this,this.l,e.length>>1);if(t!==e)throw new Error(r+"Expected "+e+" saw "+t);this.l+=e.length>>1}function Qr(e,r){e.l=r;e._R=jr;e.chk=qr;e._W=Jr}function Zr(e,r){e.l+=r}function et(e){var r=B(e);Qr(r,0);return r}function rt(e,r,t){if(!e)return;var a,n,i;Qr(e,e.l||0);var s=e.length,f=0,l=0;while(e.la.l){a=a.slice(0,a.l);a.l=a.length}if(a.length>0)e.push(a);a=null};var i=function c(e){if(a&&e=128?1:0)+1;if(a>=128)++i;if(a>=16384)++i;if(a>=2097152)++i;var s=e.next(i);if(n<=127)s._W(1,n);else{s._W(1,(n&127)+128);s._W(1,n>>7)}for(var f=0;f!=4;++f){if(a>=128){s._W(1,(a&127)+128);a>>=7}else{s._W(1,a);break}}if(a>0&&Mr(t))e.push(t)}function nt(e,r,t){var a=ue(e);if(r.s){if(a.cRel)a.c+=r.s.c;if(a.rRel)a.r+=r.s.r}else{if(a.cRel)a.c+=r.c;if(a.rRel)a.r+=r.r}if(!t||t.biff<12){while(a.c>=256)a.c-=256;while(a.r>=65536)a.r-=65536}return a}function it(e,r,t){var a=ue(e);a.s=nt(a.s,r.s,t);a.e=nt(a.e,r.s,t);return a}function st(e,r){if(e.cRel&&e.c<0){e=ue(e);while(e.c<0)e.c+=r>8?16384:256}if(e.rRel&&e.r<0){e=ue(e);while(e.r<0)e.r+=r>8?1048576:r>5?65536:16384}var t=kt(e);if(!e.cRel&&e.cRel!=null)t=mt(t);if(!e.rRel&&e.rRel!=null)t=ht(t);return t}function ft(e,r){if(e.s.r==0&&!e.s.rRel){if(e.e.r==(r.biff>=12?1048575:r.biff>=8?65536:16384)&&!e.e.rRel){return(e.s.cRel?"":"$")+pt(e.s.c)+":"+(e.e.cRel?"":"$")+pt(e.e.c)}}if(e.s.c==0&&!e.s.cRel){if(e.e.c==(r.biff>=12?16383:255)&&!e.e.cRel){return(e.s.rRel?"":"$")+ut(e.s.r)+":"+(e.e.rRel?"":"$")+ut(e.e.r)}}return st(e.s,r.biff)+":"+st(e.e,r.biff)}var lt={};var ot=function(e,r){var t;if(typeof r!=="undefined")t=r;else if(typeof require!=="undefined"){try{t=undefined}catch(a){t=null}}e.rc4=function(e,r){var t=new Array(256);var a=0,n=0,i=0,s=0;for(n=0;n!=256;++n)t[n]=n;for(n=0;n!=256;++n){i=i+t[n]+e[n%e.length].charCodeAt(0)&255;s=t[n];t[n]=t[i];t[i]=s}n=i=0;var f=B(r.length);for(a=0;a!=r.length;++a){n=n+1&255;i=(i+t[n])%256;s=t[n];t[n]=t[i];t[i]=s;f[a]=r[a]^t[t[n]+t[i]&255]}return f};e.md5=function(e){if(!t)throw new Error("Unsupported crypto");return t.createHash("md5").update(e).digest("hex")}};ot(lt,typeof crypto!=="undefined"?crypto:undefined);function ct(e){return parseInt(dt(e),10)-1}function ut(e){return""+(e+1)}function ht(e){return e.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function dt(e){return e.replace(/\$(\d+)$/,"$1")}function vt(e){var r=bt(e),t=0,a=0;for(;a!==r.length;++a)t=26*t+r.charCodeAt(a)-64;return t-1}function pt(e){if(e<0)throw new Error("invalid column "+e);var r="";for(++e;e;e=Math.floor((e-1)/26))r=String.fromCharCode((e-1)%26+65)+r;return r}function mt(e){return e.replace(/^([A-Z])/,"$$$1")}function bt(e){return e.replace(/^\$([A-Z])/,"$1")}function gt(e){return e.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")}function wt(e){var r=0,t=0;for(var a=0;a=48&&n<=57)r=10*r+(n-48);else if(n>=65&&n<=90)t=26*t+(n-64)}return{c:t-1,r:r-1}}function kt(e){var r=e.c+1;var t="";for(;r;r=(r-1)/26|0)t=String.fromCharCode((r-1)%26+65)+t;return t+(e.r+1)}function Et(e){var r=e.indexOf(":");if(r==-1)return{s:wt(e),e:wt(e)};return{s:wt(e.slice(0,r)),e:wt(e.slice(r+1))}}function St(e,r){if(typeof r==="undefined"||typeof r==="number"){return St(e.s,e.e)}if(typeof e!=="string")e=kt(e);if(typeof r!=="string")r=kt(r);return e==r?e:e+":"+r}function Bt(e){var r={s:{c:0,r:0},e:{c:0,r:0}};var t=0,a=0,n=0;var i=e.length;for(t=0;a26)break;t=26*t+n}r.s.c=--t;for(t=0;a9)break;t=10*t+n}r.s.r=--t;if(a===i||n!=10){r.e.c=r.s.c;r.e.r=r.s.r;return r}++a;for(t=0;a!=i;++a){if((n=e.charCodeAt(a)-64)<1||n>26)break;t=26*t+n}r.e.c=--t;for(t=0;a!=i;++a){if((n=e.charCodeAt(a)-48)<0||n>9)break;t=10*t+n}r.e.r=--t;return r}function Ct(e,r){var t=e.t=="d"&&r instanceof Date;if(e.z!=null)try{return e.w=P.format(e.z,t?re(r):r)}catch(a){}try{return e.w=P.format((e.XF||{}).numFmtId||(t?14:0),t?re(r):r)}catch(a){return""+r}}function yt(e,r,t){if(e==null||e.t==null||e.t=="z")return"";if(e.w!==undefined)return e.w;if(e.t=="d"&&!e.z&&t&&t.dateNF)e.z=t.dateNF;if(e.t=="e")return Ia[e.v]||e.v;if(r==undefined)return Ct(e,e.v);return Ct(e,r)}function Tt(e,r){var t=r&&r.sheet?r.sheet:"Sheet1";var a={};a[t]=e;return{SheetNames:[t],Sheets:a}}function _t(e,r,t){var a=t||{};var n=e?Array.isArray(e):a.dense;if(m!=null&&n==null)n=m;var i=e||(n?[]:{});var s=0,f=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var l=typeof a.origin=="string"?wt(a.origin):a.origin;s=l.r;f=l.c}if(!i["!ref"])i["!ref"]="A1:A1"}var o={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(i["!ref"]){var c=Bt(i["!ref"]);o.s.c=c.s.c;o.s.r=c.s.r;o.e.c=Math.max(o.e.c,c.e.c);o.e.r=Math.max(o.e.r,c.e.r);if(s==-1)o.e.r=s=c.e.r+1}for(var u=0;u!=r.length;++u){if(!r[u])continue;if(!Array.isArray(r[u]))throw new Error("aoa_to_sheet expects an array of arrays");for(var h=0;h!=r[u].length;++h){if(typeof r[u][h]==="undefined")continue;var d={v:r[u][h]};var v=s+u,p=f+h;if(o.s.r>v)o.s.r=v;if(o.s.c>p)o.s.c=p;if(o.e.r0)r._W(0,e,"dbcs");return t?r.slice(0,r.l):r}function It(e){return{ich:e._R(2),ifnt:e._R(2)}}function Dt(e,r){if(!r)r=et(4);r._W(2,e.ich||0);r._W(2,e.ifnt||0);return r}function Pt(e,r){var t=e.l;var a=e._R(1);var n=Rt(e);var i=[];var s={t:n,h:n};if((a&1)!==0){var f=e._R(4);for(var l=0;l!=f;++l)i.push(It(e));s.r=i}else s.r=[{ich:0,ifnt:0}];e.l=t+r;return s}function Ot(e,r){var t=false;if(r==null){t=true;r=et(15+4*e.t.length)}r._W(1,0);Ft(e.t,r);return t?r.slice(0,r.l):r}var Nt=Pt;function Lt(e,r){var t=false;if(r==null){t=true;r=et(23+4*e.t.length)}r._W(1,1);Ft(e.t,r);r._W(4,1);Dt({ich:0,ifnt:0},r);return t?r.slice(0,r.l):r}function Mt(e){var r=e._R(4);var t=e._R(2);t+=e._R(1)<<16;e.l++;return{c:r,iStyleRef:t}}function Ut(e,r){if(r==null)r=et(8);r._W(-4,e.c);r._W(3,e.iStyleRef||e.s);r._W(1,0);return r}function Wt(e){var r=e._R(2);r+=e._R(1)<<16;e.l++;return{c:-1,iStyleRef:r}}function Ht(e,r){if(r==null)r=et(4);r._W(3,e.iStyleRef||e.s);r._W(1,0);return r}var Vt=Rt;var Xt=Ft;function Gt(e){var r=e._R(4);return r===0||r===4294967295?"":e._R(r,"dbcs")}function zt(e,r){var t=false;if(r==null){t=true;r=et(127)}r._W(4,e.length>0?e.length:4294967295);if(e.length>0)r._W(0,e,"dbcs");return t?r.slice(0,r.l):r}var jt=Rt;var $t=Gt;var Kt=zt;function Yt(e){var r=e.slice(e.l,e.l+4);var t=r[0]&1,a=r[0]&2;e.l+=4;var n=a===0?Nr([0,0,0,0,r[0]&252,r[1],r[2],r[3]],0):Gr(r,0)>>2;return t?n/100:n}function Jt(e,r){if(r==null)r=et(4);var t=0,a=0,n=e*100;if(e==(e|0)&&e>=-(1<<29)&&e<1<<29){a=1}else if(n==(n|0)&&n>=-(1<<29)&&n<1<<29){a=1;t=1}if(a)r._W(-4,((t?n:e)<<2)+(t+2));else throw new Error("unsupported RkNumber "+e)}function qt(e){var r={s:{},e:{}};r.s.r=e._R(4);r.e.r=e._R(4);r.s.c=e._R(4);r.e.c=e._R(4);return r}function Qt(e,r){if(!r)r=et(16);r._W(4,e.s.r);r._W(4,e.e.r);r._W(4,e.s.c);r._W(4,e.e.c);return r}var Zt=qt;var ea=Qt;function ra(e){if(e.length-e.l<8)throw"XLS Xnum Buffer underflow";return e._R(8,"f")}function ta(e,r){return(r||et(8))._W(8,e,"f")}function aa(e){var r={};var t=e._R(1);var a=t>>>1;var n=e._R(1);var i=e._R(2,"i");var s=e._R(1);var f=e._R(1);var l=e._R(1);e.l++;switch(a){case 0:r.auto=1;break;case 1:r.index=n;var o=Fa[n];if(o)r.rgb=dl(o);break;case 2:r.rgb=dl([s,f,l]);break;case 3:r.theme=n;break;}if(i!=0)r.tint=i>0?i/32767:i/32768;return r}function na(e,r){if(!r)r=et(8);if(!e||e.auto){r._W(4,0);r._W(4,0);return r}if(e.index!=null){r._W(1,2);r._W(1,e.index)}else if(e.theme!=null){r._W(1,6);r._W(1,e.theme)}else{r._W(1,5);r._W(1,0)}var t=e.tint||0;if(t>0)t*=32767;else if(t<0)t*=32768;r._W(2,t);if(!e.rgb||e.theme!=null){r._W(2,0);r._W(1,0);r._W(1,0)}else{var a=e.rgb||"FFFFFF";if(typeof a=="number")a=("000000"+a.toString(16)).slice(-6);r._W(1,parseInt(a.slice(0,2),16));r._W(1,parseInt(a.slice(2,4),16));r._W(1,parseInt(a.slice(4,6),16));r._W(1,255)}return r}function ia(e){var r=e._R(1);e.l++;var t={fBold:r&1,fItalic:r&2,fUnderline:r&4,fStrikeout:r&8,fOutline:r&16,fShadow:r&32,fCondense:r&64,fExtend:r&128};return t}function sa(e,r){if(!r)r=et(2);var t=(e.italic?2:0)|(e.strike?8:0)|(e.outline?16:0)|(e.shadow?32:0)|(e.condense?64:0)|(e.extend?128:0);r._W(1,t);r._W(1,0);return r}function fa(e,r){var t={2:"BITMAP",3:"METAFILEPICT",8:"DIB",14:"ENHMETAFILE"};var a=e._R(4);switch(a){case 0:return"";case 4294967295:;case 4294967294:return t[e._R(4)]||"";}if(a>400)throw new Error("Unsupported Clipboard: "+a.toString(16));e.l-=4;return e._R(0,r==1?"lpstr":"lpwstr")}function la(e){return fa(e,1)}function oa(e){return fa(e,2)}var ca=2;var ua=3;var ha=11;var da=12;var va=19;var pa=30;var ma=64;var ba=65;var ga=71;var wa=4096;var ka=80;var Ea=81;var Sa=[ka,Ea];var Ba={1:{n:"CodePage",t:ca},2:{n:"Category",t:ka},3:{n:"PresentationFormat",t:ka},4:{n:"ByteCount",t:ua},5:{n:"LineCount",t:ua},6:{n:"ParagraphCount",t:ua},7:{n:"SlideCount",t:ua},8:{n:"NoteCount",t:ua},9:{n:"HiddenCount",t:ua},10:{n:"MultimediaClipCount",t:ua},11:{n:"ScaleCrop",t:ha},12:{n:"HeadingPairs",t:wa|da},13:{n:"TitlesOfParts",t:wa|pa},14:{n:"Manager",t:ka},15:{n:"Company",t:ka},16:{n:"LinksUpToDate",t:ha},17:{n:"CharacterCount",t:ua},19:{n:"SharedDoc",t:ha},22:{n:"HyperlinksChanged",t:ha},23:{n:"AppVersion",t:ua,p:"version"},24:{n:"DigSig",t:ba},26:{n:"ContentType",t:ka},27:{n:"ContentStatus",t:ka},28:{n:"Language",t:ka},29:{n:"Version",t:ka},255:{},2147483648:{n:"Locale",t:va},2147483651:{n:"Behavior",t:va},1919054434:{}};var Ca={1:{n:"CodePage",t:ca},2:{n:"Title",t:ka},3:{n:"Subject",t:ka},4:{n:"Author",t:ka},5:{n:"Keywords",t:ka},6:{n:"Comments",t:ka},7:{n:"Template",t:ka},8:{n:"LastAuthor",t:ka},9:{n:"RevNumber",t:ka},10:{n:"EditTime",t:ma},11:{n:"LastPrinted",t:ma},12:{n:"CreatedDate",t:ma},13:{n:"ModifiedDate",t:ma},14:{n:"PageCount",t:ua},15:{n:"WordCount",t:ua},16:{n:"CharCount",t:ua},17:{n:"Thumbnail",t:ga},18:{n:"Application",t:ka},19:{n:"DocSecurity",t:ua},255:{},2147483648:{n:"Locale",t:va},2147483651:{n:"Behavior",t:va},1919054434:{}};var ya=J(Ba,"n");var Ta=J(Ca,"n");var _a={1:"US",2:"CA",3:"",7:"RU",20:"EG",30:"GR",31:"NL",32:"BE",33:"FR",34:"ES",36:"HU",39:"IT",41:"CH",43:"AT",44:"GB",45:"DK",46:"SE",47:"NO",48:"PL",49:"DE",52:"MX",55:"BR",61:"AU",64:"NZ",66:"TH",81:"JP",82:"KR",84:"VN",86:"CN",90:"TR",105:"JS",213:"DZ",216:"MA",218:"LY",351:"PT",354:"IS",358:"FI",420:"CZ",886:"TW",961:"LB",962:"JO",963:"SY",964:"IQ",965:"KW",966:"SA",971:"AE",972:"IL",974:"QA",981:"IR",65535:"US"};var xa=[null,"solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"]; -function Aa(e){return e.map(function(e){return[e>>16&255,e>>8&255,e&255]})}var Ra=Aa([0,16777215,16711680,65280,255,16776960,16711935,65535,0,16777215,16711680,65280,255,16776960,16711935,65535,8388608,32768,128,8421376,8388736,32896,12632256,8421504,10066431,10040166,16777164,13434879,6684774,16744576,26316,13421823,128,16711935,16776960,65535,8388736,8388608,32896,255,52479,13434879,13434828,16777113,10079487,16751052,13408767,16764057,3368703,3394764,10079232,16763904,16750848,16737792,6710937,9868950,13158,3381606,13056,3355392,10040064,10040166,3355545,3355443,16777215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);var Fa=ue(Ra);var Ia={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"};var Da=Q(Ia);var Pa={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty":"TODO","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.ms-office.chartcolorstyle+xml":"TODO","application/vnd.ms-office.chartstyle+xml":"TODO","application/vnd.ms-office.chartex+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"links","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"links","application/vnd.ms-excel.sheetMetadata":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"TODO","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.openxmlformats-officedocument.themeOverride+xml":"TODO","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"TODO","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"drawings","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO","image/png":"TODO",sheet:"js"};var Oa=function(){var e={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main",xlam:"application/vnd.ms-excel.addin.macroEnabled.main+xml",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"},comments:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",xlsb:"application/vnd.ms-excel.comments"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},charts:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",xlsb:"application/vnd.ms-excel.chartsheet"},dialogs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",xlsb:"application/vnd.ms-excel.dialogsheet"},macros:{xlsx:"application/vnd.ms-excel.macrosheet+xml",xlsb:"application/vnd.ms-excel.macrosheet"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};Y(e).forEach(function(r){["xlsm","xlam"].forEach(function(t){if(!e[r][t])e[r][t]=e[r].xlsx})});Y(e).forEach(function(r){Y(e[r]).forEach(function(t){Pa[e[r][t]]=r})});return e}();var Na=Z(Pa);vr.CT="http://schemas.openxmlformats.org/package/2006/content-types";function La(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],TODO:[],xmlns:""}}function Ma(e){var r=La();if(!e||!e.match)return r;var t={};(e.match(De)||[]).forEach(function(e){var a=Ne(e);switch(a[0].replace(Pe,"<")){case"0?r.calcchains[0]:"";r.sst=r.strs.length>0?r.strs[0]:"";r.style=r.styles.length>0?r.styles[0]:"";r.defaults=t;delete r.calcchains;return r}var Ua=ur("Types",null,{xmlns:vr.CT,"xmlns:xsd":vr.xsd,"xmlns:xsi":vr.xsi});var Wa=[["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["vml","application/vnd.openxmlformats-officedocument.vmlDrawing"],["data","application/vnd.openxmlformats-officedocument.model+data"],["bmp","image/bmp"],["png","image/png"],["gif","image/gif"],["emf","image/x-emf"],["wmf","image/x-wmf"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["tif","image/tiff"],["tiff","image/tiff"],["pdf","application/pdf"],["rels",Na.rels[0]]].map(function(e){return ur("Default",null,{Extension:e[0],ContentType:e[1]})});function Ha(e,r){var t=[],a;t[t.length]=Fe;t[t.length]=Ua;t=t.concat(Wa);var n=function(n){if(e[n]&&e[n].length>0){a=e[n][0];t[t.length]=ur("Override",null,{PartName:(a[0]=="/"?"":"/")+a,ContentType:Oa[n][r.bookType||"xlsx"]})}};var i=function(a){(e[a]||[]).forEach(function(e){t[t.length]=ur("Override",null,{PartName:(e[0]=="/"?"":"/")+e,ContentType:Oa[a][r.bookType||"xlsx"]})})};var s=function(r){(e[r]||[]).forEach(function(e){t[t.length]=ur("Override",null,{PartName:(e[0]=="/"?"":"/")+e,ContentType:Na[r][0]})})};n("workbooks");i("sheets");i("charts");s("themes");["strs","styles"].forEach(n);["coreprops","extprops","custprops"].forEach(s);s("vba");s("comments");s("drawings");if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}var Va={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",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function Xa(e){var r=e.lastIndexOf("/");return e.slice(0,r+1)+"_rels/"+e.slice(r+1)+".rels"}function Ga(e,r){var t={"!id":{}};if(!e)return t;if(r.charAt(0)!=="/"){r="/"+r}var a={};(e.match(De)||[]).forEach(function(e){var n=Ne(e);if(n[0]==="2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}var $a=[Va.HLINK,Va.XPATH,Va.XMISS];function Ka(e,r,t,a,n,i){if(!n)n={};if(!e["!id"])e["!id"]={};if(r<0)for(r=1;e["!id"]["rId"+r];++r){}n.Id="rId"+r;n.Type=a;n.Target=t;if(i)n.TargetMode=i;else if($a.indexOf(n.Type)>-1)n.TargetMode="External";if(e["!id"][n.Id])throw new Error("Cannot rewrite rId "+r);e["!id"][n.Id]=n;e[("/"+n.Target).replace("//","/")]=n;return r}var Ya="application/vnd.oasis.opendocument.spreadsheet";function Ja(e,r){var t=xp(e);var a;var n;while(a=Ap.exec(t))switch(a[3]){case"manifest":break;case"file-entry":n=Ne(a[0],false);if(n.path=="/"&&n.type!==Ya)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(r&&r.WTF)throw a;}}function qa(e){var r=[Fe];r.push('\n');r.push(' \n');for(var t=0;t\n');r.push("");return r.join("")}function Qa(e,r,t){return[' \n',' \n'," \n"].join("")}function Za(e,r){return[' \n',' \n'," \n"].join("")}function en(e){var r=[Fe];r.push('\n');for(var t=0;t!=e.length;++t){r.push(Qa(e[t][0],e[t][1]));r.push(Za("",e[t][0]))}r.push(Qa("","Document","pkg"));r.push("");return r.join("")}var rn=function(){var r='Sheet'+"JS "+e.version+"";return function t(){return r}}();var tn=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]];vr.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/metadata/core-properties";Va.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties";var an=function(){var e=new Array(tn.length);for(var r=0;r]*>([\\s\\S]*?)")}return e}();function nn(e){var r={};e=qe(e);for(var t=0;t0)r[a[1]]=We(n[1]);if(a[2]==="date"&&r[a[1]])r[a[1]]=oe(r[a[1]])}return r}var sn=ur("cp:coreProperties",null,{"xmlns:cp":vr.CORE_PROPS,"xmlns:dc":vr.dc,"xmlns:dcterms":vr.dcterms,"xmlns:dcmitype":vr.dcmitype,"xmlns:xsi":vr.xsi});function fn(e,r,t,a,n){if(n[e]!=null||r==null||r==="")return;n[e]=r;r=Xe(r);a[a.length]=t?ur(e,r,t):or(e,r)}function ln(e,r){var t=r||{};var a=[Fe,sn],n={};if(!e&&!t.Props)return a.join("");if(e){if(e.CreatedDate!=null)fn("dcterms:created",typeof e.CreatedDate==="string"?e.CreatedDate:hr(e.CreatedDate,t.WTF),{"xsi:type":"dcterms:W3CDTF"},a,n);if(e.ModifiedDate!=null)fn("dcterms:modified",typeof e.ModifiedDate==="string"?e.ModifiedDate:hr(e.ModifiedDate,t.WTF),{"xsi:type":"dcterms:W3CDTF"},a,n)}for(var i=0;i!=tn.length;++i){var s=tn[i];var f=t.Props&&t.Props[s[1]]!=null?t.Props[s[1]]:e?e[s[1]]:null;if(f===true)f="1";else if(f===false)f="0";else if(typeof f=="number")f=String(f);if(f!=null)fn(s[0],f,null,a,n)}if(a.length>2){a[a.length]="";a[1]=a[1].replace("/>",">")}return a.join("")}var on=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]];vr.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties";Va.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties";var cn=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function un(e,r,t,a){var n=[];if(typeof e=="string")n=fr(e,a);else for(var i=0;i0)for(var o=0;o!==n.length;o+=2){l=+n[o+1].v;switch(n[o].v){case"Worksheets":;case"工作表":;case"Листы":;case"أوراق العمل":;case"ワークシート":;case"גליונות עבודה":;case"Arbeitsblätter":;case"Çalışma Sayfaları":;case"Feuilles de calcul":;case"Fogli di lavoro":;case"Folhas de cálculo":;case"Planilhas":;case"Regneark":;case"Hojas de cálculo":;case"Werkbladen":t.Worksheets=l;t.SheetNames=s.slice(f,f+l);break;case"Named Ranges":;case"Rangos con nombre":;case"名前付き一覧":;case"Benannte Bereiche":;case"Navngivne områder":t.NamedRanges=l;t.DefinedNames=s.slice(f,f+l);break;case"Charts":;case"Diagramme":t.Chartsheets=l;t.ChartNames=s.slice(f,f+l);break;}f+=l}}function hn(e,r,t){var a={};if(!r)r={};e=qe(e);on.forEach(function(t){var n=(e.match(tr(t[0]))||[])[1];switch(t[2]){case"string":if(n)r[t[1]]=We(n);break;case"bool":r[t[1]]=n==="true";break;case"raw":var i=e.match(new RegExp("<"+t[0]+"[^>]*>([\\s\\S]*?)"));if(i&&i.length>0)a[t[1]]=i[1];break;}});if(a.HeadingPairs&&a.TitlesOfParts)un(a.HeadingPairs,a.TitlesOfParts,r,t);return r}var dn=ur("Properties",null,{xmlns:vr.EXT_PROPS,"xmlns:vt":vr.vt});function vn(e){var r=[],t=ur;if(!e)e={};e.Application="SheetJS";r[r.length]=Fe;r[r.length]=dn;on.forEach(function(a){if(e[a[1]]===undefined)return;var n;switch(a[2]){case"string":n=Xe(String(e[a[1]]));break;case"bool":n=e[a[1]]?"true":"false";break;}if(n!==undefined)r[r.length]=t(a[0],n)});r[r.length]=t("HeadingPairs",t("vt:vector",t("vt:variant","Worksheets")+t("vt:variant",t("vt:i4",String(e.Worksheets))),{size:2,baseType:"variant"}));r[r.length]=t("TitlesOfParts",t("vt:vector",e.SheetNames.map(function(e){return""+Xe(e)+""}).join(""),{size:e.Worksheets,baseType:"lpstr"}));if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}vr.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties";Va.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties";var pn=/<[^>]+>[^<]*/g;function mn(e,r){var t={},a="";var n=e.match(pn);if(n)for(var i=0;i!=n.length;++i){var s=n[i],f=Ne(s);switch(f[0]){case"":a=null;break;default:if(s.indexOf("");var o=l[0].slice(4),c=l[1];switch(o){case"lpstr":;case"bstr":;case"lpwstr":t[a]=We(c);break;case"bool":t[a]=Je(c);break;case"i1":;case"i2":;case"i4":;case"i8":;case"int":;case"uint":t[a]=parseInt(c,10);break;case"r4":;case"r8":;case"decimal":t[a]=parseFloat(c);break;case"filetime":;case"date":t[a]=oe(c);break;case"cy":;case"error":t[a]=We(c);break;default:if(o.slice(-1)=="/")break;if(r.WTF&&typeof console!=="undefined")console.warn("Unexpected",s,o,l);}}else if(s.slice(0,2)==="2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}var wn={Title:"Title",Subject:"Subject",Author:"Author",Keywords:"Keywords",Comments:"Description",LastAuthor:"LastAuthor",RevNumber:"Revision",Application:"AppName",LastPrinted:"LastPrinted",CreatedDate:"Created",ModifiedDate:"LastSaved",Category:"Category",Manager:"Manager",Company:"Company",AppVersion:"Version",ContentStatus:"ContentStatus",Identifier:"Identifier",Language:"Language"};var kn=q(wn);function En(e,r,t){r=kn[r]||r;e[r]=t}function Sn(e,r){var t=[];Y(wn).map(function(e){for(var r=0;r'+n.join("")+""}function Cn(e){var r=e._R(4),t=e._R(4);return new Date((t/1e7*Math.pow(2,32)+r/1e7-11644473600)*1e3).toISOString().replace(/\.000/,"")}function yn(e){var r=typeof e=="string"?new Date(Date.parse(e)):e;var t=r.getTime()/1e3+11644473600;var a=t%Math.pow(2,32),n=(t-a)/Math.pow(2,32);a*=1e7;n*=1e7;var i=a/Math.pow(2,32)|0;if(i>0){a=a%Math.pow(2,32);n+=i}var s=et(8);s._W(4,a);s._W(4,n);return s}function Tn(e,r,t){var a=e.l;var n=e._R(0,"lpstr-cp");if(t)while(e.l-a&3)++e.l;return n}function _n(e,r,t){var a=e._R(0,"lpwstr");if(t)e.l+=4-(a.length+1&3)&3;return a}function xn(e,r,t){if(r===31)return _n(e);return Tn(e,r,t)}function An(e,r,t){return xn(e,r,t===false?0:4)}function Rn(e,r){if(!r)throw new Error("VtUnalignedString must have positive length");return xn(e,r,0)}function Fn(e){var r=e._R(4);var t=[];for(var a=0;a!=r;++a){var n=e.l;t[a]=e._R(0,"lpwstr").replace(I,"");if(e.l-n&2)e.l+=2}return t}function In(e){var r=e._R(4);var t=[];for(var a=0;a!=r;++a)t[a]=e._R(0,"lpstr-cp").replace(I,"");return t}function Dn(e){var r=e.l;var t=Mn(e,Ea);if(e[e.l]==0&&e[e.l+1]==0&&e.l-r&2)e.l+=2;var a=Mn(e,ua);return[t,a]}function Pn(e){var r=e._R(4);var t=[];for(var a=0;a>2+1<<2;return a}function Nn(e){var r=e._R(4);var t=e.slice(e.l,e.l+r);e.l+=r;if((r&3)>0)e.l+=4-(r&3)&3;return t}function Ln(e){var r={};r.Size=e._R(4);e.l+=r.Size+3-(r.Size-1)%4;return r}function Mn(e,r,t){var a=e._R(2),n,i=t||{};e.l+=2;if(r!==da)if(a!==r&&Sa.indexOf(r)===-1&&!((r&65534)==4126&&(a&65534)==4126))throw new Error("Expected type "+r+" saw "+a);switch(r===da?a:r){case 2:n=e._R(2,"i");if(!i.raw)e.l+=2;return n;case 3:n=e._R(4,"i");return n;case 11:return e._R(4)!==0;case 19:n=e._R(4);return n;case 30:return Tn(e,a,4).replace(I,"");case 31:return _n(e);case 64:return Cn(e);case 65:return Nn(e);case 71:return Ln(e);case 80:return An(e,a,!i.raw).replace(I,"");case 81:return Rn(e,a).replace(I,"");case 4108:return Pn(e);case 4126:;case 4127:return a==4127?Fn(e):In(e);default:throw new Error("TypedPropertyValue unrecognized type "+r+" "+a);}}function Un(e,r){var t=et(4),a=et(4);t._W(4,e==80?31:e);switch(e){case 3:a._W(-4,r);break;case 5:a=et(8);a._W(8,r,"f");break;case 11:a._W(4,r?1:0);break;case 64:a=yn(r);break;case 31:;case 80:a=et(4+2*(r.length+1)+(r.length%2?0:2));a._W(4,r.length+1);a._W(0,r,"dbcs");while(a.l!=a.length)a._W(1,0);break;default:throw new Error("TypedPropertyValue unrecognized type "+e+" "+r);}return F([t,a])}function Wn(e,r){var t=e.l;var a=e._R(4);var n=e._R(4);var i=[],s=0;var f=0;var o=-1,c={};for(s=0;s!=n;++s){var u=e._R(4);var h=e._R(4);i[s]=[u,h+t]}i.sort(function(e,r){return e[1]-r[1]});var d={};for(s=0;s!=n;++s){if(e.l!==i[s][1]){var v=true;if(s>0&&r)switch(r[i[s-1][0]].t){case 2:if(e.l+2===i[s][1]){e.l+=2;v=false}break;case 80:if(e.l<=i[s][1]){e.l=i[s][1];v=false}break;case 4108:if(e.l<=i[s][1]){e.l=i[s][1];v=false}break;}if((!r||s==0)&&e.l<=i[s][1]){v=false;e.l=i[s][1]}if(v)throw new Error("Read Error: Expected address "+i[s][1]+" at "+e.l+" :"+s)}if(r){var p=r[i[s][0]];d[p.n]=Mn(e,p.t,{raw:true});if(p.p==="version")d[p.n]=String(d[p.n]>>16)+"."+("0000"+String(d[p.n]&65535)).slice(-4);if(p.n=="CodePage")switch(d[p.n]){case 0:d[p.n]=1252;case 874:;case 932:;case 936:;case 949:;case 950:;case 1250:;case 1251:;case 1253:;case 1254:;case 1255:;case 1256:;case 1257:;case 1258:;case 1e4:;case 1200:;case 1201:;case 1252:;case 65e3:;case-536:;case 65001:;case-535:l(f=d[p.n]>>>0&65535);break;default:throw new Error("Unsupported CodePage: "+d[p.n]);}}else{if(i[s][0]===1){f=d.CodePage=Mn(e,ca);l(f);if(o!==-1){var m=e.l;e.l=i[o][1];c=On(e,f);e.l=m}}else if(i[s][0]===0){if(f===0){o=s;e.l=i[s+1][1];continue}c=On(e,f)}else{var b=c[i[s][0]];var g;switch(e[e.l]){case 65:e.l+=4;g=Nn(e);break;case 30:e.l+=4;g=An(e,e[e.l-4]).replace(/\u0000+$/,"");break;case 31:e.l+=4;g=An(e,e[e.l-4]).replace(/\u0000+$/,"");break;case 3:e.l+=4;g=e._R(4,"i");break;case 19:e.l+=4;g=e._R(4);break;case 5:e.l+=4;g=e._R(8,"f");break;case 11:e.l+=4;g=Yn(e,4);break;case 64:e.l+=4;g=oe(Cn(e));break;default:throw new Error("unparsed value: "+e[e.l]);}d[b]=g}}}e.l=t+a;return d}var Hn=["CodePage","Thumbnail","_PID_LINKBASE","_PID_HLINKS","SystemIdentifier","FMTID"].concat(cn);function Vn(e){switch(typeof e){case"boolean":return 11;case"number":return(e|0)==e?3:5;case"string":return 31;case"object":if(e instanceof Date)return 64;break;}return-1}function Xn(e,r,t){var a=et(8),n=[],i=[];var s=8,f=0;var l=et(8),o=et(8);l._W(4,2);l._W(4,1200);o._W(4,1);i.push(l);n.push(o);s+=8+l.length;if(!r){o=et(8);o._W(4,0);n.unshift(o);var c=[et(4)];c[0]._W(4,e.length);for(f=0;f-1)continue;if(e[f][1]==null)continue;var h=e[f][1],d=0;if(r){d=+r[e[f][0]];var v=t[d];if(v.p=="version"&&typeof h=="string"){var p=h.split(".");h=(+p[0]<<16)+(+p[1]||0)}l=Un(v.t,h)}else{var m=Vn(h);if(m==-1){m=31;h=String(h)}l=Un(m,h)}i.push(l);o=et(8);o._W(4,!r?2+f:d);n.push(o);s+=8+l.length}var b=8*(i.length+1);for(f=0;f=12?2:1);var i="sbcs-cont";var s=r;if(a&&a.biff>=8)r=1200;if(!a||a.biff==8){var f=e._R(1);if(f){i="dbcs-cont"}}else if(a.biff==12){i="wstr"}if(a.biff>=2&&a.biff<=5)i="cpstr";var l=n?e._R(n,i):"";r=s;return l}function ai(e){var t=r;r=1200;var a=e._R(2),n=e._R(1);var i=n&4,s=n&8;var f=1+(n&1);var l=0,o;var c={};if(s)l=e._R(2);if(i)o=e._R(4);var u=f==2?"dbcs-cont":"sbcs-cont";var h=a===0?"":e._R(a,u);if(s)e.l+=4*l;if(i)e.l+=o;c.t=h;if(!s){c.raw=""+c.t+"";c.r=c.t}r=t;return c}function ni(e){var r=e.t||"",t=1;var a=et(3+(t>1?2:0));a._W(2,r.length);a._W(1,(t>1?8:0)|1);if(t>1)a._W(2,t);var n=et(2*r.length);n._W(2*r.length,r,"utf16le");var i=[a,n];return F(i)}function ii(e,r,t){var a;if(t){if(t.biff>=2&&t.biff<=5)return e._R(r,"cpstr");if(t.biff>=12)return e._R(r,"dbcs-cont")}var n=e._R(1);if(n===0){a=e._R(r,"sbcs-cont")}else{a=e._R(r,"dbcs-cont")}return a}function si(e,r,t){var a=e._R(t&&t.biff==2?1:2);if(a===0){e.l++;return""}return ii(e,a,t)}function fi(e,r,t){if(t.biff>5)return si(e,r,t);var a=e._R(1);if(a===0){e.l++;return""}return e._R(a,t.biff<=4||!e.lens?"cpstr":"sbcs-cont")}function li(e,r,t){if(!t)t=et(3+2*e.length);t._W(2,e.length);t._W(1,1);t._W(31,e,"utf16le");return t}function oi(e){var r=e._R(1);e.l++;var t=e._R(2);e.l+=2;return[r,t]}function ci(e){var r=e._R(4),t=e.l;var a=false;if(r>24){e.l+=r-24;if(e._R(16)==="795881f43b1d7f48af2c825dc4852763")a=true;e.l=t}var n=e._R((a?r-24:r)>>1,"utf16le").replace(I,"");if(a)e.l+=24;return n}function ui(e){var r=e._R(2);var t="";while(r-- >0)t+="../";var a=e._R(0,"lpstr-ansi");e.l+=2;if(e._R(2)!=57005)throw new Error("Bad FileMoniker");var n=e._R(4);if(n===0)return t+a.replace(/\\/g,"/");var i=e._R(4);if(e._R(2)!=3)throw new Error("Bad FileMoniker");var s=e._R(i>>1,"utf16le").replace(I,"");return t+s}function hi(e,r){var t=e._R(16);r-=16;switch(t){case"e0c9ea79f9bace118c8200aa004ba90b":return ci(e,r);case"0303000000000000c000000000000046":return ui(e,r);default:throw new Error("Unsupported Moniker "+t);}}function di(e){var r=e._R(4);var t=r>0?e._R(r,"utf16le").replace(I,""):"";return t}function vi(e,r){if(!r)r=et(6+e.length*2);r._W(4,1+e.length);for(var t=0;t-1?31:23;switch(a.charAt(0)){case"#":i=28;break;case".":i&=~2;break;}r._W(4,2);r._W(4,i);var s=[8,6815827,6619237,4849780,83];for(t=0;t-1?a.slice(0,n):a;r._W(4,2*(f.length+1));for(t=0;t-1?a.slice(n+1):"",r)}else{s="03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" ");for(t=0;t8?4:2;var n=e._R(a),i=e._R(a,"i"),s=e._R(a,"i");return[n,i,s]}function Ci(e){var r=e._R(2);var t=Yt(e);return[r,t]}function yi(e,r,t){e.l+=4;r-=4;var a=e.l+r;var n=ti(e,r,t);var i=e._R(2);a-=e.l;if(i!==a)throw new Error("Malformed AddinUdf: padding = "+a+" != "+i);e.l+=i;return n}function Ti(e){var r=e._R(2);var t=e._R(2);var a=e._R(2);var n=e._R(2);return{s:{c:a,r:r},e:{c:n,r:t}}}function _i(e,r){if(!r)r=et(8);r._W(2,e.s.r);r._W(2,e.e.r);r._W(2,e.s.c);r._W(2,e.e.c);return r}function xi(e){var r=e._R(2);var t=e._R(2);var a=e._R(1);var n=e._R(1);return{s:{c:a,r:r},e:{c:n,r:t}}}var Ai=xi;function Ri(e){e.l+=4;var r=e._R(2);var t=e._R(2);var a=e._R(2);e.l+=12;return[t,r,a]}function Fi(e){var r={};e.l+=4;e.l+=16;r.fSharedNote=e._R(2);e.l+=4;return r}function Ii(e){var r={};e.l+=4;e.cf=e._R(2);return r}function Di(e){e.l+=2;e.l+=e._R(2)}var Pi={0:Di,4:Di,5:Di,6:Di,7:Ii,8:Di,9:Di,10:Di,11:Di,12:Di,13:Fi,14:Di,15:Di,16:Di,17:Di,18:Di,19:Di,20:Di,21:Ri};function Oi(e,r){var t=e.l+r;var a=[];while(e.l=2){t.dt=e._R(2);e.l-=2}switch(t.BIFFVer){case 1536:;case 1280:;case 1024:;case 768:;case 512:;case 2:;case 7:break;default:if(r>6)throw new Error("Unexpected BIFF Ver "+t.BIFFVer);}e._R(r);return t}function Li(e,r,t){var a=1536,n=16;switch(t.bookType){case"biff8":break;case"biff5":a=1280;n=8;break;case"biff4":a=4;n=6;break;case"biff3":a=3;n=6;break;case"biff2":a=2;n=4;break;case"xla":break;default:throw new Error("unsupported BIFF version");}var i=et(n);i._W(2,a);i._W(2,r);if(n>4)i._W(2,29282);if(n>6)i._W(2,1997);if(n>8){i._W(2,49161);i._W(2,1);i._W(2,1798);i._W(2,0)}return i}function Mi(e,r){if(r===0)return 1200;if(e._R(2)!==1200){}return 1200}function Ui(e,r,t){if(t.enc){e.l+=r;return""}var a=e.l;var n=fi(e,0,t);e._R(r+a-e.l);return n}function Wi(e,r){var t=!r||r.biff==8;var a=et(t?112:54);a._W(r.biff==8?2:1,7);if(t)a._W(1,0);a._W(4,859007059);a._W(4,5458548|(t?0:536870912));while(a.l=8?2:1;var a=et(8+t*e.name.length);a._W(4,e.pos);a._W(1,e.hs||0);a._W(1,e.dt);a._W(1,e.name.length);if(r.biff>=8)a._W(1,1);a._W(t*e.name.length,e.name,r.biff<8?"sbcs":"utf16le");var n=a.slice(0,a.l);n.l=a.l;return n}function Gi(e,r){var t=e.l+r;var a=e._R(4);var n=e._R(4);var i=[];for(var s=0;s!=n&&e.l>15);n&=32767}var i={Unsynced:a&1,DyZero:(a&2)>>1,ExAsc:(a&4)>>2,ExDsc:(a&8)>>3};return[i,n]}function qi(e){var r=e._R(2),t=e._R(2),a=e._R(2),n=e._R(2);var i=e._R(2),s=e._R(2),f=e._R(2);var l=e._R(2),o=e._R(2);return{Pos:[r,t],Dim:[a,n],Flags:i,CurTab:s,FirstTab:f,Selected:l,TabRatio:o}}function Qi(){var e=et(18);e._W(2,0);e._W(2,0);e._W(2,29280);e._W(2,17600);e._W(2,56);e._W(2,0);e._W(2,0);e._W(2,1);e._W(2,500);return e}function Zi(e,r,t){if(t&&t.biff>=2&&t.biff<5)return{};var a=e._R(2);return{RTL:a&64}}function es(e){var r=et(18),t=1718;if(e&&e.RTL)t|=64;r._W(2,t);r._W(4,0);r._W(4,64);r._W(4,0);r._W(4,0);return r}function rs(){}function ts(e,r,t){var a={dyHeight:e._R(2),fl:e._R(2)};switch(t&&t.biff||8){case 2:break;case 3:;case 4:e.l+=2;break;default:e.l+=10;break;}a.name=ti(e,0,t);return a}function as(e,r){var t=e.name||"Arial";var a=r&&r.biff==5,n=a?15+t.length:16+2*t.length;var i=et(n);i._W(2,(e.sz||12)*20);i._W(4,0);i._W(2,400);i._W(4,0);i._W(2,0);i._W(1,t.length);if(!a)i._W(1,1);i._W((a?1:2)*t.length,t,a?"sbcs":"utf16le");return i}function ns(e){var r=wi(e);r.isst=e._R(4);return r}function is(e,r,t,a){var n=et(10);ki(e,r,a,n);n._W(4,t);return n}function ss(e,r,t){if(t.biffguess&&t.biff==2)t.biff=5;var a=e.l+r;var n=wi(e,6);if(t.biff==2)e.l++;var i=si(e,a-e.l,t);n.val=i;return n}function fs(e,r,t,a,n){var i=!n||n.biff==8;var s=et(6+2+ +i+(1+i)*t.length);ki(e,r,a,s);s._W(2,t.length);if(i)s._W(1,1);s._W((1+i)*t.length,t,i?"utf16le":"sbcs");return s}function ls(e,r,t){var a=e._R(2);var n=fi(e,0,t);return[a,n]}function os(e,r,t,a){var n=t&&t.biff==5;if(!a)a=et(n?3+r.length:5+2*r.length);a._W(2,e);a._W(n?1:2,r.length);if(!n)a._W(1,1);a._W((n?1:2)*r.length,r,n?"sbcs":"utf16le");var i=a.length>a.l?a.slice(0,a.l):a;if(i.l==null)i.l=i.length;return i}var cs=fi;function us(e,r,t){var a=e.l+r;var n=t.biff==8||!t.biff?4:2;var i=e._R(n),s=e._R(n);var f=e._R(2),l=e._R(2);e.l=a;return{s:{r:i,c:f},e:{r:s,c:l}}}function hs(e,r){var t=r.biff==8||!r.biff?4:2;var a=et(2*t+6);a._W(t,e.s.r);a._W(t,e.e.r+1);a._W(2,e.s.c);a._W(2,e.e.c+1);a._W(2,0);return a}function ds(e){var r=e._R(2),t=e._R(2);var a=Ci(e);return{r:r,c:t,ixfe:a[0],rknum:a[1]}}function vs(e,r){var t=e.l+r-2;var a=e._R(2),n=e._R(2);var i=[];while(e.l>26];if(!a.cellStyles)return n;n.alc=i&7;n.fWrap=i>>3&1;n.alcV=i>>4&7;n.fJustLast=i>>7&1;n.trot=i>>8&255;n.cIndent=i>>16&15;n.fShrinkToFit=i>>20&1;n.iReadOrder=i>>22&2;n.fAtrNum=i>>26&1;n.fAtrFnt=i>>27&1;n.fAtrAlc=i>>28&1;n.fAtrBdr=i>>29&1;n.fAtrPat=i>>30&1;n.fAtrProt=i>>31&1;n.dgLeft=s&15;n.dgRight=s>>4&15;n.dgTop=s>>8&15;n.dgBottom=s>>12&15;n.icvLeft=s>>16&127;n.icvRight=s>>23&127;n.grbitDiag=s>>30&3;n.icvTop=f&127;n.icvBottom=f>>7&127;n.icvDiag=f>>14&127;n.dgDiag=f>>21&15;n.icvFore=l&127;n.icvBack=l>>7&127;n.fsxButton=l>>14&1;return n}function bs(e,r,t){var a={};a.ifnt=e._R(2);a.numFmtId=e._R(2);a.flags=e._R(2);a.fStyle=a.flags>>2&1;r-=6;a.data=ms(e,r,a.fStyle,t);return a}function gs(e,r,t,a){var n=t&&t.biff==5;if(!a)a=et(n?16:20);a._W(2,0);if(e.style){a._W(2,e.numFmtId||0);a._W(2,65524)}else{a._W(2,e.numFmtId||0);a._W(2,r<<4)}var i=0;if(e.numFmtId>0&&n)i|=1024;a._W(4,i);a._W(4,0);if(!n)a._W(4,0);a._W(2,0);return a}function ws(e){e.l+=4;var r=[e._R(2),e._R(2)];if(r[0]!==0)r[0]--;if(r[1]!==0)r[1]--;if(r[0]>7||r[1]>7)throw new Error("Bad Gutters: "+r.join("|"));return r}function ks(e){var r=et(8);r._W(4,0);r._W(2,e[0]?e[0]+1:0);r._W(2,e[1]?e[1]+1:0);return r}function Es(e,r,t){var a=wi(e,6);if(t.biff==2||r==9)++e.l;var n=ei(e,2);a.val=n;a.t=n===true||n===false?"b":"e";return a}function Ss(e,r,t,a,n,i){var s=et(8);ki(e,r,a,s);ri(t,i,s);return s}function Bs(e,r,t){if(t.biffguess&&t.biff==2)t.biff=5;var a=wi(e,6);var n=ra(e,8);a.val=n;return a}function Cs(e,r,t,a){var n=et(14);ki(e,r,a,n);ta(t,n);return n}var ys=Si;function Ts(e,r,t){var a=e.l+r;var n=e._R(2);var i=e._R(2);t.sbcch=i;if(i==1025||i==14849)return[i,n];if(i<1||i>255)throw new Error("Unexpected SupBook type: "+i);var s=ii(e,i);var f=[];while(a>e.l)f.push(si(e));return[i,n,s,f]}function _s(e,r,t){var a=e._R(2);var n;var i={fBuiltIn:a&1,fWantAdvise:a>>>1&1,fWantPict:a>>>2&1,fOle:a>>>3&1,fOleLink:a>>>4&1,cf:a>>>5&1023,fIcon:a>>>15&1};if(t.sbcch===14849)n=yi(e,r-2,t);i.body=n||e._R(r-2);if(typeof n==="string")i.Name=n;return i}var xs=["_xlnm.Consolidate_Area","_xlnm.Auto_Open","_xlnm.Auto_Close","_xlnm.Extract","_xlnm.Database","_xlnm.Criteria","_xlnm.Print_Area","_xlnm.Print_Titles","_xlnm.Recorder","_xlnm.Data_Form","_xlnm.Auto_Activate","_xlnm.Auto_Deactivate","_xlnm.Sheet_Title","_xlnm._FilterDatabase"];function As(e,r,t){var a=e.l+r;var n=e._R(2);var i=e._R(1);var s=e._R(1);var f=e._R(t&&t.biff==2?1:2);var l=0;if(!t||t.biff>=5){if(t.biff!=5)e.l+=2;l=e._R(2);if(t.biff==5)e.l+=2;e.l+=4}var o=ii(e,s,t);if(n&32)o=xs[o.charCodeAt(0)];var c=a-e.l;if(t&&t.biff==2)--c;var u=a==e.l||f===0||!(c>0)?[]:Ku(e,c,t,f);return{chKey:i,Name:o,itab:l,rgce:u}}function Rs(e,r,t){if(t.biff<8)return Fs(e,r,t);var a=[],n=e.l+r,i=e._R(t.biff>8?4:2);while(i--!==0)a.push(Bi(e,t.biff>8?12:6,t));if(e.l!=n)throw new Error("Bad ExternSheet: "+e.l+" != "+n);return a}function Fs(e,r,t){if(e[e.l+1]==3)e[e.l]++;var a=ti(e,r,t);return a.charCodeAt(0)==3?a.slice(1):a}function Is(e,r,t){if(t.biff<8){e.l+=r;return}var a=e._R(2);var n=e._R(2);var i=ii(e,a,t);var s=ii(e,n,t);return[i,s]}function Ds(e,r,t){var a=xi(e,6);e.l++;var n=e._R(1);r-=8;return[Yu(e,r,t),n,a]}function Ps(e,r,t){var a=Ai(e,6);switch(t.biff){case 2:e.l++;r-=7;break;case 3:;case 4:e.l+=2;r-=8;break;default:e.l+=6;r-=12;}return[a,ju(e,r,t,a)]}function Os(e){var r=e._R(4)!==0;var t=e._R(4)!==0;var a=e._R(4);return[r,t,a]}function Ns(e,r,t){if(t.biff<8)return;var a=e._R(2),n=e._R(2);var i=e._R(2),s=e._R(2);var f=fi(e,0,t);if(t.biff<8)e._R(1);return[{r:a,c:n},f,s,i]}function Ls(e,r,t){return Ns(e,r,t)}function Ms(e,r){var t=[];var a=e._R(2);while(a--)t.push(Ti(e,r));return t}function Us(e){var r=et(2+e.length*8);r._W(2,e.length);for(var t=0;t=(c?f:2*f))break}if(n.length!==f&&n.length!==f*2){throw new Error("cchText: "+f+" != "+n.length)}e.l=a+r;return{t:n}}catch(h){e.l=a+r;return{t:n}}}function Gs(e,r){var t=Ti(e,8);e.l+=16;var a=pi(e,r-24);return[t,a]}function zs(e){var r=et(24);var t=wt(e[0]);r._W(2,t.r);r._W(2,t.r);r._W(2,t.c);r._W(2,t.c);var a="d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" ");for(var n=0;n<16;++n)r._W(1,parseInt(a[n],16));return F([r,mi(e[1])])}function js(e,r){e._R(2);var t=Ti(e,8);var a=e._R((r-10)/2,"dbcs-cont");a=a.replace(I,"");return[t,a]}function $s(e){var r=e[1].Tooltip;var t=et(10+2*(r.length+1));t._W(2,2048);var a=wt(e[0]);t._W(2,a.r);t._W(2,a.r);t._W(2,a.c);t._W(2,a.c);for(var n=0;n0)t.push(gi(e,8));return t}function qs(e){var r=e._R(2);var t=[];while(r-- >0)t.push(gi(e,8));return t}function Qs(e){e.l+=2;var r={cxfs:0,crc:0};r.cxfs=e._R(2);r.crc=e._R(4);return r}function Zs(e,r,t){if(!t.cellStyles)return Zr(e,r);var a=t&&t.biff>=12?4:2;var n=e._R(a);var i=e._R(a);var s=e._R(a);var f=e._R(a);var l=e._R(2);if(a==2)e.l+=2;var o={s:n,e:i,w:s,ixfe:f,flags:l};if(t.biff>=5||!t.biff)o.level=l>>8&7;return o}function ef(e,r){var t=et(12);t._W(2,r);t._W(2,r);t._W(2,e.width*256);t._W(2,0);var a=0;if(e.hidden)a|=1;t._W(1,a);a=e.level||0;t._W(1,a);t._W(2,0);return t}function rf(e,r){var t={};if(r<32)return t;e.l+=16;t.header=ra(e,8);t.footer=ra(e,8);e.l+=2;return t}function tf(e,r,t){var a={area:false};if(t.biff!=5){e.l+=r;return a}var n=e._R(1);e.l+=3;if(n&16)a.area=true;return a}function af(e){var r=et(2*e);for(var t=0;t1048576)o=1e6;if(i!=2)c=n._R(2);var u=n._R(2);var h=t.codepage||1252;if(i!=2){n.l+=16;n._R(1);if(n[n.l]!==0)h=e[n[n.l]];n.l+=1;n.l+=2}if(l)n.l+=36;var d=[],v={};var p=Math.min(n.length,i==2?521:c-10-(f?264:0));var m=l?32:11;while(n.l0){if(n[n.l]===42){n.l+=u;continue}++n.l;a[++b]=[];w=0;for(w=0;w!=d.length;++w){var k=n.slice(n.l,n.l+d[w].len);n.l+=d[w].len;Qr(k,0);var E=cptable.utils.decode(h,k);switch(d[w].type){case"C":if(E.trim().length)a[b][w]=E.replace(/\s+$/,"");break;case"D":if(E.length===8)a[b][w]=new Date(+E.slice(0,4),+E.slice(4,6)-1,+E.slice(6,8));else a[b][w]=E;break;case"F":a[b][w]=parseFloat(E.trim());break;case"+":;case"I":a[b][w]=l?k._R(-4,"i")^2147483648:k._R(4,"i");break;case"L":switch(E.trim().toUpperCase()){case"Y":;case"T":a[b][w]=true;break;case"N":;case"F":a[b][w]=false;break;case"":;case"?":break;default:throw new Error("DBF Unrecognized L:|"+E+"|");}break;case"M":if(!s)throw new Error("DBF Unexpected MEMO for type "+i.toString(16));a[b][w]="##MEMO##"+(l?parseInt(E.trim(),10):k._R(4));break;case"N":E=E.replace(/\u0000/g,"").trim();if(E&&E!=".")a[b][w]=+E||0;break;case"@":a[b][w]=new Date(k._R(-8,"f")-621356832e5);break;case"T":a[b][w]=new Date((k._R(4)-2440588)*864e5+k._R(4));break;case"Y":a[b][w]=k._R(4,"i")/1e4;break;case"O":a[b][w]=-k._R(-8,"f");break;case"B":if(f&&d[w].len==8){a[b][w]=k._R(8,"f");break};case"G":;case"P":k.l+=d[w].len;break;case"0":if(d[w].name==="_NullFlags")break;default:throw new Error("DBF Unsupported data type "+d[w].type);}}}if(i!=2)if(n.l=0)l(+n.codepage);if(n.type=="string")throw new Error("Cannot write DBF to JS string");var i=tt();var s=Ib(e,{header:1,raw:true,cellDates:true});var o=s[0],c=s.slice(1);var u=0,h=0,d=0,v=1;for(u=0;u":190,"?":191,"{":223};var r=new RegExp("N("+Y(e).join("|").replace(/\|\|\|/,"|\\||").replace(/([?()+])/g,"\\$1")+"|\\|)","gm");var t=function(r,t){var a=e[t];return typeof a=="number"?p(a):a};var a=function(e,r,t){var a=r.charCodeAt(0)-32<<4|t.charCodeAt(0)-48;return a==59?e:p(a)};e["|"]=254;function n(e,r){switch(r.type){case"base64":return i(g.decode(e),r);case"binary":return i(e,r);case"buffer":return i(w&&Buffer.isBuffer(e)?e.toString("binary"):_(e),r);case"array":return i(ce(e),r);}throw new Error("Unrecognized type "+r.type)}function i(e,n){var i=e.split(/[\n\r]+/),s=-1,f=-1,o=0,c=0,u=[];var h=[];var d=null;var v={},p=[],m=[],b=[];var g=0,w;if(+n.codepage>=0)l(+n.codepage);for(;o!==i.length;++o){g=0;var k=i[o].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,a).replace(r,t);var E=k.replace(/;;/g,"\0").split(";").map(function(e){return e.replace(/\u0000/g,";")});var S=E[0],B;if(k.length>0)switch(S){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":if(E[1].charAt(0)=="P")h.push(k.slice(3).replace(/;;/g,";"));break;case"C":var C=false,y=false,T=false,_=false,x=-1,A=-1;for(c=1;c-1&&u[x][A];if(!F||!F[1])throw new Error("SYLK shared formula cannot find base");u[s][f][1]=hc(F[1],{r:s-x,c:f-A})}break;case"F":var I=0;for(c=1;c0){p[s].hpt=g;p[s].hpx=Rl(g)}else if(g===0)p[s].hidden=true;break;default:if(n&&n.WTF)throw new Error("SYLK bad record "+k);}if(I<1)d=null;break;default:if(n&&n.WTF)throw new Error("SYLK bad record "+k);}}if(p.length>0)v["!rows"]=p;if(m.length>0)v["!cols"]=m;if(n&&n.sheetRows)u=u.slice(0,n.sheetRows);return[u,v]}function s(e,r){var t=n(e,r);var a=t[0],i=t[1];var s=xt(a,r);Y(i).forEach(function(e){s[e]=i[e]});return s}function f(e,r){return Tt(s(e,r),r)}function o(e,r,t,a){var n="C;Y"+(t+1)+";X"+(a+1)+";K";switch(e.t){case"n":n+=e.v||0;if(e.f&&!e.F)n+=";E"+uc(e.f,{r:t,c:a});break;case"b":n+=e.v?"TRUE":"FALSE";break;case"e":n+=e.w||e.v;break;case"d":n+='"'+(e.w||e.v)+'"';break;case"s":n+='"'+e.v.replace(/"/g,"").replace(/;/g,";;")+'"';break;}return n}function c(e,r){r.forEach(function(r,t){var a="F;W"+(t+1)+" "+(t+1)+" ";if(r.hidden)a+="0";else{if(typeof r.width=="number"&&!r.wpx)r.wpx=El(r.width);if(typeof r.wpx=="number"&&!r.wch)r.wch=Sl(r.wpx);if(typeof r.wch=="number")a+=Math.round(r.wch)}if(a.charAt(a.length-1)!=" ")e.push(a)})}function u(e,r){r.forEach(function(r,t){var a="F;";if(r.hidden)a+="M0;";else if(r.hpt)a+="M"+20*r.hpt+";";else if(r.hpx)a+="M"+20*Al(r.hpx)+";";if(a.length>2)e.push(a+"R"+(t+1))})}function h(e,r){var t=["ID;PWXL;N;E"],a=[];var n=Bt(e["!ref"]),i;var s=Array.isArray(e);var f="\r\n";t.push("P;PGeneral");t.push("F;P0;DG0G8;M255");if(e["!cols"])c(t,e["!cols"]);if(e["!rows"])u(t,e["!rows"]);t.push("B;Y"+(n.e.r-n.s.r+1)+";X"+(n.e.c-n.s.c+1)+";D"+[n.s.c,n.s.r,n.e.c,n.e.r].join(" "));for(var l=n.s.r;l<=n.e.r;++l){for(var h=n.s.c;h<=n.e.c;++h){var d=kt({r:l,c:h});i=s?(e[l]||[])[h]:e[d];if(!i||i.v==null&&(!i.f||i.F))continue;a.push(o(i,e,l,h,r))}}return t.join(f)+f+a.join(f)+f+"E"+f}return{to_workbook:f,to_sheet:s,from_sheet:h}}();var wf=function(){function e(e,t){switch(t.type){case"base64":return r(g.decode(e),t);case"binary":return r(e,t);case"buffer":return r(w&&Buffer.isBuffer(e)?e.toString("binary"):_(e),t);case"array":return r(ce(e),t);}throw new Error("Unrecognized type "+t.type)}function r(e,r){var t=e.split("\n"),a=-1,n=-1,i=0,s=[];for(;i!==t.length;++i){if(t[i].trim()==="BOT"){s[++a]=[];n=0;continue}if(a<0)continue;var f=t[i].trim().split(",");var l=f[0],o=f[1];++i;var c=t[i]||"";while((c.match(/["]/g)||[]).length&1&&i=0&&i[s].length===0)--s;var f=10,l=0;var o=0;for(;o<=s;++o){l=i[o].indexOf(" ");if(l==-1)l=i[o].length;else l++;f=Math.max(f,l)}for(o=0;o<=s;++o){n[o]=[];var c=0;e(i[o].slice(0,f).trim(),n,o,c,a);for(c=1;c<=(i[o].length-f)/10+1;++c)e(i[o].slice(f+(c-1)*10,f+c*10).trim(),n,o,c,a)}if(a.sheetRows)n=n.slice(0,a.sheetRows);return n}var t={44:",",9:"\t",59:";",124:"|"};var a={44:3,9:2,59:1,124:0};function n(e){var r={},n=false,i=0,s=0;for(;i0)g();i["!ref"]=St(s);return i}function s(e,t){if(!(t&&t.PRN))return i(e,t);if(t.FS)return i(e,t);if(e.slice(0,4)=="sep=")return i(e,t);if(e.indexOf("\t")>=0||e.indexOf(",")>=0||e.indexOf(";")>=0)return i(e,t);return xt(r(e,t),t)}function f(e,r){var t="",a=r.type=="string"?[0,0,0,0]:Jm(e,r);switch(r.type){case"base64":t=g.decode(e);break;case"binary":t=e;break;case"buffer":if(r.codepage==65001)t=e.toString("utf8");else if(r.codepage&&typeof cptable!=="undefined")t=cptable.utils.decode(r.codepage,e);else t=w&&Buffer.isBuffer(e)?e.toString("binary"):_(e);break;case"array":t=ce(e);break;case"string":t=e;break;default:throw new Error("Unrecognized type "+r.type);}if(a[0]==239&&a[1]==187&&a[2]==191)t=qe(t.slice(3));else if(r.type!="string"&&r.type!="buffer"&&r.codepage==65001)t=qe(t);else if(r.type=="binary"&&typeof cptable!=="undefined"&&r.codepage)t=cptable.utils.decode(r.codepage,cptable.utils.encode(28591,t));if(t.slice(0,19)=="socialcalc:version:")return kf.to_sheet(r.type=="string"?t:qe(t),r);return s(t,r)}function l(e,r){return Tt(f(e,r),r)}function o(e){var r=[];var t=Bt(e["!ref"]),a;var n=Array.isArray(e);for(var i=t.s.r;i<=t.e.r;++i){var s=[];for(var f=t.s.c;f<=t.e.c;++f){var l=kt({r:i,c:f});a=n?(e[i]||[])[f]:e[l];if(!a||a.v==null){s.push(" ");continue}var o=(a.w||(yt(a),a.w)||"").slice(0,10);while(o.length<10)o+=" ";s.push(o+(f===0?" ":""))}r.push(s.join(""))}return r.join("\n")}return{to_workbook:l,to_sheet:f,from_sheet:o}}();function Sf(e,r){var t=r||{},a=!!t.WTF;t.WTF=true;try{var n=gf.to_workbook(e,t);t.WTF=a;return n}catch(i){t.WTF=a;if(!i.message.match(/SYLK bad record ID/)&&a)throw i;return Ef.to_workbook(e,r)}}var Bf=function(){function e(e,r,t){if(!e)return;Qr(e,e.l||0);var a=t.Enum||V;while(e.l=16&&r[14]==5&&r[15]===108)throw new Error("Unsupported Works 3 for Mac file")}}if(r[2]==2){a.Enum=V;e(r,function(e,r,t){switch(t){case 0:a.vers=e;if(e>=4096)a.qpro=true;break;case 6:u=e;break;case 204:if(e)s=e;break;case 222:s=e;break;case 15:;case 51:if(!a.qpro)e[1].v=e[1].v.slice(1);case 13:;case 14:;case 16:if(t==14&&(e[2]&112)==112&&(e[2]&15)>1&&(e[2]&15)<15){e[1].z=a.dateNF||P._table[14];if(a.cellDates){e[1].t="d";e[1].v=ie(e[1].v)}}if(a.qpro){if(e[3]>f){n["!ref"]=St(u);l[i]=n;o.push(i);n=a.dense?[]:{};u={s:{r:0,c:0},e:{r:0,c:0}};f=e[3];i=s||"Sheet"+(f+1);s=""}}var c=a.dense?(n[e[0].r]||[])[e[0].c]:n[kt(e[0])];if(c){c.t=e[1].t;c.v=e[1].v;if(e[1].z!=null)c.z=e[1].z;if(e[1].f!=null)c.f=e[1].f;break}if(a.dense){if(!n[e[0].r])n[e[0].r]=[];n[e[0].r][e[0].c]=e[1]}else n[kt(e[0])]=e[1];break;default:;}},a)}else if(r[2]==26||r[2]==14){a.Enum=X;if(r[2]==14){a.qpro=true;r.l=0}e(r,function(e,r,t){switch(t){case 204:i=e;break;case 22:e[1].v=e[1].v.slice(1);case 23:;case 24:;case 25:;case 37:;case 39:;case 40:if(e[3]>f){n["!ref"]=St(u);l[i]=n;o.push(i);n=a.dense?[]:{};u={s:{r:0,c:0},e:{r:0,c:0}};f=e[3];i="Sheet"+(f+1)}if(h>0&&e[0].r>=h)break;if(a.dense){if(!n[e[0].r])n[e[0].r]=[];n[e[0].r][e[0].c]=e[1]}else n[kt(e[0])]=e[1];if(u.e.c=0)l(+t.codepage);if(t.type=="string")throw new Error("Cannot write WK1 to JS string");var a=tt();var n=Bt(e["!ref"]);var s=Array.isArray(e);var f=[];sm(a,0,i(1030));sm(a,6,o(n));var c=Math.min(n.e.r,8191);for(var u=n.s.r;u<=c;++u){var d=ut(u);for(var p=n.s.c;p<=n.e.c;++p){if(u===n.s.r)f[p]=pt(p);var m=f[p]+d;var g=s?(e[u]||[])[p]:e[m];if(!g||g.t=="z")continue;if(g.t=="n"){if((g.v|0)==g.v&&g.v>=-32768&&g.v<=32767)sm(a,13,v(u,p,g.v));else sm(a,14,b(u,p,g.v))}else{var w=yt(g);sm(a,15,h(u,p,w.slice(0,239)))}}}sm(a,1);return a.end()}function n(e,r){var t=r||{};if(+t.codepage>=0)l(+t.codepage);if(t.type=="string")throw new Error("Cannot write WK3 to JS string");var a=tt();sm(a,0,s(e));for(var n=0,i=0;n8191)t=8191;r._W(2,t);r._W(1,n);r._W(1,a);r._W(2,0);r._W(2,0);r._W(1,1);r._W(1,2);r._W(4,0);r._W(4,0);return r}function f(e,r,t){var a={s:{c:0,r:0},e:{c:0,r:0}};if(r==8&&t.qpro){a.s.c=e._R(1);e.l++;a.s.r=e._R(2);a.e.c=e._R(1);e.l++;a.e.r=e._R(2);return a}a.s.c=e._R(2);a.s.r=e._R(2);if(r==12&&t.qpro)e.l+=2;a.e.c=e._R(2);a.e.r=e._R(2);if(r==12&&t.qpro)e.l+=2;if(a.s.c==65535)a.s.c=a.e.c=a.s.r=a.e.r=0;return a}function o(e){var r=et(8);r._W(2,e.s.c);r._W(2,e.s.r);r._W(2,e.e.c);r._W(2,e.e.r);return r}function c(e,r,t){var a=[{c:0,r:0},{t:"n",v:0},0,0];if(t.qpro&&t.vers!=20768){a[0].c=e._R(1);a[3]=e._R(1);a[0].r=e._R(2);e.l+=2}else{a[2]=e._R(1);a[0].c=e._R(2);a[0].r=e._R(2)}return a}function u(e,r,t){var a=e.l+r;var n=c(e,r,t);n[1].t="s";if(t.vers==20768){e.l++;var i=e._R(1);n[1].v=e._R(i,"utf8");return n}if(t.qpro)e.l++;n[1].v=e._R(a-e.l,"cstr");return n}function h(e,r,t){var a=et(7+t.length);a._W(1,255);a._W(2,r);a._W(2,e);a._W(1,39);for(var n=0;n=128?95:i)}a._W(1,0);return a}function d(e,r,t){var a=c(e,r,t);a[1].v=e._R(2,"i");return a}function v(e,r,t){var a=et(7);a._W(1,255);a._W(2,r);a._W(2,e);a._W(2,t,"i");return a}function p(e,r,t){var a=c(e,r,t);a[1].v=e._R(8,"f");return a}function b(e,r,t){var a=et(13);a._W(1,255);a._W(2,r);a._W(2,e);a._W(8,t,"f");return a}function w(e,r,t){var a=e.l+r;var n=c(e,r,t);n[1].v=e._R(8,"f");if(t.qpro)e.l=a;else{var i=e._R(2);C(e.slice(e.l,e.l+i),n);e.l+=i}return n}function k(e,r,t){var a=r&32768;r&=~32768;r=(a?e:0)+(r>=8192?r-16384:r);return(a?"":"$")+(t?pt(r):ut(r))}var E=[8,8,8,8,8,8,8,8,6,4,4,5,5,7,3,3,3,3,3,3,1,1,2,6,8,8,8,8,8,8,8,8];var S={51:["FALSE",0],52:["TRUE",0],70:["LEN",1],80:["SUM",69],81:["AVERAGEA",69],82:["COUNTA",69],83:["MINA",69],84:["MAXA",69],111:["T",1]};var B=["","","","","","","","","","+","-","*","/","^","=","<>","<=",">=","<",">","","","","","&","","","","","","",""];function C(e,r){Qr(e,0);var t=[],a=0,n="",i="",s="",f="";while(e.lt.length){console.error("WK1 bad formula parse 0x"+l.toString(16)+":|"+t.join("|")+"|");return}var h=t.slice(-a);t.length-=a;t.push(S[l][0]+"("+h.join(",")+")")}else if(l<=7)return console.error("WK1 invalid opcode "+l.toString(16));else if(l<=24)return console.error("WK1 unsupported op "+l.toString(16));else if(l<=30)return console.error("WK1 invalid opcode "+l.toString(16));else if(l<=115)return console.error("WK1 unsupported function opcode "+l.toString(16));else return console.error("WK1 unrecognized opcode "+l.toString(16));}}if(t.length==1)r[1].f=""+t[0];else console.error("WK1 bad formula parse |"+t.join("|")+"|")}function T(e){var r=[{c:0,r:0},{t:"n",v:0},0];r[0].r=e._R(2);r[3]=e[e.l++];r[0].c=e[e.l++];return r}function _(e,r){var t=T(e,r);t[1].t="s";t[1].v=e._R(r-4,"cstr");return t}function x(e,r,t,a){var n=et(6+a.length);n._W(2,e);n._W(1,t);n._W(1,r);n._W(1,39);for(var i=0;i=128?95:s)}n._W(1,0);return n}function A(e,r){var t=T(e,r);t[1].v=e._R(2);var a=t[1].v>>1;if(t[1].v&1){switch(a&7){case 0:a=(a>>3)*5e3;break;case 1:a=(a>>3)*500;break;case 2:a=(a>>3)/20;break;case 3:a=(a>>3)/200;break;case 4:a=(a>>3)/2e3;break;case 5:a=(a>>3)/2e4;break;case 6:a=(a>>3)/16;break;case 7:a=(a>>3)/64;break;}}t[1].v=a;return t}function R(e,r){var t=T(e,r);var a=e._R(4);var n=e._R(4);var i=e._R(2);if(i==65535){if(a===0&&n===3221225472){t[1].t="e";t[1].v=15}else if(a===0&&n===3489660928){t[1].t="e";t[1].v=42}else t[1].v=0;return t}var s=i&32768;i=(i&32767)-16446;t[1].v=(1-s*2)*(n*Math.pow(2,i+32)+a*Math.pow(2,i));return t}function F(e,r,t,a){var n=et(14);n._W(2,e);n._W(1,t);n._W(1,r);if(a==0){n._W(4,0);n._W(4,0);n._W(2,65535);return n}var i=0,s=0,f=0,l=0;if(a<0){i=1;a=-a}s=Math.log2(a)|0;a/=Math.pow(2,s-31);l=a>>>0;if((l&2147483648)==0){a/=2;++s;l=a>>>0}a-=l;l|=2147483648;l>>>=0;a*=Math.pow(2,32);f=a>>>0;n._W(4,f);n._W(4,l);s+=16383+(i?32768:0);n._W(2,s);return n}function I(e,r){var t=R(e,14);e.l+=r-14;return t}function D(e,r){var t=T(e,r);var a=e._R(4);t[1].v=a>>6;return t}function O(e,r){var t=T(e,r);var a=e._R(8,"f");t[1].v=a;return t}function N(e,r){var t=O(e,14);e.l+=r-10;return t}function L(e,r){return e[e.l+r-1]==0?e._R(r,"cstr"):""}function M(e,r){var t=e[e.l++];if(t>r-1)t=r-1;var a="";while(a.length127?95:n}t[t.l++]=0;return t}var V={0:{n:"BOF",f:qn},1:{n:"EOF"},2:{n:"CALCMODE"},3:{n:"CALCORDER"},4:{n:"SPLIT"},5:{n:"SYNC"},6:{n:"RANGE",f:f},7:{n:"WINDOW1"},8:{n:"COLW1"},9:{n:"WINTWO"},10:{n:"COLW2"},11:{n:"NAME"},12:{n:"BLANK"},13:{n:"INTEGER",f:d},14:{n:"NUMBER",f:p},15:{n:"LABEL",f:u},16:{n:"FORMULA",f:w},24:{n:"TABLE"},25:{n:"ORANGE"},26:{n:"PRANGE"},27:{n:"SRANGE"},28:{n:"FRANGE"},29:{n:"KRANGE1"},32:{n:"HRANGE"},35:{n:"KRANGE2"},36:{n:"PROTEC"},37:{n:"FOOTER"},38:{n:"HEADER"},39:{n:"SETUP"},40:{n:"MARGINS"},41:{n:"LABELFMT"},42:{n:"TITLES"},43:{n:"SHEETJS"},45:{n:"GRAPH"},46:{n:"NGRAPH"},47:{n:"CALCCOUNT"},48:{n:"UNFORMATTED"},49:{n:"CURSORW12"},50:{n:"WINDOW"},51:{n:"STRING",f:u},55:{n:"PASSWORD"},56:{n:"LOCKED"},60:{n:"QUERY"},61:{n:"QUERYNAME"},62:{n:"PRINT"},63:{n:"PRINTNAME"},64:{n:"GRAPH2"},65:{n:"GRAPHNAME"},66:{n:"ZOOM"},67:{n:"SYMSPLIT"},68:{n:"NSROWS"},69:{n:"NSCOLS"},70:{n:"RULER"},71:{n:"NNAME"},72:{n:"ACOMM"},73:{n:"AMACRO"},74:{n:"PARSE"},102:{n:"PRANGES??"},103:{n:"RRANGES??"},104:{n:"FNAME??"},105:{n:"MRANGES??"},204:{n:"SHEETNAMECS",f:L},222:{n:"SHEETNAMELP",f:M},65535:{n:""}};var X={0:{n:"BOF"},1:{n:"EOF"},2:{n:"PASSWORD"},3:{n:"CALCSET"},4:{n:"WINDOWSET"},5:{n:"SHEETCELLPTR"},6:{n:"SHEETLAYOUT"},7:{n:"COLUMNWIDTH"},8:{n:"HIDDENCOLUMN"},9:{n:"USERRANGE"},10:{n:"SYSTEMRANGE"},11:{n:"ZEROFORCE"},12:{n:"SORTKEYDIR"},13:{n:"FILESEAL"},14:{n:"DATAFILLNUMS"},15:{n:"PRINTMAIN"},16:{n:"PRINTSTRING"},17:{n:"GRAPHMAIN"},18:{n:"GRAPHSTRING"},19:{n:"??"},20:{n:"ERRCELL"},21:{n:"NACELL"},22:{n:"LABEL16",f:_},23:{n:"NUMBER17",f:R},24:{n:"NUMBER18",f:A},25:{n:"FORMULA19",f:I},26:{n:"FORMULA1A"},27:{n:"XFORMAT",f:W},28:{n:"DTLABELMISC"},29:{n:"DTLABELCELL"},30:{n:"GRAPHWINDOW"},31:{n:"CPA"},32:{n:"LPLAUTO"},33:{n:"QUERY"},34:{n:"HIDDENSHEET"},35:{n:"??"},37:{n:"NUMBER25",f:D},38:{n:"??"},39:{n:"NUMBER27",f:O},40:{n:"FORMULA28",f:N},142:{n:"??"},147:{n:"??"},150:{n:"??"},151:{n:"??"},152:{n:"??"},153:{n:"??"},154:{n:"??"},155:{n:"??"},156:{n:"??"},163:{n:"??"},174:{n:"??"},175:{n:"??"},176:{n:"??"},177:{n:"??"},184:{n:"??"},185:{n:"??"},186:{n:"??"},187:{n:"??"},188:{n:"??"},195:{n:"??"},201:{n:"??"},204:{n:"SHEETNAMECS",f:L},205:{n:"??"},206:{n:"??"},207:{n:"??"},208:{n:"??"},256:{n:"??"},259:{n:"??"},260:{n:"??"},261:{n:"??"},262:{n:"??"},263:{n:"??"},265:{n:"??"},266:{n:"??"},267:{n:"??"},268:{n:"??"},270:{n:"??"},271:{n:"??"},384:{n:"??"},389:{n:"??"},390:{n:"??"},393:{n:"??"},396:{n:"??"},512:{n:"??"},514:{n:"??"},513:{n:"??"},516:{n:"??"},517:{n:"??"},640:{n:"??"},641:{n:"??"},642:{n:"??"},643:{n:"??"},644:{n:"??"},645:{n:"??"},646:{n:"??"},647:{n:"??"},648:{n:"??"},658:{n:"??"},659:{n:"??"},660:{n:"??"},661:{n:"??"},662:{n:"??"},665:{n:"??"},666:{n:"??"},768:{n:"??"},772:{n:"??"},1537:{n:"SHEETINFOQP",f:U},1600:{n:"??"},1602:{n:"??"},1793:{n:"??"},1794:{n:"??"},1795:{n:"??"},1796:{n:"??"},1920:{n:"??"},2048:{n:"??"},2049:{n:"??"},2052:{n:"??"},2688:{n:"??"},10998:{n:"??"},12849:{n:"??"},28233:{n:"??"},28484:{n:"??"},65535:{n:""}};return{sheet_to_wk1:a,book_to_wk3:n,to_workbook:r}}();function Cf(e){var r={},t=e.match(De),a=0;var n=false;if(t)for(;a!=t.length;++a){var s=Ne(t[a]);switch(s[0].replace(/\w*:/g,"")){case"":;case"":r.shadow=1;break;case"":break;case"":;case"":r.outline=1;break;case"":break;case"":;case"":r.strike=1;break;case"":break;case"":;case"":r.u=1;break;case"":break;case"":;case"":r.b=1;break;case"":break;case"":;case"":r.i=1;break;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":break;case"":n=false;break;default:if(s[0].charCodeAt(1)!==47&&!n)throw new Error("Unrecognized rich format "+s[0]);}}return r}var yf=function(){var e=tr("t"),r=tr("rPr");function t(t){var a=t.match(e);if(!a)return{t:"s",v:""};var n={t:"s",v:We(a[1])};var i=t.match(r);if(i)n.s=Cf(i[1]);return n}var a=/<(?:\w+:)?r>/g,n=/<\/(?:\w+:)?r>/;return function i(e){return e.replace(a,"").split(n).map(t).filter(function(e){return e.v})}}();var Tf=function fg(){var e=/(\r\n|\n)/g;function r(e,r,t){var a=[];if(e.u)a.push("text-decoration: underline;");if(e.uval)a.push("text-underline-style:"+e.uval+";");if(e.sz)a.push("font-size:"+e.sz+"pt;");if(e.outline)a.push("text-effect: outline;");if(e.shadow)a.push("text-shadow: auto;");r.push('');if(e.b){r.push("");t.push("")}if(e.i){r.push("");t.push("")}if(e.strike){r.push("");t.push("")}var n=e.valign||"";if(n=="superscript"||n=="super")n="sup";else if(n=="subscript")n="sub";if(n!=""){r.push("<"+n+">");t.push("")}t.push("");return e}function t(t){var a=[[],t.v,[]];if(!t.v)return"";if(t.s)r(t.s,a[0],a[2]);return a[0].join("")+a[1].replace(e,"
")+a[2].join("")}return function a(e){return e.map(t).join("")}}();var _f=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,xf=/<(?:\w+:)?r>/;var Af=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function Rf(e,r){var t=r?r.cellHTML:true;var a={};if(!e)return{t:""};if(e.match(/^\s*<(?:\w+:)?t[^>]*>/)){a.t=We(qe(e.slice(e.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||""));a.r=qe(e);if(t)a.h=je(a.t)}else if(e.match(xf)){a.r=qe(e);a.t=We(qe((e.replace(Af,"").match(_f)||[]).join("").replace(De,"")));if(t)a.h=Tf(yf(a.r))}return a}var Ff=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/;var If=/<(?:\w+:)?(?:si|sstItem)>/g;var Df=/<\/(?:\w+:)?(?:si|sstItem)>/;function Pf(e,r){var t=[],a="";if(!e)return t;var n=e.match(Ff);if(n){a=n[2].replace(If,"").split(Df);for(var i=0;i!=a.length;++i){var s=Rf(a[i].trim(),r);if(s!=null)t[t.length]=s}n=Ne(n[1]);t.Count=n.count;t.Unique=n.uniqueCount}return t}Va.SST="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings";var Of=/^\s|\s$|[\t\n\r]/;function Nf(e,r){if(!r.bookSST)return"";var t=[Fe];t[t.length]=ur("sst",null,{xmlns:vr.main[0],count:e.Count,uniqueCount:e.Unique});for(var a=0;a!=e.length;++a){if(e[a]==null)continue;var n=e[a];var i="";if(n.r)i+=n.r;else{i+=""}i+="";t[t.length]=i}if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}function Lf(e){return[e._R(4),e._R(4)]}function Mf(e,r){var t=[];var a=false;rt(e,function n(e,i,s){switch(s){case 159:t.Count=e[0];t.Unique=e[1];break;case 19:t.push(e);break;case 160:return true;case 35:a=true;break;case 36:a=false;break;default:if(i.indexOf("Begin")>0){}else if(i.indexOf("End")>0){}if(!a||r.WTF)throw new Error("Unexpected record "+s+" "+i);}});return t}function Uf(e,r){if(!r)r=et(8);r._W(4,e.Count);r._W(4,e.Unique);return r}var Wf=Ot;function Hf(e){var r=tt();at(r,"BrtBeginSst",Uf(e));for(var t=0;t=4)e.l+=r-4;return t}function Gf(e){var r={};r.id=e._R(0,"lpp4");r.R=Xf(e,4);r.U=Xf(e,4);r.W=Xf(e,4);return r}function zf(e){var r=e._R(4);var t=e.l+r-4;var a={};var n=e._R(4);var i=[];while(n-- >0)i.push({t:e._R(4),v:e._R(0,"lpp4")});a.name=e._R(0,"lpp4");a.comps=i;if(e.l!=t)throw new Error("Bad DataSpaceMapEntry: "+e.l+" != "+t);return a}function jf(e){var r=[];e.l+=4;var t=e._R(4);while(t-- >0)r.push(zf(e));return r}function $f(e){var r=[];e.l+=4;var t=e._R(4);while(t-- >0)r.push(e._R(0,"lpp4"));return r}function Kf(e){var r={};e._R(4);e.l+=4;r.id=e._R(0,"lpp4");r.name=e._R(0,"lpp4");r.R=Xf(e,4);r.U=Xf(e,4);r.W=Xf(e,4);return r}function Yf(e){var r=Kf(e);r.ename=e._R(0,"8lpp4");r.blksz=e._R(4);r.cmode=e._R(4);if(e._R(4)!=4)throw new Error("Bad !Primary record");return r}function Jf(e,r){var t=e.l+r;var a={};a.Flags=e._R(4)&63;e.l+=4;a.AlgID=e._R(4);var n=false;switch(a.AlgID){case 26126:;case 26127:;case 26128:n=a.Flags==36;break;case 26625:n=a.Flags==4;break;case 0:n=a.Flags==16||a.Flags==4||a.Flags==36;break;default:throw"Unrecognized encryption algorithm: "+a.AlgID;}if(!n)throw new Error("Encryption Flags/AlgID mismatch");a.AlgIDHash=e._R(4);a.KeySize=e._R(4);a.ProviderType=e._R(4);e.l+=8;a.CSPName=e._R(t-e.l>>1,"utf16le");e.l=t;return a}function qf(e,r){var t={},a=e.l+r;e.l+=4;t.Salt=e.slice(e.l,e.l+16);e.l+=16;t.Verifier=e.slice(e.l,e.l+16);e.l+=16;e._R(4);t.VerifierHash=e.slice(e.l,a);e.l=a;return t}function Qf(e){var r=Xf(e);switch(r.Minor){case 2:return[r.Minor,Zf(e,r)];case 3:return[r.Minor,el(e,r)];case 4:return[r.Minor,rl(e,r)];}throw new Error("ECMA-376 Encrypted file unrecognized Version: "+r.Minor)}function Zf(e){var r=e._R(4);if((r&63)!=36)throw new Error("EncryptionInfo mismatch");var t=e._R(4);var a=Jf(e,t);var n=qf(e,e.length-e.l);return{t:"Std",h:a,v:n}}function el(){throw new Error("File is password-protected: ECMA-376 Extensible")}function rl(e){var r=["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"];e.l+=4;var t=e._R(e.length-e.l,"utf8");var a={};t.replace(De,function n(e){var t=Ne(e);switch(Le(t[0])){case"":break;case"":;case"":break;case"":break;case"4||a.Major<2)throw new Error("unrecognized major version code: "+a.Major);t.Flags=e._R(4);r-=4;var n=e._R(4);r-=4;t.EncryptionHeader=Jf(e,n);r-=n;t.EncryptionVerifier=qf(e,r);return t}function al(e){var r={};var t=r.EncryptionVersionInfo=Xf(e,4);if(t.Major!=1||t.Minor!=1)throw"unrecognized version code "+t.Major+" : "+t.Minor;r.Salt=e._R(16);r.EncryptedVerifier=e._R(16);r.EncryptedVerifierHash=e._R(16);return r}function nl(e){var r=0,t;var a=Vf(e);var n=a.length+1,i,s;var f,l,o;t=B(n);t[0]=a.length;for(i=1;i!=n;++i)t[i]=a[i-1];for(i=n-1;i>=0;--i){s=t[i];f=(r&16384)===0?0:1;l=r<<1&32767;o=f|l;r=o^s}return r^52811}var il=function(){var e=[187,255,255,186,255,255,185,128,0,190,15,0,191,15,0];var r=[57840,7439,52380,33984,4364,3600,61902,12606,6258,57657,54287,34041,10252,43370,20163];var t=[44796,19929,39858,10053,20106,40212,10761,31585,63170,64933,60267,50935,40399,11199,17763,35526,1453,2906,5812,11624,23248,885,1770,3540,7080,14160,28320,56640,55369,41139,20807,41614,21821,43642,17621,28485,56970,44341,19019,38038,14605,29210,60195,50791,40175,10751,21502,43004,24537,18387,36774,3949,7898,15796,31592,63184,47201,24803,49606,37805,14203,28406,56812,17824,35648,1697,3394,6788,13576,27152,43601,17539,35078,557,1114,2228,4456,30388,60776,51953,34243,7079,14158,28316,14128,28256,56512,43425,17251,34502,7597,13105,26210,52420,35241,883,1766,3532,4129,8258,16516,33032,4657,9314,18628];var a=function(e){return(e/2|e*128)&255};var n=function(e,r){return a(e^r)};var i=function(e){var a=r[e.length-1];var n=104;for(var i=e.length-1;i>=0;--i){var s=e[i];for(var f=0;f!=7;++f){if(s&64)a^=t[n];s*=2;--n}}return a};return function(r){var t=Vf(r);var a=i(t);var s=t.length;var f=B(16);for(var l=0;l!=16;++l)f[l]=0;var o,c,u;if((s&1)===1){o=a>>8;f[s]=n(e[0],o);--s;o=a&255;c=t[t.length-1];f[s]=n(c,o)}while(s>0){--s;o=a>>8;f[s]=n(t[s],o);--s;o=a&255;f[s]=n(t[s],o)}s=15;u=15-t.length;while(u>0){o=a>>8;f[s]=n(e[u],o);--s;--u;o=a&255;f[s]=n(t[s],o);--s;--u}return f}}();var sl=function(e,r,t,a,n){if(!n)n=r;if(!a)a=il(e);var i,s;for(i=0;i!=r.length;++i){s=r[i];s^=a[t];s=(s>>5|s<<3)&255;n[i]=s;++t}return[n,t,a]};var fl=function(e){var r=0,t=il(e);return function(e){var a=sl("",e,r,t);r=a[1];return a[0]}};function ll(e,r,t,a){var n={key:qn(e),verificationBytes:qn(e)};if(t.password)n.verifier=nl(t.password);a.valid=n.verificationBytes===n.verifier;if(a.valid)a.insitu=fl(t.password);return n}function ol(e,r,t){var a=t||{};a.Info=e._R(2);e.l-=2;if(a.Info===1)a.Data=al(e,r);else a.Data=tl(e,r);return a}function cl(e,r,t){var a={Type:t.biff>=8?e._R(2):0};if(a.Type)ol(e,r-2,a);else ll(e,t.biff>=8?r:r-2,t,a);return a}var ul=function(){function e(e,t){switch(t.type){case"base64":return r(g.decode(e),t);case"binary":return r(e,t);case"buffer":return r(w&&Buffer.isBuffer(e)?e.toString("binary"):_(e),t);case"array":return r(ce(e),t);}throw new Error("Unrecognized type "+t.type)}function r(e,r){var t=r||{};var a=t.dense?[]:{};var n=e.match(/\\trowd.*?\\row\b/g);if(!n.length)throw new Error("RTF missing table");var i={s:{c:0,r:0},e:{c:0,r:n.length-1}};n.forEach(function(e,r){if(Array.isArray(a))a[r]=[];var t=/\\\w+\b/g;var n=0;var s;var f=-1;while(s=t.exec(e)){switch(s[0]){case"\\cell":var l=e.slice(n,t.lastIndex-s[0].length);if(l[0]==" ")l=l.slice(1);++f;if(l.length){var o={v:l,t:"s"};if(Array.isArray(a))a[r][f]=o;else a[kt({r:r,c:f})]=o}break;}n=t.lastIndex}if(f>i.e.c)i.e.c=f});a["!ref"]=St(i);return a}function t(r,t){return Tt(e(r,t),t)}function a(e){var r=["{\\rtf1\\ansi"];var t=Bt(e["!ref"]),a;var n=Array.isArray(e);for(var i=t.s.r;i<=t.e.r;++i){r.push("\\trowd\\trautofit1");for(var s=t.s.c;s<=t.e.c;++s)r.push("\\cellx"+(s+1));r.push("\\pard\\intbl");for(s=t.s.c;s<=t.e.c;++s){var f=kt({r:i,c:s});a=n?(e[i]||[])[s]:e[f];if(!a||a.v==null&&(!a.f||a.F))continue;r.push(" "+(a.w||(yt(a),a.w)));r.push("\\cell")}r.push("\\pard\\intbl\\row")}return r.join("")+"}"}return{to_workbook:t,to_sheet:e,from_sheet:a}}();function hl(e){var r=e.slice(e[0]==="#"?1:0).slice(0,6);return[parseInt(r.slice(0,2),16),parseInt(r.slice(2,4),16),parseInt(r.slice(4,6),16)]}function dl(e){for(var r=0,t=1;r!=3;++r)t=t*256+(e[r]>255?255:e[r]<0?0:e[r]);return t.toString(16).toUpperCase().slice(1)}function vl(e){var r=e[0]/255,t=e[1]/255,a=e[2]/255;var n=Math.max(r,t,a),i=Math.min(r,t,a),s=n-i;if(s===0)return[0,0,r];var f=0,l=0,o=n+i;l=s/(o>1?2-o:o);switch(n){case r:f=((t-a)/s+6)%6;break;case t:f=(a-r)/s+2;break;case a:f=(r-t)/s+4;break;}return[f/6,l,o/2]}function pl(e){var r=e[0],t=e[1],a=e[2];var n=t*2*(a<.5?a:1-a),i=a-n/2;var s=[i,i,i],f=6*r;var l;if(t!==0)switch(f|0){case 0:;case 6:l=n*f;s[0]+=n;s[1]+=l;break;case 1:l=n*(2-f);s[0]+=l;s[1]+=n;break;case 2:l=n*(f-2);s[1]+=n;s[2]+=l;break;case 3:l=n*(4-f);s[1]+=l;s[2]+=n;break;case 4:l=n*(f-4);s[2]+=n;s[0]+=l;break;case 5:l=n*(6-f);s[2]+=l;s[0]+=n;break;}for(var o=0;o!=3;++o)s[o]=Math.round(s[o]*255);return s}function ml(e,r){if(r===0)return e;var t=vl(hl(e));if(r<0)t[2]=t[2]*(1+r);else t[2]=1-(1-t[2])*(1-r);return dl(pl(t))}var bl=6,gl=15,wl=1,kl=bl;function El(e){return Math.floor((e+Math.round(128/kl)/256)*kl)}function Sl(e){return Math.floor((e-5)/kl*100+.5)/100}function Bl(e){return Math.round((e*kl+5)/kl*256)/256}function Cl(e){return Bl(Sl(El(e)))}function yl(e){var r=Math.abs(e-Cl(e)),t=kl;if(r>.005)for(kl=wl;kl":;case"":break;case"":;case"":n={};if(t.diagonalUp)n.diagonalUp=Je(t.diagonalUp);if(t.diagonalDown)n.diagonalDown=Je(t.diagonalDown);r.Borders.push(n);break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":;case"":break;case"":i=false;break;default:if(a&&a.WTF){if(!i)throw new Error("unrecognized "+t[0]+" in borders")};}})}function Dl(e,r,t,a){r.Fills=[];var n={};var i=false;(e[0].match(De)||[]).forEach(function(e){var t=Ne(e);switch(Le(t[0])){case"":;case"":break;case"":;case"":n={};r.Fills.push(n);break;case"":break;case"":break;case"":r.Fills.push(n);n={};break;case"":if(t.patternType)n.patternType=t.patternType;break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":break;case"":break;case"":break;case"":break;case"":;case"":break;case"":i=false;break;default:if(a&&a.WTF){if(!i)throw new Error("unrecognized "+t[0]+" in fills")};}})}function Pl(e,r,t,a){r.Fonts=[];var n={};var s=false;(e[0].match(De)||[]).forEach(function(e){var f=Ne(e);switch(Le(f[0])){case"":;case"":break;case"":break;case"
":;case"":r.Fonts.push(n);n={};break;case"":;case"":break;case"":n.bold=1;break;case"":n.italic=1;break;case"":n.underline=1;break;case"":n.strike=1;break;case"":n.outline=1;break;case"":n.shadow=1;break;case"":n.condense=1;break;case"":n.extend=1;break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":s=false;break;case"":;case"":break;case"":s=false;break;default:if(a&&a.WTF){if(!s)throw new Error("unrecognized "+f[0]+" in fonts")};}})}function Ol(e,r,t){r.NumberFmt=[];var a=Y(P._table);for(var n=0;n":;case"":;case"":break;case"0){if(l>392){for(l=392;l>60;--l)if(r.NumberFmt[l]==null)break;r.NumberFmt[l]=f}P.load(f,l)}}break;case"":break;default:if(t.WTF)throw new Error("unrecognized "+s[0]+" in numFmts");}}}function Nl(e){var r=[""];[[5,8],[23,26],[41,44],[50,392]].forEach(function(t){for(var a=t[0];a<=t[1];++a)if(e[a]!=null)r[r.length]=ur("numFmt",null,{numFmtId:a,formatCode:Xe(e[a])})});if(r.length===1)return"";r[r.length]="";r[0]=ur("numFmts",null,{count:r.length-2}).replace("/>",">");return r.join("")}var Ll=["numFmtId","fillId","fontId","borderId","xfId"];var Ml=["applyAlignment","applyBorder","applyFill","applyFont","applyNumberFormat","applyProtection","pivotButton","quotePrefix"];function Ul(e,r,t){r.CellXf=[];var a;var n=false;(e[0].match(De)||[]).forEach(function(e){var i=Ne(e),s=0;switch(Le(i[0])){case"":;case"":;case"":break;case"":a=i;delete a[0];for(s=0;s392){for(s=392;s>60;--s)if(r.NumberFmt[a.numFmtId]==r.NumberFmt[s]){a.numFmtId=s;break}}r.CellXf.push(a);break;case"":break;case"":var f={};if(i.vertical)f.vertical=i.vertical;if(i.horizontal)f.horizontal=i.horizontal;if(i.textRotation!=null)f.textRotation=i.textRotation;if(i.indent)f.indent=i.indent;if(i.wrapText)f.wrapText=Je(i.wrapText);a.alignment=f;break;case"":break;case"":;case"":break;case"":n=false;break;case"":;case"":break;case"":n=false;break;default:if(t&&t.WTF){if(!n)throw new Error("unrecognized "+i[0]+" in cellXfs")};}})}function Wl(e){var r=[];r[r.length]=ur("cellXfs",null);e.forEach(function(e){r[r.length]=ur("xf",null,e)});r[r.length]="";if(r.length===2)return"";r[0]=ur("cellXfs",null,{count:r.length-2}).replace("/>",">");return r.join("")}var Hl=function lg(){var e=/<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/;var r=/<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/;var t=/<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/;var a=/<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/;var n=/<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/;return function i(s,f,l){var o={};if(!s)return o;s=s.replace(//gm,"").replace(//gm,"");var c;if(c=s.match(e))Ol(c,o,l);if(c=s.match(a))Pl(c,o,f,l);if(c=s.match(t))Dl(c,o,f,l);if(c=s.match(n))Il(c,o,f,l);if(c=s.match(r))Ul(c,o,l);return o}}();var Vl=ur("styleSheet",null,{xmlns:vr.main[0],"xmlns:vt":vr.vt});Va.STY="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles";function Xl(e,r){var t=[Fe,Vl],a;if(e.SSF&&(a=Nl(e.SSF))!=null)t[t.length]=a;t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';if(a=Wl(r.cellXfs))t[t.length]=a;t[t.length]='';t[t.length]='';t[t.length]='';if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}function Gl(e,r){var t=e._R(2);var a=Rt(e,r-2);return[t,a]}function zl(e,r,t){if(!t)t=et(6+4*r.length);t._W(2,e);Ft(r,t);var a=t.length>t.l?t.slice(0,t.l):t;if(t.l==null)t.l=t.length;return a}function jl(e,r,t){var a={};a.sz=e._R(2)/20;var n=ia(e,2,t);if(n.fItalic)a.italic=1;if(n.fCondense)a.condense=1;if(n.fExtend)a.extend=1;if(n.fShadow)a.shadow=1;if(n.fOutline)a.outline=1;if(n.fStrikeout)a.strike=1;var i=e._R(2);if(i===700)a.bold=1;switch(e._R(2)){case 1:a.vertAlign="superscript";break;case 2:a.vertAlign="subscript";break;}var s=e._R(1);if(s!=0)a.underline=s;var f=e._R(1);if(f>0)a.family=f;var l=e._R(1);if(l>0)a.charset=l;e.l++;a.color=aa(e,8);switch(e._R(1)){case 1:a.scheme="major";break;case 2:a.scheme="minor";break;}a.name=Rt(e,r-21);return a}function $l(e,r){if(!r)r=et(25+4*32);r._W(2,e.sz*20);sa(e,r);r._W(2,e.bold?700:400);var t=0;if(e.vertAlign=="superscript")t=1;else if(e.vertAlign=="subscript")t=2;r._W(2,t);r._W(1,e.underline||0);r._W(1,e.family||0);r._W(1,e.charset||0);r._W(1,0);na(e.color,r);var a=0;if(e.scheme=="major")a=1;if(e.scheme=="minor")a=2;r._W(1,a);Ft(e.name,r);return r.length>r.l?r.slice(0,r.l):r}var Kl=["none","solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"];var Yl=q(Kl);var Jl=Zr;function ql(e,r){if(!r)r=et(4*3+8*7+16*1);var t=Yl[e.patternType];if(t==null)t=40;r._W(4,t);var a=0;if(t!=40){na({auto:1},r);na({auto:1},r);for(;a<12;++a)r._W(4,0)}else{for(;a<4;++a)r._W(4,0);for(;a<12;++a)r._W(4,0)}return r.length>r.l?r.slice(0,r.l):r}function Ql(e,r){var t=e.l+r;var a=e._R(2);var n=e._R(2);e.l=t;return{ixfe:a,numFmtId:n}}function Zl(e,r,t){if(!t)t=et(16);t._W(2,r||0);t._W(2,e.numFmtId||0);t._W(2,0);t._W(2,0);t._W(2,0);t._W(1,0);t._W(1,0);var a=0;t._W(1,a);t._W(1,0);t._W(1,0);t._W(1,0);return t}function eo(e,r){if(!r)r=et(10);r._W(1,0);r._W(1,0);r._W(4,0);r._W(4,0);return r}var ro=Zr;function to(e,r){if(!r)r=et(51);r._W(1,0);eo(null,r);eo(null,r);eo(null,r);eo(null,r);eo(null,r);return r.length>r.l?r.slice(0,r.l):r}function ao(e,r){if(!r)r=et(12+4*10);r._W(4,e.xfId);r._W(2,1);r._W(1,+e.builtinId);r._W(1,0);zt(e.name||"",r);return r.length>r.l?r.slice(0,r.l):r}function no(e,r,t){var a=et(4+256*2*4);a._W(4,e);zt(r,a);zt(t,a);return a.length>a.l?a.slice(0,a.l):a}function io(e,r,t){var a={};a.NumberFmt=[];for(var n in P._table)a.NumberFmt[n]=P._table[n];a.CellXf=[];a.Fonts=[];var i=[];var s=false;rt(e,function f(e,n,l){switch(l){case 44:a.NumberFmt[e[0]]=e[1];P.load(e[1],e[0]);break;case 43:a.Fonts.push(e);if(e.color.theme!=null&&r&&r.themeElements&&r.themeElements.clrScheme){e.color.rgb=ml(r.themeElements.clrScheme[e.color.theme].rgb,e.color.tint||0)}break;case 1025:break;case 45:break;case 46:break;case 47:if(i[i.length-1]=="BrtBeginCellXFs"){a.CellXf.push(e)}break;case 48:;case 507:;case 572:;case 475:break;case 1171:;case 2102:;case 1130:;case 512:;case 2095:;case 3072:break;case 35:s=true;break;case 36:s=false;break;case 37:i.push(n);s=true;break;case 38:i.pop();s=false;break;default:if((n||"").indexOf("Begin")>0)i.push(n);else if((n||"").indexOf("End")>0)i.pop();else if(!s||t.WTF&&i[i.length-1]!="BrtACBegin")throw new Error("Unexpected record "+l+" "+n);}});return a}function so(e,r){if(!r)return;var t=0;[[5,8],[23,26],[41,44],[50,392]].forEach(function(e){for(var a=e[0];a<=e[1];++a)if(r[a]!=null)++t});if(t==0)return;at(e,"BrtBeginFmts",At(t));[[5,8],[23,26],[41,44],[50,392]].forEach(function(t){for(var a=t[0];a<=t[1];++a)if(r[a]!=null)at(e,"BrtFmt",zl(a,r[a]))});at(e,"BrtEndFmts")}function fo(e){var r=1;if(r==0)return;at(e,"BrtBeginFonts",At(r));at(e,"BrtFont",$l({sz:12,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}));at(e,"BrtEndFonts")}function lo(e){var r=2;if(r==0)return;at(e,"BrtBeginFills",At(r));at(e,"BrtFill",ql({patternType:"none"}));at(e,"BrtFill",ql({patternType:"gray125"}));at(e,"BrtEndFills")}function oo(e){var r=1;if(r==0)return;at(e,"BrtBeginBorders",At(r));at(e,"BrtBorder",to({}));at(e,"BrtEndBorders")}function co(e){var r=1;at(e,"BrtBeginCellStyleXFs",At(r));at(e,"BrtXF",Zl({numFmtId:0,fontId:0,fillId:0,borderId:0},65535));at(e,"BrtEndCellStyleXFs")}function uo(e,r){at(e,"BrtBeginCellXFs",At(r.length));r.forEach(function(r){at(e,"BrtXF",Zl(r,0))});at(e,"BrtEndCellXFs")}function ho(e){var r=1;at(e,"BrtBeginStyles",At(r));at(e,"BrtStyle",ao({xfId:0,builtinId:0,name:"Normal"}));at(e,"BrtEndStyles")}function vo(e){var r=0;at(e,"BrtBeginDXFs",At(r));at(e,"BrtEndDXFs")}function po(e){var r=0;at(e,"BrtBeginTableStyles",no(r,"TableStyleMedium9","PivotStyleMedium4"));at(e,"BrtEndTableStyles")}function mo(){return}function bo(e,r){var t=tt();at(t,"BrtBeginStyleSheet");so(t,e.SSF);fo(t,e);lo(t,e);oo(t,e);co(t,e);uo(t,r.cellXfs);ho(t,e);vo(t,e);po(t,e);mo(t,e);at(t,"BrtEndStyleSheet");return t.end()}Va.THEME="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme";var go=["","","","","","","","","","","",""];function wo(e,r,t){r.themeElements.clrScheme=[];var a={};(e[0].match(De)||[]).forEach(function(e){var n=Ne(e);switch(n[0]){case"":break;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":if(n[0].charAt(1)==="/"){r.themeElements.clrScheme[go.indexOf(n[0])]=a;a={}}else{a.name=n[0].slice(3,n[0].length-1)}break;default:if(t&&t.WTF)throw new Error("Unrecognized "+n[0]+" in clrScheme");}})}function ko(){}function Eo(){}var So=/]*)>[\s\S]*<\/a:clrScheme>/;var Bo=/]*)>[\s\S]*<\/a:fontScheme>/;var Co=/]*)>[\s\S]*<\/a:fmtScheme>/;function yo(e,r,t){r.themeElements={};var a;[["clrScheme",So,wo],["fontScheme",Bo,ko],["fmtScheme",Co,Eo]].forEach(function(n){if(!(a=e.match(n[1])))throw new Error(n[0]+" not found in themeElements");n[2](a,r,t)})}var To=/]*)>[\s\S]*<\/a:themeElements>/;function _o(e,r){if(!e||e.length===0)return _o(xo());var t;var a={};if(!(t=e.match(To)))throw new Error("themeElements not found in theme");yo(t[0],a,r);a.raw=e;return a}function xo(e,r){if(r&&r.themeXLSX)return r.themeXLSX;if(e&&typeof e.raw=="string")return e.raw;var t=[Fe];t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";return t.join("")}function Ao(e,r,t){var a=e.l+r;var n=e._R(4);if(n===124226)return;if(!t.cellStyles){e.l=a;return}var i=e.slice(e.l);e.l=a;var s;try{s=Ae(i,{type:"array"})}catch(f){return}var l=Ce(s,"theme/theme/theme1.xml",true);if(!l)return;return _o(l,t)}function Ro(e){return e._R(4)}function Fo(e){var r={};r.xclrType=e._R(2);r.nTintShade=e._R(2);switch(r.xclrType){case 0:e.l+=4;break;case 1:r.xclrValue=Io(e,4);break;case 2:r.xclrValue=bi(e,4);break;case 3:r.xclrValue=Ro(e,4);break;case 4:e.l+=4;break;}e.l+=8;return r}function Io(e,r){return Zr(e,r)}function Do(e,r){return Zr(e,r)}function Po(e){var r=e._R(2);var t=e._R(2)-4;var a=[r];switch(r){case 4:;case 5:;case 7:;case 8:;case 9:;case 10:;case 11:;case 13:a[1]=Fo(e,t);break;case 6:a[1]=Do(e,t);break;case 14:;case 15:a[1]=e._R(t===1?1:2);break;default:throw new Error("Unrecognized ExtProp type: "+r+" "+t);}return a}function Oo(e,r){var t=e.l+r;e.l+=2;var a=e._R(2);e.l+=2;var n=e._R(2);var i=[];while(n-- >0)i.push(Po(e,t-e.l));return{ixfe:a,ext:i}}function No(e,r){r.forEach(function(e){switch(e[0]){case 4:break;case 5:break;case 6:break;case 7:break;case 8:break;case 9:break;case 10:break;case 11:break;case 13:break;case 14:break;case 15:break;}})}function Lo(e){var r=[];if(!e)return r;var t=1;(e.match(De)||[]).forEach(function(e){var a=Ne(e);switch(a[0]){case"":;case"":break;case"0){}else if((r||"").indexOf("End")>0){}else if(!n||t.WTF)throw new Error("Unexpected record "+s+" "+r);}});return a}function Wo(){}function Ho(e,r,t,a){if(!e)return e;var n=a||{};var i=false,s=false;rt(e,function f(e,r,t){if(s)return;switch(t){case 359:;case 363:;case 364:;case 366:;case 367:;case 368:;case 369:;case 370:;case 371:;case 472:;case 577:;case 578:;case 579:;case 580:;case 581:;case 582:;case 583:;case 584:;case 585:;case 586:;case 587:break;case 35:i=true;break;case 36:i=false;break;default:if((r||"").indexOf("Begin")>0){}else if((r||"").indexOf("End")>0){}else if(!i||n.WTF)throw new Error("Unexpected record "+t.toString(16)+" "+r);}},n)}Va.IMG="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image";Va.DRAW="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing";function Vo(e,r){if(!e)return"??";var t=(e.match(/]*r:id="([^"]*)"/)||["",""])[1];return r["!id"][t].Target}var Xo=1024;function Go(e,r){var t=[21600,21600];var a=["m0,0l0",t[1],t[0],t[1],t[0],"0xe"].join(",");var n=[ur("xml",null,{"xmlns:v":pr.v,"xmlns:o":pr.o,"xmlns:x":pr.x,"xmlns:mv":pr.mv}).replace(/\/>/,">"),ur("o:shapelayout",ur("o:idmap",null,{"v:ext":"edit",data:e}),{"v:ext":"edit"}),ur("v:shapetype",[ur("v:stroke",null,{joinstyle:"miter"}),ur("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:t.join(","),path:a})];while(Xo",i,ur("v:shadow",null,s),ur("v:path",null,{"o:connecttype":"none"}),'
','',"","",or("x:Anchor",[r.c+1,0,r.r+1,0,r.c+3,20,r.r+5,20].join(",")),or("x:AutoFill","False"),or("x:Row",String(r.r)),or("x:Column",String(r.c)),e[1].hidden?"":"","",""])});n.push("");return n.join("")}Va.CMNT="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments";function zo(e,r){var t=Array.isArray(e);var a;r.forEach(function(r){var n=wt(r.ref);if(t){if(!e[n.r])e[n.r]=[];a=e[n.r][n.c]}else a=e[r.ref];if(!a){a={t:"z"};if(t)e[n.r][n.c]=a;else e[r.ref]=a;var i=Bt(e["!ref"]||"BDWGO1000001:A1");if(i.s.r>n.r)i.s.r=n.r;if(i.e.rn.c)i.s.c=n.c;if(i.e.c/))return[];var t=[];var a=[];var n=e.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);if(n&&n[1])n[1].split(/<\/\w*:?author>/).forEach(function(e){if(e===""||e.trim()==="")return;var r=e.match(/<(?:\w+:)?author[^>]*>(.*)/);if(r)t.push(r[1])});var i=e.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);if(i&&i[1])i[1].split(/<\/\w*:?comment>/).forEach(function(e){if(e===""||e.trim()==="")return;var n=e.match(/<(?:\w+:)?comment[^>]*>/);if(!n)return;var i=Ne(n[0]);var s={ -author:i.authorId&&t[i.authorId]||"sheetjsghost",ref:i.ref,guid:i.guid};var f=wt(i.ref);if(r.sheetRows&&r.sheetRows<=f.r)return;var l=e.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/);var o=!!l&&!!l[1]&&Rf(l[1])||{r:"",t:"",h:""};s.r=o.r;if(o.r=="")o.t=o.h="";s.t=(o.t||"").replace(/\r\n/g,"\n").replace(/\r/g,"\n");if(r.cellHTML)s.h=o.h;a.push(s)});return a}var $o=ur("comments",null,{xmlns:vr.main[0]});function Ko(e){var r=[Fe,$o];var t=[];r.push("");e.forEach(function(e){e[1].forEach(function(e){var a=Xe(e.a);if(t.indexOf(a)>-1)return;t.push(a);r.push(""+a+"")})});r.push("");r.push("");e.forEach(function(e){e[1].forEach(function(a){r.push('');r.push(or("t",a.t==null?"":Xe(a.t)));r.push("")})});r.push("");if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}function Yo(e){var r={};r.iauthor=e._R(4);var t=Zt(e,16);r.rfx=t.s;r.ref=kt(t.s);e.l+=16;return r}function Jo(e,r){if(r==null)r=et(36);r._W(4,e[1].iauthor);ea(e[0],r);r._W(4,0);r._W(4,0);r._W(4,0);r._W(4,0);return r}var qo=Rt;function Qo(e){return Ft(e.slice(0,54))}function Zo(e,r){var t=[];var a=[];var n={};var i=false;rt(e,function s(e,f,l){switch(l){case 632:a.push(e);break;case 635:n=e;break;case 637:n.t=e.t;n.h=e.h;n.r=e.r;break;case 636:n.author=a[n.iauthor];delete n.iauthor;if(r.sheetRows&&n.rfx&&r.sheetRows<=n.rfx.r)break;if(!n.t)n.t="";delete n.rfx;t.push(n);break;case 3072:break;case 35:i=true;break;case 36:i=false;break;case 37:break;case 38:break;default:if((f||"").indexOf("Begin")>0){}else if((f||"").indexOf("End")>0){}else if(!i||r.WTF)throw new Error("Unexpected record "+l+" "+f);}});return t}function ec(e){var r=tt();var t=[];at(r,"BrtBeginComments");at(r,"BrtBeginCommentAuthors");e.forEach(function(e){e[1].forEach(function(e){if(t.indexOf(e.a)>-1)return;t.push(e.a.slice(0,54));at(r,"BrtCommentAuthor",Qo(e.a))})});at(r,"BrtEndCommentAuthors");at(r,"BrtBeginCommentList");e.forEach(function(e){e[1].forEach(function(a){a.iauthor=t.indexOf(a.a);var n={s:wt(e[0]),e:wt(e[0])};at(r,"BrtBeginComment",Jo([n,a]));if(a.t&&a.t.length>0)at(r,"BrtCommentText",Lt(a));at(r,"BrtEndComment");delete a.iauthor})});at(r,"BrtEndCommentList");at(r,"BrtEndComments");return r.end()}var rc="application/vnd.ms-office.vbaProject";function tc(e){var r=X.utils.cfb_new({root:"R"});e.FullPaths.forEach(function(t,a){if(t.slice(-1)==="/"||!t.match(/_VBA_PROJECT_CUR/))return;var n=t.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");X.utils.cfb_add(r,n,e.FileIndex[a].content)});return X.write(r)}function ac(e,r){r.FullPaths.forEach(function(t,a){if(a==0)return;var n=t.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");if(n.slice(-1)!=="/")X.utils.cfb_add(e,n,r.FileIndex[a].content)})}var nc=["xlsb","xlsm","xlam","biff8","xla"];Va.DS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet";Va.MS="http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet";function ic(){return{"!type":"dialog"}}function sc(){return{"!type":"dialog"}}function fc(){return{"!type":"macro"}}function lc(){return{"!type":"macro"}}var oc=function(){var e=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g;var r={r:0,c:0};function t(e,t,a,n){var i=false,s=false;if(a.length==0)s=true;else if(a.charAt(0)=="["){s=true;a=a.slice(1,-1)}if(n.length==0)i=true;else if(n.charAt(0)=="["){i=true;n=n.slice(1,-1)}var f=a.length>0?parseInt(a,10)|0:0,l=n.length>0?parseInt(n,10)|0:0;if(i)l+=r.c;else--l;if(s)f+=r.r;else--f;return t+(i?"":"$")+pt(l)+(s?"":"$")+ut(f)}return function a(n,i){r=i;return n.replace(e,t)}}();var cc=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g;var uc=function(){return function e(r,t){return r.replace(cc,function(e,r,a,n,i,s){var f=vt(n)-(a?0:t.c);var l=ct(s)-(i?0:t.r);var o=l==0?"":!i?"["+l+"]":l+1;var c=f==0?"":!a?"["+f+"]":f+1;return r+"R"+o+"C"+c})}}();function hc(e,r){return e.replace(cc,function(e,t,a,n,i,s){return t+(a=="$"?a+n:pt(vt(n)+r.c))+(i=="$"?i+s:ut(ct(s)+r.r))})}function dc(e,r,t){var a=Et(r),n=a.s,i=wt(t);var s={r:i.r-n.r,c:i.c-n.c};return hc(e,s)}function vc(e){if(e.length==1)return false;return true}function pc(e){return e.replace(/_xlfn\./g,"")}function mc(e){e.l+=1;return}function bc(e,r){var t=e._R(r==1?1:2);return[t&16383,t>>14&1,t>>15&1]}function gc(e,r,t){var a=2;if(t){if(t.biff>=2&&t.biff<=5)return wc(e,r,t);else if(t.biff==12)a=4}var n=e._R(a),i=e._R(a);var s=bc(e,2);var f=bc(e,2);return{s:{r:n,c:s[0],cRel:s[1],rRel:s[2]},e:{r:i,c:f[0],cRel:f[1],rRel:f[2]}}}function wc(e){var r=bc(e,2),t=bc(e,2);var a=e._R(1);var n=e._R(1);return{s:{r:r[0],c:a,cRel:r[1],rRel:r[2]},e:{r:t[0],c:n,cRel:t[1],rRel:t[2]}}}function kc(e,r,t){if(t.biff<8)return wc(e,r,t);var a=e._R(t.biff==12?4:2),n=e._R(t.biff==12?4:2);var i=bc(e,2);var s=bc(e,2);return{s:{r:a,c:i[0],cRel:i[1],rRel:i[2]},e:{r:n,c:s[0],cRel:s[1],rRel:s[2]}}}function Ec(e,r,t){if(t&&t.biff>=2&&t.biff<=5)return Sc(e,r,t);var a=e._R(t&&t.biff==12?4:2);var n=bc(e,2);return{r:a,c:n[0],cRel:n[1],rRel:n[2]}}function Sc(e){var r=bc(e,2);var t=e._R(1);return{r:r[0],c:t,cRel:r[1],rRel:r[2]}}function Bc(e){var r=e._R(2);var t=e._R(2);return{r:r,c:t&255,fQuoted:!!(t&16384),cRel:t>>15,rRel:t>>15}}function Cc(e,r,t){var a=t&&t.biff?t.biff:8;if(a>=2&&a<=5)return yc(e,r,t);var n=e._R(a>=12?4:2);var i=e._R(2);var s=(i&16384)>>14,f=(i&32768)>>15;i&=16383;if(f==1)while(n>524287)n-=1048576;if(s==1)while(i>8191)i=i-16384;return{r:n,c:i,cRel:s,rRel:f}}function yc(e){var r=e._R(2);var t=e._R(1);var a=(r&32768)>>15,n=(r&16384)>>14;r&=16383;if(a==1&&r>=8192)r=r-16384;if(n==1&&t>=128)t=t-256;return{r:r,c:t,cRel:n,rRel:a}}function Tc(e,r,t){var a=(e[e.l++]&96)>>5;var n=gc(e,t.biff>=2&&t.biff<=5?6:8,t);return[a,n]}function _c(e,r,t){var a=(e[e.l++]&96)>>5;var n=e._R(2,"i");var i=8;if(t)switch(t.biff){case 5:e.l+=12;i=6;break;case 12:i=12;break;}var s=gc(e,i,t);return[a,n,s]}function xc(e,r,t){var a=(e[e.l++]&96)>>5;e.l+=t&&t.biff>8?12:t.biff<8?6:8;return[a]}function Ac(e,r,t){var a=(e[e.l++]&96)>>5;var n=e._R(2);var i=8;if(t)switch(t.biff){case 5:e.l+=12;i=6;break;case 12:i=12;break;}e.l+=i;return[a,n]}function Rc(e,r,t){var a=(e[e.l++]&96)>>5;var n=kc(e,r-1,t);return[a,n]}function Fc(e,r,t){var a=(e[e.l++]&96)>>5;e.l+=t.biff==2?6:t.biff==12?14:7;return[a]}function Ic(e){var r=e[e.l+1]&1;var t=1;e.l+=4;return[r,t]}function Dc(e,r,t){e.l+=2;var a=e._R(t&&t.biff==2?1:2);var n=[];for(var i=0;i<=a;++i)n.push(e._R(t&&t.biff==2?1:2));return n}function Pc(e,r,t){var a=e[e.l+1]&255?1:0;e.l+=2;return[a,e._R(t&&t.biff==2?1:2)]}function Oc(e,r,t){var a=e[e.l+1]&255?1:0;e.l+=2;return[a,e._R(t&&t.biff==2?1:2)]}function Nc(e){var r=e[e.l+1]&255?1:0;e.l+=2;return[r,e._R(2)]}function Lc(e,r,t){var a=e[e.l+1]&255?1:0;e.l+=t&&t.biff==2?3:4;return[a]}function Mc(e){var r=e._R(1),t=e._R(1);return[r,t]}function Uc(e){e._R(2);return Mc(e,2)}function Wc(e){e._R(2);return Mc(e,2)}function Hc(e,r,t){var a=(e[e.l]&96)>>5;e.l+=1;var n=Ec(e,0,t);return[a,n]}function Vc(e,r,t){var a=(e[e.l]&96)>>5;e.l+=1;var n=Cc(e,0,t);return[a,n]}function Xc(e,r,t){var a=(e[e.l]&96)>>5;e.l+=1;var n=e._R(2);if(t&&t.biff==5)e.l+=12;var i=Ec(e,0,t);return[a,n,i]}function Gc(e,r,t){var a=(e[e.l]&96)>>5;e.l+=1;var n=e._R(t&&t.biff<=3?1:2);return[fh[n],sh[n],a]}function zc(e,r,t){var a=e[e.l++];var n=e._R(1),i=t&&t.biff<=3?[a==88?-1:0,e._R(1)]:jc(e);return[n,(i[0]===0?sh:ih)[i[1]]]}function jc(e){return[e[e.l+1]>>7,e._R(2)&32767]}function $c(e,r,t){e.l+=t&&t.biff==2?3:4;return}function Kc(e,r,t){e.l++;if(t&&t.biff==12)return[e._R(4,"i"),0];var a=e._R(2);var n=e._R(t&&t.biff==2?1:2);return[a,n]}function Yc(e){e.l++;return Ia[e._R(1)]}function Jc(e){e.l++;return e._R(2)}function qc(e){e.l++;return e._R(1)!==0}function Qc(e){e.l++;return ra(e,8)}function Zc(e,r,t){e.l++;return ti(e,r-1,t)}function eu(e,r){var t=[e._R(1)];if(r==12)switch(t[0]){case 2:t[0]=4;break;case 4:t[0]=16;break;case 0:t[0]=1;break;case 1:t[0]=2;break;}switch(t[0]){case 4:t[1]=Yn(e,1)?"TRUE":"FALSE";if(r!=12)e.l+=7;break;case 37:;case 16:t[1]=Ia[e[e.l]];e.l+=r==12?4:8;break;case 0:e.l+=8;break;case 1:t[1]=ra(e,8);break;case 2:t[1]=fi(e,0,{biff:r>0&&r<8?2:r});break;default:throw new Error("Bad SerAr: "+t[0]);}return t}function ru(e,r,t){var a=e._R(t.biff==12?4:2);var n=[];for(var i=0;i!=a;++i)n.push((t.biff==12?Zt:Ti)(e,8));return n}function tu(e,r,t){var a=0,n=0;if(t.biff==12){a=e._R(4);n=e._R(4)}else{n=1+e._R(1);a=1+e._R(2)}if(t.biff>=2&&t.biff<8){--a;if(--n==0)n=256}for(var i=0,s=[];i!=a&&(s[i]=[]);++i)for(var f=0;f!=n;++f)s[i][f]=eu(e,t.biff);return s}function au(e,r,t){var a=e._R(1)>>>5&3;var n=!t||t.biff>=8?4:2;var i=e._R(n);switch(t.biff){case 2:e.l+=5;break;case 3:;case 4:e.l+=8;break;case 5:e.l+=12;break;}return[a,0,i]}function nu(e,r,t){if(t.biff==5)return iu(e,r,t);var a=e._R(1)>>>5&3;var n=e._R(2);var i=e._R(4);return[a,n,i]}function iu(e){var r=e._R(1)>>>5&3;var t=e._R(2,"i");e.l+=8;var a=e._R(2);e.l+=12;return[r,t,a]}function su(e,r,t){var a=e._R(1)>>>5&3;e.l+=t&&t.biff==2?3:4;var n=e._R(t&&t.biff==2?1:2);return[a,n]}function fu(e,r,t){var a=e._R(1)>>>5&3;var n=e._R(t&&t.biff==2?1:2);return[a,n]}function lu(e,r,t){var a=e._R(1)>>>5&3;e.l+=4;if(t.biff<8)e.l--;if(t.biff==12)e.l+=2;return[a]}function ou(e,r,t){var a=(e[e.l++]&96)>>5;var n=e._R(2);var i=4;if(t)switch(t.biff){case 5:i=15;break;case 12:i=6;break;}e.l+=i;return[a,n]}var cu=Zr;var uu=Zr;var hu=Zr;function du(e,r,t){e.l+=2;return[Bc(e,4,t)]}function vu(e){e.l+=6;return[]}var pu=du;var mu=vu;var bu=vu;var gu=du;function wu(e){e.l+=2;return[qn(e),e._R(2)&1]}var ku=du;var Eu=wu;var Su=vu;var Bu=du;var Cu=du;var yu=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"];function Tu(e){e.l+=2;var r=e._R(2);var t=e._R(2);var a=e._R(4);var n=e._R(2);var i=e._R(2);var s=yu[t>>2&31];return{ixti:r,coltype:t&3,rt:s,idx:a,c:n,C:i}}function _u(e){e.l+=2;return[e._R(4)]}function xu(e,r,t){e.l+=5;e.l+=2;e.l+=t.biff==2?1:4;return["PTGSHEET"]}function Au(e,r,t){e.l+=t.biff==2?4:5;return["PTGENDSHEET"]}function Ru(e){var r=e._R(1)>>>5&3;var t=e._R(2);return[r,t]}function Fu(e){var r=e._R(1)>>>5&3;var t=e._R(2);return[r,t]}function Iu(e){e.l+=4;return[0,0]}var Du={1:{n:"PtgExp",f:Kc},2:{n:"PtgTbl",f:hu},3:{n:"PtgAdd",f:mc},4:{n:"PtgSub",f:mc},5:{n:"PtgMul",f:mc},6:{n:"PtgDiv",f:mc},7:{n:"PtgPower",f:mc},8:{n:"PtgConcat",f:mc},9:{n:"PtgLt",f:mc},10:{n:"PtgLe",f:mc},11:{n:"PtgEq",f:mc},12:{n:"PtgGe",f:mc},13:{n:"PtgGt",f:mc},14:{n:"PtgNe",f:mc},15:{n:"PtgIsect",f:mc},16:{n:"PtgUnion",f:mc},17:{n:"PtgRange",f:mc},18:{n:"PtgUplus",f:mc},19:{n:"PtgUminus",f:mc},20:{n:"PtgPercent",f:mc},21:{n:"PtgParen",f:mc},22:{n:"PtgMissArg",f:mc},23:{n:"PtgStr",f:Zc},26:{n:"PtgSheet",f:xu},27:{n:"PtgEndSheet",f:Au},28:{n:"PtgErr",f:Yc},29:{n:"PtgBool",f:qc},30:{n:"PtgInt",f:Jc},31:{n:"PtgNum",f:Qc},32:{n:"PtgArray",f:Fc},33:{n:"PtgFunc",f:Gc},34:{n:"PtgFuncVar",f:zc},35:{n:"PtgName",f:au},36:{n:"PtgRef",f:Hc},37:{n:"PtgArea",f:Tc},38:{n:"PtgMemArea",f:su},39:{n:"PtgMemErr",f:cu},40:{n:"PtgMemNoMem",f:uu},41:{n:"PtgMemFunc",f:fu},42:{n:"PtgRefErr",f:lu},43:{n:"PtgAreaErr",f:xc},44:{n:"PtgRefN",f:Vc},45:{n:"PtgAreaN",f:Rc},46:{n:"PtgMemAreaN",f:Ru},47:{n:"PtgMemNoMemN",f:Fu},57:{n:"PtgNameX",f:nu},58:{n:"PtgRef3d",f:Xc},59:{n:"PtgArea3d",f:_c},60:{n:"PtgRefErr3d",f:ou},61:{n:"PtgAreaErr3d",f:Ac},255:{}};var Pu={64:32,96:32,65:33,97:33,66:34,98:34,67:35,99:35,68:36,100:36,69:37,101:37,70:38,102:38,71:39,103:39,72:40,104:40,73:41,105:41,74:42,106:42,75:43,107:43,76:44,108:44,77:45,109:45,78:46,110:46,79:47,111:47,88:34,120:34,89:57,121:57,90:58,122:58,91:59,123:59,92:60,124:60,93:61,125:61};(function(){for(var e in Pu)Du[e]=Du[Pu[e]]})();var Ou={1:{n:"PtgElfLel",f:wu},2:{n:"PtgElfRw",f:Bu},3:{n:"PtgElfCol",f:pu},6:{n:"PtgElfRwV",f:Cu},7:{n:"PtgElfColV",f:gu},10:{n:"PtgElfRadical",f:ku},11:{n:"PtgElfRadicalS",f:Su},13:{n:"PtgElfColS",f:mu},15:{n:"PtgElfColSV",f:bu},16:{n:"PtgElfRadicalLel",f:Eu},25:{n:"PtgList",f:Tu},29:{n:"PtgSxName",f:_u},255:{}};var Nu={0:{n:"PtgAttrNoop",f:Iu},1:{n:"PtgAttrSemi",f:Lc},2:{n:"PtgAttrIf",f:Oc},4:{n:"PtgAttrChoose",f:Dc},8:{n:"PtgAttrGoto",f:Pc},16:{n:"PtgAttrSum",f:$c},32:{n:"PtgAttrBaxcel",f:Ic},64:{n:"PtgAttrSpace",f:Uc},65:{n:"PtgAttrSpaceSemi",f:Wc},128:{n:"PtgAttrIfError",f:Nc},255:{}};Nu[33]=Nu[32];function Lu(e,r,t,a){if(a.biff<8)return Zr(e,r);var n=e.l+r;var i=[];for(var s=0;s!==t.length;++s){switch(t[s][0]){case"PtgArray":t[s][1]=tu(e,0,a);i.push(t[s][1]);break;case"PtgMemArea":t[s][2]=ru(e,t[s][1],a);i.push(t[s][2]);break;case"PtgExp":if(a&&a.biff==12){t[s][1][1]=e._R(4);i.push(t[s][1])}break;case"PtgList":;case"PtgElfRadicalS":;case"PtgElfColS":;case"PtgElfColSV":throw"Unsupported "+t[s][0];default:break;}}r=n-e.l;if(r!==0)i.push(Zr(e,r));return i}function Mu(e,r,t){var a=e.l+r;var n,i,s=[];while(a!=e.l){r=a-e.l;i=e[e.l];n=Du[i];if(i===24||i===25)n=(i===24?Ou:Nu)[e[e.l+1]];if(!n||!n.f){Zr(e,r)}else{s.push([n.n,n.f(e,r,t)])}}return s}function Uu(e){var r=[];for(var t=0;t=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};var Hu=new RegExp(/[^\w\u4E00-\u9FFF\u3040-\u30FF]/);function Vu(e,r){if(!e&&!(r&&r.biff<=5&&r.biff>=2))throw new Error("empty sheet name");if(Hu.test(e))return"'"+e+"'";return e}function Xu(e,r,t){if(!e)return"SH33TJSERR0";if(t.biff>8&&(!e.XTI||!e.XTI[r]))return e.SheetNames[r];if(!e.XTI)return"SH33TJSERR6";var a=e.XTI[r];if(t.biff<8){if(r>1e4)r-=65536;if(r<0)r=-r;return r==0?"":e.XTI[r-1]}if(!a)return"SH33TJSERR1";var n="";if(t.biff>8)switch(e[a[0]][0]){case 357:n=a[1]==-1?"#REF":e.SheetNames[a[1]];return a[1]==a[2]?n:n+":"+e.SheetNames[a[2]];case 358:if(t.SID!=null)return e.SheetNames[t.SID];return"SH33TJSSAME"+e[a[0]][0];case 355:;default:return"SH33TJSSRC"+e[a[0]][0];}switch(e[a[0]][0][0]){case 1025:n=a[1]==-1?"#REF":e.SheetNames[a[1]]||"SH33TJSERR3";return a[1]==a[2]?n:n+":"+e.SheetNames[a[2]];case 14849:return e[a[0]].slice(1).map(function(e){return e.Name}).join(";;");default:if(!e[a[0]][0][3])return"SH33TJSERR2";n=a[1]==-1?"#REF":e[a[0]][0][3][a[1]]||"SH33TJSERR4";return a[1]==a[2]?n:n+":"+e[a[0]][0][3][a[2]];}}function Gu(e,r,t){var a=Xu(e,r,t);return a=="#REF"?a:Vu(a,t)}function zu(e,r,t,a,n){var i=n&&n.biff||8;var s={s:{c:0,r:0},e:{c:0,r:0}};var f=[],l,o,c,u=0,h=0,d,v="";if(!e[0]||!e[0][0])return"";var p=-1,m="";for(var b=0,g=e[0].length;b=0){switch(e[0][p][1][0]){case 0:m=he(" ",e[0][p][1][1]);break;case 1:m=he("\r",e[0][p][1][1]);break;default:m="";if(n.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0]);}o=o+m;p=-1}f.push(o+Wu[w[0]]+l);break;case"PtgIsect":l=f.pop();o=f.pop();f.push(o+" "+l);break;case"PtgUnion":l=f.pop();o=f.pop();f.push(o+","+l);break;case"PtgRange":l=f.pop();o=f.pop();f.push(o+":"+l);break;case"PtgAttrChoose":break;case"PtgAttrGoto":break;case"PtgAttrIf":break;case"PtgAttrIfError":break;case"PtgRef":c=nt(w[1][1],s,n);f.push(st(c,i));break;case"PtgRefN":c=t?nt(w[1][1],t,n):w[1][1];f.push(st(c,i));break;case"PtgRef3d":u=w[1][1];c=nt(w[1][2],s,n);v=Gu(a,u,n);var k=v;f.push(v+"!"+st(c,i));break;case"PtgFunc":;case"PtgFuncVar":var E=w[1][0],S=w[1][1];if(!E)E=0;E&=127;var B=E==0?[]:f.slice(-E);f.length-=E;if(S==="User")S=B.shift();f.push(S+"("+B.join(",")+")");break;case"PtgBool":f.push(w[1]?"TRUE":"FALSE");break;case"PtgInt":f.push(w[1]);break;case"PtgNum":f.push(String(w[1]));break;case"PtgStr":f.push('"'+w[1].replace(/"/g,'""')+'"');break;case"PtgErr":f.push(w[1]);break;case"PtgAreaN":d=it(w[1][1],t?{s:t}:s,n);f.push(ft(d,n));break;case"PtgArea":d=it(w[1][1],s,n);f.push(ft(d,n));break;case"PtgArea3d":u=w[1][1];d=w[1][2];v=Gu(a,u,n);f.push(v+"!"+ft(d,n));break;case"PtgAttrSum":f.push("SUM("+f.pop()+")");break;case"PtgAttrBaxcel":;case"PtgAttrSemi":break;case"PtgName":h=w[1][2];var C=(a.names||[])[h-1]||(a[0]||[])[h];var y=C?C.Name:"SH33TJSNAME"+String(h);if(y&&y.slice(0,6)=="_xlfn.")y=y.slice(6);f.push(y);break;case"PtgNameX":var T=w[1][1];h=w[1][2];var _;if(n.biff<=5){if(T<0)T=-T;if(a[T])_=a[T][h]}else{var x="";if(((a[T]||[])[0]||[])[0]==14849){}else if(((a[T]||[])[0]||[])[0]==1025){if(a[T][h]&&a[T][h].itab>0){x=a.SheetNames[a[T][h].itab-1]+"!"}}else x=a.SheetNames[h-1]+"!";if(a[T]&&a[T][h])x+=a[T][h].Name;else if(a[0]&&a[0][h])x+=a[0][h].Name;else{var A=(Xu(a,T,n)||"").split(";;");if(A[h-1])x=A[h-1];else x+="SH33TJSERRX"}f.push(x);break}if(!_)_={Name:"SH33TJSERRY"};f.push(_.Name);break;case"PtgParen":var R="(",F=")";if(p>=0){m="";switch(e[0][p][1][0]){case 2:R=he(" ",e[0][p][1][1])+R;break;case 3:R=he("\r",e[0][p][1][1])+R;break;case 4:F=he(" ",e[0][p][1][1])+F;break;case 5:F=he("\r",e[0][p][1][1])+F;break;default:if(n.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0]);}p=-1}f.push(R+f.pop()+F);break;case"PtgRefErr":f.push("#REF!");break;case"PtgRefErr3d":f.push("#REF!");break;case"PtgExp":c={c:w[1][1],r:w[1][0]};var I={c:t.c,r:t.r};if(a.sharedf[kt(c)]){var D=a.sharedf[kt(c)];f.push(zu(D,s,I,a,n))}else{var P=false;for(l=0;l!=a.arrayf.length;++l){o=a.arrayf[l];if(c.co[0].e.c)continue;if(c.ro[0].e.r)continue;f.push(zu(o[1],s,I,a,n));P=true;break}if(!P)f.push(w[1])}break;case"PtgArray":f.push("{"+Uu(w[1])+"}");break;case"PtgMemArea":break;case"PtgAttrSpace":;case"PtgAttrSpaceSemi":p=b;break;case"PtgTbl":break;case"PtgMemErr":break;case"PtgMissArg":f.push("");break;case"PtgAreaErr":f.push("#REF!");break;case"PtgAreaErr3d":f.push("#REF!");break;case"PtgList":f.push("Table"+w[1].idx+"[#"+w[1].rt+"]");break;case"PtgMemAreaN":;case"PtgMemNoMemN":;case"PtgAttrNoop":;case"PtgSheet":;case"PtgEndSheet":break;case"PtgMemFunc":break;case"PtgMemNoMem":break;case"PtgElfCol":;case"PtgElfColS":;case"PtgElfColSV":;case"PtgElfColV":;case"PtgElfLel":;case"PtgElfRadical":;case"PtgElfRadicalLel":;case"PtgElfRadicalS":;case"PtgElfRw":;case"PtgElfRwV":throw new Error("Unsupported ELFs");case"PtgSxName":throw new Error("Unrecognized Formula Token: "+String(w));default:throw new Error("Unrecognized Formula Token: "+String(w));}var O=["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"];if(n.biff!=3)if(p>=0&&O.indexOf(e[0][b][0])==-1){w=e[0][p];var N=true;switch(w[1][0]){case 4:N=false;case 0:m=he(" ",w[1][1]);break;case 5:N=false;case 1:m=he("\r",w[1][1]);break;default:m="";if(n.WTF)throw new Error("Unexpected PtgAttrSpaceType "+w[1][0]);}f.push((N?m:"")+f.pop()+(N?"":m));p=-1}}if(f.length>1&&n.WTF)throw new Error("bad formula stack");return f[0]}function ju(e,r,t){var a=e.l+r,n=t.biff==2?1:2;var i,s=e._R(n);if(s==65535)return[[],Zr(e,r-2)];var f=Mu(e,s,t);if(r!==s+n)i=Lu(e,r-s-n,f,t);e.l=a;return[f,i]}function $u(e,r,t){var a=e.l+r,n=t.biff==2?1:2;var i,s=e._R(n);if(s==65535)return[[],Zr(e,r-2)];var f=Mu(e,s,t);if(r!==s+n)i=Lu(e,r-s-n,f,t);e.l=a;return[f,i]}function Ku(e,r,t,a){var n=e.l+r;var i=Mu(e,a,t);var s;if(n!==e.l)s=Lu(e,n-e.l,i,t);return[i,s]}function Yu(e,r,t){var a=e.l+r;var n,i=e._R(2);var s=Mu(e,i,t);if(i==65535)return[[],Zr(e,r-2)];if(r!==i+2)n=Lu(e,a-i-2,s,t);return[s,n]}function Ju(e){var r;if(Hr(e,e.l+6)!==65535)return[ra(e),"n"];switch(e[e.l]){case 0:e.l+=8;return["String","s"];case 1:r=e[e.l+2]===1;e.l+=8;return[r,"b"];case 2:r=e[e.l+2];e.l+=8;return[r,"e"];case 3:e.l+=8;return["","s"];}return[]}function qu(e){if(e==null){var r=et(8);r._W(1,3);r._W(1,0);r._W(2,0);r._W(2,0);r._W(2,65535);return r}else if(typeof e=="number")return ta(e);return ta(0)}function Qu(e,r,t){var a=e.l+r;var n=wi(e,6);if(t.biff==2)++e.l;var i=Ju(e,8);var s=e._R(1);if(t.biff!=2){e._R(1);if(t.biff>=5){e._R(4)}}var f=$u(e,a-e.l,t);return{cell:n,val:i[0],formula:f,shared:s>>3&1,tt:i[1]}}function Zu(e,r,t,a,n){var i=ki(r,t,n);var s=qu(e.v);var f=et(6);var l=1|32;f._W(2,l);f._W(4,0);var o=et(e.bf.length);for(var c=0;c0?Lu(e,i,n,t):null;return[n,s]}var rh=eh;var th=eh;var ah=eh;var nh=eh;var ih={0:"BEEP",1:"OPEN",2:"OPEN.LINKS",3:"CLOSE.ALL",4:"SAVE",5:"SAVE.AS",6:"FILE.DELETE",7:"PAGE.SETUP",8:"PRINT",9:"PRINTER.SETUP",10:"QUIT",11:"NEW.WINDOW",12:"ARRANGE.ALL",13:"WINDOW.SIZE",14:"WINDOW.MOVE",15:"FULL",16:"CLOSE",17:"RUN",22:"SET.PRINT.AREA",23:"SET.PRINT.TITLES",24:"SET.PAGE.BREAK",25:"REMOVE.PAGE.BREAK",26:"FONT",27:"DISPLAY",28:"PROTECT.DOCUMENT",29:"PRECISION",30:"A1.R1C1",31:"CALCULATE.NOW",32:"CALCULATION",34:"DATA.FIND",35:"EXTRACT",36:"DATA.DELETE",37:"SET.DATABASE",38:"SET.CRITERIA",39:"SORT",40:"DATA.SERIES",41:"TABLE",42:"FORMAT.NUMBER",43:"ALIGNMENT",44:"STYLE",45:"BORDER",46:"CELL.PROTECTION",47:"COLUMN.WIDTH",48:"UNDO",49:"CUT",50:"COPY",51:"PASTE",52:"CLEAR",53:"PASTE.SPECIAL",54:"EDIT.DELETE",55:"INSERT",56:"FILL.RIGHT",57:"FILL.DOWN",61:"DEFINE.NAME",62:"CREATE.NAMES",63:"FORMULA.GOTO",64:"FORMULA.FIND",65:"SELECT.LAST.CELL",66:"SHOW.ACTIVE.CELL",67:"GALLERY.AREA",68:"GALLERY.BAR",69:"GALLERY.COLUMN",70:"GALLERY.LINE",71:"GALLERY.PIE",72:"GALLERY.SCATTER",73:"COMBINATION",74:"PREFERRED",75:"ADD.OVERLAY",76:"GRIDLINES",77:"SET.PREFERRED",78:"AXES",79:"LEGEND",80:"ATTACH.TEXT",81:"ADD.ARROW",82:"SELECT.CHART",83:"SELECT.PLOT.AREA",84:"PATTERNS",85:"MAIN.CHART",86:"OVERLAY",87:"SCALE",88:"FORMAT.LEGEND",89:"FORMAT.TEXT",90:"EDIT.REPEAT",91:"PARSE",92:"JUSTIFY",93:"HIDE",94:"UNHIDE",95:"WORKSPACE",96:"FORMULA",97:"FORMULA.FILL",98:"FORMULA.ARRAY",99:"DATA.FIND.NEXT",100:"DATA.FIND.PREV",101:"FORMULA.FIND.NEXT",102:"FORMULA.FIND.PREV",103:"ACTIVATE",104:"ACTIVATE.NEXT",105:"ACTIVATE.PREV",106:"UNLOCKED.NEXT",107:"UNLOCKED.PREV",108:"COPY.PICTURE",109:"SELECT",110:"DELETE.NAME",111:"DELETE.FORMAT",112:"VLINE",113:"HLINE",114:"VPAGE",115:"HPAGE",116:"VSCROLL",117:"HSCROLL",118:"ALERT",119:"NEW",120:"CANCEL.COPY",121:"SHOW.CLIPBOARD",122:"MESSAGE",124:"PASTE.LINK",125:"APP.ACTIVATE",126:"DELETE.ARROW",127:"ROW.HEIGHT",128:"FORMAT.MOVE",129:"FORMAT.SIZE",130:"FORMULA.REPLACE",131:"SEND.KEYS",132:"SELECT.SPECIAL",133:"APPLY.NAMES",134:"REPLACE.FONT",135:"FREEZE.PANES",136:"SHOW.INFO",137:"SPLIT",138:"ON.WINDOW",139:"ON.DATA",140:"DISABLE.INPUT",142:"OUTLINE",143:"LIST.NAMES",144:"FILE.CLOSE",145:"SAVE.WORKBOOK",146:"DATA.FORM",147:"COPY.CHART",148:"ON.TIME",149:"WAIT",150:"FORMAT.FONT",151:"FILL.UP",152:"FILL.LEFT",153:"DELETE.OVERLAY",155:"SHORT.MENUS",159:"SET.UPDATE.STATUS",161:"COLOR.PALETTE",162:"DELETE.STYLE",163:"WINDOW.RESTORE",164:"WINDOW.MAXIMIZE",166:"CHANGE.LINK",167:"CALCULATE.DOCUMENT",168:"ON.KEY",169:"APP.RESTORE",170:"APP.MOVE",171:"APP.SIZE",172:"APP.MINIMIZE",173:"APP.MAXIMIZE",174:"BRING.TO.FRONT",175:"SEND.TO.BACK",185:"MAIN.CHART.TYPE",186:"OVERLAY.CHART.TYPE",187:"SELECT.END",188:"OPEN.MAIL",189:"SEND.MAIL",190:"STANDARD.FONT",191:"CONSOLIDATE",192:"SORT.SPECIAL",193:"GALLERY.3D.AREA",194:"GALLERY.3D.COLUMN",195:"GALLERY.3D.LINE",196:"GALLERY.3D.PIE",197:"VIEW.3D",198:"GOAL.SEEK",199:"WORKGROUP",200:"FILL.GROUP",201:"UPDATE.LINK",202:"PROMOTE",203:"DEMOTE",204:"SHOW.DETAIL",206:"UNGROUP",207:"OBJECT.PROPERTIES",208:"SAVE.NEW.OBJECT",209:"SHARE",210:"SHARE.NAME",211:"DUPLICATE",212:"APPLY.STYLE",213:"ASSIGN.TO.OBJECT",214:"OBJECT.PROTECTION",215:"HIDE.OBJECT",216:"SET.EXTRACT",217:"CREATE.PUBLISHER",218:"SUBSCRIBE.TO",219:"ATTRIBUTES",220:"SHOW.TOOLBAR",222:"PRINT.PREVIEW",223:"EDIT.COLOR",224:"SHOW.LEVELS",225:"FORMAT.MAIN",226:"FORMAT.OVERLAY",227:"ON.RECALC",228:"EDIT.SERIES",229:"DEFINE.STYLE",240:"LINE.PRINT",243:"ENTER.DATA",249:"GALLERY.RADAR",250:"MERGE.STYLES",251:"EDITION.OPTIONS",252:"PASTE.PICTURE",253:"PASTE.PICTURE.LINK",254:"SPELLING",256:"ZOOM",259:"INSERT.OBJECT",260:"WINDOW.MINIMIZE",265:"SOUND.NOTE",266:"SOUND.PLAY",267:"FORMAT.SHAPE",268:"EXTEND.POLYGON",269:"FORMAT.AUTO",272:"GALLERY.3D.BAR",273:"GALLERY.3D.SURFACE",274:"FILL.AUTO",276:"CUSTOMIZE.TOOLBAR",277:"ADD.TOOL",278:"EDIT.OBJECT",279:"ON.DOUBLECLICK",280:"ON.ENTRY",281:"WORKBOOK.ADD",282:"WORKBOOK.MOVE",283:"WORKBOOK.COPY",284:"WORKBOOK.OPTIONS",285:"SAVE.WORKSPACE",288:"CHART.WIZARD",289:"DELETE.TOOL",290:"MOVE.TOOL",291:"WORKBOOK.SELECT",292:"WORKBOOK.ACTIVATE",293:"ASSIGN.TO.TOOL",295:"COPY.TOOL",296:"RESET.TOOL",297:"CONSTRAIN.NUMERIC",298:"PASTE.TOOL",302:"WORKBOOK.NEW",305:"SCENARIO.CELLS",306:"SCENARIO.DELETE",307:"SCENARIO.ADD",308:"SCENARIO.EDIT",309:"SCENARIO.SHOW",310:"SCENARIO.SHOW.NEXT",311:"SCENARIO.SUMMARY",312:"PIVOT.TABLE.WIZARD",313:"PIVOT.FIELD.PROPERTIES",314:"PIVOT.FIELD",315:"PIVOT.ITEM",316:"PIVOT.ADD.FIELDS",318:"OPTIONS.CALCULATION",319:"OPTIONS.EDIT",320:"OPTIONS.VIEW",321:"ADDIN.MANAGER",322:"MENU.EDITOR",323:"ATTACH.TOOLBARS",324:"VBAActivate",325:"OPTIONS.CHART",328:"VBA.INSERT.FILE",330:"VBA.PROCEDURE.DEFINITION",336:"ROUTING.SLIP",338:"ROUTE.DOCUMENT",339:"MAIL.LOGON",342:"INSERT.PICTURE",343:"EDIT.TOOL",344:"GALLERY.DOUGHNUT",350:"CHART.TREND",352:"PIVOT.ITEM.PROPERTIES",354:"WORKBOOK.INSERT",355:"OPTIONS.TRANSITION",356:"OPTIONS.GENERAL",370:"FILTER.ADVANCED",373:"MAIL.ADD.MAILER",374:"MAIL.DELETE.MAILER",375:"MAIL.REPLY",376:"MAIL.REPLY.ALL",377:"MAIL.FORWARD",378:"MAIL.NEXT.LETTER",379:"DATA.LABEL",380:"INSERT.TITLE",381:"FONT.PROPERTIES",382:"MACRO.OPTIONS",383:"WORKBOOK.HIDE",384:"WORKBOOK.UNHIDE",385:"WORKBOOK.DELETE",386:"WORKBOOK.NAME",388:"GALLERY.CUSTOM",390:"ADD.CHART.AUTOFORMAT",391:"DELETE.CHART.AUTOFORMAT",392:"CHART.ADD.DATA",393:"AUTO.OUTLINE",394:"TAB.ORDER",395:"SHOW.DIALOG",396:"SELECT.ALL",397:"UNGROUP.SHEETS",398:"SUBTOTAL.CREATE",399:"SUBTOTAL.REMOVE",400:"RENAME.OBJECT",412:"WORKBOOK.SCROLL",413:"WORKBOOK.NEXT",414:"WORKBOOK.PREV",415:"WORKBOOK.TAB.SPLIT",416:"FULL.SCREEN",417:"WORKBOOK.PROTECT",420:"SCROLLBAR.PROPERTIES",421:"PIVOT.SHOW.PAGES",422:"TEXT.TO.COLUMNS",423:"FORMAT.CHARTTYPE",424:"LINK.FORMAT",425:"TRACER.DISPLAY",430:"TRACER.NAVIGATE",431:"TRACER.CLEAR",432:"TRACER.ERROR",433:"PIVOT.FIELD.GROUP",434:"PIVOT.FIELD.UNGROUP",435:"CHECKBOX.PROPERTIES",436:"LABEL.PROPERTIES",437:"LISTBOX.PROPERTIES",438:"EDITBOX.PROPERTIES",439:"PIVOT.REFRESH",440:"LINK.COMBO",441:"OPEN.TEXT",442:"HIDE.DIALOG",443:"SET.DIALOG.FOCUS",444:"ENABLE.OBJECT",445:"PUSHBUTTON.PROPERTIES",446:"SET.DIALOG.DEFAULT",447:"FILTER",448:"FILTER.SHOW.ALL",449:"CLEAR.OUTLINE",450:"FUNCTION.WIZARD",451:"ADD.LIST.ITEM",452:"SET.LIST.ITEM",453:"REMOVE.LIST.ITEM",454:"SELECT.LIST.ITEM",455:"SET.CONTROL.VALUE",456:"SAVE.COPY.AS",458:"OPTIONS.LISTS.ADD",459:"OPTIONS.LISTS.DELETE",460:"SERIES.AXES",461:"SERIES.X",462:"SERIES.Y",463:"ERRORBAR.X",464:"ERRORBAR.Y",465:"FORMAT.CHART",466:"SERIES.ORDER",467:"MAIL.LOGOFF",468:"CLEAR.ROUTING.SLIP",469:"APP.ACTIVATE.MICROSOFT",470:"MAIL.EDIT.MAILER",471:"ON.SHEET",472:"STANDARD.WIDTH",473:"SCENARIO.MERGE",474:"SUMMARY.INFO",475:"FIND.FILE",476:"ACTIVE.CELL.FONT",477:"ENABLE.TIPWIZARD",478:"VBA.MAKE.ADDIN",480:"INSERTDATATABLE",481:"WORKGROUP.OPTIONS",482:"MAIL.SEND.MAILER",485:"AUTOCORRECT",489:"POST.DOCUMENT",491:"PICKLIST",493:"VIEW.SHOW",494:"VIEW.DEFINE",495:"VIEW.DELETE",509:"SHEET.BACKGROUND",510:"INSERT.MAP.OBJECT",511:"OPTIONS.MENONO",517:"MSOCHECKS",518:"NORMAL",519:"LAYOUT",520:"RM.PRINT.AREA",521:"CLEAR.PRINT.AREA",522:"ADD.PRINT.AREA",523:"MOVE.BRK",545:"HIDECURR.NOTE",546:"HIDEALL.NOTES",547:"DELETE.NOTE",548:"TRAVERSE.NOTES",549:"ACTIVATE.NOTES",620:"PROTECT.REVISIONS",621:"UNPROTECT.REVISIONS",647:"OPTIONS.ME",653:"WEB.PUBLISH",667:"NEWWEBQUERY",673:"PIVOT.TABLE.CHART",753:"OPTIONS.SAVE",755:"OPTIONS.SPELL",808:"HIDEALL.INKANNOTS"};var sh={0:"COUNT",1:"IF",2:"ISNA",3:"ISERROR",4:"SUM",5:"AVERAGE",6:"MIN",7:"MAX",8:"ROW",9:"COLUMN",10:"NA",11:"NPV",12:"STDEV",13:"DOLLAR",14:"FIXED",15:"SIN",16:"COS",17:"TAN",18:"ATAN",19:"PI",20:"SQRT",21:"EXP",22:"LN",23:"LOG10",24:"ABS",25:"INT",26:"SIGN",27:"ROUND",28:"LOOKUP",29:"INDEX",30:"REPT",31:"MID",32:"LEN",33:"VALUE",34:"TRUE",35:"FALSE",36:"AND",37:"OR",38:"NOT",39:"MOD",40:"DCOUNT",41:"DSUM",42:"DAVERAGE",43:"DMIN",44:"DMAX",45:"DSTDEV",46:"VAR",47:"DVAR",48:"TEXT",49:"LINEST",50:"TREND",51:"LOGEST",52:"GROWTH",53:"GOTO",54:"HALT",55:"RETURN",56:"PV",57:"FV",58:"NPER",59:"PMT",60:"RATE",61:"MIRR",62:"IRR",63:"RAND",64:"MATCH",65:"DATE",66:"TIME",67:"DAY",68:"MONTH",69:"YEAR",70:"WEEKDAY",71:"HOUR",72:"MINUTE",73:"SECOND",74:"NOW",75:"AREAS",76:"ROWS",77:"COLUMNS",78:"OFFSET",79:"ABSREF",80:"RELREF",81:"ARGUMENT",82:"SEARCH",83:"TRANSPOSE",84:"ERROR",85:"STEP",86:"TYPE",87:"ECHO",88:"SET.NAME",89:"CALLER",90:"DEREF",91:"WINDOWS",92:"SERIES",93:"DOCUMENTS",94:"ACTIVE.CELL",95:"SELECTION",96:"RESULT",97:"ATAN2",98:"ASIN",99:"ACOS",100:"CHOOSE",101:"HLOOKUP",102:"VLOOKUP",103:"LINKS",104:"INPUT",105:"ISREF",106:"GET.FORMULA",107:"GET.NAME",108:"SET.VALUE",109:"LOG",110:"EXEC",111:"CHAR",112:"LOWER",113:"UPPER",114:"PROPER",115:"LEFT",116:"RIGHT",117:"EXACT",118:"TRIM",119:"REPLACE",120:"SUBSTITUTE",121:"CODE",122:"NAMES",123:"DIRECTORY",124:"FIND",125:"CELL",126:"ISERR",127:"ISTEXT",128:"ISNUMBER",129:"ISBLANK",130:"T",131:"N",132:"FOPEN",133:"FCLOSE",134:"FSIZE",135:"FREADLN",136:"FREAD",137:"FWRITELN",138:"FWRITE",139:"FPOS",140:"DATEVALUE",141:"TIMEVALUE",142:"SLN",143:"SYD",144:"DDB",145:"GET.DEF",146:"REFTEXT",147:"TEXTREF",148:"INDIRECT",149:"REGISTER",150:"CALL",151:"ADD.BAR",152:"ADD.MENU",153:"ADD.COMMAND",154:"ENABLE.COMMAND",155:"CHECK.COMMAND",156:"RENAME.COMMAND",157:"SHOW.BAR",158:"DELETE.MENU",159:"DELETE.COMMAND",160:"GET.CHART.ITEM",161:"DIALOG.BOX",162:"CLEAN",163:"MDETERM",164:"MINVERSE",165:"MMULT",166:"FILES",167:"IPMT",168:"PPMT",169:"COUNTA",170:"CANCEL.KEY",171:"FOR",172:"WHILE",173:"BREAK",174:"NEXT",175:"INITIATE",176:"REQUEST",177:"POKE",178:"EXECUTE",179:"TERMINATE",180:"RESTART",181:"HELP",182:"GET.BAR",183:"PRODUCT",184:"FACT",185:"GET.CELL",186:"GET.WORKSPACE",187:"GET.WINDOW",188:"GET.DOCUMENT",189:"DPRODUCT",190:"ISNONTEXT",191:"GET.NOTE",192:"NOTE",193:"STDEVP",194:"VARP",195:"DSTDEVP",196:"DVARP",197:"TRUNC",198:"ISLOGICAL",199:"DCOUNTA",200:"DELETE.BAR",201:"UNREGISTER",204:"USDOLLAR",205:"FINDB",206:"SEARCHB",207:"REPLACEB",208:"LEFTB",209:"RIGHTB",210:"MIDB",211:"LENB",212:"ROUNDUP",213:"ROUNDDOWN",214:"ASC",215:"DBCS",216:"RANK",219:"ADDRESS",220:"DAYS360",221:"TODAY",222:"VDB",223:"ELSE",224:"ELSE.IF",225:"END.IF",226:"FOR.CELL",227:"MEDIAN",228:"SUMPRODUCT",229:"SINH",230:"COSH",231:"TANH",232:"ASINH",233:"ACOSH",234:"ATANH",235:"DGET",236:"CREATE.OBJECT",237:"VOLATILE",238:"LAST.ERROR",239:"CUSTOM.UNDO",240:"CUSTOM.REPEAT",241:"FORMULA.CONVERT",242:"GET.LINK.INFO",243:"TEXT.BOX",244:"INFO",245:"GROUP",246:"GET.OBJECT",247:"DB",248:"PAUSE",251:"RESUME",252:"FREQUENCY",253:"ADD.TOOLBAR",254:"DELETE.TOOLBAR",255:"User",256:"RESET.TOOLBAR",257:"EVALUATE",258:"GET.TOOLBAR", -259:"GET.TOOL",260:"SPELLING.CHECK",261:"ERROR.TYPE",262:"APP.TITLE",263:"WINDOW.TITLE",264:"SAVE.TOOLBAR",265:"ENABLE.TOOL",266:"PRESS.TOOL",267:"REGISTER.ID",268:"GET.WORKBOOK",269:"AVEDEV",270:"BETADIST",271:"GAMMALN",272:"BETAINV",273:"BINOMDIST",274:"CHIDIST",275:"CHIINV",276:"COMBIN",277:"CONFIDENCE",278:"CRITBINOM",279:"EVEN",280:"EXPONDIST",281:"FDIST",282:"FINV",283:"FISHER",284:"FISHERINV",285:"FLOOR",286:"GAMMADIST",287:"GAMMAINV",288:"CEILING",289:"HYPGEOMDIST",290:"LOGNORMDIST",291:"LOGINV",292:"NEGBINOMDIST",293:"NORMDIST",294:"NORMSDIST",295:"NORMINV",296:"NORMSINV",297:"STANDARDIZE",298:"ODD",299:"PERMUT",300:"POISSON",301:"TDIST",302:"WEIBULL",303:"SUMXMY2",304:"SUMX2MY2",305:"SUMX2PY2",306:"CHITEST",307:"CORREL",308:"COVAR",309:"FORECAST",310:"FTEST",311:"INTERCEPT",312:"PEARSON",313:"RSQ",314:"STEYX",315:"SLOPE",316:"TTEST",317:"PROB",318:"DEVSQ",319:"GEOMEAN",320:"HARMEAN",321:"SUMSQ",322:"KURT",323:"SKEW",324:"ZTEST",325:"LARGE",326:"SMALL",327:"QUARTILE",328:"PERCENTILE",329:"PERCENTRANK",330:"MODE",331:"TRIMMEAN",332:"TINV",334:"MOVIE.COMMAND",335:"GET.MOVIE",336:"CONCATENATE",337:"POWER",338:"PIVOT.ADD.DATA",339:"GET.PIVOT.TABLE",340:"GET.PIVOT.FIELD",341:"GET.PIVOT.ITEM",342:"RADIANS",343:"DEGREES",344:"SUBTOTAL",345:"SUMIF",346:"COUNTIF",347:"COUNTBLANK",348:"SCENARIO.GET",349:"OPTIONS.LISTS.GET",350:"ISPMT",351:"DATEDIF",352:"DATESTRING",353:"NUMBERSTRING",354:"ROMAN",355:"OPEN.DIALOG",356:"SAVE.DIALOG",357:"VIEW.GET",358:"GETPIVOTDATA",359:"HYPERLINK",360:"PHONETIC",361:"AVERAGEA",362:"MAXA",363:"MINA",364:"STDEVPA",365:"VARPA",366:"STDEVA",367:"VARA",368:"BAHTTEXT",369:"THAIDAYOFWEEK",370:"THAIDIGIT",371:"THAIMONTHOFYEAR",372:"THAINUMSOUND",373:"THAINUMSTRING",374:"THAISTRINGLENGTH",375:"ISTHAIDIGIT",376:"ROUNDBAHTDOWN",377:"ROUNDBAHTUP",378:"THAIYEAR",379:"RTD",380:"CUBEVALUE",381:"CUBEMEMBER",382:"CUBEMEMBERPROPERTY",383:"CUBERANKEDMEMBER",384:"HEX2BIN",385:"HEX2DEC",386:"HEX2OCT",387:"DEC2BIN",388:"DEC2HEX",389:"DEC2OCT",390:"OCT2BIN",391:"OCT2HEX",392:"OCT2DEC",393:"BIN2DEC",394:"BIN2OCT",395:"BIN2HEX",396:"IMSUB",397:"IMDIV",398:"IMPOWER",399:"IMABS",400:"IMSQRT",401:"IMLN",402:"IMLOG2",403:"IMLOG10",404:"IMSIN",405:"IMCOS",406:"IMEXP",407:"IMARGUMENT",408:"IMCONJUGATE",409:"IMAGINARY",410:"IMREAL",411:"COMPLEX",412:"IMSUM",413:"IMPRODUCT",414:"SERIESSUM",415:"FACTDOUBLE",416:"SQRTPI",417:"QUOTIENT",418:"DELTA",419:"GESTEP",420:"ISEVEN",421:"ISODD",422:"MROUND",423:"ERF",424:"ERFC",425:"BESSELJ",426:"BESSELK",427:"BESSELY",428:"BESSELI",429:"XIRR",430:"XNPV",431:"PRICEMAT",432:"YIELDMAT",433:"INTRATE",434:"RECEIVED",435:"DISC",436:"PRICEDISC",437:"YIELDDISC",438:"TBILLEQ",439:"TBILLPRICE",440:"TBILLYIELD",441:"PRICE",442:"YIELD",443:"DOLLARDE",444:"DOLLARFR",445:"NOMINAL",446:"EFFECT",447:"CUMPRINC",448:"CUMIPMT",449:"EDATE",450:"EOMONTH",451:"YEARFRAC",452:"COUPDAYBS",453:"COUPDAYS",454:"COUPDAYSNC",455:"COUPNCD",456:"COUPNUM",457:"COUPPCD",458:"DURATION",459:"MDURATION",460:"ODDLPRICE",461:"ODDLYIELD",462:"ODDFPRICE",463:"ODDFYIELD",464:"RANDBETWEEN",465:"WEEKNUM",466:"AMORDEGRC",467:"AMORLINC",468:"CONVERT",724:"SHEETJS",469:"ACCRINT",470:"ACCRINTM",471:"WORKDAY",472:"NETWORKDAYS",473:"GCD",474:"MULTINOMIAL",475:"LCM",476:"FVSCHEDULE",477:"CUBEKPIMEMBER",478:"CUBESET",479:"CUBESETCOUNT",480:"IFERROR",481:"COUNTIFS",482:"SUMIFS",483:"AVERAGEIF",484:"AVERAGEIFS"};var fh={2:1,3:1,10:0,15:1,16:1,17:1,18:1,19:0,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:2,30:2,31:3,32:1,33:1,34:0,35:0,38:1,39:2,40:3,41:3,42:3,43:3,44:3,45:3,47:3,48:2,53:1,61:3,63:0,65:3,66:3,67:1,68:1,69:1,70:1,71:1,72:1,73:1,74:0,75:1,76:1,77:1,79:2,80:2,83:1,85:0,86:1,89:0,90:1,94:0,95:0,97:2,98:1,99:1,101:3,102:3,105:1,106:1,108:2,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,161:1,162:1,163:1,164:1,165:2,172:1,175:2,176:2,177:3,178:2,179:1,184:1,186: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,225:0,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};function lh(e){if(e.slice(0,3)=="of:")e=e.slice(3);if(e.charCodeAt(0)==61){e=e.slice(1);if(e.charCodeAt(0)==61)e=e.slice(1)}e=e.replace(/COM\.MICROSOFT\./g,"");e=e.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g,function(e,r){return r.replace(/\./g,"")});e=e.replace(/\[.(#[A-Z]*[?!])\]/g,"$1");return e.replace(/[;~]/g,",").replace(/\|/g,";")}function oh(e){var r="of:="+e.replace(cc,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return r.replace(/;/g,"|").replace(/,/g,";")}function ch(e){var r=e.split(":");var t=r[0].split(".")[0];return[t,r[0].split(".")[1]+(r.length>1?":"+(r[1].split(".")[1]||r[1].split(".")[0]):"")]}function uh(e){return e.replace(/\./,"!")}var hh={};var dh={};Va.WS=["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"];var vh=typeof Map!=="undefined";function ph(e,r,t){var a=0,n=e.length;if(t){if(vh?t.has(r):Object.prototype.hasOwnProperty.call(t,r)){var i=vh?t.get(r):t[r];for(;a-1){t.width=Bl(a);t.customWidth=1}else if(r.width!=null)t.width=r.width;if(r.hidden)t.hidden=true;if(r.level!=null){t.outlineLevel=t.level=r.level}return t}function bh(e,r){if(!e)return;var t=[.7,.7,.75,.75,.3,.3];if(r=="xlml")t=[1,1,1,1,.5,.5];if(e.left==null)e.left=t[0];if(e.right==null)e.right=t[1];if(e.top==null)e.top=t[2];if(e.bottom==null)e.bottom=t[3];if(e.header==null)e.header=t[4];if(e.footer==null)e.footer=t[5]}function gh(e,r,t){var a=t.revssf[r.z!=null?r.z:"General"];var n=60,i=e.length;if(a==null&&t.ssf){for(;n<392;++n)if(t.ssf[n]==null){P.load(r.z,n);t.ssf[n]=r.z;t.revssf[r.z]=a=n;break}}for(n=0;n!=i;++n)if(e[n].numFmtId===a)return n;e[i]={numFmtId:a,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1};return i}function wh(e,r,t,a,n,i){try{if(a.cellNF)e.z=P._table[r]}catch(s){if(a.WTF)throw s}if(e.t==="z"&&!a.cellStyles)return;if(e.t==="d"&&typeof e.v==="string")e.v=oe(e.v);if((!a||a.cellText!==false)&&e.t!=="z")try{if(P._table[r]==null)P.load(L[r]||"General",r);if(e.t==="e")e.w=e.w||Ia[e.v];else if(r===0){if(e.t==="n"){if((e.v|0)===e.v)e.w=P._general_int(e.v);else e.w=P._general_num(e.v)}else if(e.t==="d"){var f=re(e.v);if((f|0)===f)e.w=P._general_int(f);else e.w=P._general_num(f)}else if(e.v===undefined)return"";else e.w=P._general(e.v,dh)}else if(e.t==="d")e.w=P.format(r,re(e.v),dh);else e.w=P.format(r,e.v,dh)}catch(s){if(a.WTF)throw s}if(!a.cellStyles)return;if(t!=null)try{e.s=i.Fills[t];if(e.s.fgColor&&e.s.fgColor.theme&&!e.s.fgColor.rgb){e.s.fgColor.rgb=ml(n.themeElements.clrScheme[e.s.fgColor.theme].rgb,e.s.fgColor.tint||0);if(a.WTF)e.s.fgColor.raw_rgb=n.themeElements.clrScheme[e.s.fgColor.theme].rgb}if(e.s.bgColor&&e.s.bgColor.theme){e.s.bgColor.rgb=ml(n.themeElements.clrScheme[e.s.bgColor.theme].rgb,e.s.bgColor.tint||0);if(a.WTF)e.s.bgColor.raw_rgb=n.themeElements.clrScheme[e.s.bgColor.theme].rgb}}catch(s){if(a.WTF&&i.Fills)throw s}}function kh(e,r,t){if(e&&e["!ref"]){var a=Bt(e["!ref"]);if(a.e.c=0&&t.s.c>=0)e["!ref"]=St(t)}var Sh=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g;var Bh=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/;var Ch=/<(?:\w:)?hyperlink [^>]*>/gm;var yh=/"(\w*:\w*)"/;var Th=/<(?:\w:)?col\b[^>]*[\/]?>/g;var _h=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g;var xh=/<(?:\w:)?pageMargins[^>]*\/>/g;var Ah=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/;var Rh=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/;var Fh=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function Ih(e,r,t,a,n,i,s){if(!e)return e;if(!a)a={"!id":{}};if(m!=null&&r.dense==null)r.dense=m;var f=r.dense?[]:{};var l={s:{r:2e6,c:2e6},e:{r:0,c:0}};var o="",c="";var u=e.match(Bh);if(u){o=e.slice(0,u.index);c=e.slice(u.index+u[0].length)}else o=c=e;var h=o.match(Ah);if(h)Ph(h[0],f,n,t);else if(h=o.match(Rh))Oh(h[0],h[1]||"",f,n,t,s,i);var d=(o.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(d>0){var v=o.slice(d,d+50).match(yh);if(v)Eh(f,v[1])}var p=o.match(Fh);if(p&&p[1])Kh(p[1],n);var b=[];if(r.cellStyles){var g=o.match(Th);if(g)Xh(b,g)}if(u)qh(u[1],f,r,l,i,s);var w=c.match(_h);if(w)f["!autofilter"]=zh(w[0]);var k=[];var E=c.match(Sh);if(E)for(d=0;d!=E.length;++d)k[d]=Bt(E[d].slice(E[d].indexOf('"')+1));var S=c.match(Ch);if(S)Wh(f,S,a);var B=c.match(xh);if(B)f["!margins"]=Hh(Ne(B[0]));if(!f["!ref"]&&l.e.c>=l.s.c&&l.e.r>=l.s.r)f["!ref"]=St(l);if(r.sheetRows>0&&f["!ref"]){var C=Bt(f["!ref"]);if(r.sheetRows<=+C.e.r){C.e.r=r.sheetRows-1;if(C.e.r>l.e.r)C.e.r=l.e.r;if(C.e.rl.e.c)C.e.c=l.e.c;if(C.e.c0)f["!cols"]=b;if(k.length>0)f["!merges"]=k;return f}function Dh(e){if(e.length===0)return"";var r='';for(var t=0;t!=e.length;++t)r+='';return r+""}function Ph(e,r,t,a){var n=Ne(e);if(!t.Sheets[a])t.Sheets[a]={};if(n.codeName)t.Sheets[a].CodeName=We(qe(n.codeName))}function Oh(e,r,t,a,n,i,s){Ph(e.slice(0,e.indexOf(">")),t,a,n)}function Nh(e,r,t,a,n){var i=false;var s={},f=null;if(a.bookType!=="xlsx"&&r.vbaraw){var l=r.SheetNames[t];try{if(r.Workbook)l=r.Workbook.Sheets[t].CodeName||l}catch(o){}i=true;s.codeName=Qe(Xe(l))}if(e&&e["!outline"]){var c={summaryBelow:1,summaryRight:1};if(e["!outline"].above)c.summaryBelow=0;if(e["!outline"].left)c.summaryRight=0;f=(f||"")+ur("outlinePr",null,c)}if(!i&&!f)return;n[n.length]=ur("sheetPr",f,s)}var Lh=["objects","scenarios","selectLockedCells","selectUnlockedCells"];var Mh=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function Uh(e){var r={sheet:1};Lh.forEach(function(t){if(e[t]!=null&&e[t])r[t]="1"});Mh.forEach(function(t){if(e[t]!=null&&!e[t])r[t]="0"});if(e.password)r.password=nl(e.password).toString(16).toUpperCase();return ur("sheetProtection",null,r)}function Wh(e,r,t){var a=Array.isArray(e);for(var n=0;n!=r.length;++n){var i=Ne(qe(r[n]),true);if(!i.ref)return;var s=((t||{})["!id"]||[])[i.id];if(s){i.Target=s.Target;if(i.location)i.Target+="#"+We(i.location)}else{i.Target="#"+We(i.location);s={Target:i.Target,TargetMode:"Internal"}}i.Rel=s;if(i.tooltip){i.Tooltip=i.tooltip;delete i.tooltip}var f=Bt(i.ref);for(var l=f.s.r;l<=f.e.r;++l)for(var o=f.s.c;o<=f.e.c;++o){var c=kt({c:o,r:l});if(a){if(!e[l])e[l]=[];if(!e[l][o])e[l][o]={t:"z",v:undefined};e[l][o].l=i}else{if(!e[c])e[c]={t:"z",v:undefined};e[c].l=i}}}}function Hh(e){var r={};["left","right","top","bottom","header","footer"].forEach(function(t){if(e[t])r[t]=parseFloat(e[t])});return r}function Vh(e){bh(e);return ur("pageMargins",null,e)}function Xh(e,r){var t=false;for(var a=0;a!=r.length;++a){var n=Ne(r[a],true);if(n.hidden)n.hidden=Je(n.hidden);var i=parseInt(n.min,10)-1,s=parseInt(n.max,10)-1;if(n.outlineLevel)n.level=+n.outlineLevel||0;delete n.min;delete n.max;n.width=+n.width;if(!t&&n.width){t=true;yl(n.width)}Tl(n);while(i<=s)e[i++]=ue(n)}}function Gh(e,r){var t=[""],a;for(var n=0;n!=r.length;++n){if(!(a=r[n]))continue;t[t.length]=ur("col",null,mh(n,a))}t[t.length]="";return t.join("")}function zh(e){var r={ref:(e.match(/ref="([^"]*)"/)||[])[1]};return r}function jh(e,r,t,a){var n=typeof e.ref=="string"?e.ref:St(e.ref);if(!t.Workbook)t.Workbook={Sheets:[]};if(!t.Workbook.Names)t.Workbook.Names=[];var i=t.Workbook.Names;var s=Et(n);if(s.s.r==s.e.r){s.e.r=Et(r["!ref"]).e.r;n=St(s)}for(var f=0;fa-z][^>]*)?\/?>/;function Kh(e,r){if(!r.Views)r.Views=[{}];(e.match($h)||[]).forEach(function(e,t){var a=Ne(e);if(!r.Views[t])r.Views[t]={};if(+a.zoomScale)r.Views[t].zoom=+a.zoomScale;if(Je(a.rightToLeft))r.Views[t].RTL=true})}function Yh(e,r,t,a){var n={workbookViewId:"0"};if((((a||{}).Workbook||{}).Views||[])[0])n.rightToLeft=a.Workbook.Views[0].RTL?"1":"0";return ur("sheetViews",ur("sheetView",null,n),{})}function Jh(e,r,t,a){if(e.v===undefined&&typeof e.f!=="string"||e.t==="z")return"";var n="";var i=e.t,s=e.v;if(e.t!=="z")switch(e.t){case"b":n=e.v?"1":"0";break;case"n":n=""+e.v;break;case"e":n=Ia[e.v];break;case"d":if(a&&a.cellDates)n=oe(e.v,-1).toISOString();else{e=ue(e);e.t="n";n=""+(e.v=re(oe(e.v)))}if(typeof e.z==="undefined")e.z=P._table[14];break;default:n=e.v;break;}var f=or("v",Xe(n)),l={r:r};var o=gh(a.cellXfs,e,a);if(o!==0)l.s=o;switch(e.t){case"n":break;case"d":l.t="d";break;case"b":l.t="b";break;case"e":l.t="e";break;case"z":break;default:if(e.v==null){delete e.t;break}if(e.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(a&&a.bookSST){f=or("v",""+ph(a.Strings,e.v,a.revStrings));l.t="s";break}l.t="str";break;}if(e.t!=i){e.t=i;e.v=s}if(typeof e.f=="string"&&e.f){var c=e.F&&e.F.slice(0,r.length)==r?{t:"array",ref:e.F}:null;f=ur("f",Xe(e.f),c)+(e.v!=null?f:"")}if(e.l)t["!links"].push([r,e.l]);if(e.c)t["!comments"].push([r,e.c]);return ur("c",f,l)}var qh=function(){var e=/<(?:\w+:)?c[ \/>]/,r=/<\/(?:\w+:)?row>/;var t=/r=["']([^"']*)["']/,a=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/;var n=/ref=["']([^"']*)["']/;var i=tr("v"),s=tr("f");return function f(l,o,c,u,h,d){var v=0,p="",m=[],b=[],g=0,w=0,k=0,E="",S;var B,C=0,y=0;var T,_;var x=0,A=0;var R=Array.isArray(d.CellXf),F;var I=[];var D=[];var O=Array.isArray(o);var N=[],L={},M=false;var U=!!c.sheetStubs;for(var W=l.split(r),H=0,V=W.length;H!=V;++H){p=W[H].trim();var X=p.length;if(X===0)continue;var G=0;e:for(v=0;v":if(p[v-1]!="/"){++v;break e}if(c&&c.cellStyles){B=Ne(p.slice(G,v),true);C=B.r!=null?parseInt(B.r,10):C+1;y=-1;if(c.sheetRows&&c.sheetRows=v)break;B=Ne(p.slice(G,v),true);C=B.r!=null?parseInt(B.r,10):C+1;y=-1;if(c.sheetRows&&c.sheetRowsC-1)u.s.r=C-1;if(u.e.r":"")+p;if(b!=null&&b.length===2){g=0;E=b[1];for(w=0;w!=E.length;++w){if((k=E.charCodeAt(w)-64)<1||k>26)break;g=26*g+k}--g;y=g}else++y;for(w=0;w!=p.length;++w)if(p.charCodeAt(w)===62)break;++w;B=Ne(p.slice(0,w),true);if(!B.r)B.r=kt({r:C-1,c:y});E=p.slice(w);S={t:""};if((b=E.match(i))!=null&&b[1]!=="")S.v=We(b[1]);if(c.cellFormula){if((b=E.match(s))!=null&&b[1]!==""){S.f=We(qe(b[1])).replace(/\r\n/g,"\n");if(!c.xlfn)S.f=pc(S.f);if(b[0].indexOf('t="array"')>-1){S.F=(E.match(n)||[])[1];if(S.F.indexOf(":")>-1)I.push([Bt(S.F),S.F])}else if(b[0].indexOf('t="shared"')>-1){_=Ne(b[0]);var j=We(qe(b[1]));if(!c.xlfn)j=pc(j);D[parseInt(_.si,10)]=[_,j,B.r]}}else if(b=E.match(/]*\/>/)){_=Ne(b[0]);if(D[_.si])S.f=dc(D[_.si][1],D[_.si][2],B.r)}var $=wt(B.r);for(w=0;w=I[w][0].s.r&&$.r<=I[w][0].e.r)if($.c>=I[w][0].s.c&&$.c<=I[w][0].e.c)S.F=I[w][1]}if(B.t==null&&S.v===undefined){if(S.f||S.F){S.v=0;S.t="n"}else if(!U)continue;else S.t="z"}else S.t=B.t||"n";if(u.s.c>y)u.s.c=y;if(u.e.c0)o["!rows"]=N}}();function Qh(e,r,t,a){var n=[],i=[],s=Bt(e["!ref"]),f="",l,o="",c=[],u=0,h=0,d=e["!rows"];var v=Array.isArray(e);var p={r:o},m,b=-1;for(h=s.s.c;h<=s.e.c;++h)c[h]=pt(h);for(u=s.s.r;u<=s.e.r;++u){i=[];o=ut(u);for(h=s.s.c;h<=s.e.c;++h){l=c[h]+o;var g=v?(e[u]||[])[h]:e[l];if(g===undefined)continue;if((f=Jh(g,l,e,r,t,a))!=null)i.push(f)}if(i.length>0||d&&d[u]){p={r:o};if(d&&d[u]){m=d[u];if(m.hidden)p.hidden=1;b=-1;if(m.hpx)b=Al(m.hpx);else if(m.hpt)b=m.hpt;if(b>-1){p.ht=b;p.customHeight=1}if(m.level){p.outlineLevel=m.level}}n[n.length]=ur("row",i.join(""),p)}}if(d)for(;u-1){p.ht=b;p.customHeight=1}if(m.level){p.outlineLevel=m.level}n[n.length]=ur("row","",p)}}return n.join("")}var Zh=ur("worksheet",null,{xmlns:vr.main[0],"xmlns:r":vr.r});function ed(e,r,t,a){var n=[Fe,Zh];var i=t.SheetNames[e],s=0,f="";var l=t.Sheets[i];if(l==null)l={};var o=l["!ref"]||"A1";var c=Bt(o);if(c.e.c>16383||c.e.r>1048575){if(r.WTF)throw new Error("Range "+o+" exceeds format limit A1:XFD1048576");c.e.c=Math.min(c.e.c,16383);c.e.r=Math.min(c.e.c,1048575);o=St(c)}if(!a)a={};l["!comments"]=[];var u=[];Nh(l,t,e,r,n);n[n.length]=ur("dimension",null,{ref:o});n[n.length]=Yh(l,r,e,t);if(r.sheetFormat)n[n.length]=ur("sheetFormatPr",null,{defaultRowHeight:r.sheetFormat.defaultRowHeight||"16",baseColWidth:r.sheetFormat.baseColWidth||"10",outlineLevelRow:r.sheetFormat.outlineLevelRow||"7"});if(l["!cols"]!=null&&l["!cols"].length>0)n[n.length]=Gh(l,l["!cols"]);n[s=n.length]="";l["!links"]=[];if(l["!ref"]!=null){f=Qh(l,r,e,t,a);if(f.length>0)n[n.length]=f}if(n.length>s+1){n[n.length]="";n[s]=n[s].replace("/>",">")}if(l["!protect"])n[n.length]=Uh(l["!protect"]);if(l["!autofilter"]!=null)n[n.length]=jh(l["!autofilter"],l,t,e);if(l["!merges"]!=null&&l["!merges"].length>0)n[n.length]=Dh(l["!merges"]);var h=-1,d,v=-1;if(l["!links"].length>0){n[n.length]="";l["!links"].forEach(function(e){if(!e[1].Target)return;d={ref:e[0]};if(e[1].Target.charAt(0)!="#"){v=Ka(a,-1,Xe(e[1].Target).replace(/#.*$/,""),Va.HLINK);d["r:id"]="rId"+v}if((h=e[1].Target.indexOf("#"))>-1)d.location=Xe(e[1].Target.slice(h+1));if(e[1].Tooltip)d.tooltip=Xe(e[1].Tooltip);n[n.length]=ur("hyperlink",null,d)});n[n.length]=""}delete l["!links"];if(l["!margins"]!=null)n[n.length]=Vh(l["!margins"]);if(!r||r.ignoreEC||r.ignoreEC==void 0)n[n.length]=or("ignoredErrors",ur("ignoredError",null,{numberStoredAsText:1,sqref:o}));if(u.length>0){v=Ka(a,-1,"../drawings/drawing"+(e+1)+".xml",Va.DRAW);n[n.length]=ur("drawing",null,{"r:id":"rId"+v});l["!drawing"]=u}if(l["!comments"].length>0){v=Ka(a,-1,"../drawings/vmlDrawing"+(e+1)+".vml",Va.VML);n[n.length]=ur("legacyDrawing",null,{"r:id":"rId"+v});l["!legacy"]=v}if(n.length>1){n[n.length]="";n[1]=n[1].replace("/>",">")}return n.join("")}function rd(e,r){var t={};var a=e.l+r;t.r=e._R(4);e.l+=4;var n=e._R(2);e.l+=1;var i=e._R(1);e.l=a;if(i&7)t.level=i&7;if(i&16)t.hidden=true;if(i&32)t.hpt=n/20;return t}function td(e,r,t){var a=et(17+8*16);var n=(t["!rows"]||[])[e]||{};a._W(4,e);a._W(4,0);var i=320;if(n.hpx)i=Al(n.hpx)*20;else if(n.hpt)i=n.hpt*20;a._W(2,i);a._W(1,0);var s=0;if(n.level)s|=n.level;if(n.hidden)s|=16;if(n.hpx||n.hpt)s|=32;a._W(1,s);a._W(1,0);var f=0,l=a.l;a.l+=4;var o={r:e,c:0};for(var c=0;c<16;++c){if(r.s.c>c+1<<10||r.e.ca.l?a.slice(0,a.l):a}function ad(e,r,t,a){var n=td(a,t,r);if(n.length>17||(r["!rows"]||[])[a])at(e,"BrtRowHdr",n)}var nd=Zt;var id=ea;function sd(){}function fd(e,r){var t={};var a=e[e.l];++e.l;t.above=!(a&64);t.left=!(a&128);e.l+=18;t.name=Vt(e,r-19);return t}function ld(e,r,t){if(t==null)t=et(84+4*e.length);var a=192;if(r){if(r.above)a&=~64;if(r.left)a&=~128}t._W(1,a);for(var n=1;n<3;++n)t._W(1,0);na({auto:1},t);t._W(-4,-1);t._W(-4,-1);Xt(e,t);return t.slice(0,t.l)}function od(e){var r=Mt(e);return[r]}function cd(e,r,t){if(t==null)t=et(8);return Ut(r,t)}function ud(e){var r=Wt(e);return[r]}function hd(e,r,t){if(t==null)t=et(4);return Ht(r,t)}function dd(e){var r=Mt(e);var t=e._R(1);return[r,t,"b"]}function vd(e,r,t){if(t==null)t=et(9);Ut(r,t);t._W(1,e.v?1:0);return t}function pd(e){var r=Wt(e);var t=e._R(1);return[r,t,"b"]}function md(e,r,t){if(t==null)t=et(5);Ht(r,t);t._W(1,e.v?1:0);return t}function bd(e){var r=Mt(e);var t=e._R(1);return[r,t,"e"]}function gd(e,r,t){if(t==null)t=et(9);Ut(r,t);t._W(1,e.v);return t}function wd(e){var r=Wt(e);var t=e._R(1);return[r,t,"e"]}function kd(e,r,t){if(t==null)t=et(8);Ht(r,t);t._W(1,e.v);t._W(2,0);t._W(1,0);return t}function Ed(e){var r=Mt(e);var t=e._R(4);return[r,t,"s"]}function Sd(e,r,t){if(t==null)t=et(12);Ut(r,t);t._W(4,r.v);return t}function Bd(e){var r=Wt(e);var t=e._R(4);return[r,t,"s"]}function Cd(e,r,t){if(t==null)t=et(8);Ht(r,t);t._W(4,r.v);return t}function yd(e){var r=Mt(e);var t=ra(e);return[r,t,"n"]}function Td(e,r,t){if(t==null)t=et(16);Ut(r,t);ta(e.v,t);return t}function _d(e){var r=Wt(e);var t=ra(e);return[r,t,"n"]}function xd(e,r,t){if(t==null)t=et(12);Ht(r,t);ta(e.v,t);return t}function Ad(e){var r=Mt(e);var t=Yt(e);return[r,t,"n"]}function Rd(e,r,t){if(t==null)t=et(12);Ut(r,t);Jt(e.v,t);return t}function Fd(e){var r=Wt(e);var t=Yt(e);return[r,t,"n"]}function Id(e,r,t){if(t==null)t=et(8);Ht(r,t);Jt(e.v,t);return t}function Dd(e){var r=Mt(e);var t=Pt(e);return[r,t,"is"]}function Pd(e){var r=Mt(e);var t=Rt(e);return[r,t,"str"]}function Od(e,r,t){if(t==null)t=et(12+4*e.v.length);Ut(r,t);Ft(e.v,t);return t.length>t.l?t.slice(0,t.l):t}function Nd(e){var r=Wt(e);var t=Rt(e);return[r,t,"str"]}function Ld(e,r,t){if(t==null)t=et(8+4*e.v.length);Ht(r,t);Ft(e.v,t);return t.length>t.l?t.slice(0,t.l):t}function Md(e,r,t){var a=e.l+r;var n=Mt(e);n.r=t["!row"];var i=e._R(1);var s=[n,i,"b"];if(t.cellFormula){e.l+=2;var f=th(e,a-e.l,t);s[3]=zu(f,null,n,t.supbooks,t)}else e.l=a;return s}function Ud(e,r,t){var a=e.l+r;var n=Mt(e);n.r=t["!row"];var i=e._R(1);var s=[n,i,"e"];if(t.cellFormula){e.l+=2;var f=th(e,a-e.l,t);s[3]=zu(f,null,n,t.supbooks,t)}else e.l=a;return s}function Wd(e,r,t){var a=e.l+r;var n=Mt(e);n.r=t["!row"];var i=ra(e);var s=[n,i,"n"];if(t.cellFormula){e.l+=2;var f=th(e,a-e.l,t);s[3]=zu(f,null,n,t.supbooks,t)}else e.l=a;return s}function Hd(e,r,t){var a=e.l+r;var n=Mt(e);n.r=t["!row"];var i=Rt(e);var s=[n,i,"str"];if(t.cellFormula){e.l+=2;var f=th(e,a-e.l,t);s[3]=zu(f,null,n,t.supbooks,t)}else e.l=a;return s}var Vd=Zt;var Xd=ea;function Gd(e,r){if(r==null)r=et(4);r._W(4,e);return r}function zd(e,r){var t=e.l+r;var a=Zt(e,16);var n=Gt(e);var i=Rt(e);var s=Rt(e);var f=Rt(e);e.l=t;var l={rfx:a,relId:n,loc:i,display:f};if(s)l.Tooltip=s;return l}function jd(e,r){var t=et(50+4*(e[1].Target.length+(e[1].Tooltip||"").length));ea({s:wt(e[0]),e:wt(e[0])},t);Kt("rId"+r,t);var a=e[1].Target.indexOf("#");var n=a==-1?"":e[1].Target.slice(a+1);Ft(n||"",t);Ft(e[1].Tooltip||"",t);Ft("",t);return t.slice(0,t.l)}function $d(){}function Kd(e,r,t){var a=e.l+r;var n=qt(e,16);var i=e._R(1);var s=[n];s[2]=i;if(t.cellFormula){var f=rh(e,a-e.l,t);s[1]=f}else e.l=a;return s}function Yd(e,r,t){var a=e.l+r;var n=Zt(e,16);var i=[n];if(t.cellFormula){var s=nh(e,a-e.l,t);i[1]=s;e.l=a}else e.l=a;return i}function Jd(e,r,t){if(t==null)t=et(18);var a=mh(e,r);t._W(-4,e);t._W(-4,e);t._W(4,(a.width||10)*256);t._W(4,0);var n=0;if(r.hidden)n|=1;if(typeof a.width=="number")n|=2;if(r.level)n|=r.level<<8;t._W(2,n);return t}var qd=["left","right","top","bottom","header","footer"];function Qd(e){var r={};qd.forEach(function(t){r[t]=ra(e,8)});return r}function Zd(e,r){if(r==null)r=et(6*8);bh(e);qd.forEach(function(t){ta(e[t],r)});return r}function ev(e){var r=e._R(2);e.l+=28;return{RTL:r&32}}function rv(e,r,t){if(t==null)t=et(30);var a=924;if((((r||{}).Views||[])[0]||{}).RTL)a|=32;t._W(2,a);t._W(4,0);t._W(4,0);t._W(4,0);t._W(1,0);t._W(1,0);t._W(2,0);t._W(2,100);t._W(2,0);t._W(2,0);t._W(2,0);t._W(4,0);return t}function tv(e){var r=et(24);r._W(4,4);r._W(4,1);ea(e,r);return r}function av(e,r){if(r==null)r=et(16*4+2);r._W(2,e.password?nl(e.password):0);r._W(4,1);[["objects",false],["scenarios",false],["formatCells",true],["formatColumns",true],["formatRows",true],["insertColumns",true],["insertRows",true],["insertHyperlinks",true],["deleteColumns",true],["deleteRows",true],["selectLockedCells",false],["sort",true],["autoFilter",true],["pivotTables",true],["selectUnlockedCells",false]].forEach(function(t){if(t[1])r._W(4,e[t[0]]!=null&&!e[t[0]]?1:0);else r._W(4,e[t[0]]!=null&&e[t[0]]?0:1)});return r}function nv(){}function iv(){}function sv(e,r,t,a,n,i,s){if(!e)return e;var f=r||{};if(!a)a={"!id":{}};if(m!=null&&f.dense==null)f.dense=m;var l=f.dense?[]:{};var o;var c={s:{r:2e6,c:2e6},e:{r:0,c:0}};var u=[];var h=false,d=false;var v,p,b,g,w,k,E,S,B;var C=[];f.biff=12;f["!row"]=0;var y=0,T=false;var _=[];var x={};var A=f.supbooks||n.supbooks||[[]];A.sharedf=x;A.arrayf=_;A.SheetNames=n.SheetNames||n.Sheets.map(function(e){return e.name});if(!f.supbooks){f.supbooks=A;if(n.Names)for(var R=0;R=R[0].s.r&&v.r<=R[0].e.r)if(w>=R[0].s.c&&w<=R[0].e.c){p.F=St(R[0]);T=true}}if(!T&&e.length>3)p.f=e[3]}if(c.s.r>v.r)c.s.r=v.r;if(c.s.c>w)c.s.c=w;if(c.e.rv.r)c.s.r=v.r;if(c.s.c>w)c.s.c=w;if(c.e.r=e.s){F[e.e--]={width:e.w/256,hidden:!!(e.flags&1),level:e.level};if(!D){D=true;yl(e.w/256)}Tl(F[e.e+1])}break;case 161:l["!autofilter"]={ref:St(e)};break;case 476:l["!margins"]=e;break;case 147:if(!n.Sheets[t])n.Sheets[t]={};if(e.name)n.Sheets[t].CodeName=e.name;if(e.above||e.left)l["!outline"]={above:e.above,left:e.left};break;case 137:if(!n.Views)n.Views=[{}];if(!n.Views[0])n.Views[0]={};if(e.RTL)n.Views[0].RTL=true;break;case 485:break;case 64:;case 1053:break;case 151:break;case 152:;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 507:;case 550:;case 171:;case 167:;case 1177:;case 169:;case 1181:;case 551:;case 552:;case 661:;case 639:;case 478:;case 537:;case 477:;case 536:;case 1103:;case 680:;case 1104:;case 1024:;case 663:;case 535:;case 678:;case 504:;case 1043:;case 428:;case 170:;case 3072:;case 50:;case 2070:;case 1045:break;case 35:h=true;break;case 36:h=false;break;case 37:u.push(r);h=true;break;case 38:u.pop();h=false;break;default:if((r||"").indexOf("Begin")>0){}else if((r||"").indexOf("End")>0){}else if(!h||f.WTF)throw new Error("Unexpected record "+m+" "+r);}},f);delete f.supbooks;delete f["!row"];if(!l["!ref"]&&(c.s.r<2e6||o&&(o.e.r>0||o.e.c>0||o.s.r>0||o.s.c>0)))l["!ref"]=St(o||c);if(f.sheetRows&&l["!ref"]){var O=Bt(l["!ref"]);if(f.sheetRows<=+O.e.r){O.e.r=f.sheetRows-1;if(O.e.r>c.e.r)O.e.r=c.e.r;if(O.e.rc.e.c)O.e.c=c.e.c;if(O.e.c0)l["!merges"]=C;if(F.length>0)l["!cols"]=F;if(I.length>0)l["!rows"]=I;return l}function fv(e,r,t,a,n,i,s){if(r.v===undefined)return false;var f="";switch(r.t){case"b":f=r.v?"1":"0";break;case"d":r=ue(r);r.z=r.z||P._table[14];r.v=re(oe(r.v));r.t="n";break;case"n":;case"e":f=""+r.v;break;default:f=r.v;break;}var l={r:t,c:a};l.s=gh(n.cellXfs,r,n);if(r.l)i["!links"].push([kt(l),r.l]);if(r.c)i["!comments"].push([kt(l),r.c]);switch(r.t){case"s":;case"str":if(n.bookSST){ -f=ph(n.Strings,r.v,n.revStrings);l.t="s";l.v=f;if(s)at(e,"BrtShortIsst",Cd(r,l));else at(e,"BrtCellIsst",Sd(r,l))}else{l.t="str";if(s)at(e,"BrtShortSt",Ld(r,l));else at(e,"BrtCellSt",Od(r,l))}return true;case"n":if(r.v==(r.v|0)&&r.v>-1e3&&r.v<1e3){if(s)at(e,"BrtShortRk",Id(r,l));else at(e,"BrtCellRk",Rd(r,l))}else{if(s)at(e,"BrtShortReal",xd(r,l));else at(e,"BrtCellReal",Td(r,l))}return true;case"b":l.t="b";if(s)at(e,"BrtShortBool",md(r,l));else at(e,"BrtCellBool",vd(r,l));return true;case"e":l.t="e";if(s)at(e,"BrtShortError",kd(r,l));else at(e,"BrtCellError",gd(r,l));return true;}if(s)at(e,"BrtShortBlank",hd(r,l));else at(e,"BrtCellBlank",cd(r,l));return true}function lv(e,r,t,a){var n=Bt(r["!ref"]||"A1"),i,s="",f=[];at(e,"BrtBeginSheetData");var l=Array.isArray(r);var o=n.e.r;if(r["!rows"])o=Math.max(n.e.r,r["!rows"].length-1);for(var c=n.s.r;c<=o;++c){s=ut(c);ad(e,r,n,c);var u=false;if(c<=n.e.r)for(var h=n.s.c;h<=n.e.c;++h){if(c===n.s.r)f[h]=pt(h);i=f[h]+s;var d=l?(r[c]||[])[h]:r[i];if(!d){u=false;continue}u=fv(e,d,c,h,a,r,u)}}at(e,"BrtEndSheetData")}function ov(e,r){if(!r||!r["!merges"])return;at(e,"BrtBeginMergeCells",Gd(r["!merges"].length));r["!merges"].forEach(function(r){at(e,"BrtMergeCell",Xd(r))});at(e,"BrtEndMergeCells")}function cv(e,r){if(!r||!r["!cols"])return;at(e,"BrtBeginColInfos");r["!cols"].forEach(function(r,t){if(r)at(e,"BrtColInfo",Jd(t,r))});at(e,"BrtEndColInfos")}function uv(e,r){if(!r||!r["!ref"])return;at(e,"BrtBeginCellIgnoreECs");at(e,"BrtCellIgnoreEC",tv(Bt(r["!ref"])));at(e,"BrtEndCellIgnoreECs")}function hv(e,r,t){r["!links"].forEach(function(r){if(!r[1].Target)return;var a=Ka(t,-1,r[1].Target.replace(/#.*$/,""),Va.HLINK);at(e,"BrtHLink",jd(r,a))});delete r["!links"]}function dv(e,r,t,a){if(r["!comments"].length>0){var n=Ka(a,-1,"../drawings/vmlDrawing"+(t+1)+".vml",Va.VML);at(e,"BrtLegacyDrawing",Kt("rId"+n));r["!legacy"]=n}}function vv(e,r,t,a){if(!r["!autofilter"])return;var n=r["!autofilter"];var i=typeof n.ref==="string"?n.ref:St(n.ref);if(!t.Workbook)t.Workbook={Sheets:[]};if(!t.Workbook.Names)t.Workbook.Names=[];var s=t.Workbook.Names;var f=Et(i);if(f.s.r==f.e.r){f.e.r=Et(r["!ref"]).e.r;i=St(f)}for(var l=0;l16383||o.e.r>1048575){if(r.WTF)throw new Error("Range "+(s["!ref"]||"A1")+" exceeds format limit A1:XFD1048576");o.e.c=Math.min(o.e.c,16383);o.e.r=Math.min(o.e.c,1048575)}s["!links"]=[];s["!comments"]=[];at(n,"BrtBeginSheet");if(t.vbaraw||s["!outline"])at(n,"BrtWsProp",ld(f,s["!outline"]));at(n,"BrtWsDim",id(o));pv(n,s,t.Workbook);mv(n,s);cv(n,s,e,r,t);lv(n,s,e,r,t);bv(n,s);vv(n,s,t,e);ov(n,s);hv(n,s,a);if(s["!margins"])at(n,"BrtMargins",Zd(s["!margins"]));if(!r||r.ignoreEC||r.ignoreEC==void 0)uv(n,s);dv(n,s,e,a);at(n,"BrtEndSheet");return n.end()}Va.CHART="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";Va.CHARTEX="http://schemas.microsoft.com/office/2014/relationships/chartEx";function wv(e){var r=[];var t=e.match(/^/);var a;(e.match(/(.*?)<\/c:pt>/gm)||[]).forEach(function(e){var a=e.match(/(.*)<\/c:v><\/c:pt>/);if(!a)return;r[+a[1]]=t?+a[2]:a[2]});var n=We((e.match(/([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);(e.match(/(.*?)<\/c:f>/gm)||[]).forEach(function(e){a=e.replace(/<.*?>/g,"")});return[r,n,a]}function kv(e,r,t,a,n,i){var s=i||{"!type":"chart"};if(!e)return i;var f=0,l=0,o="A";var c={s:{r:2e6,c:2e6},e:{r:0,c:0}};(e.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(e){var r=wv(e);c.s.r=c.s.c=0;c.e.c=f;o=pt(f);r[0].forEach(function(e,t){s[o+ut(t)]={t:"n",v:e,z:r[1]};l=t});if(c.e.r0)s["!ref"]=St(c);return s}Va.CS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet";var Ev=ur("chartsheet",null,{xmlns:vr.main[0],"xmlns:r":vr.r});function Sv(e,r,t,a,n){if(!e)return e;if(!a)a={"!id":{}};var i={"!type":"chart","!drawel":null,"!rel":""};var s;var f=e.match(Ah);if(f)Ph(f[0],i,n,t);if(s=e.match(/drawing r:id="(.*?)"/))i["!rel"]=s[1];if(a["!id"][i["!rel"]])i["!drawel"]=a["!id"][i["!rel"]];return i}function Bv(e,r,t,a){var n=[Fe,Ev];n[n.length]=ur("drawing",null,{"r:id":"rId1"});Ka(a,-1,"../drawings/drawing"+(e+1)+".xml",Va.DRAW);if(n.length>2){n[n.length]="";n[1]=n[1].replace("/>",">")}return n.join("")}function Cv(e,r){e.l+=10;var t=Rt(e,r-10);return{name:t}}function yv(e,r,t,a,n){if(!e)return e;if(!a)a={"!id":{}};var i={"!type":"chart","!drawel":null,"!rel":""};var s=[];var f=false;rt(e,function l(e,a,o){switch(o){case 550:i["!rel"]=e;break;case 651:if(!n.Sheets[t])n.Sheets[t]={};if(e.name)n.Sheets[t].CodeName=e.name;break;case 562:;case 652:;case 669:;case 679:;case 551:;case 552:;case 476:;case 3072:break;case 35:f=true;break;case 36:f=false;break;case 37:s.push(a);break;case 38:s.pop();break;default:if((a||"").indexOf("Begin")>0)s.push(a);else if((a||"").indexOf("End")>0)s.pop();else if(!f||r.WTF)throw new Error("Unexpected record "+o+" "+a);}},r);if(a["!id"][i["!rel"]])i["!drawel"]=a["!id"][i["!rel"]];return i}function Tv(){var e=tt();at(e,"BrtBeginSheet");at(e,"BrtEndSheet");return e.end()}var _v=[["allowRefreshQuery",false,"bool"],["autoCompressPictures",true,"bool"],["backupFile",false,"bool"],["checkCompatibility",false,"bool"],["CodeName",""],["date1904",false,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",false,"bool"],["hidePivotFieldList",false,"bool"],["promptedSolutions",false,"bool"],["publishItems",false,"bool"],["refreshAllConnections",false,"bool"],["saveExternalLinkValues",true,"bool"],["showBorderUnselectedTables",true,"bool"],["showInkAnnotation",true,"bool"],["showObjects","all"],["showPivotChartFilter",false,"bool"],["updateLinks","userSet"]];var xv=[["activeTab",0,"int"],["autoFilterDateGrouping",true,"bool"],["firstSheet",0,"int"],["minimized",false,"bool"],["showHorizontalScroll",true,"bool"],["showSheetTabs",true,"bool"],["showVerticalScroll",true,"bool"],["tabRatio",600,"int"],["visibility","visible"]];var Av=[];var Rv=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function Fv(e,r){for(var t=0;t!=e.length;++t){var a=e[t];for(var n=0;n!=r.length;++n){var i=r[n];if(a[i[0]]==null)a[i[0]]=i[1];else switch(i[2]){case"bool":if(typeof a[i[0]]=="string")a[i[0]]=Je(a[i[0]]);break;case"int":if(typeof a[i[0]]=="string")a[i[0]]=parseInt(a[i[0]],10);break;}}}}function Iv(e,r){for(var t=0;t!=r.length;++t){var a=r[t];if(e[a[0]]==null)e[a[0]]=a[1];else switch(a[2]){case"bool":if(typeof e[a[0]]=="string")e[a[0]]=Je(e[a[0]]);break;case"int":if(typeof e[a[0]]=="string")e[a[0]]=parseInt(e[a[0]],10);break;}}}function Dv(e){Iv(e.WBProps,_v);Iv(e.CalcPr,Rv);Fv(e.WBView,xv);Fv(e.Sheets,Av);dh.date1904=Je(e.WBProps.date1904)}function Pv(e){if(!e.Workbook)return"false";if(!e.Workbook.WBProps)return"false";return Je(e.Workbook.WBProps.date1904)?"true":"false"}var Ov="][*?/\\".split("");function Nv(e,r){if(e.length>31){if(r)return false;throw new Error("Sheet names cannot exceed 31 chars")}var t=true;Ov.forEach(function(a){if(e.indexOf(a)==-1)return;if(!r)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");t=false});return t}function Lv(e,r,t){e.forEach(function(a,n){Nv(a);for(var i=0;i22)throw new Error("Bad Code Name: Worksheet"+s)}})}function Mv(e){if(!e||!e.SheetNames||!e.Sheets)throw new Error("Invalid Workbook");if(!e.SheetNames.length)throw new Error("Workbook is empty");var r=e.Workbook&&e.Workbook.Sheets||[];Lv(e.SheetNames,r,!!e.vbaraw);for(var t=0;t":break;case"":;case"":break;case"":break;case"":_v.forEach(function(e){if(c[e[0]]==null)return;switch(e[2]){case"bool":t.WBProps[e[0]]=Je(c[e[0]]);break;case"int":t.WBProps[e[0]]=parseInt(c[e[0]],10);break;default:t.WBProps[e[0]]=c[e[0]];}});if(c.codeName)t.WBProps.CodeName=qe(c.codeName);break;case"":break;case"":break;case"":;case"":break;case"":delete c[0];t.WBView.push(c);break;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":a=false;break;case"":{i.Ref=We(qe(e.slice(s,o)));t.Names.push(i)}break;case"":break;case"":delete c[0];t.CalcPr=c;break;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":;case"":;case"":break;case"":a=false;break;case"":a=true;break;case"":a=false;break;case"0;var a={codeName:"ThisWorkbook"};if(e.Workbook&&e.Workbook.WBProps){_v.forEach(function(r){if(e.Workbook.WBProps[r[0]]==null)return;if(e.Workbook.WBProps[r[0]]==r[1])return;a[r[0]]=e.Workbook.WBProps[r[0]]});if(e.Workbook.WBProps.CodeName){a.codeName=e.Workbook.WBProps.CodeName;delete a.CodeName}}r[r.length]=ur("workbookPr",null,a);var n=e.Workbook&&e.Workbook.Sheets||[];var i=0;if(n&&n[0]&&!!n[0].Hidden){r[r.length]="";for(i=0;i!=e.SheetNames.length;++i){if(!n[i])break;if(!n[i].Hidden)break}if(i==e.SheetNames.length)i=0;r[r.length]='';r[r.length]=""}r[r.length]="";for(i=0;i!=e.SheetNames.length;++i){var s={name:Xe(e.SheetNames[i].slice(0,31))};s.sheetId=""+(i+1);s["r:id"]="rId"+(i+1);if(n[i])switch(n[i].Hidden){case 1:s.state="hidden";break;case 2:s.state="veryHidden";break;}r[r.length]=ur("sheet",null,s)}r[r.length]="";if(t){r[r.length]="";if(e.Workbook&&e.Workbook.Names)e.Workbook.Names.forEach(function(e){var t={name:e.Name};if(e.Comment)t.comment=e.Comment;if(e.Sheet!=null)t.localSheetId=""+e.Sheet;if(e.Hidden)t.hidden="1";if(!e.Ref)return;r[r.length]=ur("definedName",Xe(e.Ref),t)});r[r.length]=""}if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}function Xv(e,r){var t={};t.Hidden=e._R(4);t.iTabID=e._R(4);t.strRelID=$t(e,r-8);t.name=Rt(e);return t}function Gv(e,r){if(!r)r=et(127);r._W(4,e.Hidden);r._W(4,e.iTabID);Kt(e.strRelID,r);Ft(e.name.slice(0,31),r);return r.length>r.l?r.slice(0,r.l):r}function zv(e,r){var t={};var a=e._R(4);t.defaultThemeVersion=e._R(4);var n=r>8?Rt(e):"";if(n.length>0)t.CodeName=n;t.autoCompressPictures=!!(a&65536);t.backupFile=!!(a&64);t.checkCompatibility=!!(a&4096);t.date1904=!!(a&1);t.filterPrivacy=!!(a&8);t.hidePivotFieldList=!!(a&1024);t.promptedSolutions=!!(a&16);t.publishItems=!!(a&2048);t.refreshAllConnections=!!(a&262144);t.saveExternalLinkValues=!!(a&128);t.showBorderUnselectedTables=!!(a&4);t.showInkAnnotation=!!(a&32);t.showObjects=["all","placeholders","none"][a>>13&3];t.showPivotChartFilter=!!(a&32768);t.updateLinks=["userSet","never","always"][a>>8&3];return t}function jv(e,r){if(!r)r=et(72);var t=0;if(e){if(e.filterPrivacy)t|=8}r._W(4,t);r._W(4,0);Xt(e&&e.CodeName||"ThisWorkbook",r);return r.slice(0,r.l)}function $v(e,r){var t={};e._R(4);t.ArchID=e._R(4);e.l+=r-8;return t}function Kv(e,r,t){var a=e.l+r;e.l+=4;e.l+=1;var n=e._R(4);var i=jt(e);var s=ah(e,0,t);var f=Gt(e);e.l=a;var l={Name:i,Ptg:s};if(n<268435455)l.Sheet=n;if(f)l.Comment=f;return l}function Yv(e,r){var t={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""};var a=[];var n=false;if(!r)r={};r.biff=12;var i=[];var s=[[]];s.SheetNames=[];s.XTI=[];rm[16]={n:"BrtFRTArchID$",f:$v};rt(e,function f(e,l,o){switch(o){case 156:s.SheetNames.push(e.name);t.Sheets.push(e);break;case 153:t.WBProps=e;break;case 39:if(e.Sheet!=null)r.SID=e.Sheet;e.Ref=zu(e.Ptg,null,null,s,r);delete r.SID;delete e.Ptg;i.push(e);break;case 1036:break;case 357:;case 358:;case 355:;case 667:if(!s[0].length)s[0]=[o,e];else s.push([o,e]);s[s.length-1].XTI=[];break;case 362:if(s.length===0){s[0]=[];s[0].XTI=[]}s[s.length-1].XTI=s[s.length-1].XTI.concat(e);s.XTI=s.XTI.concat(e);break;case 361:break;case 2071:;case 158:;case 143:;case 664:;case 353:break;case 3072:;case 3073:;case 534:;case 677:;case 157:;case 610:;case 2050:;case 155:;case 548:;case 676:;case 128:;case 665:;case 2128:;case 2125:;case 549:;case 2053:;case 596:;case 2076:;case 2075:;case 2082:;case 397:;case 154:;case 1117:;case 553:;case 2091:break;case 35:a.push(l);n=true;break;case 36:a.pop();n=false;break;case 37:a.push(l);n=true;break;case 38:a.pop();n=false;break;case 16:break;default:if((l||"").indexOf("Begin")>0){}else if((l||"").indexOf("End")>0){}else if(!n||r.WTF&&a[a.length-1]!="BrtACBegin"&&a[a.length-1]!="BrtFRTBegin")throw new Error("Unexpected record "+o+" "+l);}},r);Dv(t);t.Names=i;t.supbooks=s;return t}function Jv(e,r){at(e,"BrtBeginBundleShs");for(var t=0;t!=r.SheetNames.length;++t){var a=r.Workbook&&r.Workbook.Sheets&&r.Workbook.Sheets[t]&&r.Workbook.Sheets[t].Hidden||0;var n={Hidden:a,iTabID:t+1,strRelID:"rId"+(t+1),name:r.SheetNames[t]};at(e,"BrtBundleSh",Gv(n))}at(e,"BrtEndBundleShs")}function qv(r,t){if(!t)t=et(127);for(var a=0;a!=4;++a)t._W(4,0);Ft("SheetJS",t);Ft(e.version,t);Ft(e.version,t);Ft("7262",t);return t.length>t.l?t.slice(0,t.l):t}function Qv(e,r){if(!r)r=et(29);r._W(-4,0);r._W(-4,460);r._W(4,28800);r._W(4,17600);r._W(4,500);r._W(4,e);r._W(4,e);var t=120;r._W(1,t);return r.length>r.l?r.slice(0,r.l):r}function Zv(e,r){if(!r.Workbook||!r.Workbook.Sheets)return;var t=r.Workbook.Sheets;var a=0,n=-1,i=-1;for(;an)return;at(e,"BrtBeginBookViews");at(e,"BrtBookView",Qv(n));at(e,"BrtEndBookViews")}function ep(e,r){var t=tt();at(t,"BrtBeginBook");at(t,"BrtFileVersion",qv());at(t,"BrtWbProp",jv(e.Workbook&&e.Workbook.WBProps||null));Zv(t,e,r);Jv(t,e,r);at(t,"BrtEndBook");return t.end()}function rp(e,r,t){if(r.slice(-4)===".bin")return Yv(e,t);return Wv(e,t)}function tp(e,r,t,a,n,i,s,f){if(r.slice(-4)===".bin")return sv(e,a,t,n,i,s,f);return Ih(e,a,t,n,i,s,f)}function ap(e,r,t,a,n,i,s,f){if(r.slice(-4)===".bin")return yv(e,a,t,n,i,s,f);return Sv(e,a,t,n,i,s,f)}function np(e,r,t,a,n,i,s,f){if(r.slice(-4)===".bin")return fc(e,a,t,n,i,s,f);return lc(e,a,t,n,i,s,f)}function ip(e,r,t,a,n,i,s,f){if(r.slice(-4)===".bin")return ic(e,a,t,n,i,s,f);return sc(e,a,t,n,i,s,f)}function sp(e,r,t,a){if(r.slice(-4)===".bin")return io(e,t,a);return Hl(e,t,a)}function fp(e,r,t){return _o(e,t)}function lp(e,r,t){if(r.slice(-4)===".bin")return Mf(e,t);return Pf(e,t)}function op(e,r,t){if(r.slice(-4)===".bin")return Zo(e,t);return jo(e,t)}function cp(e,r,t){if(r.slice(-4)===".bin")return Uo(e,r,t);return Lo(e,r,t)}function up(e,r,t,a){if(t.slice(-4)===".bin")return Ho(e,r,t,a);return Wo(e,r,t,a)}function hp(e,r,t){return(r.slice(-4)===".bin"?ep:Vv)(e,t)}function dp(e,r,t,a,n){return(r.slice(-4)===".bin"?gv:ed)(e,t,a,n)}function vp(e,r,t,a,n){return(r.slice(-4)===".bin"?Tv:Bv)(e,t,a,n)}function pp(e,r,t){return(r.slice(-4)===".bin"?bo:Xl)(e,t)}function mp(e,r,t){return(r.slice(-4)===".bin"?Hf:Nf)(e,t)}function bp(e,r,t){return(r.slice(-4)===".bin"?ec:Ko)(e,t)}var gp=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g;var wp=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/;function kp(e,r){var t=e.split(/\s+/);var a=[];if(!r)a[0]=t[0];if(t.length===1)return a;var n=e.match(gp),i,s,f,l;if(n)for(l=0;l!=n.length;++l){i=n[l].match(wp);if((s=i[1].indexOf(":"))===-1)a[i[1]]=i[2].slice(1,i[2].length-1);else{if(i[1].slice(0,6)==="xmlns:")f="xmlns"+i[1].slice(6);else f=i[1].slice(s+1);a[f]=i[2].slice(1,i[2].length-1)}}return a}function Ep(e){var r=e.split(/\s+/);var t={};if(r.length===1)return t;var a=e.match(gp),n,i,s,f;if(a)for(f=0;f!=a.length;++f){n=a[f].match(wp);if((i=n[1].indexOf(":"))===-1)t[n[1]]=n[2].slice(1,n[2].length-1);else{if(n[1].slice(0,6)==="xmlns:")s="xmlns"+n[1].slice(6);else s=n[1].slice(i+1);t[s]=n[2].slice(1,n[2].length-1)}}return t}function Sp(e,r){var t=N[e]||We(e);if(t==="General")return P._general(r);return P.format(t,r)}function Bp(e,r,t,a){var n=a;switch((t[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]){case"boolean":n=Je(a);break;case"i2":;case"int":n=parseInt(a,10);break;case"r4":;case"float":n=parseFloat(a);break;case"date":;case"dateTime.tz":n=oe(a);break;case"i8":;case"string":;case"fixed":;case"uuid":;case"bin.base64":break;default:throw new Error("bad custprop:"+t[0]);}e[We(r)]=n}function Cp(e,r,t){if(e.t==="z")return;if(!t||t.cellText!==false)try{if(e.t==="e"){e.w=e.w||Ia[e.v]}else if(r==="General"){if(e.t==="n"){if((e.v|0)===e.v)e.w=P._general_int(e.v);else e.w=P._general_num(e.v)}else e.w=P._general(e.v)}else e.w=Sp(r||"General",e.v)}catch(a){if(t.WTF)throw a}try{var n=N[r]||r||"General";if(t.cellNF)e.z=n;if(t.cellDates&&e.t=="n"&&P.is_date(n)){var i=P.parse_date_code(e.v);if(i){e.t="d";e.v=new Date(i.y,i.m-1,i.d,i.H,i.M,i.S,i.u)}}}catch(a){if(t.WTF)throw a}}function yp(e,r,t){if(t.cellStyles){if(r.Interior){var a=r.Interior;if(a.Pattern)a.patternType=Fl[a.Pattern]||a.Pattern}}e[r.ID]=r}function Tp(e,r,t,a,n,i,s,f,l,o){var c="General",u=a.StyleID,h={};o=o||{};var d=[];var v=0;if(u===undefined&&f)u=f.StyleID;if(u===undefined&&s)u=s.StyleID;while(i[u]!==undefined){if(i[u].nf)c=i[u].nf;if(i[u].Interior)d.push(i[u].Interior);if(!i[u].Parent)break;u=i[u].Parent}switch(t.Type){case"Boolean":a.t="b";a.v=Je(e);break;case"String":a.t="s";a.r=Ke(We(e));a.v=e.indexOf("<")>-1?We(r||e).replace(/<.*?>/g,""):a.r;break;case"DateTime":if(e.slice(-1)!="Z")e+="Z";a.v=(oe(e)-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3);if(a.v!==a.v)a.v=We(e);else if(a.v<60)a.v=a.v-1;if(!c||c=="General")c="yyyy-mm-dd";case"Number":if(a.v===undefined)a.v=+e;if(!a.t)a.t="n";break;case"Error":a.t="e";a.v=Da[e];if(o.cellText!==false)a.w=e;break;default:if(e==""&&r==""){a.t="z"}else{a.t="s";a.v=Ke(r||e)}break;}Cp(a,c,o);if(o.cellFormula!==false){if(a.Formula){var p=We(a.Formula);if(p.charCodeAt(0)==61)p=p.slice(1);a.f=oc(p,n);delete a.Formula;if(a.ArrayRange=="RC")a.F=oc("RC:RC",n);else if(a.ArrayRange){a.F=oc(a.ArrayRange,n);l.push([Bt(a.F),a.F])}}else{for(v=0;v=l[v][0].s.r&&n.r<=l[v][0].e.r)if(n.c>=l[v][0].s.c&&n.c<=l[v][0].e.c)a.F=l[v][1]}}if(o.cellStyles){d.forEach(function(e){if(!h.patternType&&e.patternType)h.patternType=e.patternType});a.s=h}if(a.StyleID!==undefined)a.ixfe=a.StyleID}function _p(e){e.t=e.v||"";e.t=e.t.replace(/\r\n/g,"\n").replace(/\r/g,"\n");e.v=e.w=e.ixfe=undefined}function xp(e){if(w&&Buffer.isBuffer(e))return e.toString("utf8");if(typeof e==="string")return e;if(typeof Uint8Array!=="undefined"&&e instanceof Uint8Array)return qe(_(A(e)));throw new Error("Bad input format: expected Buffer or string")}var Ap=/<(\/?)([^\s?>:\/]+)(?:[\s?:\/][^>]*)?>/gm;function Rp(e,r){var t=r||{};O(P);var a=d(xp(e));if(t.type=="binary"||t.type=="array"||t.type=="base64"){if(typeof cptable!=="undefined")a=cptable.utils.decode(65001,c(a));else a=qe(a)}var n=a.slice(0,1024).toLowerCase(),i=false;n=n.replace(/".*?"/g,"");if((n.indexOf(">")&1023)>Math.min(n.indexOf(",")&1023,n.indexOf(";")&1023)){var s=ue(t);s.type="string";return Ef.to_workbook(a,s)}if(n.indexOf("=0)i=true});if(i)return ym.to_workbook(a,t);var f;var l=[],o;if(m!=null&&t.dense==null)t.dense=m;var u={},h=[],v=t.dense?[]:{},p="";var b={},g={},w={};var k=kp(''),E=0;var S=0,B=0;var C={s:{r:2e6,c:2e6},e:{r:0,c:0}};var y={},T={};var _="",x=0;var A=[];var R={},F={},I=0,D=[];var L=[],M={};var U=[],W,H=false;var V=[];var X=[],G={},z=0,j=0;var $={Sheets:[],WBProps:{date1904:false}},K={};Ap.lastIndex=0;a=a.replace(//gm,"");var Y="";while(f=Ap.exec(a))switch(f[3]=(Y=f[3]).toLowerCase()){case"data":if(Y=="data"){if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"))}else if(f[0].charAt(f[0].length-2)!=="/")l.push([f[3],true]);break}if(l[l.length-1][1])break;if(f[1]==="/")Tp(a.slice(E,f.index),_,k,l[l.length-1][0]=="comment"?M:g,{c:S,r:B},y,U[S],w,V,t);else{_="";k=kp(f[0]);E=f.index+f[0].length}break;case"cell":if(f[1]==="/"){if(L.length>0)g.c=L;if((!t.sheetRows||t.sheetRows>B)&&g.v!==undefined){if(t.dense){if(!v[B])v[B]=[];v[B][S]=g}else v[pt(S)+ut(B)]=g}if(g.HRef){g.l={Target:We(g.HRef)};if(g.HRefScreenTip)g.l.Tooltip=g.HRefScreenTip;delete g.HRef;delete g.HRefScreenTip}if(g.MergeAcross||g.MergeDown){z=S+(parseInt(g.MergeAcross,10)|0);j=B+(parseInt(g.MergeDown,10)|0);A.push({s:{c:S,r:B},e:{c:z,r:j}})}if(!t.sheetStubs){if(g.MergeAcross)S=z+1;else++S}else if(g.MergeAcross||g.MergeDown){for(var J=S;J<=z;++J){for(var q=B;q<=j;++q){if(J>S||q>B){if(t.dense){if(!v[q])v[q]=[];v[q][J]={t:"z"}}else v[pt(J)+ut(q)]={t:"z"}}}}S=z+1}else++S}else{g=Ep(f[0]);if(g.Index)S=+g.Index-1;if(SC.e.c)C.e.c=S;if(f[0].slice(-2)==="/>")++S;L=[]}break;case"row":if(f[1]==="/"||f[0].slice(-2)==="/>"){if(BC.e.r)C.e.r=B;if(f[0].slice(-2)==="/>"){w=kp(f[0]);if(w.Index)B=+w.Index-1}S=0;++B}else{w=kp(f[0]);if(w.Index)B=+w.Index-1;G={};if(w.AutoFitHeight=="0"||w.Height){G.hpx=parseInt(w.Height,10);G.hpt=Al(G.hpx);X[B]=G}if(w.Hidden=="1"){G.hidden=true;X[B]=G}}break;case"worksheet":if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"));h.push(p);if(C.s.r<=C.e.r&&C.s.c<=C.e.c){v["!ref"]=St(C);if(t.sheetRows&&t.sheetRows<=C.e.r){v["!fullref"]=v["!ref"];C.e.r=t.sheetRows-1;v["!ref"]=St(C)}}if(A.length)v["!merges"]=A;if(U.length>0)v["!cols"]=U;if(X.length>0)v["!rows"]=X;u[p]=v}else{C={s:{r:2e6,c:2e6},e:{r:0,c:0}};B=S=0;l.push([f[3],false]);o=kp(f[0]);p=We(o.Name);v=t.dense?[]:{};A=[];V=[];X=[];K={name:p,Hidden:0};$.Sheets.push(K)}break;case"table":if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"))}else if(f[0].slice(-2)=="/>")break;else{b=kp(f[0]);l.push([f[3],false]);U=[];H=false}break;case"style":if(f[1]==="/")yp(y,T,t);else T=kp(f[0]);break;case"numberformat":T.nf=We(kp(f[0]).Format||"General");if(N[T.nf])T.nf=N[T.nf];for(var Q=0;Q!=392;++Q)if(P._table[Q]==T.nf)break;if(Q==392)for(Q=57;Q!=392;++Q)if(P._table[Q]==null){P.load(T.nf,Q);break}break;case"column":if(l[l.length-1][0]!=="table")break;W=kp(f[0]);if(W.Hidden){W.hidden=true;delete W.Hidden}if(W.Width)W.wpx=parseInt(W.Width,10);if(!H&&W.wpx>10){H=true;kl=bl;for(var Z=0;Z0)te.Sheet=$.Sheets.length-1;$.Names.push(te);break;case"namedcell":break;case"b":break;case"i":break;case"u":break;case"s":break;case"em":break;case"h2":break;case"h3":break;case"sub":break;case"sup":break;case"span":break;case"alignment":break;case"borders":break;case"border":break;case"font":if(f[0].slice(-2)==="/>")break;else if(f[1]==="/")_+=a.slice(x,f.index);else x=f.index+f[0].length;break;case"interior":if(!t.cellStyles)break;T.Interior=kp(f[0]);break;case"protection":break;case"author":;case"title":;case"description":;case"created":;case"keywords":;case"subject":;case"category":;case"company":;case"lastauthor":;case"lastsaved":;case"lastprinted":;case"version":;case"revision":;case"totaltime":;case"hyperlinkbase":;case"manager":;case"contentstatus":;case"identifier":;case"language":;case"appname":if(f[0].slice(-2)==="/>")break;else if(f[1]==="/")En(R,Y,a.slice(I,f.index));else I=f.index+f[0].length;break;case"paragraphs":break;case"styles":;case"workbook":if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"))}else l.push([f[3],false]);break;case"comment":if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"));_p(M);L.push(M)}else{l.push([f[3],false]);o=kp(f[0]);M={a:o.Author}}break;case"autofilter":if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"))}else if(f[0].charAt(f[0].length-2)!=="/"){var ae=kp(f[0]);v["!autofilter"]={ref:oc(ae.Range).replace(/\$/g,"")};l.push([f[3],true])}break;case"name":break;case"datavalidation":if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"))}else{if(f[0].charAt(f[0].length-2)!=="/")l.push([f[3],true])}break;case"pixelsperinch":break;case"componentoptions":;case"documentproperties":;case"customdocumentproperties":;case"officedocumentsettings":;case"pivottable":;case"pivotcache":;case"names":;case"mapinfo":;case"pagebreaks":;case"querytable":;case"sorting":;case"schema":;case"conditionalformatting":;case"smarttagtype":;case"smarttags":;case"excelworkbook":;case"workbookoptions":;case"worksheetoptions":if(f[1]==="/"){if((o=l.pop())[0]!==f[3])throw new Error("Bad state: "+o.join("|"))}else if(f[0].charAt(f[0].length-2)!=="/")l.push([f[3],true]);break;case"null":break;default:if(l.length==0&&f[3]=="document")return Dm(a,t);if(l.length==0&&f[3]=="uof")return Dm(a,t);var ne=true;switch(l[l.length-1][0]){case"officedocumentsettings":switch(f[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"targetscreensize":break;case"readonlyrecommended":break;default:ne=false;}break;case"componentoptions":switch(f[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:ne=false;}break;case"excelworkbook":switch(f[3]){case"date1904":$.WBProps.date1904=true;break;case"windowheight":break;case"windowwidth":break;case"windowtopx":break;case"windowtopy":break;case"tabratio":break;case"protectstructure":break;case"protectwindow":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"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:ne=false;}break;case"workbookoptions":switch(f[3]){case"owcversion":break;case"height":break;case"width":break;default:ne=false;}break;case"worksheetoptions":switch(f[3]){case"visible":if(f[0].slice(-2)==="/>"){}else if(f[1]==="/")switch(a.slice(I,f.index)){case"SheetHidden":K.Hidden=1;break;case"SheetVeryHidden":K.Hidden=2;break;}else I=f.index+f[0].length;break;case"header":if(!v["!margins"])bh(v["!margins"]={},"xlml");if(!isNaN(+Ne(f[0]).Margin))v["!margins"].header=+Ne(f[0]).Margin;break;case"footer":if(!v["!margins"])bh(v["!margins"]={},"xlml");if(!isNaN(+Ne(f[0]).Margin))v["!margins"].footer=+Ne(f[0]).Margin;break;case"pagemargins":var ie=Ne(f[0]);if(!v["!margins"])bh(v["!margins"]={},"xlml");if(!isNaN(+ie.Top))v["!margins"].top=+ie.Top;if(!isNaN(+ie.Left))v["!margins"].left=+ie.Left;if(!isNaN(+ie.Right))v["!margins"].right=+ie.Right;if(!isNaN(+ie.Bottom))v["!margins"].bottom=+ie.Bottom;break;case"displayrighttoleft":if(!$.Views)$.Views=[];if(!$.Views[0])$.Views[0]={};$.Views[0].RTL=true;break;case"freezepanes":break;case"frozennosplit":break;case"splithorizontal":;case"splitvertical":break;case"donotdisplaygridlines":break;case"activerow":break;case"activecol":break;case"toprowbottompane":break;case"leftcolumnrightpane":break;case"unsynced":break;case"print":break;case"printerrors":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"activepane":break;case"toprowvisible":break;case"leftcolumnvisible":break;case"fittopage":break;case"rangeselection":break;case"papersizeindex":break;case"pagelayoutzoom":break;case"pagebreakzoom":break;case"filteron":break;case"fitwidth":break;case"fitheight":break;case"commentslayout":break;case"zoom":break;case"lefttoright":break;case"gridlines":break;case"allowsort":break;case"allowfilter":break;case"allowinsertrows": -break;case"allowdeleterows":break;case"allowinsertcols":break;case"allowdeletecols":break;case"allowinserthyperlinks":break;case"allowformatcells":break;case"allowsizecols":break;case"allowsizerows":break;case"nosummaryrowsbelowdetail":if(!v["!outline"])v["!outline"]={};v["!outline"].above=true;break;case"tabcolorindex":break;case"donotdisplayheadings":break;case"showpagelayoutzoom":break;case"nosummarycolumnsrightdetail":if(!v["!outline"])v["!outline"]={};v["!outline"].left=true;break;case"blackandwhite":break;case"donotdisplayzeros":break;case"displaypagebreak":break;case"rowcolheadings":break;case"donotdisplayoutline":break;case"noorientation":break;case"allowusepivottables":break;case"zeroheight":break;case"viewablerange":break;case"selection":break;case"protectcontents":break;default:ne=false;}break;case"pivottable":;case"pivotcache":switch(f[3]){case"immediateitemsondrop":break;case"showpagemultipleitemlabel":break;case"compactrowindent":break;case"location":break;case"pivotfield":break;case"orientation":break;case"layoutform":break;case"layoutsubtotallocation":break;case"layoutcompactrow":break;case"position":break;case"pivotitem":break;case"datatype":break;case"datafield":break;case"sourcename":break;case"parentfield":break;case"ptlineitems":break;case"ptlineitem":break;case"countofsameitems":break;case"item":break;case"itemtype":break;case"ptsource":break;case"cacheindex":break;case"consolidationreference":break;case"filename":break;case"reference":break;case"nocolumngrand":break;case"norowgrand":break;case"blanklineafteritems":break;case"hidden":break;case"subtotal":break;case"basefield":break;case"mapchilditems":break;case"function":break;case"refreshonfileopen":break;case"printsettitles":break;case"mergelabels":break;case"defaultversion":break;case"refreshname":break;case"refreshdate":break;case"refreshdatecopy":break;case"versionlastrefresh":break;case"versionlastupdate":break;case"versionupdateablemin":break;case"versionrefreshablemin":break;case"calculation":break;default:ne=false;}break;case"pagebreaks":switch(f[3]){case"colbreaks":break;case"colbreak":break;case"rowbreaks":break;case"rowbreak":break;case"colstart":break;case"colend":break;case"rowend":break;default:ne=false;}break;case"autofilter":switch(f[3]){case"autofiltercolumn":break;case"autofiltercondition":break;case"autofilterand":break;case"autofilteror":break;default:ne=false;}break;case"querytable":switch(f[3]){case"id":break;case"autoformatfont":break;case"autoformatpattern":break;case"querysource":break;case"querytype":break;case"enableredirections":break;case"refreshedinxl9":break;case"urlstring":break;case"htmltables":break;case"connection":break;case"commandtext":break;case"refreshinfo":break;case"notitles":break;case"nextid":break;case"columninfo":break;case"overwritecells":break;case"donotpromptforfile":break;case"textwizardsettings":break;case"source":break;case"number":break;case"decimal":break;case"thousandseparator":break;case"trailingminusnumbers":break;case"formatsettings":break;case"fieldtype":break;case"delimiters":break;case"tab":break;case"comma":break;case"autoformatname":break;case"versionlastedit":break;case"versionlastrefresh":break;default:ne=false;}break;case"datavalidation":switch(f[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;case"cellrangelist":break;default:ne=false;}break;case"sorting":;case"conditionalformatting":switch(f[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"cellrangelist":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;default:ne=false;}break;case"mapinfo":;case"schema":;case"data":switch(f[3]){case"map":break;case"entry":break;case"range":break;case"xpath":break;case"field":break;case"xsdtype":break;case"filteron":break;case"aggregate":break;case"elementtype":break;case"attributetype":break;case"schema":;case"element":;case"complextype":;case"datatype":;case"all":;case"attribute":;case"extends":break;case"row":break;default:ne=false;}break;case"smarttags":break;default:ne=false;break;}if(ne)break;if(f[3].match(/!\[CDATA/))break;if(!l[l.length-1][1])throw"Unrecognized tag: "+f[3]+"|"+l.join("|");if(l[l.length-1][0]==="customdocumentproperties"){if(f[0].slice(-2)==="/>")break;else if(f[1]==="/")Bp(F,Y,D,a.slice(I,f.index));else{D=f;I=f.index+f[0].length}break}if(t.WTF)throw"Unrecognized tag: "+f[3]+"|"+l.join("|");}var se={};if(!t.bookSheets&&!t.bookProps)se.Sheets=u;se.SheetNames=h;se.Workbook=$;se.SSF=P.get_table();se.Props=R;se.Custprops=F;return se}function Fp(e,r){Um(r=r||{});switch(r.type||"base64"){case"base64":return Rp(g.decode(e),r);case"binary":;case"buffer":;case"file":return Rp(e,r);case"array":return Rp(_(e),r);}}function Ip(e,r){var t=[];if(e.Props)t.push(Sn(e.Props,r));if(e.Custprops)t.push(Bn(e.Props,e.Custprops,r));return t.join("")}function Dp(){return""}function Pp(e,r){var t=[''];r.cellXfs.forEach(function(e,r){var a=[];a.push(ur("NumberFormat",null,{"ss:Format":Xe(P._table[e.numFmtId])}));var n={"ss:ID":"s"+(21+r)};t.push(ur("Style",a.join(""),n))});return ur("Styles",t.join(""))}function Op(e){return ur("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+uc(e.Ref,{r:0,c:0})})}function Np(e){if(!((e||{}).Workbook||{}).Names)return"";var r=e.Workbook.Names;var t=[];for(var a=0;a");if(e["!margins"].header)n.push(ur("Header",null,{"x:Margin":e["!margins"].header}));if(e["!margins"].footer)n.push(ur("Footer",null,{"x:Margin":e["!margins"].footer}));n.push(ur("PageMargins",null,{"x:Bottom":e["!margins"].bottom||"0.75","x:Left":e["!margins"].left||"0.7","x:Right":e["!margins"].right||"0.7","x:Top":e["!margins"].top||"0.75"}));n.push("")}if(a&&a.Workbook&&a.Workbook.Sheets&&a.Workbook.Sheets[t]){if(a.Workbook.Sheets[t].Hidden)n.push(ur("Visible",a.Workbook.Sheets[t].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var i=0;i")}}if(((((a||{}).Workbook||{}).Views||[])[0]||{}).RTL)n.push("");if(e["!protect"]){n.push(or("ProtectContents","True"));if(e["!protect"].objects)n.push(or("ProtectObjects","True"));if(e["!protect"].scenarios)n.push(or("ProtectScenarios","True"));if(e["!protect"].selectLockedCells!=null&&!e["!protect"].selectLockedCells)n.push(or("EnableSelection","NoSelection"));else if(e["!protect"].selectUnlockedCells!=null&&!e["!protect"].selectUnlockedCells)n.push(or("EnableSelection","UnlockedCells"));[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(r){if(e["!protect"][r[0]])n.push("<"+r[1]+"/>")})}if(n.length==0)return"";return ur("WorksheetOptions",n.join(""),{xmlns:pr.x})}function Up(e){return e.map(function(e){var r=Ye(e.t||"");var t=ur("ss:Data",r,{xmlns:"http://www.w3.org/TR/REC-html40"});return ur("Comment",t,{"ss:Author":e.a})}).join("")}function Wp(e,r,t,a,n,i,s){if(!e||e.v==undefined&&e.f==undefined)return"";var f={};if(e.f)f["ss:Formula"]="="+Xe(uc(e.f,s));if(e.F&&e.F.slice(0,r.length)==r){var l=wt(e.F.slice(r.length+1));f["ss:ArrayRange"]="RC:R"+(l.r==s.r?"":"["+(l.r-s.r)+"]")+"C"+(l.c==s.c?"":"["+(l.c-s.c)+"]")}if(e.l&&e.l.Target){f["ss:HRef"]=Xe(e.l.Target);if(e.l.Tooltip)f["x:HRefScreenTip"]=Xe(e.l.Tooltip)}if(t["!merges"]){var o=t["!merges"];for(var c=0;c!=o.length;++c){if(o[c].s.c!=s.c||o[c].s.r!=s.r)continue;if(o[c].e.c>o[c].s.c)f["ss:MergeAcross"]=o[c].e.c-o[c].s.c;if(o[c].e.r>o[c].s.r)f["ss:MergeDown"]=o[c].e.r-o[c].s.r}}var u="",h="";switch(e.t){case"z":if(!a.sheetStubs)return"";break;case"n":u="Number";h=String(e.v);break;case"b":u="Boolean";h=e.v?"1":"0";break;case"e":u="Error";h=Ia[e.v];break;case"d":u="DateTime";h=new Date(e.v).toISOString();if(e.z==null)e.z=e.z||P._table[14];break;case"s":u="String";h=$e(e.v||"");break;}var d=gh(a.cellXfs,e,a);f["ss:StyleID"]="s"+(21+d);f["ss:Index"]=s.c+1;var v=e.v!=null?h:"";var p=e.t=="z"?"":''+v+"";if((e.c||[]).length>0)p+=Up(e.c);return ur("Cell",p,f)}function Hp(e,r){var t='"}function Vp(e,r,t,a){if(!e["!ref"])return"";var n=Bt(e["!ref"]);var i=e["!merges"]||[],s=0;var f=[];if(e["!cols"])e["!cols"].forEach(function(e,r){Tl(e);var t=!!e.width;var a=mh(r,e);var n={"ss:Index":r+1};if(t)n["ss:Width"]=El(a.width);if(e.hidden)n["ss:Hidden"]="1";f.push(ur("Column",null,n))});var l=Array.isArray(e);for(var o=n.s.r;o<=n.e.r;++o){var c=[Hp(o,(e["!rows"]||[])[o])];for(var u=n.s.c;u<=n.e.c;++u){var h=false;for(s=0;s!=i.length;++s){if(i[s].s.c>u)continue;if(i[s].s.r>o)continue;if(i[s].e.c");if(c.length>2)f.push(c.join(""))}return f.join("")}function Xp(e,r,t){var a=[];var n=t.SheetNames[e];var i=t.Sheets[n];var s=i?Lp(i,r,e,t):"";if(s.length>0)a.push(""+s+"");s=i?Vp(i,r,e,t):"";if(s.length>0)a.push(""+s+"
");a.push(Mp(i,r,e,t));return a.join("")}function Gp(e,r){if(!r)r={};if(!e.SSF)e.SSF=P.get_table();if(e.SSF){O(P);P.load_table(e.SSF);r.revssf=Q(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF;r.cellXfs=[];gh(r.cellXfs,{},{revssf:{General:0}})}var t=[];t.push(Ip(e,r));t.push(Dp(e,r));t.push("");t.push("");for(var a=0;a40)return r;t.l-=4;r.Reserved1=t._R(0,"lpstr-ansi");if(t.length-t.l<=4)return r;a=t._R(4);if(a!==1907505652)return r;r.UnicodeClipboardFormat=oa(t);a=t._R(4);if(a==0||a>40)return r;t.l-=4;r.Reserved2=t._R(0,"lpwstr")}function jp(e,r,t,a){var n=t;var i=[];var s=r.slice(r.l,r.l+n);if(a&&a.enc&&a.enc.insitu&&s.length>0)switch(e.n){case"BOF":;case"FilePass":;case"FileLock":;case"InterfaceHdr":;case"RRDInfo":;case"RRDHead":;case"UsrExcl":;case"EOF":break;case"BoundSheet8":break;default:a.enc.insitu(s);}i.push(s);r.l+=n;var f=nm[Hr(r,r.l)];var l=0;while(f!=null&&f.n.slice(0,8)==="Continue"){n=Hr(r,r.l+2);l=r.l+4;if(f.n=="ContinueFrt")l+=4;else if(f.n.slice(0,11)=="ContinueFrt"){l+=12}s=r.slice(l,r.l+4+n);i.push(s);r.l+=4+n;f=nm[Hr(r,r.l)]}var o=F(i);Qr(o,0);var c=0;o.lens=[];for(var u=0;u1)return;if(t.sheetRows&&e.r>=t.sheetRows)return;if(t.cellStyles&&r.XF&&r.XF.data)x(e,r,t);delete r.ixfe;delete r.XF;h=e;d=kt(e);if(!s||!s.s||!s.e)s={s:{r:0,c:0},e:{r:0,c:0}};if(e.rs.e.r)s.e.r=e.r+1;if(e.c+1>s.e.c)s.e.c=e.c+1;if(t.cellFormula&&r.f){for(var a=0;ae.c||k[a][0].s.r>e.r)continue;if(k[a][0].e.c>8)!==J)throw new Error("rt mismatch: "+Z+"!="+J);if(Q.r==12){e.l+=10;q-=10}}var ee={};if(Q.n==="EOF")ee=Q.f(e,q,R);else ee=jp(Q,e,q,R);var re=Q.n;if(V==0&&re!="BOF")continue;switch(re){case"Date1904":t.opts.Date1904=y.WBProps.date1904=ee;break;case"WriteProtect":t.opts.WriteProtect=true;break;case"FilePass":if(!R.enc)e.l=0;R.enc=ee;if(!r.password)throw new Error("File is password-protected");if(ee.valid==null)throw new Error("Encryption scheme unsupported");if(!ee.valid)throw new Error("Password is incorrect");break;case"WriteAccess":R.lastuser=ee;break;case"FileSharing":break;case"CodePage":var te=Number(ee);switch(te){case 21010:te=1200;break;case 32768:te=1e4;break;case 32769:te=1252;break;}l(R.codepage=te);$=true;break;case"RRTabId":R.rrtabid=ee;break;case"WinProtect":R.winlocked=ee;break;case"Template":break;case"BookBool":break;case"UsesELFs":break;case"MTRSettings":break;case"RefreshAll":;case"CalcCount":;case"CalcDelta":;case"CalcIter":;case"CalcMode":;case"CalcPrecision":;case"CalcSaveRecalc":t.opts[re]=ee;break;case"CalcRefMode":R.CalcRefMode=ee;break;case"Uncalced":break;case"ForceFullCalculation":t.opts.FullCalc=ee;break;case"WsBool":if(ee.fDialog)n["!type"]="dialog";if(!ee.fBelow)(n["!outline"]||(n["!outline"]={})).above=true;if(!ee.fRight)(n["!outline"]||(n["!outline"]={})).left=true;break;case"XF":B.push(ee);break;case"ExtSST":break;case"BookExt":break;case"RichTextStream":break;case"BkHim":break;case"SupBook":W.push([ee]);W[W.length-1].XTI=[];break;case"ExternName":W[W.length-1].push(ee);break;case"Index":break;case"Lbl":j={Name:ee.Name,Ref:zu(ee.rgce,s,null,W,R)};if(ee.itab>0)j.Sheet=ee.itab-1;W.names.push(j);if(!W[0]){W[0]=[];W[0].XTI=[]}W[W.length-1].push(ee);if(ee.Name=="_xlnm._FilterDatabase"&&ee.itab>0)if(ee.rgce&&ee.rgce[0]&&ee.rgce[0][0]&&ee.rgce[0][0][0]=="PtgArea3d")z[ee.itab-1]={ref:St(ee.rgce[0][0][1][2])};break;case"ExternCount":R.ExternCount=ee;break;case"ExternSheet":if(W.length==0){W[0]=[];W[0].XTI=[]}W[W.length-1].XTI=W[W.length-1].XTI.concat(ee);W.XTI=W.XTI.concat(ee);break;case"NameCmt":if(R.biff<8)break;if(j!=null)j.Comment=ee[1];break;case"Protect":n["!protect"]=ee;break;case"Password":if(ee!==0&&R.WTF)console.error("Password verifier: "+ee);break;case"Prot4Rev":;case"Prot4RevPass":break;case"BoundSheet8":{i[ee.pos]=ee;R.snames.push(ee.name)}break;case"EOF":{if(--V)break;if(s.e){if(s.e.r>0&&s.e.c>0){s.e.r--;s.e.c--;n["!ref"]=St(s);if(r.sheetRows&&r.sheetRows<=s.e.r){var ae=s.e.r;s.e.r=r.sheetRows-1;n["!fullref"]=n["!ref"];n["!ref"]=St(s);s.e.r=ae}s.e.r++;s.e.c++}if(I.length>0)n["!merges"]=I;if(D.length>0)n["!objects"]=D;if(O.length>0)n["!cols"]=O;if(N.length>0)n["!rows"]=N;y.Sheets.push(T)}if(c==="")u=n;else a[c]=n;n=r.dense?[]:{}}break;case"BOF":{if(R.biff===8)R.biff={9:2,521:3,1033:4}[J]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[ee.BIFFVer]||8;R.biffguess=ee.BIFFVer==0;if(ee.BIFFVer==0&&ee.dt==4096){R.biff=5;$=true;l(R.codepage=28591)}if(R.biff==8&&ee.BIFFVer==0&&ee.dt==16)R.biff=2;if(V++)break;n=r.dense?[]:{};if(R.biff<8&&!$){$=true;l(R.codepage=r.codepage||1252)}if(R.biff<5||ee.BIFFVer==0&&ee.dt==4096){if(c==="")c="Sheet1";s={s:{r:0,c:0},e:{r:0,c:0}};var ne={pos:e.l-q,name:c};i[ne.pos]=ne;R.snames.push(c)}else c=(i[K]||{name:""}).name;if(ee.dt==32)n["!type"]="chart";if(ee.dt==64)n["!type"]="macro";I=[];D=[];R.arrayf=k=[];O=[];N=[];L=M=0;U=false;T={Hidden:(i[K]||{hs:0}).hs,name:c}}break;case"Number":;case"BIFF2NUM":;case"BIFF2INT":{if(n["!type"]=="chart")if(r.dense?(n[ee.r]||[])[ee.c]:n[kt({c:ee.c,r:ee.r})])++ee.c;E={ixfe:ee.ixfe,XF:B[ee.ixfe]||{},v:ee.val,t:"n"};if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:ee.c,r:ee.r},E,r)}break;case"BoolErr":{E={ixfe:ee.ixfe,XF:B[ee.ixfe],v:ee.val,t:ee.t};if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:ee.c,r:ee.r},E,r)}break;case"RK":{E={ixfe:ee.ixfe,XF:B[ee.ixfe],v:ee.rknum,t:"n"};if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:ee.c,r:ee.r},E,r)}break;case"MulRk":{for(var ie=ee.c;ie<=ee.C;++ie){var se=ee.rkrec[ie-ee.c][0];E={ixfe:se,XF:B[se],v:ee.rkrec[ie-ee.c][1],t:"n"};if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:ie,r:ee.r},E,r)}}break;case"Formula":{if(ee.val=="String"){f=ee;break}E=Kp(ee.val,ee.cell.ixfe,ee.tt);E.XF=B[E.ixfe];if(r.cellFormula){var fe=ee.formula;if(fe&&fe[0]&&fe[0][0]&&fe[0][0][0]=="PtgExp"){var le=fe[0][0][1][0],oe=fe[0][0][1][1];var ce=kt({r:le,c:oe});if(w[ce])E.f=""+zu(ee.formula,s,ee.cell,W,R);else E.F=((r.dense?(n[le]||[])[oe]:n[ce])||{}).F}else E.f=""+zu(ee.formula,s,ee.cell,W,R)}if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A(ee.cell,E,r);f=ee}break;case"String":{if(f){f.val=ee;E=Kp(ee,f.cell.ixfe,"s");E.XF=B[E.ixfe];if(r.cellFormula){E.f=""+zu(f.formula,s,f.cell,W,R)}if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A(f.cell,E,r);f=null}else throw new Error("String record expects Formula")}break;case"Array":{k.push(ee);var ue=kt(ee[0].s);v=r.dense?(n[ee[0].s.r]||[])[ee[0].s.c]:n[ue];if(r.cellFormula&&v){if(!f)break;if(!ue||!v)break;v.f=""+zu(ee[1],s,ee[0],W,R);v.F=St(ee[0])}}break;case"ShrFmla":{if(!r.cellFormula)break;if(d){if(!f)break;w[kt(f.cell)]=ee[0];v=r.dense?(n[f.cell.r]||[])[f.cell.c]:n[kt(f.cell)];(v||{}).f=""+zu(ee[0],s,h,W,R)}}break;case"LabelSst":E=Kp(o[ee.isst].t,ee.ixfe,"s");if(o[ee.isst].h)E.h=o[ee.isst].h;E.XF=B[E.ixfe];if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:ee.c,r:ee.r},E,r);break;case"Blank":if(r.sheetStubs){E={ixfe:ee.ixfe,XF:B[ee.ixfe],t:"z"};if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:ee.c,r:ee.r},E,r)}break;case"MulBlank":if(r.sheetStubs){for(var he=ee.c;he<=ee.C;++he){var de=ee.ixfe[he-ee.c];E={ixfe:de,XF:B[de],t:"z"};if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:he,r:ee.r},E,r)}}break;case"RString":;case"Label":;case"BIFF2STR":E=Kp(ee.val,ee.ixfe,"s");E.XF=B[E.ixfe];if(X>0)E.z=G[E.ixfe>>8&63];$p(E,r,t.opts.Date1904);A({c:ee.c,r:ee.r},E,r);break;case"Dimensions":{if(V===1)s=ee}break;case"SST":{o=ee}break;case"Format":{if(R.biff==4){G[X++]=ee[1];for(var ve=0;ve=163)P.load(ee[1],X+163)}else P.load(ee[1],ee[0])}break;case"BIFF2FORMAT":{G[X++]=ee;for(var pe=0;pe=163)P.load(ee,X+163)}break;case"MergeCells":I=I.concat(ee);break;case"Obj":D[ee.cmo[0]]=R.lastobj=ee;break;case"TxO":R.lastobj.TxO=ee;break;case"ImData":R.lastobj.ImData=ee;break;case"HLink":{for(g=ee[0].s.r;g<=ee[0].e.r;++g)for(b=ee[0].s.c;b<=ee[0].e.c;++b){v=r.dense?(n[g]||[])[b]:n[kt({c:b,r:g})];if(v)v.l=ee[1]}}break;case"HLinkTooltip":{for(g=ee[0].s.r;g<=ee[0].e.r;++g)for(b=ee[0].s.c;b<=ee[0].e.c;++b){v=r.dense?(n[g]||[])[b]:n[kt({c:b,r:g})];if(v&&v.l)v.l.Tooltip=ee[1]}}break;case"Note":{if(R.biff<=5&&R.biff>=2)break;v=r.dense?(n[ee[0].r]||[])[ee[0].c]:n[kt(ee[0])];var me=D[ee[2]];if(!v){if(r.dense){if(!n[ee[0].r])n[ee[0].r]=[];v=n[ee[0].r][ee[0].c]={t:"z"}}else{v=n[kt(ee[0])]={t:"z"}}s.e.r=Math.max(s.e.r,ee[0].r);s.s.r=Math.min(s.s.r,ee[0].r);s.e.c=Math.max(s.e.c,ee[0].c);s.s.c=Math.min(s.s.c,ee[0].c)}if(!v.c)v.c=[];p={a:ee[1],t:me.TxO.t};v.c.push(p)}break;default:switch(Q.n){case"ClrtClient":break;case"XFExt":No(B[ee.ixfe],ee.ext);break;case"DefColWidth":L=ee;break;case"DefaultRowHeight":M=ee[1];break;case"ColInfo":{if(!R.cellStyles)break;while(ee.e>=ee.s){O[ee.e--]={width:ee.w/256,level:ee.level||0,hidden:!!(ee.flags&1)};if(!U){U=true;yl(ee.w/256)}Tl(O[ee.e+1])}}break;case"Row":{var be={};if(ee.level!=null){N[ee.r]=be;be.level=ee.level}if(ee.hidden){N[ee.r]=be;be.hidden=true}if(ee.hpt){N[ee.r]=be;be.hpt=ee.hpt;be.hpx=Rl(ee.hpt)}}break;case"LeftMargin":;case"RightMargin":;case"TopMargin":;case"BottomMargin":if(!n["!margins"])bh(n["!margins"]={});n["!margins"][re.slice(0,-6).toLowerCase()]=ee;break;case"Selection":break;case"Setup":if(!n["!margins"])bh(n["!margins"]={});n["!margins"].header=ee.header;n["!margins"].footer=ee.footer;break;case"Window2":if(ee.RTL)y.Views[0].RTL=true;break;case"Header":break;case"Footer":break;case"HCenter":break;case"VCenter":break;case"Pls":break;case"GCW":break;case"LHRecord":break;case"DBCell":break;case"EntExU2":break;case"SxView":break;case"Sxvd":break;case"SXVI":break;case"SXVDEx":break;case"SxIvd":break;case"SXString":break;case"Sync":break;case"Addin":break;case"SXDI":break;case"SXLI":break;case"SXEx":break;case"QsiSXTag":break;case"Feat":break;case"FeatHdr":;case"FeatHdr11":break;case"Feature11":;case"Feature12":;case"List12":break;case"Country":S=ee;break;case"RecalcId":break;case"DxGCol":break;case"Fbi":;case"Fbi2":;case"GelFrame":break;case"Font":break;case"XFCRC":break;case"Style":break;case"StyleExt":break;case"Palette":C=ee;break;case"Theme":F=ee;break;case"ScenarioProtect":break;case"ObjProtect":break;case"CondFmt12":break;case"Table":break;case"TableStyles":break;case"TableStyle":break;case"TableStyleElement":break;case"SXStreamID":break;case"SXVS":break;case"DConRef":break;case"SXAddl":break;case"DConBin":break;case"DConName":break;case"SXPI":break;case"SxFormat":break;case"SxSelect":break;case"SxRule":break;case"SxFilt":break;case"SxItm":break;case"SxDXF":break;case"ScenMan":break;case"DCon":break;case"CellWatch":break;case"PrintRowCol":break;case"PrintGrid":break;case"PrintSize":break;case"XCT":break;case"CRN":break;case"Scl":{}break;case"SheetExt":{}break;case"SheetExtOptional":{}break;case"ObNoMacros":{}break;case"ObProj":{}break;case"CodeName":{if(!c)y.WBProps.CodeName=ee||"ThisWorkbook";else T.CodeName=ee||T.name}break;case"GUIDTypeLib":{}break;case"WOpt":break;case"PhoneticInfo":break;case"OleObjectSize":break;case"DXF":;case"DXFN":;case"DXFN12":;case"DXFN12List":;case"DXFN12NoCB":break;case"Dv":;case"DVal":break;case"BRAI":;case"Series":;case"SeriesText":break;case"DConn":break;case"DbOrParamQry":break;case"DBQueryExt":break;case"OleDbConn":break;case"ExtString":break;case"IFmtRecord":break;case"CondFmt":;case"CF":;case"CF12":;case"CFEx":break;case"Excel9File":break;case"Units":break;case"InterfaceHdr":;case"Mms":;case"InterfaceEnd":;case"DSF":break;case"BuiltInFnGroupCount":break;case"Window1":;case"HideObj":;case"GridSet":;case"Guts":;case"UserBView":;case"UserSViewBegin":;case"UserSViewEnd":break;case"Pane":break;default:switch(Q.n){case"Dat":;case"Begin":;case"End":;case"StartBlock":;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(Q.n){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"BIFF2XFINDEX":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;case"LHNGraph":;case"FnGroupName":;case"AddMenu":;case"LPr":break;case"ListObj":;case"ListField":break;case"RRSort":break;case"BigName":break;case"ToolbarHdr":;case"ToolbarEnd":break;case"DDEObjName":break;case"FRTArchId$":break;default:if(r.WTF)throw"Unrecognized Record "+Q.n;};};};}}else e.l+=q}t.SheetNames=Y(i).sort(function(e,r){return Number(e)-Number(r)}).map(function(e){return i[e].name});if(!r.bookSheets)t.Sheets=a;if(!t.SheetNames.length&&u["!ref"]){t.SheetNames.push("Sheet1");if(t.Sheets)t.Sheets["Sheet1"]=u}else t.Preamble=u;if(t.Sheets)z.forEach(function(e,r){t.Sheets[t.SheetNames[r]]["!autofilter"]=e});t.Strings=o;t.SSF=P.get_table();if(R.enc)t.Encryption=R.enc;if(F)t.Themes=F;t.Metadata={};if(S!==undefined)t.Metadata.Country=S;if(W.names.length>0)y.Names=W.names;t.Workbook=y;return t}var Jp={SI:"e0859ff2f94f6810ab9108002b27b3d9",DSI:"02d5cdd59c2e1b10939708002b2cf9ae",UDI:"05d5cdd59c2e1b10939708002b2cf9ae"};function qp(e,r,t){var a=X.find(e,"/!DocumentSummaryInformation");if(a&&a.size>0)try{var n=Gn(a,Ba,Jp.DSI);for(var i in n)r[i]=n[i]}catch(s){if(t.WTF)throw s}var f=X.find(e,"/!SummaryInformation");if(f&&f.size>0)try{var l=Gn(f,Ca,Jp.SI);for(var o in l)if(r[o]==null)r[o]=l[o]}catch(s){if(t.WTF)throw s}if(r.HeadingPairs&&r.TitlesOfParts){un(r.HeadingPairs,r.TitlesOfParts,r,t);delete r.HeadingPairs;delete r.TitlesOfParts}}function Qp(e,r){var t=[],a=[],n=[];var i=0,s;if(e.Props){s=Y(e.Props);for(i=0;i-1)continue;if(n[i][1]==null)continue;f.push(n[i])}if(a.length)X.utils.cfb_add(r,"/SummaryInformation",zn(a,Jp.SI,Ta,Ca));if(t.length||f.length)X.utils.cfb_add(r,"/DocumentSummaryInformation",zn(t,Jp.DSI,ya,Ba,f.length?f:null,Jp.UDI))}function Zp(e,r){if(!r)r={};Um(r);o();if(r.codepage)s(r.codepage);var t,a;if(e.FullPaths){if(X.find(e,"/encryption"))throw new Error("File is password-protected");t=X.find(e,"!CompObj");a=X.find(e,"/Workbook")||X.find(e,"/Book")}else{switch(r.type){case"base64":e=y(g.decode(e));break;case"binary":e=y(e);break;case"buffer":break;case"array":if(!Array.isArray(e))e=Array.prototype.slice.call(e);break;}Qr(e,0);a={content:e}}var n;var i;if(t)zp(t);if(r.bookProps&&!r.bookSheets)n={};else{var f=w?"buffer":"array";if(a&&a.content)n=Yp(a.content,r);else if((i=X.find(e,"PerfectOffice_MAIN"))&&i.content)n=Bf.to_workbook(i.content,(r.type=f,r));else if((i=X.find(e,"NativeContent_MAIN"))&&i.content)n=Bf.to_workbook(i.content,(r.type=f,r));else if((i=X.find(e,"MN0"))&&i.content)throw new Error("Unsupported Works 4 for Mac file");else throw new Error("Cannot find Workbook stream");if(r.bookVBA&&e.FullPaths&&X.find(e,"/_VBA_PROJECT_CUR/VBA/dir"))n.vbaraw=tc(e)}var l={};if(e.FullPaths)qp(e,l,r);n.Props=n.Custprops=l;if(r.bookFiles)n.cfb=e;return n}function em(e,r){var t=r||{};var a=X.utils.cfb_new({root:"R"});var n="/Workbook";switch(t.bookType||"xls"){case"xls":t.bookType="biff8";case"xla":if(!t.bookType)t.bookType="xla";case"biff8":n="/Workbook";t.biff=8;break;case"biff5":n="/Book";t.biff=5;break;default:throw new Error("invalid type "+t.bookType+" for XLS CFB");}X.utils.cfb_add(a,n,Cm(e,t));if(t.biff==8&&(e.Props||e.Custprops))Qp(e,a);if(t.biff==8&&e.vbaraw)ac(a,X.read(e.vbaraw,{type:typeof e.vbaraw=="string"?"binary":"buffer"}));return a}var rm={0:{n:"BrtRowHdr",f:rd},1:{n:"BrtCellBlank",f:od},2:{n:"BrtCellRk",f:Ad},3:{n:"BrtCellError",f:bd},4:{n:"BrtCellBool",f:dd},5:{n:"BrtCellReal",f:yd},6:{n:"BrtCellSt",f:Pd},7:{n:"BrtCellIsst",f:Ed},8:{n:"BrtFmlaString",f:Hd},9:{n:"BrtFmlaNum",f:Wd},10:{n:"BrtFmlaBool",f:Md},11:{n:"BrtFmlaError",f:Ud},12:{n:"BrtShortBlank",f:ud},13:{n:"BrtShortRk",f:Fd},14:{n:"BrtShortError",f:wd},15:{n:"BrtShortBool",f:pd},16:{n:"BrtShortReal",f:_d},17:{n:"BrtShortSt",f:Nd},18:{n:"BrtShortIsst",f:Bd},19:{n:"BrtSSTItem",f:Pt},20:{n:"BrtPCDIMissing"},21:{n:"BrtPCDINumber"},22:{n:"BrtPCDIBoolean"},23:{n:"BrtPCDIError"},24:{n:"BrtPCDIString"},25:{n:"BrtPCDIDatetime"},26:{n:"BrtPCDIIndex"},27:{n:"BrtPCDIAMissing"},28:{n:"BrtPCDIANumber"},29:{n:"BrtPCDIABoolean"},30:{n:"BrtPCDIAError"},31:{n:"BrtPCDIAString"},32:{n:"BrtPCDIADatetime"},33:{n:"BrtPCRRecord"},34:{n:"BrtPCRRecordDt"},35:{n:"BrtFRTBegin"},36:{n:"BrtFRTEnd"},37:{n:"BrtACBegin" -},38:{n:"BrtACEnd"},39:{n:"BrtName",f:Kv},40:{n:"BrtIndexRowBlock"},42:{n:"BrtIndexBlock"},43:{n:"BrtFont",f:jl},44:{n:"BrtFmt",f:Gl},45:{n:"BrtFill",f:Jl},46:{n:"BrtBorder",f:ro},47:{n:"BrtXF",f:Ql},48:{n:"BrtStyle"},49:{n:"BrtCellMeta"},50:{n:"BrtValueMeta"},51:{n:"BrtMdb"},52:{n:"BrtBeginFmd"},53:{n:"BrtEndFmd"},54:{n:"BrtBeginMdx"},55:{n:"BrtEndMdx"},56:{n:"BrtBeginMdxTuple"},57:{n:"BrtEndMdxTuple"},58:{n:"BrtMdxMbrIstr"},59:{n:"BrtStr"},60:{n:"BrtColInfo",f:Zs},62:{n:"BrtCellRString",f:Dd},63:{n:"BrtCalcChainItem$",f:Mo},64:{n:"BrtDVal",f:nv},65:{n:"BrtSxvcellNum"},66:{n:"BrtSxvcellStr"},67:{n:"BrtSxvcellBool"},68:{n:"BrtSxvcellErr"},69:{n:"BrtSxvcellDate"},70:{n:"BrtSxvcellNil"},128:{n:"BrtFileVersion"},129:{n:"BrtBeginSheet"},130:{n:"BrtEndSheet"},131:{n:"BrtBeginBook",f:Zr,p:0},132:{n:"BrtEndBook"},133:{n:"BrtBeginWsViews"},134:{n:"BrtEndWsViews"},135:{n:"BrtBeginBookViews"},136:{n:"BrtEndBookViews"},137:{n:"BrtBeginWsView",f:ev},138:{n:"BrtEndWsView"},139:{n:"BrtBeginCsViews"},140:{n:"BrtEndCsViews"},141:{n:"BrtBeginCsView"},142:{n:"BrtEndCsView"},143:{n:"BrtBeginBundleShs"},144:{n:"BrtEndBundleShs"},145:{n:"BrtBeginSheetData"},146:{n:"BrtEndSheetData"},147:{n:"BrtWsProp",f:fd},148:{n:"BrtWsDim",f:nd,p:16},151:{n:"BrtPane",f:$d},152:{n:"BrtSel"},153:{n:"BrtWbProp",f:zv},154:{n:"BrtWbFactoid"},155:{n:"BrtFileRecover"},156:{n:"BrtBundleSh",f:Xv},157:{n:"BrtCalcProp"},158:{n:"BrtBookView"},159:{n:"BrtBeginSst",f:Lf},160:{n:"BrtEndSst"},161:{n:"BrtBeginAFilter",f:Zt},162:{n:"BrtEndAFilter"},163:{n:"BrtBeginFilterColumn"},164:{n:"BrtEndFilterColumn"},165:{n:"BrtBeginFilters"},166:{n:"BrtEndFilters"},167:{n:"BrtFilter"},168:{n:"BrtColorFilter"},169:{n:"BrtIconFilter"},170:{n:"BrtTop10Filter"},171:{n:"BrtDynamicFilter"},172:{n:"BrtBeginCustomFilters"},173:{n:"BrtEndCustomFilters"},174:{n:"BrtCustomFilter"},175:{n:"BrtAFilterDateGroupItem"},176:{n:"BrtMergeCell",f:Vd},177:{n:"BrtBeginMergeCells"},178:{n:"BrtEndMergeCells"},179:{n:"BrtBeginPivotCacheDef"},180:{n:"BrtEndPivotCacheDef"},181:{n:"BrtBeginPCDFields"},182:{n:"BrtEndPCDFields"},183:{n:"BrtBeginPCDField"},184:{n:"BrtEndPCDField"},185:{n:"BrtBeginPCDSource"},186:{n:"BrtEndPCDSource"},187:{n:"BrtBeginPCDSRange"},188:{n:"BrtEndPCDSRange"},189:{n:"BrtBeginPCDFAtbl"},190:{n:"BrtEndPCDFAtbl"},191:{n:"BrtBeginPCDIRun"},192:{n:"BrtEndPCDIRun"},193:{n:"BrtBeginPivotCacheRecords"},194:{n:"BrtEndPivotCacheRecords"},195:{n:"BrtBeginPCDHierarchies"},196:{n:"BrtEndPCDHierarchies"},197:{n:"BrtBeginPCDHierarchy"},198:{n:"BrtEndPCDHierarchy"},199:{n:"BrtBeginPCDHFieldsUsage"},200:{n:"BrtEndPCDHFieldsUsage"},201:{n:"BrtBeginExtConnection"},202:{n:"BrtEndExtConnection"},203:{n:"BrtBeginECDbProps"},204:{n:"BrtEndECDbProps"},205:{n:"BrtBeginECOlapProps"},206:{n:"BrtEndECOlapProps"},207:{n:"BrtBeginPCDSConsol"},208:{n:"BrtEndPCDSConsol"},209:{n:"BrtBeginPCDSCPages"},210:{n:"BrtEndPCDSCPages"},211:{n:"BrtBeginPCDSCPage"},212:{n:"BrtEndPCDSCPage"},213:{n:"BrtBeginPCDSCPItem"},214:{n:"BrtEndPCDSCPItem"},215:{n:"BrtBeginPCDSCSets"},216:{n:"BrtEndPCDSCSets"},217:{n:"BrtBeginPCDSCSet"},218:{n:"BrtEndPCDSCSet"},219:{n:"BrtBeginPCDFGroup"},220:{n:"BrtEndPCDFGroup"},221:{n:"BrtBeginPCDFGItems"},222:{n:"BrtEndPCDFGItems"},223:{n:"BrtBeginPCDFGRange"},224:{n:"BrtEndPCDFGRange"},225:{n:"BrtBeginPCDFGDiscrete"},226:{n:"BrtEndPCDFGDiscrete"},227:{n:"BrtBeginPCDSDTupleCache"},228:{n:"BrtEndPCDSDTupleCache"},229:{n:"BrtBeginPCDSDTCEntries"},230:{n:"BrtEndPCDSDTCEntries"},231:{n:"BrtBeginPCDSDTCEMembers"},232:{n:"BrtEndPCDSDTCEMembers"},233:{n:"BrtBeginPCDSDTCEMember"},234:{n:"BrtEndPCDSDTCEMember"},235:{n:"BrtBeginPCDSDTCQueries"},236:{n:"BrtEndPCDSDTCQueries"},237:{n:"BrtBeginPCDSDTCQuery"},238:{n:"BrtEndPCDSDTCQuery"},239:{n:"BrtBeginPCDSDTCSets"},240:{n:"BrtEndPCDSDTCSets"},241:{n:"BrtBeginPCDSDTCSet"},242:{n:"BrtEndPCDSDTCSet"},243:{n:"BrtBeginPCDCalcItems"},244:{n:"BrtEndPCDCalcItems"},245:{n:"BrtBeginPCDCalcItem"},246:{n:"BrtEndPCDCalcItem"},247:{n:"BrtBeginPRule"},248:{n:"BrtEndPRule"},249:{n:"BrtBeginPRFilters"},250:{n:"BrtEndPRFilters"},251:{n:"BrtBeginPRFilter"},252:{n:"BrtEndPRFilter"},253:{n:"BrtBeginPNames"},254:{n:"BrtEndPNames"},255:{n:"BrtBeginPName"},256:{n:"BrtEndPName"},257:{n:"BrtBeginPNPairs"},258:{n:"BrtEndPNPairs"},259:{n:"BrtBeginPNPair"},260:{n:"BrtEndPNPair"},261:{n:"BrtBeginECWebProps"},262:{n:"BrtEndECWebProps"},263:{n:"BrtBeginEcWpTables"},264:{n:"BrtEndECWPTables"},265:{n:"BrtBeginECParams"},266:{n:"BrtEndECParams"},267:{n:"BrtBeginECParam"},268:{n:"BrtEndECParam"},269:{n:"BrtBeginPCDKPIs"},270:{n:"BrtEndPCDKPIs"},271:{n:"BrtBeginPCDKPI"},272:{n:"BrtEndPCDKPI"},273:{n:"BrtBeginDims"},274:{n:"BrtEndDims"},275:{n:"BrtBeginDim"},276:{n:"BrtEndDim"},277:{n:"BrtIndexPartEnd"},278:{n:"BrtBeginStyleSheet"},279:{n:"BrtEndStyleSheet"},280:{n:"BrtBeginSXView"},281:{n:"BrtEndSXVI"},282:{n:"BrtBeginSXVI"},283:{n:"BrtBeginSXVIs"},284:{n:"BrtEndSXVIs"},285:{n:"BrtBeginSXVD"},286:{n:"BrtEndSXVD"},287:{n:"BrtBeginSXVDs"},288:{n:"BrtEndSXVDs"},289:{n:"BrtBeginSXPI"},290:{n:"BrtEndSXPI"},291:{n:"BrtBeginSXPIs"},292:{n:"BrtEndSXPIs"},293:{n:"BrtBeginSXDI"},294:{n:"BrtEndSXDI"},295:{n:"BrtBeginSXDIs"},296:{n:"BrtEndSXDIs"},297:{n:"BrtBeginSXLI"},298:{n:"BrtEndSXLI"},299:{n:"BrtBeginSXLIRws"},300:{n:"BrtEndSXLIRws"},301:{n:"BrtBeginSXLICols"},302:{n:"BrtEndSXLICols"},303:{n:"BrtBeginSXFormat"},304:{n:"BrtEndSXFormat"},305:{n:"BrtBeginSXFormats"},306:{n:"BrtEndSxFormats"},307:{n:"BrtBeginSxSelect"},308:{n:"BrtEndSxSelect"},309:{n:"BrtBeginISXVDRws"},310:{n:"BrtEndISXVDRws"},311:{n:"BrtBeginISXVDCols"},312:{n:"BrtEndISXVDCols"},313:{n:"BrtEndSXLocation"},314:{n:"BrtBeginSXLocation"},315:{n:"BrtEndSXView"},316:{n:"BrtBeginSXTHs"},317:{n:"BrtEndSXTHs"},318:{n:"BrtBeginSXTH"},319:{n:"BrtEndSXTH"},320:{n:"BrtBeginISXTHRws"},321:{n:"BrtEndISXTHRws"},322:{n:"BrtBeginISXTHCols"},323:{n:"BrtEndISXTHCols"},324:{n:"BrtBeginSXTDMPS"},325:{n:"BrtEndSXTDMPs"},326:{n:"BrtBeginSXTDMP"},327:{n:"BrtEndSXTDMP"},328:{n:"BrtBeginSXTHItems"},329:{n:"BrtEndSXTHItems"},330:{n:"BrtBeginSXTHItem"},331:{n:"BrtEndSXTHItem"},332:{n:"BrtBeginMetadata"},333:{n:"BrtEndMetadata"},334:{n:"BrtBeginEsmdtinfo"},335:{n:"BrtMdtinfo"},336:{n:"BrtEndEsmdtinfo"},337:{n:"BrtBeginEsmdb"},338:{n:"BrtEndEsmdb"},339:{n:"BrtBeginEsfmd"},340:{n:"BrtEndEsfmd"},341:{n:"BrtBeginSingleCells"},342:{n:"BrtEndSingleCells"},343:{n:"BrtBeginList"},344:{n:"BrtEndList"},345:{n:"BrtBeginListCols"},346:{n:"BrtEndListCols"},347:{n:"BrtBeginListCol"},348:{n:"BrtEndListCol"},349:{n:"BrtBeginListXmlCPr"},350:{n:"BrtEndListXmlCPr"},351:{n:"BrtListCCFmla"},352:{n:"BrtListTrFmla"},353:{n:"BrtBeginExternals"},354:{n:"BrtEndExternals"},355:{n:"BrtSupBookSrc",f:$t},357:{n:"BrtSupSelf"},358:{n:"BrtSupSame"},359:{n:"BrtSupTabs"},360:{n:"BrtBeginSupBook"},361:{n:"BrtPlaceholderName"},362:{n:"BrtExternSheet",f:Rs},363:{n:"BrtExternTableStart"},364:{n:"BrtExternTableEnd"},366:{n:"BrtExternRowHdr"},367:{n:"BrtExternCellBlank"},368:{n:"BrtExternCellReal"},369:{n:"BrtExternCellBool"},370:{n:"BrtExternCellError"},371:{n:"BrtExternCellString"},372:{n:"BrtBeginEsmdx"},373:{n:"BrtEndEsmdx"},374:{n:"BrtBeginMdxSet"},375:{n:"BrtEndMdxSet"},376:{n:"BrtBeginMdxMbrProp"},377:{n:"BrtEndMdxMbrProp"},378:{n:"BrtBeginMdxKPI"},379:{n:"BrtEndMdxKPI"},380:{n:"BrtBeginEsstr"},381:{n:"BrtEndEsstr"},382:{n:"BrtBeginPRFItem"},383:{n:"BrtEndPRFItem"},384:{n:"BrtBeginPivotCacheIDs"},385:{n:"BrtEndPivotCacheIDs"},386:{n:"BrtBeginPivotCacheID"},387:{n:"BrtEndPivotCacheID"},388:{n:"BrtBeginISXVIs"},389:{n:"BrtEndISXVIs"},390:{n:"BrtBeginColInfos"},391:{n:"BrtEndColInfos"},392:{n:"BrtBeginRwBrk"},393:{n:"BrtEndRwBrk"},394:{n:"BrtBeginColBrk"},395:{n:"BrtEndColBrk"},396:{n:"BrtBrk"},397:{n:"BrtUserBookView"},398:{n:"BrtInfo"},399:{n:"BrtCUsr"},400:{n:"BrtUsr"},401:{n:"BrtBeginUsers"},403:{n:"BrtEOF"},404:{n:"BrtUCR"},405:{n:"BrtRRInsDel"},406:{n:"BrtRREndInsDel"},407:{n:"BrtRRMove"},408:{n:"BrtRREndMove"},409:{n:"BrtRRChgCell"},410:{n:"BrtRREndChgCell"},411:{n:"BrtRRHeader"},412:{n:"BrtRRUserView"},413:{n:"BrtRRRenSheet"},414:{n:"BrtRRInsertSh"},415:{n:"BrtRRDefName"},416:{n:"BrtRRNote"},417:{n:"BrtRRConflict"},418:{n:"BrtRRTQSIF"},419:{n:"BrtRRFormat"},420:{n:"BrtRREndFormat"},421:{n:"BrtRRAutoFmt"},422:{n:"BrtBeginUserShViews"},423:{n:"BrtBeginUserShView"},424:{n:"BrtEndUserShView"},425:{n:"BrtEndUserShViews"},426:{n:"BrtArrFmla",f:Kd},427:{n:"BrtShrFmla",f:Yd},428:{n:"BrtTable"},429:{n:"BrtBeginExtConnections"},430:{n:"BrtEndExtConnections"},431:{n:"BrtBeginPCDCalcMems"},432:{n:"BrtEndPCDCalcMems"},433:{n:"BrtBeginPCDCalcMem"},434:{n:"BrtEndPCDCalcMem"},435:{n:"BrtBeginPCDHGLevels"},436:{n:"BrtEndPCDHGLevels"},437:{n:"BrtBeginPCDHGLevel"},438:{n:"BrtEndPCDHGLevel"},439:{n:"BrtBeginPCDHGLGroups"},440:{n:"BrtEndPCDHGLGroups"},441:{n:"BrtBeginPCDHGLGroup"},442:{n:"BrtEndPCDHGLGroup"},443:{n:"BrtBeginPCDHGLGMembers"},444:{n:"BrtEndPCDHGLGMembers"},445:{n:"BrtBeginPCDHGLGMember"},446:{n:"BrtEndPCDHGLGMember"},447:{n:"BrtBeginQSI"},448:{n:"BrtEndQSI"},449:{n:"BrtBeginQSIR"},450:{n:"BrtEndQSIR"},451:{n:"BrtBeginDeletedNames"},452:{n:"BrtEndDeletedNames"},453:{n:"BrtBeginDeletedName"},454:{n:"BrtEndDeletedName"},455:{n:"BrtBeginQSIFs"},456:{n:"BrtEndQSIFs"},457:{n:"BrtBeginQSIF"},458:{n:"BrtEndQSIF"},459:{n:"BrtBeginAutoSortScope"},460:{n:"BrtEndAutoSortScope"},461:{n:"BrtBeginConditionalFormatting"},462:{n:"BrtEndConditionalFormatting"},463:{n:"BrtBeginCFRule"},464:{n:"BrtEndCFRule"},465:{n:"BrtBeginIconSet"},466:{n:"BrtEndIconSet"},467:{n:"BrtBeginDatabar"},468:{n:"BrtEndDatabar"},469:{n:"BrtBeginColorScale"},470:{n:"BrtEndColorScale"},471:{n:"BrtCFVO"},472:{n:"BrtExternValueMeta"},473:{n:"BrtBeginColorPalette"},474:{n:"BrtEndColorPalette"},475:{n:"BrtIndexedColor"},476:{n:"BrtMargins",f:Qd},477:{n:"BrtPrintOptions"},478:{n:"BrtPageSetup"},479:{n:"BrtBeginHeaderFooter"},480:{n:"BrtEndHeaderFooter"},481:{n:"BrtBeginSXCrtFormat"},482:{n:"BrtEndSXCrtFormat"},483:{n:"BrtBeginSXCrtFormats"},484:{n:"BrtEndSXCrtFormats"},485:{n:"BrtWsFmtInfo",f:sd},486:{n:"BrtBeginMgs"},487:{n:"BrtEndMGs"},488:{n:"BrtBeginMGMaps"},489:{n:"BrtEndMGMaps"},490:{n:"BrtBeginMG"},491:{n:"BrtEndMG"},492:{n:"BrtBeginMap"},493:{n:"BrtEndMap"},494:{n:"BrtHLink",f:zd},495:{n:"BrtBeginDCon"},496:{n:"BrtEndDCon"},497:{n:"BrtBeginDRefs"},498:{n:"BrtEndDRefs"},499:{n:"BrtDRef"},500:{n:"BrtBeginScenMan"},501:{n:"BrtEndScenMan"},502:{n:"BrtBeginSct"},503:{n:"BrtEndSct"},504:{n:"BrtSlc"},505:{n:"BrtBeginDXFs"},506:{n:"BrtEndDXFs"},507:{n:"BrtDXF"},508:{n:"BrtBeginTableStyles"},509:{n:"BrtEndTableStyles"},510:{n:"BrtBeginTableStyle"},511:{n:"BrtEndTableStyle"},512:{n:"BrtTableStyleElement"},513:{n:"BrtTableStyleClient"},514:{n:"BrtBeginVolDeps"},515:{n:"BrtEndVolDeps"},516:{n:"BrtBeginVolType"},517:{n:"BrtEndVolType"},518:{n:"BrtBeginVolMain"},519:{n:"BrtEndVolMain"},520:{n:"BrtBeginVolTopic"},521:{n:"BrtEndVolTopic"},522:{n:"BrtVolSubtopic"},523:{n:"BrtVolRef"},524:{n:"BrtVolNum"},525:{n:"BrtVolErr"},526:{n:"BrtVolStr"},527:{n:"BrtVolBool"},528:{n:"BrtBeginCalcChain$"},529:{n:"BrtEndCalcChain$"},530:{n:"BrtBeginSortState"},531:{n:"BrtEndSortState"},532:{n:"BrtBeginSortCond"},533:{n:"BrtEndSortCond"},534:{n:"BrtBookProtection"},535:{n:"BrtSheetProtection"},536:{n:"BrtRangeProtection"},537:{n:"BrtPhoneticInfo"},538:{n:"BrtBeginECTxtWiz"},539:{n:"BrtEndECTxtWiz"},540:{n:"BrtBeginECTWFldInfoLst"},541:{n:"BrtEndECTWFldInfoLst"},542:{n:"BrtBeginECTwFldInfo"},548:{n:"BrtFileSharing"},549:{n:"BrtOleSize"},550:{n:"BrtDrawing",f:$t},551:{n:"BrtLegacyDrawing"},552:{n:"BrtLegacyDrawingHF"},553:{n:"BrtWebOpt"},554:{n:"BrtBeginWebPubItems"},555:{n:"BrtEndWebPubItems"},556:{n:"BrtBeginWebPubItem"},557:{n:"BrtEndWebPubItem"},558:{n:"BrtBeginSXCondFmt"},559:{n:"BrtEndSXCondFmt"},560:{n:"BrtBeginSXCondFmts"},561:{n:"BrtEndSXCondFmts"},562:{n:"BrtBkHim"},564:{n:"BrtColor"},565:{n:"BrtBeginIndexedColors"},566:{n:"BrtEndIndexedColors"},569:{n:"BrtBeginMRUColors"},570:{n:"BrtEndMRUColors"},572:{n:"BrtMRUColor"},573:{n:"BrtBeginDVals"},574:{n:"BrtEndDVals"},577:{n:"BrtSupNameStart"},578:{n:"BrtSupNameValueStart"},579:{n:"BrtSupNameValueEnd"},580:{n:"BrtSupNameNum"},581:{n:"BrtSupNameErr"},582:{n:"BrtSupNameSt"},583:{n:"BrtSupNameNil"},584:{n:"BrtSupNameBool"},585:{n:"BrtSupNameFmla"},586:{n:"BrtSupNameBits"},587:{n:"BrtSupNameEnd"},588:{n:"BrtEndSupBook"},589:{n:"BrtCellSmartTagProperty"},590:{n:"BrtBeginCellSmartTag"},591:{n:"BrtEndCellSmartTag"},592:{n:"BrtBeginCellSmartTags"},593:{n:"BrtEndCellSmartTags"},594:{n:"BrtBeginSmartTags"},595:{n:"BrtEndSmartTags"},596:{n:"BrtSmartTagType"},597:{n:"BrtBeginSmartTagTypes"},598:{n:"BrtEndSmartTagTypes"},599:{n:"BrtBeginSXFilters"},600:{n:"BrtEndSXFilters"},601:{n:"BrtBeginSXFILTER"},602:{n:"BrtEndSXFilter"},603:{n:"BrtBeginFills"},604:{n:"BrtEndFills"},605:{n:"BrtBeginCellWatches"},606:{n:"BrtEndCellWatches"},607:{n:"BrtCellWatch"},608:{n:"BrtBeginCRErrs"},609:{n:"BrtEndCRErrs"},610:{n:"BrtCrashRecErr"},611:{n:"BrtBeginFonts"},612:{n:"BrtEndFonts"},613:{n:"BrtBeginBorders"},614:{n:"BrtEndBorders"},615:{n:"BrtBeginFmts"},616:{n:"BrtEndFmts"},617:{n:"BrtBeginCellXFs"},618:{n:"BrtEndCellXFs"},619:{n:"BrtBeginStyles"},620:{n:"BrtEndStyles"},625:{n:"BrtBigName"},626:{n:"BrtBeginCellStyleXFs"},627:{n:"BrtEndCellStyleXFs"},628:{n:"BrtBeginComments"},629:{n:"BrtEndComments"},630:{n:"BrtBeginCommentAuthors"},631:{n:"BrtEndCommentAuthors"},632:{n:"BrtCommentAuthor",f:qo},633:{n:"BrtBeginCommentList"},634:{n:"BrtEndCommentList"},635:{n:"BrtBeginComment",f:Yo},636:{n:"BrtEndComment"},637:{n:"BrtCommentText",f:Nt},638:{n:"BrtBeginOleObjects"},639:{n:"BrtOleObject"},640:{n:"BrtEndOleObjects"},641:{n:"BrtBeginSxrules"},642:{n:"BrtEndSxRules"},643:{n:"BrtBeginActiveXControls"},644:{n:"BrtActiveX"},645:{n:"BrtEndActiveXControls"},646:{n:"BrtBeginPCDSDTCEMembersSortBy"},648:{n:"BrtBeginCellIgnoreECs"},649:{n:"BrtCellIgnoreEC"},650:{n:"BrtEndCellIgnoreECs"},651:{n:"BrtCsProp",f:Cv},652:{n:"BrtCsPageSetup"},653:{n:"BrtBeginUserCsViews"},654:{n:"BrtEndUserCsViews"},655:{n:"BrtBeginUserCsView"},656:{n:"BrtEndUserCsView"},657:{n:"BrtBeginPcdSFCIEntries"},658:{n:"BrtEndPCDSFCIEntries"},659:{n:"BrtPCDSFCIEntry"},660:{n:"BrtBeginListParts"},661:{n:"BrtListPart"},662:{n:"BrtEndListParts"},663:{n:"BrtSheetCalcProp"},664:{n:"BrtBeginFnGroup"},665:{n:"BrtFnGroup"},666:{n:"BrtEndFnGroup"},667:{n:"BrtSupAddin"},668:{n:"BrtSXTDMPOrder"},669:{n:"BrtCsProtection"},671:{n:"BrtBeginWsSortMap"},672:{n:"BrtEndWsSortMap"},673:{n:"BrtBeginRRSort"},674:{n:"BrtEndRRSort"},675:{n:"BrtRRSortItem"},676:{n:"BrtFileSharingIso"},677:{n:"BrtBookProtectionIso"},678:{n:"BrtSheetProtectionIso"},679:{n:"BrtCsProtectionIso"},680:{n:"BrtRangeProtectionIso"},681:{n:"BrtDValList"},1024:{n:"BrtRwDescent"},1025:{n:"BrtKnownFonts"},1026:{n:"BrtBeginSXTupleSet"},1027:{n:"BrtEndSXTupleSet"},1028:{n:"BrtBeginSXTupleSetHeader"},1029:{n:"BrtEndSXTupleSetHeader"},1030:{n:"BrtSXTupleSetHeaderItem"},1031:{n:"BrtBeginSXTupleSetData"},1032:{n:"BrtEndSXTupleSetData"},1033:{n:"BrtBeginSXTupleSetRow"},1034:{n:"BrtEndSXTupleSetRow"},1035:{n:"BrtSXTupleSetRowItem"},1036:{n:"BrtNameExt"},1037:{n:"BrtPCDH14"},1038:{n:"BrtBeginPCDCalcMem14"},1039:{n:"BrtEndPCDCalcMem14"},1040:{n:"BrtSXTH14"},1041:{n:"BrtBeginSparklineGroup"},1042:{n:"BrtEndSparklineGroup"},1043:{n:"BrtSparkline"},1044:{n:"BrtSXDI14"},1045:{n:"BrtWsFmtInfoEx14"},1046:{n:"BrtBeginConditionalFormatting14"},1047:{n:"BrtEndConditionalFormatting14"},1048:{n:"BrtBeginCFRule14"},1049:{n:"BrtEndCFRule14"},1050:{n:"BrtCFVO14"},1051:{n:"BrtBeginDatabar14"},1052:{n:"BrtBeginIconSet14"},1053:{n:"BrtDVal14",f:iv},1054:{n:"BrtBeginDVals14"},1055:{n:"BrtColor14"},1056:{n:"BrtBeginSparklines"},1057:{n:"BrtEndSparklines"},1058:{n:"BrtBeginSparklineGroups"},1059:{n:"BrtEndSparklineGroups"},1061:{n:"BrtSXVD14"},1062:{n:"BrtBeginSXView14"},1063:{n:"BrtEndSXView14"},1064:{n:"BrtBeginSXView16"},1065:{n:"BrtEndSXView16"},1066:{n:"BrtBeginPCD14"},1067:{n:"BrtEndPCD14"},1068:{n:"BrtBeginExtConn14"},1069:{n:"BrtEndExtConn14"},1070:{n:"BrtBeginSlicerCacheIDs"},1071:{n:"BrtEndSlicerCacheIDs"},1072:{n:"BrtBeginSlicerCacheID"},1073:{n:"BrtEndSlicerCacheID"},1075:{n:"BrtBeginSlicerCache"},1076:{n:"BrtEndSlicerCache"},1077:{n:"BrtBeginSlicerCacheDef"},1078:{n:"BrtEndSlicerCacheDef"},1079:{n:"BrtBeginSlicersEx"},1080:{n:"BrtEndSlicersEx"},1081:{n:"BrtBeginSlicerEx"},1082:{n:"BrtEndSlicerEx"},1083:{n:"BrtBeginSlicer"},1084:{n:"BrtEndSlicer"},1085:{n:"BrtSlicerCachePivotTables"},1086:{n:"BrtBeginSlicerCacheOlapImpl"},1087:{n:"BrtEndSlicerCacheOlapImpl"},1088:{n:"BrtBeginSlicerCacheLevelsData"},1089:{n:"BrtEndSlicerCacheLevelsData"},1090:{n:"BrtBeginSlicerCacheLevelData"},1091:{n:"BrtEndSlicerCacheLevelData"},1092:{n:"BrtBeginSlicerCacheSiRanges"},1093:{n:"BrtEndSlicerCacheSiRanges"},1094:{n:"BrtBeginSlicerCacheSiRange"},1095:{n:"BrtEndSlicerCacheSiRange"},1096:{n:"BrtSlicerCacheOlapItem"},1097:{n:"BrtBeginSlicerCacheSelections"},1098:{n:"BrtSlicerCacheSelection"},1099:{n:"BrtEndSlicerCacheSelections"},1100:{n:"BrtBeginSlicerCacheNative"},1101:{n:"BrtEndSlicerCacheNative"},1102:{n:"BrtSlicerCacheNativeItem"},1103:{n:"BrtRangeProtection14"},1104:{n:"BrtRangeProtectionIso14"},1105:{n:"BrtCellIgnoreEC14"},1111:{n:"BrtList14"},1112:{n:"BrtCFIcon"},1113:{n:"BrtBeginSlicerCachesPivotCacheIDs"},1114:{n:"BrtEndSlicerCachesPivotCacheIDs"},1115:{n:"BrtBeginSlicers"},1116:{n:"BrtEndSlicers"},1117:{n:"BrtWbProp14"},1118:{n:"BrtBeginSXEdit"},1119:{n:"BrtEndSXEdit"},1120:{n:"BrtBeginSXEdits"},1121:{n:"BrtEndSXEdits"},1122:{n:"BrtBeginSXChange"},1123:{n:"BrtEndSXChange"},1124:{n:"BrtBeginSXChanges"},1125:{n:"BrtEndSXChanges"},1126:{n:"BrtSXTupleItems"},1128:{n:"BrtBeginSlicerStyle"},1129:{n:"BrtEndSlicerStyle"},1130:{n:"BrtSlicerStyleElement"},1131:{n:"BrtBeginStyleSheetExt14"},1132:{n:"BrtEndStyleSheetExt14"},1133:{n:"BrtBeginSlicerCachesPivotCacheID"},1134:{n:"BrtEndSlicerCachesPivotCacheID"},1135:{n:"BrtBeginConditionalFormattings"},1136:{n:"BrtEndConditionalFormattings"},1137:{n:"BrtBeginPCDCalcMemExt"},1138:{n:"BrtEndPCDCalcMemExt"},1139:{n:"BrtBeginPCDCalcMemsExt"},1140:{n:"BrtEndPCDCalcMemsExt"},1141:{n:"BrtPCDField14"},1142:{n:"BrtBeginSlicerStyles"},1143:{n:"BrtEndSlicerStyles"},1144:{n:"BrtBeginSlicerStyleElements"},1145:{n:"BrtEndSlicerStyleElements"},1146:{n:"BrtCFRuleExt"},1147:{n:"BrtBeginSXCondFmt14"},1148:{n:"BrtEndSXCondFmt14"},1149:{n:"BrtBeginSXCondFmts14"},1150:{n:"BrtEndSXCondFmts14"},1152:{n:"BrtBeginSortCond14"},1153:{n:"BrtEndSortCond14"},1154:{n:"BrtEndDVals14"},1155:{n:"BrtEndIconSet14"},1156:{n:"BrtEndDatabar14"},1157:{n:"BrtBeginColorScale14"},1158:{n:"BrtEndColorScale14"},1159:{n:"BrtBeginSxrules14"},1160:{n:"BrtEndSxrules14"},1161:{n:"BrtBeginPRule14"},1162:{n:"BrtEndPRule14"},1163:{n:"BrtBeginPRFilters14"},1164:{n:"BrtEndPRFilters14"},1165:{n:"BrtBeginPRFilter14"},1166:{n:"BrtEndPRFilter14"},1167:{n:"BrtBeginPRFItem14"},1168:{n:"BrtEndPRFItem14"},1169:{n:"BrtBeginCellIgnoreECs14"},1170:{n:"BrtEndCellIgnoreECs14"},1171:{n:"BrtDxf14"},1172:{n:"BrtBeginDxF14s"},1173:{n:"BrtEndDxf14s"},1177:{n:"BrtFilter14"},1178:{n:"BrtBeginCustomFilters14"},1180:{n:"BrtCustomFilter14"},1181:{n:"BrtIconFilter14"},1182:{n:"BrtPivotCacheConnectionName"},2048:{n:"BrtBeginDecoupledPivotCacheIDs"},2049:{n:"BrtEndDecoupledPivotCacheIDs"},2050:{n:"BrtDecoupledPivotCacheID"},2051:{n:"BrtBeginPivotTableRefs"},2052:{n:"BrtEndPivotTableRefs"},2053:{n:"BrtPivotTableRef"},2054:{n:"BrtSlicerCacheBookPivotTables"},2055:{n:"BrtBeginSxvcells"},2056:{n:"BrtEndSxvcells"},2057:{n:"BrtBeginSxRow"},2058:{n:"BrtEndSxRow"},2060:{n:"BrtPcdCalcMem15"},2067:{n:"BrtQsi15"},2068:{n:"BrtBeginWebExtensions"},2069:{n:"BrtEndWebExtensions"},2070:{n:"BrtWebExtension"},2071:{n:"BrtAbsPath15"},2072:{n:"BrtBeginPivotTableUISettings"},2073:{n:"BrtEndPivotTableUISettings"},2075:{n:"BrtTableSlicerCacheIDs"},2076:{n:"BrtTableSlicerCacheID"},2077:{n:"BrtBeginTableSlicerCache"},2078:{n:"BrtEndTableSlicerCache"},2079:{n:"BrtSxFilter15"},2080:{n:"BrtBeginTimelineCachePivotCacheIDs"},2081:{n:"BrtEndTimelineCachePivotCacheIDs"},2082:{n:"BrtTimelineCachePivotCacheID"},2083:{n:"BrtBeginTimelineCacheIDs"},2084:{n:"BrtEndTimelineCacheIDs"},2085:{n:"BrtBeginTimelineCacheID"},2086:{n:"BrtEndTimelineCacheID"},2087:{n:"BrtBeginTimelinesEx"},2088:{n:"BrtEndTimelinesEx"},2089:{n:"BrtBeginTimelineEx"},2090:{n:"BrtEndTimelineEx"},2091:{n:"BrtWorkBookPr15"},2092:{n:"BrtPCDH15"},2093:{n:"BrtBeginTimelineStyle"},2094:{n:"BrtEndTimelineStyle"},2095:{n:"BrtTimelineStyleElement"},2096:{n:"BrtBeginTimelineStylesheetExt15"},2097:{n:"BrtEndTimelineStylesheetExt15"},2098:{n:"BrtBeginTimelineStyles"},2099:{n:"BrtEndTimelineStyles"},2100:{n:"BrtBeginTimelineStyleElements"},2101:{n:"BrtEndTimelineStyleElements"},2102:{n:"BrtDxf15"},2103:{n:"BrtBeginDxfs15"},2104:{n:"brtEndDxfs15"},2105:{n:"BrtSlicerCacheHideItemsWithNoData"},2106:{n:"BrtBeginItemUniqueNames"},2107:{n:"BrtEndItemUniqueNames"},2108:{n:"BrtItemUniqueName"},2109:{n:"BrtBeginExtConn15"},2110:{n:"BrtEndExtConn15"},2111:{n:"BrtBeginOledbPr15"},2112:{n:"BrtEndOledbPr15"},2113:{n:"BrtBeginDataFeedPr15"},2114:{n:"BrtEndDataFeedPr15"},2115:{n:"BrtTextPr15"},2116:{n:"BrtRangePr15"},2117:{n:"BrtDbCommand15"},2118:{n:"BrtBeginDbTables15"},2119:{n:"BrtEndDbTables15"},2120:{n:"BrtDbTable15"},2121:{n:"BrtBeginDataModel"},2122:{n:"BrtEndDataModel"},2123:{n:"BrtBeginModelTables"},2124:{n:"BrtEndModelTables"},2125:{n:"BrtModelTable"},2126:{n:"BrtBeginModelRelationships"},2127:{n:"BrtEndModelRelationships"},2128:{n:"BrtModelRelationship"},2129:{n:"BrtBeginECTxtWiz15"},2130:{n:"BrtEndECTxtWiz15"},2131:{n:"BrtBeginECTWFldInfoLst15"},2132:{n:"BrtEndECTWFldInfoLst15"},2133:{n:"BrtBeginECTWFldInfo15"},2134:{n:"BrtFieldListActiveItem"},2135:{n:"BrtPivotCacheIdVersion"},2136:{n:"BrtSXDI15"},2137:{n:"BrtBeginModelTimeGroupings"},2138:{n:"BrtEndModelTimeGroupings"},2139:{n:"BrtBeginModelTimeGrouping"},2140:{n:"BrtEndModelTimeGrouping"},2141:{n:"BrtModelTimeGroupingCalcCol"},3072:{n:"BrtUid"},3073:{n:"BrtRevisionPtr"},5095:{n:"BrtBeginCalcFeatures"},5096:{n:"BrtEndCalcFeatures"},5097:{n:"BrtCalcFeature"},65535:{n:""}};var tm;function am(){tm=J(rm,"n");tm["BrtFRTArchID$"]=16}var nm={6:{n:"Formula",f:Qu},10:{n:"EOF",f:jn},12:{n:"CalcCount",f:qn},13:{n:"CalcMode",f:qn},14:{n:"CalcPrecision",f:Yn},15:{n:"CalcRefMode",f:Yn},16:{n:"CalcDelta",f:ra},17:{n:"CalcIter",f:Yn},18:{n:"Protect",f:Yn},19:{n:"Password",f:qn},20:{n:"Header",f:ys},21:{n:"Footer",f:ys},23:{n:"ExternSheet",f:Rs},24:{n:"Lbl",f:As},25:{n:"WinProtect",f:Yn},26:{n:"VerticalPageBreaks"},27:{n:"HorizontalPageBreaks"},28:{n:"Note",f:Ls},29:{n:"Selection"},34:{n:"Date1904",f:Yn},35:{n:"ExternName",f:_s},38:{n:"LeftMargin",f:ra},39:{n:"RightMargin",f:ra},40:{n:"TopMargin",f:ra},41:{n:"BottomMargin",f:ra},42:{n:"PrintRowCol",f:Yn},43:{n:"PrintGrid",f:Yn},47:{n:"FilePass",f:cl},49:{n:"Font",f:ts},51:{n:"PrintSize",f:qn},60:{n:"Continue"},61:{n:"Window1",f:qi},64:{n:"Backup",f:Yn},65:{n:"Pane",f:rs},66:{n:"CodePage",f:qn},77:{n:"Pls"},80:{n:"DCon"},81:{n:"DConRef"},82:{n:"DConName"},85:{n:"DefColWidth",f:qn},89:{n:"XCT"},90:{n:"CRN"},91:{n:"FileSharing"},92:{n:"WriteAccess",f:Ui},93:{n:"Obj",f:Ws},94:{n:"Uncalced"},95:{n:"CalcSaveRecalc",f:Yn},96:{n:"Template"},97:{n:"Intl"},99:{n:"ObjProtect",f:Yn},125:{n:"ColInfo",f:Zs},128:{n:"Guts",f:ws},129:{n:"WsBool",f:Hi},130:{n:"GridSet",f:qn},131:{n:"HCenter",f:Yn},132:{n:"VCenter",f:Yn},133:{n:"BoundSheet8",f:Vi},134:{n:"WriteProtect"},140:{n:"Country",f:Ks},141:{n:"HideObj",f:qn},144:{n:"Sort"},146:{n:"Palette",f:qs},151:{n:"Sync"},152:{n:"LPr"},153:{n:"DxGCol"},154:{n:"FnGroupName"},155:{n:"FilterMode"},156:{n:"BuiltInFnGroupCount",f:qn},157:{n:"AutoFilterInfo"},158:{n:"AutoFilter"},160:{n:"Scl",f:sf},161:{n:"Setup",f:rf},174:{n:"ScenMan"},175:{n:"SCENARIO"},176:{n:"SxView"},177:{n:"Sxvd"},178:{n:"SXVI"},180:{n:"SxIvd"},181:{n:"SXLI"},182:{n:"SXPI"},184:{n:"DocRoute"},185:{n:"RecipName"},189:{n:"MulRk",f:vs},190:{n:"MulBlank",f:ps},193:{n:"Mms",f:jn},197:{n:"SXDI"},198:{n:"SXDB"},199:{n:"SXFDB"},200:{n:"SXDBB"},201:{n:"SXNum"},202:{n:"SxBool",f:Yn},203:{n:"SxErr"},204:{n:"SXInt"},205:{n:"SXString"},206:{n:"SXDtr"},207:{n:"SxNil"},208:{n:"SXTbl"},209:{n:"SXTBRGIITM"},210:{n:"SxTbpg"},211:{n:"ObProj"},213:{n:"SXStreamID"},215:{n:"DBCell"},216:{n:"SXRng"},217:{n:"SxIsxoper"},218:{n:"BookBool",f:qn},220:{n:"DbOrParamQry"},221:{n:"ScenarioProtect",f:Yn},222:{n:"OleObjectSize"},224:{n:"XF",f:bs},225:{n:"InterfaceHdr",f:Mi},226:{n:"InterfaceEnd",f:jn},227:{n:"SXVS"},229:{n:"MergeCells",f:Ms},233:{n:"BkHim"},235:{n:"MsoDrawingGroup"},236:{n:"MsoDrawing"},237:{n:"MsoDrawingSelection"},239:{n:"PhoneticInfo"},240:{n:"SxRule"},241:{n:"SXEx"},242:{n:"SxFilt"},244:{n:"SxDXF"},245:{n:"SxItm"},246:{n:"SxName"},247:{n:"SxSelect"},248:{n:"SXPair"},249:{n:"SxFmla"},251:{n:"SxFormat"},252:{n:"SST",f:Gi},253:{n:"LabelSst",f:ns},255:{n:"ExtSST",f:ji},256:{n:"SXVDEx"},259:{n:"SXFormula"},290:{n:"SXDBEx"},311:{n:"RRDInsDel"},312:{n:"RRDHead"},315:{n:"RRDChgCell"},317:{n:"RRTabId",f:Zn},318:{n:"RRDRenSheet"},319:{n:"RRSort"},320:{n:"RRDMove"},330:{n:"RRFormat"},331:{n:"RRAutoFmt"},333:{n:"RRInsertSh"},334:{n:"RRDMoveBegin"},335:{n:"RRDMoveEnd"},336:{n:"RRDInsDelBegin"},337:{n:"RRDInsDelEnd"},338:{n:"RRDConflict"},339:{n:"RRDDefName"},340:{n:"RRDRstEtxp"},351:{n:"LRng"},352:{n:"UsesELFs",f:Yn},353:{n:"DSF",f:jn},401:{n:"CUsr"},402:{n:"CbUsr"},403:{n:"UsrInfo"},404:{n:"UsrExcl"},405:{n:"FileLock"},406:{n:"RRDInfo"},407:{n:"BCUsrs"},408:{n:"UsrChk"},425:{n:"UserBView"},426:{n:"UserSViewBegin"},427:{n:"UserSViewEnd"},428:{n:"RRDUserView"},429:{n:"Qsi"},430:{n:"SupBook",f:Ts},431:{n:"Prot4Rev",f:Yn},432:{n:"CondFmt"},433:{n:"CF"},434:{n:"DVal"},437:{n:"DConBin"},438:{n:"TxO",f:Xs},439:{n:"RefreshAll",f:Yn},440:{n:"HLink",f:Gs},441:{n:"Lel"},442:{n:"CodeName",f:si},443:{n:"SXFDBType"},444:{n:"Prot4RevPass",f:qn},445:{n:"ObNoMacros"},446:{n:"Dv"},448:{n:"Excel9File",f:jn},449:{n:"RecalcId",f:Yi,r:2},450:{n:"EntExU2",f:jn},512:{n:"Dimensions",f:us},513:{n:"Blank",f:nf},515:{n:"Number",f:Bs},516:{n:"Label",f:ss},517:{n:"BoolErr",f:Es},519:{n:"String",f:ff},520:{n:"Row",f:$i},523:{n:"Index"},545:{n:"Array",f:Ps},549:{n:"DefaultRowHeight",f:Ji},566:{n:"Table"},574:{n:"Window2",f:Zi},638:{n:"RK",f:ds},659:{n:"Style"},1048:{n:"BigName"},1054:{n:"Format",f:ls},1084:{n:"ContinueBigName"},1212:{n:"ShrFmla",f:Ds},2048:{n:"HLinkTooltip",f:js},2049:{n:"WebPub"},2050:{n:"QsiSXTag"},2051:{n:"DBQueryExt"},2052:{n:"ExtString"},2053:{n:"TxtQry"},2054:{n:"Qsir"},2055:{n:"Qsif"},2056:{n:"RRDTQSIF"},2057:{n:"BOF",f:Ni},2058:{n:"OleDbConn"},2059:{n:"WOpt"},2060:{n:"SXViewEx"},2061:{n:"SXTH"},2062:{n:"SXPIEx"},2063:{n:"SXVDTEx"},2064:{n:"SXViewEx9"},2066:{n:"ContinueFrt"},2067:{n:"RealTimeData"},2128:{n:"ChartFrtInfo"},2129:{n:"FrtWrapper"},2130:{n:"StartBlock"},2131:{n:"EndBlock"},2132:{n:"StartObject"},2133:{n:"EndObject"},2134:{n:"CatLab"},2135:{n:"YMult"},2136:{n:"SXViewLink"},2137:{n:"PivotChartBits"},2138:{n:"FrtFontList"},2146:{n:"SheetExt"},2147:{n:"BookExt",r:12},2148:{n:"SXAddl"},2149:{n:"CrErr"},2150:{n:"HFPicture"},2151:{n:"FeatHdr",f:jn},2152:{n:"Feat"},2154:{n:"DataLabExt"},2155:{n:"DataLabExtContents"},2156:{n:"CellWatch"},2161:{n:"FeatHdr11"},2162:{n:"Feature11"},2164:{n:"DropDownObjIds"},2165:{n:"ContinueFrt11"},2166:{n:"DConn"},2167:{n:"List12"},2168:{n:"Feature12"},2169:{n:"CondFmt12"},2170:{n:"CF12"},2171:{n:"CFEx"},2172:{n:"XFCRC",f:Qs,r:12},2173:{n:"XFExt",f:Oo,r:12},2174:{n:"AutoFilter12"},2175:{n:"ContinueFrt12"},2180:{n:"MDTInfo"},2181:{n:"MDXStr"},2182:{n:"MDXTuple"},2183:{n:"MDXSet"},2184:{n:"MDXProp"},2185:{n:"MDXKPI"},2186:{n:"MDB"},2187:{n:"PLV"},2188:{n:"Compat12",f:Yn,r:12},2189:{n:"DXF"},2190:{n:"TableStyles",r:12},2191:{n:"TableStyle"},2192:{n:"TableStyleElement"},2194:{n:"StyleExt"},2195:{n:"NamePublish"},2196:{n:"NameCmt",f:Is,r:12},2197:{n:"SortData"},2198:{n:"Theme",f:Ao,r:12},2199:{n:"GUIDTypeLib"},2200:{n:"FnGrp12"},2201:{n:"NameFnGrp12"},2202:{n:"MTRSettings",f:Os,r:12},2203:{n:"CompressPictures",f:jn},2204:{n:"HeaderFooter"},2205:{n:"CrtLayout12"},2206:{n:"CrtMlFrt"},2207:{n:"CrtMlFrtContinue"},2211:{n:"ForceFullCalculation",f:Ki},2212:{n:"ShapePropsStream"},2213:{n:"TextPropsStream"},2214:{n:"RichTextStream"},2215:{n:"CrtLayout12A"},4097:{n:"Units"},4098:{n:"Chart"},4099:{n:"Series"},4102:{n:"DataFormat"},4103:{n:"LineFormat"},4105:{n:"MarkerFormat"},4106:{n:"AreaFormat"},4107:{n:"PieFormat"},4108:{n:"AttachedLabel"},4109:{n:"SeriesText"},4116:{n:"ChartFormat"},4117:{n:"Legend"},4118:{n:"SeriesList"},4119:{n:"Bar"},4120:{n:"Line"},4121:{n:"Pie"},4122:{n:"Area"},4123:{n:"Scatter"},4124:{n:"CrtLine"},4125:{n:"Axis"},4126:{n:"Tick"},4127:{n:"ValueRange"},4128:{n:"CatSerRange"},4129:{n:"AxisLine"},4130:{n:"CrtLink"},4132:{n:"DefaultText"},4133:{n:"Text"},4134:{n:"FontX",f:qn},4135:{n:"ObjectLink"},4146:{n:"Frame"},4147:{n:"Begin"},4148:{n:"End"},4149:{n:"PlotArea"},4154:{n:"Chart3d"},4156:{n:"PicF"},4157:{n:"DropBar"},4158:{n:"Radar"},4159:{n:"Surf"},4160:{n:"RadarArea"},4161:{n:"AxisParent"},4163:{n:"LegendException"},4164:{n:"ShtProps",f:tf},4165:{n:"SerToCrt"},4166:{n:"AxesUsed"},4168:{n:"SBaseRef"},4170:{n:"SerParent"},4171:{n:"SerAuxTrend"},4174:{n:"IFmtRecord"},4175:{n:"Pos"},4176:{n:"AlRuns"},4177:{n:"BRAI"},4187:{n:"SerAuxErrBar"},4188:{n:"ClrtClient",f:Js},4189:{n:"SerFmt"},4191:{n:"Chart3DBarShape"},4192:{n:"Fbi"},4193:{n:"BopPop"},4194:{n:"AxcExt"},4195:{n:"Dat"},4196:{n:"PlotGrowth"},4197:{n:"SIIndex"},4198:{n:"GelFrame"},4199:{n:"BopPopCustom"},4200:{n:"Fbi2"},0:{n:"Dimensions",f:us},1:{n:"BIFF2BLANK"},2:{n:"BIFF2INT",f:hf},3:{n:"BIFF2NUM",f:cf},4:{n:"BIFF2STR",f:of},5:{n:"BoolErr",f:Es},7:{n:"String",f:vf},8:{n:"BIFF2ROW"},9:{n:"BOF",f:Ni},11:{n:"Index"},22:{n:"ExternCount",f:qn},30:{n:"BIFF2FORMAT",f:cs},31:{n:"BIFF2FMTCNT"},32:{n:"BIFF2COLINFO"},33:{n:"Array",f:Ps},36:{n:"COLWIDTH"},37:{n:"DefaultRowHeight",f:Ji},50:{n:"BIFF2FONTXTRA",f:pf},62:{n:"BIFF2WINDOW2"},52:{n:"DDEObjName"},67:{n:"BIFF2XF"},68:{n:"BIFF2XFINDEX",f:qn},69:{n:"BIFF2FONTCLR"},86:{n:"BIFF4FMTCNT"},126:{n:"RK"},127:{n:"ImData",f:lf},135:{n:"Addin"},136:{n:"Edg"},137:{n:"Pub"},145:{n:"Sub"},148:{n:"LHRecord"},149:{n:"LHNGraph"},150:{n:"Sound"},169:{n:"CoordList"},171:{n:"GCW"},188:{n:"ShrFmla"},191:{n:"ToolbarHdr"},192:{n:"ToolbarEnd"},194:{n:"AddMenu"},195:{n:"DelMenu"},214:{n:"RString",f:mf},223:{n:"UDDesc"},234:{n:"TabIdConf"},354:{n:"XL5Modify"},421:{n:"FileSharing2"},518:{n:"Formula",f:Qu},521:{n:"BOF",f:Ni},536:{n:"Lbl",f:As},547:{n:"ExternName",f:_s},561:{n:"Font"},579:{n:"BIFF3XF"},1030:{n:"Formula",f:Qu},1033:{n:"BOF",f:Ni},1091:{n:"BIFF4XF"},2157:{n:"FeatInfo"},2163:{n:"FeatInfo11"},2177:{n:"SXAddl12"},2240:{n:"AutoWebPub"},2241:{n:"ListObj"},2242:{n:"ListField"},2243:{n:"ListDV"},2244:{n:"ListCondFmt"},2245:{n:"ListCF"},2246:{n:"FMQry"},2247:{n:"FMSQry"},2248:{n:"PLV"},2249:{n:"LnExt"},2250:{n:"MkrExt"},2251:{n:"CrtCoopt"},2262:{n:"FRTArchId$",r:12},29282:{}};var im=J(nm,"n");function sm(e,r,t,a){var n=typeof r=="number"?r:+r||+im[r];if(isNaN(n))return;var i=a||(t||[]).length||0;var s=e.next(4);s._W(2,n);s._W(2,i);if(i>0&&Mr(t))e.push(t)}function fm(e,r,t,a){var n=a||(t||[]).length||0;if(n<=8224)return sm(e,r,t,n);var i=+r||+im[r];if(isNaN(i))return;var s=t.parts||[],f=0;var l=0,o=0;while(o+(s[f]||8224)<=8224){o+=s[f]||8224;f++}var c=e.next(4);c._W(2,i);c._W(2,o);e.push(t.slice(l,l+o));l+=o;while(l=0&&n<65536)sm(e,2,df(t,a,n));else sm(e,3,uf(t,a,n));return;case"b":;case"e":sm(e,5,om(t,a,r.v,r.t));return;case"s":;case"str":sm(e,4,cm(t,a,(r.v||"").slice(0,255)));return;}sm(e,1,lm(null,t,a)); -}function hm(e,r,t,a){var n=Array.isArray(r);var i=Bt(r["!ref"]||"A1"),s,f="",l=[];if(i.e.c>255||i.e.r>16383){if(a.WTF)throw new Error("Range "+(r["!ref"]||"A1")+" exceeds format limit A1:IV16384");i.e.c=Math.min(i.e.c,255);i.e.r=Math.min(i.e.c,16383);s=St(i)}for(var o=i.s.r;o<=i.e.r;++o){f=ut(o);for(var c=i.s.c;c<=i.e.c;++c){if(o===i.s.r)l[c]=pt(c);s=l[c]+f;var u=n?(r[o]||[])[c]:r[s];if(!u)continue;um(e,u,o,c,a)}}}function dm(e,r){var t=r||{};if(m!=null&&t.dense==null)t.dense=m;var a=tt();var n=0;for(var i=0;i255||d.e.r>=v){if(r.WTF)throw new Error("Range "+(i["!ref"]||"A1")+" exceeds format limit A1:IV16384");d.e.c=Math.min(d.e.c,255);d.e.r=Math.min(d.e.c,v-1)}sm(a,2057,Li(t,16,r));sm(a,"CalcMode",Qn(1));sm(a,"CalcCount",Qn(100));sm(a,"CalcRefMode",Jn(true));sm(a,"CalcIter",Jn(false));sm(a,"CalcDelta",ta(.001));sm(a,"CalcSaveRecalc",Jn(true));sm(a,"PrintRowCol",Jn(false));sm(a,"PrintGrid",Jn(false));sm(a,"GridSet",Qn(1));sm(a,"Guts",ks([0,0]));sm(a,"HCenter",Jn(false));sm(a,"VCenter",Jn(false));if(o)wm(a,i["!cols"],i);sm(a,512,hs(d,r));if(o)i["!links"]=[];for(var p=d.s.r;p<=d.e.r;++p){u=ut(p);for(var m=d.s.c;m<=d.e.c;++m){if(p===d.s.r)h[m]=pt(m);c=h[m]+u;var b=l?(i[p]||[])[m]:i[c];if(!b)continue;km(a,b,p,m,r);if(o&&b.l)i["!links"].push([c,b.l])}}var g=f.CodeName||f.name||n;if(o)sm(a,"Window2",es((s.Views||[])[0]));if(o&&(i["!merges"]||[]).length)sm(a,"MergeCells",Us(i["!merges"]));if(o)gm(a,i);sm(a,"CodeName",li(g,r));if(o)mm(a,i);sm(a,"EOF");return a.end()}function Sm(e,r,t){var a=tt();var n=(e||{}).Workbook||{};var i=n.Sheets||[];var s=n.WBProps||{};var f=t.biff==8,l=t.biff==5;sm(a,2057,Li(e,5,t));if(t.bookType=="xla")sm(a,"Addin");sm(a,"InterfaceHdr",f?Qn(1200):null);sm(a,"Mms",$n(2));if(l)sm(a,"ToolbarHdr");if(l)sm(a,"ToolbarEnd");sm(a,"InterfaceEnd");sm(a,"WriteAccess",Wi("SheetJS",t));sm(a,"CodePage",Qn(f?1200:1252));if(f)sm(a,"DSF",Qn(0));if(f)sm(a,"Excel9File");sm(a,"RRTabId",af(e.SheetNames.length));if(f&&e.vbaraw)sm(a,"ObProj");if(f&&e.vbaraw){var o=s.CodeName||"ThisWorkbook";sm(a,"CodeName",li(o,t))}sm(a,"BuiltInFnGroupCount",Qn(17));sm(a,"WinProtect",Jn(false));sm(a,"Protect",Jn(false));sm(a,"Password",Qn(0));if(f)sm(a,"Prot4Rev",Jn(false));if(f)sm(a,"Prot4RevPass",Qn(0));sm(a,"Window1",Qi(t));sm(a,"Backup",Jn(false));sm(a,"HideObj",Qn(0));sm(a,"Date1904",Jn(Pv(e)=="true"));sm(a,"CalcPrecision",Jn(true));if(f)sm(a,"RefreshAll",Jn(false));sm(a,"BookBool",Qn(0));vm(a,e,t);pm(a,e.SSF,t);bm(a,t);if(f)sm(a,"UsesELFs",Jn(false));var c=a.end();var u=tt();if(f)sm(u,"Country",Ys());if(f&&t.Strings)fm(u,"SST",zi(t.Strings,t));sm(u,"EOF");var h=u.end();var d=tt();var v=0,p=0;for(p=0;p255){if(typeof console!="undefined"&&console.error)console.error("Worksheet '"+e.SheetNames[t]+"' extends beyond column IV (255). Data may be lost.")}}var i=r||{};switch(i.biff||2){case 8:;case 5:return Bm(e,r);case 4:;case 3:;case 2:return dm(e,r);}throw new Error("invalid type "+i.bookType+" for BIFF")}var ym=function(){function e(e,r){var t=r||{};if(m!=null&&t.dense==null)t.dense=m;var a=t.dense?[]:{};e=e.replace(//g,"");var n=e.match(/");var i=e.match(/<\/table/i);var s=n.index,f=i&&i.index||e.length;var l=be(e.slice(s,f),/(:?]*>)/i,"");var o=-1,c=0,u=0,h=0;var d={s:{r:1e7,c:1e7},e:{r:0,c:0}};var v=[];for(s=0;s/i);for(f=0;f"))>-1)k=k.slice(E+1);for(var S=0;S")));h=C.colspan?+C.colspan:1;if((u=+C.rowspan)>1||h>1)v.push({s:{r:o,c:c},e:{r:o+(u||1)-1,c:c+h-1}});var y=C.t||C["data-t"]||"";if(!k.length){c+=h;continue}k=ar(k);if(d.s.r>o)d.s.r=o;if(d.e.rc)d.s.c=c;if(d.e.c[\s\S]*?<\/table>/gi);if(!a||a.length==0)throw new Error("Invalid HTML: could not find
");if(a.length==1)return Tt(e(a[0],t),t);var n=Wb.book_new();a.forEach(function(r,a){Wb.book_append_sheet(n,e(r,t),"Sheet"+(a+1))});return n}function t(e,r,t,a){var n=e["!merges"]||[];var i=[];for(var s=r.s.c;s<=r.e.c;++s){var f=0,l=0;for(var o=0;ot||n[o].s.c>s)continue;if(n[o].e.r1)d.rowspan=f;if(l>1)d.colspan=l;if(a.editable)h=''+h+"";else if(u){d["data-t"]=u&&u.t||"z";if(u.v!=null)d["data-v"]=u.v;if(u.z!=null)d["data-z"]=u.z;if(u.l&&(u.l.Target||"#").charAt(0)!="#")h=''+h+""}d.id=(a.id||"sjs")+"-"+c;i.push(ur("td",h,d))}var v="";return v+i.join("")+""}function a(e,r,t){var a=[];return a.join("")+""}var n='SheetJS Table Export';var i="";function s(e,r){var s=r||{};var f=s.header!=null?s.header:n;var l=s.footer!=null?s.footer:i;var o=[f];var c=Et(e["!ref"]);s.dense=Array.isArray(e);o.push(a(e,c,s));for(var u=c.s.r;u<=c.e.r;++u)o.push(t(e,c,u,s));o.push("
"+l);return o.join("")}return{to_workbook:r,to_sheet:e,_row:t,BEGIN:n,END:i,_preamble:a,from_sheet:s}}();function Tm(e,r,t){var a=t||{};if(m!=null)a.dense=m;var n=0,i=0;if(a.origin!=null){if(typeof a.origin=="number")n=a.origin;else{var s=typeof a.origin=="string"?wt(a.origin):a.origin;n=s.r;i=s.c}}var f=r.getElementsByTagName("tr");var l=Math.min(a.sheetRows||1e7,f.length);var o={s:{r:0,c:0},e:{r:n,c:i}};if(e["!ref"]){var c=Et(e["!ref"]);o.s.r=Math.min(o.s.r,c.s.r);o.s.c=Math.min(o.s.c,c.s.c);o.e.r=Math.max(o.e.r,c.e.r);o.e.c=Math.max(o.e.c,c.e.c);if(n==-1)o.e.r=n=c.e.r+1}var u=[],h=0;var d=e["!rows"]||(e["!rows"]=[]);var v=0,p=0,b=0,g=0,w=0,k=0;if(!e["!cols"])e["!cols"]=[];for(;v1||k>1)u.push({s:{r:p+n,c:g+i},e:{r:p+n+(w||1)-1,c:g+i+(k||1)-1}});var _={t:"s",v:C};var x=B.getAttribute("data-t")||B.getAttribute("t")||"";if(C!=null){if(C.length==0)_.t=x||"z";else if(a.raw||C.trim().length==0||x=="s"){}else if(C==="TRUE")_={t:"b",v:true};else if(C==="FALSE")_={t:"b",v:false};else if(!isNaN(de(C)))_={t:"n",v:de(C)};else if(!isNaN(pe(C).getDate())){_={t:"d",v:oe(C)};if(!a.cellDates)_={t:"n",v:re(_.v)};_.z=a.dateNF||P._table[14]}}if(_.z===undefined&&y!=null)_.z=y;var A="",R=B.getElementsByTagName("A");if(R&&R.length)for(var F=0;F=l)e["!fullref"]=St((o.e.r=f.length-v+p-1+n,o));return e}function _m(e,r){var t=r||{};var a=t.dense?[]:{};return Tm(a,e,r)}function xm(e,r){return Tt(_m(e,r),r)}function Am(e){var r="";var t=Rm(e);if(t)r=t(e).getPropertyValue("display");if(!r)r=e.style&&e.style.display;return r==="none"}function Rm(e){if(e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle==="function")return e.ownerDocument.defaultView.getComputedStyle;if(typeof getComputedStyle==="function")return getComputedStyle;return null}var Fm=function(){var e=function(e){var r=e.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(//g," ").replace(//g,function(e,r){return Array(parseInt(r,10)+1).join(" ")}).replace(/]*\/>/g,"\t").replace(//g,"\n");var t=We(r.replace(/<[^>]*>/g,""));return[t]};var r={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};return function t(a,n){var i=n||{};if(m!=null&&i.dense==null)i.dense=m;var s=xp(a);var f=[],l;var o;var c={name:""},u="",h=0;var d;var v;var p={},b=[];var g=i.dense?[]:{};var w,k;var E={value:""};var S="",B=0,C;var y=[];var T=-1,_=-1,x={s:{r:1e6,c:1e7},e:{r:0,c:0}};var A=0;var R={};var F=[],I={},D=0,P=0;var O=[],N=1,L=1;var M=[];var U={Names:[]};var W={};var H=["",""];var V=[],X={};var G="",z=0;var j=false,$=false;var K=0;Ap.lastIndex=0;s=s.replace(//gm,"").replace(//gm,"");while(w=Ap.exec(s))switch(w[3]=w[3].replace(/_.*$/,"")){case"table":;case"工作表":if(w[1]==="/"){if(x.e.c>=x.s.c&&x.e.r>=x.s.r)g["!ref"]=St(x);else g["!ref"]="A1:A1";if(i.sheetRows>0&&i.sheetRows<=x.e.r){g["!fullref"]=g["!ref"];x.e.r=i.sheetRows-1;g["!ref"]=St(x)}if(F.length)g["!merges"]=F;if(O.length)g["!rows"]=O;d.name=d["名称"]||d.name;if(typeof JSON!=="undefined")JSON.stringify(d);b.push(d.name);p[d.name]=g;$=false}else if(w[0].charAt(w[0].length-2)!=="/"){d=Ne(w[0],false);T=_=-1;x.s.r=x.s.c=1e7;x.e.r=x.e.c=0;g=i.dense?[]:{};F=[];O=[];$=true}break;case"table-row-group":if(w[1]==="/")--A;else++A;break;case"table-row":;case"行":if(w[1]==="/"){T+=N;N=1;break}v=Ne(w[0],false);if(v["行号"])T=v["行号"]-1;else if(T==-1)T=0;N=+v["number-rows-repeated"]||1;if(N<10)for(K=0;K0)O[T+K]={level:A};_=-1;break;case"covered-table-cell":if(w[1]!=="/")++_;if(i.sheetStubs){if(i.dense){if(!g[T])g[T]=[];g[T][_]={t:"z"}}else g[kt({r:T,c:_})]={t:"z"}}S="";y=[];break;case"table-cell":;case"数据":if(w[0].charAt(w[0].length-2)==="/"){++_;E=Ne(w[0],false);L=parseInt(E["number-columns-repeated"]||"1",10);k={t:"z",v:null};if(E.formula&&i.cellFormula!=false)k.f=lh(We(E.formula));if((E["数据类型"]||E["value-type"])=="string"){k.t="s";k.v=We(E["string-value"]||"");if(i.dense){if(!g[T])g[T]=[];g[T][_]=k}else{g[kt({r:T,c:_})]=k}}_+=L-1}else if(w[1]!=="/"){++_;S="";B=0;y=[];L=1;var Y=N?T+N-1:T;if(_>x.e.c)x.e.c=_;if(_x.e.r)x.e.r=Y;E=Ne(w[0],false);V=[];X={};k={t:E["数据类型"]||E["value-type"],v:null};if(i.cellFormula){if(E.formula)E.formula=We(E.formula);if(E["number-matrix-columns-spanned"]&&E["number-matrix-rows-spanned"]){D=parseInt(E["number-matrix-rows-spanned"],10)||0;P=parseInt(E["number-matrix-columns-spanned"],10)||0;I={s:{r:T,c:_},e:{r:T+D-1,c:_+P-1}};k.F=St(I);M.push([I,k.F])}if(E.formula)k.f=lh(E.formula);else for(K=0;K=M[K][0].s.r&&T<=M[K][0].e.r)if(_>=M[K][0].s.c&&_<=M[K][0].e.c)k.F=M[K][1]}if(E["number-columns-spanned"]||E["number-rows-spanned"]){D=parseInt(E["number-rows-spanned"],10)||0;P=parseInt(E["number-columns-spanned"],10)||0;I={s:{r:T,c:_},e:{r:T+D-1,c:_+P-1}};F.push(I)}if(E["number-columns-repeated"])L=parseInt(E["number-columns-repeated"],10);switch(k.t){case"boolean":k.t="b";k.v=Je(E["boolean-value"]);break;case"float":k.t="n";k.v=parseFloat(E.value);break;case"percentage":k.t="n";k.v=parseFloat(E.value);break;case"currency":k.t="n";k.v=parseFloat(E.value);break;case"date":k.t="d";k.v=oe(E["date-value"]);if(!i.cellDates){k.t="n";k.v=re(k.v)}k.z="m/d/yy";break;case"time":k.t="n";k.v=se(E["time-value"])/86400;if(i.cellDates){k.t="d";k.v=ie(k.v)}k.z="HH:MM:SS";break;case"number":k.t="n";k.v=parseFloat(E["数据数值"]);break;default:if(k.t==="string"||k.t==="text"||!k.t){k.t="s";if(E["string-value"]!=null){S=We(E["string-value"]);y=[]}}else throw new Error("Unsupported value type "+k.t);}}else{j=false;if(k.t==="s"){k.v=S||"";if(y.length)k.R=y;j=B==0}if(W.Target)k.l=W;if(V.length>0){k.c=V;V=[]}if(S&&i.cellText!==false)k.w=S;if(j){k.t="z";delete k.v}if(!j||i.sheetStubs){if(!(i.sheetRows&&i.sheetRows<=T)){for(var J=0;J0)g[T+J][_+L]=ue(k)}else{g[kt({r:T+J,c:_})]=k;while(--L>0)g[kt({r:T+J,c:_+L})]=ue(k)}if(x.e.c<=_)x.e.c=_}}}L=parseInt(E["number-columns-repeated"]||"1",10);_+=L-1;L=0;k={};S="";y=[]}W={};break;case"document":;case"document-content":;case"电子表格文档":;case"spreadsheet":;case"主体":;case"scripts":;case"styles":;case"font-face-decls":;case"master-styles":if(w[1]==="/"){if((l=f.pop())[0]!==w[3])throw"Bad state: "+l}else if(w[0].charAt(w[0].length-2)!=="/")f.push([w[3],true]);break;case"annotation":if(w[1]==="/"){if((l=f.pop())[0]!==w[3])throw"Bad state: "+l;X.t=S;if(y.length)X.R=y;X.a=G;V.push(X)}else if(w[0].charAt(w[0].length-2)!=="/"){f.push([w[3],false])}G="";z=0;S="";B=0;y=[];break;case"creator":if(w[1]==="/"){G=s.slice(z,w.index)}else z=w.index+w[0].length;break;case"meta":;case"元数据":;case"settings":;case"config-item-set":;case"config-item-map-indexed":;case"config-item-map-entry":;case"config-item-map-named":;case"shapes":;case"frame":;case"text-box":;case"image":;case"data-pilot-tables":;case"list-style":;case"form":;case"dde-links":;case"event-listeners":;case"chart":if(w[1]==="/"){if((l=f.pop())[0]!==w[3])throw"Bad state: "+l}else if(w[0].charAt(w[0].length-2)!=="/")f.push([w[3],false]);S="";B=0;y=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":;case"percentage-style":;case"date-style":;case"time-style":if(w[1]==="/"){R[c.name]=u;if((l=f.pop())[0]!==w[3])throw"Bad state: "+l}else if(w[0].charAt(w[0].length-2)!=="/"){u="";c=Ne(w[0],false);f.push([w[3],true])}break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":;case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(f[f.length-1][0]){case"time-style":;case"date-style":o=Ne(w[0],false);u+=r[w[3]][o.style==="long"?1:0];break;}break;case"fraction":break;case"day":;case"month":;case"year":;case"era":;case"day-of-week":;case"week-of-year":;case"quarter":;case"hours":;case"minutes":;case"seconds":;case"am-pm":switch(f[f.length-1][0]){case"time-style":;case"date-style":o=Ne(w[0],false);u+=r[w[3]][o.style==="long"?1:0];break;}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(w[0].slice(-2)==="/>")break;else if(w[1]==="/")switch(f[f.length-1][0]){case"number-style":;case"date-style":;case"time-style":u+=s.slice(h,w.index);break;}else h=w.index+w[0].length;break;case"named-range":o=Ne(w[0],false);H=ch(o["cell-range-address"]);var q={Name:o.name,Ref:H[0]+"!"+H[1]};if($)q.Sheet=b.length;U.Names.push(q);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":;case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":;case"文本串":if(["master-styles"].indexOf(f[f.length-1][0])>-1)break;if(w[1]==="/"&&(!E||!E["string-value"])){var Q=e(s.slice(B,w.index),C);S=(S.length>0?S+"\n":"")+Q[0]}else{C=Ne(w[0],false);B=w.index+w[0].length}break;case"s":break;case"database-range":if(w[1]==="/")break;try{H=ch(Ne(w[0])["target-range-address"]);p[H[0]]["!autofilter"]={ref:H[1]}}catch(Z){}break;case"date":break;case"object":break;case"title":;case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":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"print-date":;case"generator":;case"document-statistic":;case"user-defined":;case"editing-duration":;case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":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":if(w[1]!=="/"){W=Ne(w[0],false);if(!W.href)break;W.Target=We(W.href);delete W.href;if(W.Target.charAt(0)=="#"&&W.Target.indexOf(".")>-1){H=ch(W.Target.slice(1));W.Target="#"+H[0]+"!"+H[1]}else if(W.Target.match(/^\.\.[\\\/]/))W.Target=W.Target.slice(3)}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(w[2]){case"dc:":;case"calcext:":;case"loext:":;case"ooo:":;case"chartooo:":;case"draw:":;case"style:":;case"chart:":;case"form:":;case"uof:":;case"表:":;case"字:":break;default:if(i.WTF)throw new Error(w);};}var ee={Sheets:p,SheetNames:b,Workbook:U};if(i.bookSheets)delete ee.Sheets;return ee}}();function Im(e,r){r=r||{};if(Ee(e,"META-INF/manifest.xml"))Ja(Be(e,"META-INF/manifest.xml"),r);var t=Ce(e,"content.xml");if(!t)throw new Error("Missing content.xml in ODS / UOF file");var a=Fm(qe(t),r);if(Ee(e,"meta.xml"))a.Props=nn(Be(e,"meta.xml"));return a}function Dm(e,r){return Fm(e,r)}var Pm=function(){var e=["",'',"",'',"",'',"",""].join("");var r=""+e+"";return function t(){return Fe+r}}();var Om=function(){var e=function(e){return Xe(e).replace(/ +/g,function(e){return''}).replace(/\t/g,"").replace(/\n/g,"").replace(/^ /,"").replace(/ $/,"")};var r=" \n";var t=" \n";var a=function(a,n,i){var s=[];s.push(' \n');var f=0,l=0,o=Et(a["!ref"]||"A1");var c=a["!merges"]||[],u=0;var h=Array.isArray(a);if(a["!cols"]){for(l=0;l<=o.e.c;++l)s.push(" \n")}var d="",v=a["!rows"]||[];for(f=0;f\n")}for(;f<=o.e.r;++f){d=v[f]?' table:style-name="ro'+v[f].ods+'"':"";s.push(" \n");for(l=0;ll)continue;if(c[u].s.r>f)continue;if(c[u].e.c\n")}s.push(" \n");return s.join("")};var n=function(e,r){e.push(" \n");e.push(' \n');e.push(' \n');e.push(" /\n");e.push(' \n');e.push(" /\n");e.push(" \n");e.push(" \n");var t=0;r.SheetNames.map(function(e){return r.Sheets[e]}).forEach(function(r){if(!r)return;if(r["!cols"]){for(var a=0;a\n');e.push(' \n');e.push(" \n");++t}}});var a=0;r.SheetNames.map(function(e){return r.Sheets[e]}).forEach(function(r){if(!r)return;if(r["!rows"]){for(var t=0;t\n');e.push(' \n');e.push(" \n");++a}}});e.push(' \n');e.push(' \n');e.push(" \n");e.push(' \n');e.push(" \n")};return function i(e,r){var t=[Fe];var i=cr({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text: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:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"});var s=cr({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});if(r.bookType=="fods"){t.push("\n");t.push(rn().replace(/office:document-meta/g,"office:meta"))}else t.push("\n");n(t,e);t.push(" \n");t.push(" \n");for(var f=0;f!=e.SheetNames.length;++f)t.push(a(e.Sheets[e.SheetNames[f]],e,f,r));t.push(" \n");t.push(" \n");if(r.bookType=="fods")t.push("");else t.push("");return t.join("")}}();function Nm(e,r){if(r.bookType=="fods")return Om(e,r);var t=xe();var a="";var n=[];var i=[];a="mimetype";_e(t,a,"application/vnd.oasis.opendocument.spreadsheet");a="content.xml";_e(t,a,Om(e,r));n.push([a,"text/xml"]);i.push([a,"ContentFile"]);a="styles.xml";_e(t,a,Pm(e,r));n.push([a,"text/xml"]);i.push([a,"StylesFile"]);a="meta.xml";_e(t,a,Fe+rn());n.push([a,"text/xml"]);i.push([a,"MetadataFile"]);a="manifest.rdf";_e(t,a,en(i));n.push([a,"application/rdf+xml"]);a="META-INF/manifest.xml";_e(t,a,qa(n));return t}var Lm=!Object.defineProperty?void 0:function(){var e=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var t=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var n=function(r){return e(r,"__esModule",{value:true})};var i=function(r,t){for(var a in t)e(r,a,{get:t[a],enumerable:true})};var s=function(n,i,s,f){if(i&&typeof i==="object"||typeof i==="function")for(var l=t(i),o=0,c=l.length,u;o>1&1431655765;e=(e&858993459)+(e>>2&858993459);return(e+(e>>4)&252645135)*16843009>>>24};var d=function(e,r){var t=(e[r+15]&127)<<7|e[r+14]>>1;var a=e[r+14]&1;for(var n=r+13;n>=r;--n)a=a*256+e[n];return(e[r+15]&128?-a:a)*Math.pow(10,t-6176)};function v(e,r){var t=r?r[0]:0;var a=e[t]&127;e:if(e[t++]>=128){a|=(e[t]&127)<<7;if(e[t++]<128)break e;a|=(e[t]&127)<<14;if(e[t++]<128)break e;a|=(e[t]&127)<<21;if(e[t++]<128)break e;a+=(e[t]&127)*Math.pow(2,28);++t;if(e[t++]<128)break e;a+=(e[t]&127)*Math.pow(2,35);++t;if(e[t++]<128)break e;a+=(e[t]&127)*Math.pow(2,42);++t;if(e[t++]<128)break e}if(r)r[0]=t;return a}function p(e){var r=0,t=e[r]&127;e:if(e[r++]>=128){t|=(e[r]&127)<<7;if(e[r++]<128)break e;t|=(e[r]&127)<<14;if(e[r++]<128)break e;t|=(e[r]&127)<<21;if(e[r++]<128)break e;t|=(e[r]&127)<<28}return t}function m(e){var r=[],t=[0];while(t[0]=128);f=e.slice(l,t[0])}break;case 5:s=4;f=e.slice(t[0],t[0]+s);t[0]+=s;break;case 1:s=8;f=e.slice(t[0],t[0]+s);t[0]+=s;break;case 2:s=v(e,t);f=e.slice(t[0],t[0]+s);t[0]+=s;break;case 3:;case 4:;default:throw new Error("PB Type ".concat(i," for Field ").concat(n," at offset ").concat(a));}var o={offset:a,data:f,type:i};if(r[n]==null)r[n]=[o];else r[n].push(o)}return r}function b(e,r){if(!e)return[];return e.map(function(e){var t;try{return r(e.data)}catch(a){var n=(t=a.message)==null?void 0:t.match(/at offset (\d+)/);if(n)a.message=a.message.replace(/at offset (\d+)/,"at offset "+(+n[1]+e.offset));throw a}})}function g(e){var r=[];var t=0;while(t>2;if(s<60)++s;else{var f=s-59;s=r[t[0]];if(f>1)s|=r[t[0]+1]<<8;if(f>2)s|=r[t[0]+2]<<16;if(f>3)s|=r[t[0]+3]<<24;s>>>=0;s++;t[0]+=f}n.push(r.slice(t[0],t[0]+s));t[0]+=s;continue}else{var l=0,o=0;if(i==1){o=(r[t[0]]>>2&7)+4;l=(r[t[0]++]&224)<<3;l|=r[t[0]++]}else{o=(r[t[0]++]>>2)+1;if(i==2){l=r[t[0]]|r[t[0]+1]<<8;t[0]+=2}else{l=(r[t[0]]|r[t[0]+1]<<8|r[t[0]+2]<<16|r[t[0]+3]<<24)>>>0;t[0]+=4}}n=[u(n)];if(l==0)throw new Error("Invalid offset 0");if(l>n[0].length)throw new Error("Invalid offset beyond length");if(o>=l){n.push(n[0].slice(-l));o-=l;while(o>=n[n.length-1].length){n.push(n[n.length-1]);o-=n[n.length-1].length}}n.push(n[0].slice(-l,-l+o))}}var c=u(n);if(c.length!=a)throw new Error("Unexpected length: ".concat(c.length," != ").concat(a));return c}function k(e){var r=[],t=[0];while(t[0]0};break;case 7:d={t:"n",v:c};break;case 8:d={t:"e",v:0};break;case 9:{if(f>-1)d={t:"s",v:t[f]};else if(l>-1)d={t:"s",v:r[l]};else if(!isNaN(c))d={t:"n",v:c};else throw new Error("Unsupported cell type ".concat(e.slice(0,4)))}break;default:throw new Error("Unsupported cell type ".concat(e.slice(0,4)));}return d}function S(e,r,t){var a=o(e);var n=e[1];var i=a.getUint32(8,true);var s=12;var f=-1,l=-1,c=NaN,u=NaN,h=new Date(2001,0,1);if(i&1){c=d(e,s);s+=16}if(i&2){u=a.getFloat64(s,true);s+=8}if(i&4){h.setTime(h.getTime()+a.getFloat64(s,true)*1e3);s+=8}if(i&8){l=a.getUint32(s,true);s+=4}if(i&16){f=a.getUint32(s,true);s+=4}var v;switch(n){case 0:break;case 2:v={t:"n",v:c};break;case 3:v={t:"s",v:r[l]};break;case 5:v={t:"d",v:h};break;case 6:v={t:"b",v:u>0};break;case 7:v={t:"n",v:u};break;case 8:v={t:"e",v:0};break;case 9:{if(f>-1)v={t:"s",v:t[f]};else throw new Error("Unsupported cell type ".concat(n," : ").concat(i&31," : ").concat(e.slice(0,4)))}break;case 10:v={t:"n",v:c};break;default:throw new Error("Unsupported cell type ".concat(n," : ").concat(i&31," : ").concat(e.slice(0,4)));}return v}function B(e,r,t){switch(e[0]){case 3:;case 4:return E(e,r,t);case 5:return S(e,r,t);default:throw new Error("Unsupported payload version ".concat(e[0]));}}var C=function(e){var r="";for(++e;e;e=Math.floor((e-1)/26))r=String.fromCharCode((e-1)%26+65)+r;return r};var y=function(e){return"".concat(C(e.c)).concat(e.r+1)};var T=function(e){return y(e.s)+":"+y(e.e)};var x=function(){return{Sheets:{},SheetNames:[]}};var A=function(e,r,t){if(!t)for(var a=1;a<9999;++a){if(e.SheetNames.indexOf(t="Sheet ".concat(a))==-1)break}else if(e.SheetNames.indexOf(t)>-1)for(var a=1;a<9999;++a){if(e.SheetNames.indexOf("".concat(t,"_").concat(a))==-1){t="".concat(t,"_").concat(a);break}}e.SheetNames.push(t);e.Sheets[t]=r};function R(e){var r=[];e.FullPaths.forEach(function(e){if(e.match(/\.iwpv2/))throw new Error("Unsupported password protection")});e.FileIndex.forEach(function(e){if(!e.name.match(/\.iwa$/))return;var t;try{t=g(e.content)}catch(a){return console.log("?? "+e.content.length+" "+(a.message||a))}var n;try{n=k(t)}catch(a){return console.log("## "+(a.message||a))}n.forEach(function(e){r[+e.id]=e.messages})});if(!r.length)throw new Error("File has no messages");var t;r.forEach(function(e){e.forEach(function(e){var r=p(e.meta[1][0].data)>>>0;if(r==1){if(!t)t=e;else throw new Error("Document has multiple roots")}})});if(!t)throw new Error("Cannot find Document root");return U(r,t)}var F=R;function I(e){var r=m(e);return v(r[1][0].data)}function D(e,r){var t=m(r.data);var a=p(t[1][0].data);var n=t[3];var i=[];(n||[]).forEach(function(r){var t=m(r.data);var n=p(t[1][0].data)>>>0;switch(a){case 1:i[n]=c(t[3][0].data);break;case 8:{var s=e[I(t[9][0].data)][0];var f=m(s.data);var l=e[I(f[1][0].data)][0];var o=p(l.meta[1][0].data);if(o!=2001)throw new Error("2000 unexpected reference to ".concat(o));var u=m(l.data);i[n]=u[3].map(function(e){return c(e.data)}).join("")}break;}});return i}function P(e){var r,t,a,n,i,s,f,l,c,u;var h=m(e);var d=p(h[1][0].data)>>>0;var v=(t=(r=h[3])==null?void 0:r[0])==null?void 0:t.data;var b=((n=(a=h[4])==null?void 0:a[0])==null?void 0:n.data)&&o(h[4][0].data);var g=(s=(i=h[6])==null?void 0:i[0])==null?void 0:s.data;var w=((l=(f=h[7])==null?void 0:f[0])==null?void 0:l.data)&&o(h[7][0].data);var k=((u=(c=h[8])==null?void 0:c[0])==null?void 0:u.data)&&p(h[8][0].data)>0||false;var E=k?4:1;var S=[];var B=0;for(var C=0;C>>0)-1;if(i.e.c<0)throw new Error("Invalid col varint ".concat(n[7][0].data));t["!ref"]=T(i);{var s=m(n[4][0].data);var f=D(e,e[I(s[4][0].data)][0]);var l=((a=s[17])==null?void 0:a[0])?D(e,e[I(s[17][0].data)][0]):[];{var o=m(s[3][0].data);var c=[];o[1].forEach(function(r){var t=m(r.data);var a=e[I(t[2][0].data)][0];var n=p(a.meta[1][0].data);if(n!=6002)throw new Error("6001 unexpected reference to ".concat(n));c.push({id:p(t[1][0].data),ref:O(e,a)})});c.forEach(function(e){e.ref.forEach(function(e,r){e.forEach(function(e,a){var n=y({r:r,c:a});var i=B(e,f,l);if(i)t[n]=i})})})}}}function L(e,r){var t=m(r.data);var a={"!ref":"A1"};var n=e[I(t[2][0].data)];var i=p(n[0].meta[1][0].data);if(i!=6001)throw new Error("6000 unexpected reference to ".concat(i));N(e,n[0],a);return a}function M(e,r){var t;var a=m(r.data);var n={name:((t=a[1])==null?void 0:t[0])?c(a[1][0].data):"",sheets:[]};var i=b(a[2],I);i.forEach(function(r){e[r].forEach(function(r){var t=p(r.meta[1][0].data);if(t==6e3)n.sheets.push(L(e,r))})});return n}function U(e,r){var t=x();var a=m(r.data);var n=b(a[1],I);n.forEach(function(r){e[r].forEach(function(r){var a=p(r.meta[1][0].data);if(a==2){var n=M(e,r);n.sheets.forEach(function(e){A(t,e,n.name)})}})});if(t.SheetNames.length==0)throw new Error("Empty NUMBERS file");return t}return f(l)}();function Mm(e){return function r(t){for(var a=0;a!=e.length;++a){var n=e[a];if(t[n[0]]===undefined)t[n[0]]=n[1];if(n[2]==="n")t[n[0]]=Number(t[n[0]])}}}var Um=function(e){Mm([["cellNF",false],["cellHTML",true],["cellFormula",true],["cellStyles",false],["cellText",true],["cellDates",false],["sheetStubs",false],["sheetRows",0,"n"],["bookDeps",false],["bookSheets",false],["bookProps",false],["bookFiles",false],["bookVBA",false],["password",""],["WTF",false]])(e)};var Wm=Mm([["cellDates",false],["bookSST",false],["bookType","xlsx"],["compression",false],["WTF",false]]);function Hm(e){if(Va.WS.indexOf(e)>-1)return"sheet";if(Va.CS&&e==Va.CS)return"chart";if(Va.DS&&e==Va.DS)return"dialog";if(Va.MS&&e==Va.MS)return"macro";return e&&e.length?e:"sheet"}function Vm(e,r){if(!e)return 0;try{e=r.map(function a(r){if(!r.id)r.id=r.strRelID;return[r.name,e["!id"][r.id].Target,Hm(e["!id"][r.id].Type)]})}catch(t){return null}return!e||e.length===0?null:e}function Xm(e,r,t,a,n,i,s,f,l,o,c,u){try{i[a]=Ga(Ce(e,t,true),r);var h=Be(e,r);var d;switch(f){case"sheet":d=tp(h,r,n,l,i[a],o,c,u);break;case"chart":d=ap(h,r,n,l,i[a],o,c,u);if(!d||!d["!drawel"])break;var v=Re(d["!drawel"].Target,r);var p=Xa(v);var m=Vo(Ce(e,v,true),Ga(Ce(e,p,true),v));var b=Re(m,v);var g=Xa(b);d=kv(Ce(e,b,true),b,l,Ga(Ce(e,g,true),b),o,d);break;case"macro":d=np(h,r,n,l,i[a],o,c,u);break;case"dialog":d=ip(h,r,n,l,i[a],o,c,u);break;default:throw new Error("Unrecognized sheet type "+f);}s[a]=d;var w=[];if(i&&i[a])Y(i[a]).forEach(function(t){if(i[a][t].Type==Va.CMNT){var n=Re(i[a][t].Target,r);w=op(Be(e,n,true),n,l);if(!w||!w.length)return;zo(d,w)}})}catch(k){if(l.WTF)throw k}}function Gm(e){return e.charAt(0)=="/"?e.slice(1):e}function zm(e,r){O(P);r=r||{};Um(r);if(Ee(e,"META-INF/manifest.xml"))return Im(e,r);if(Ee(e,"objectdata.xml"))return Im(e,r);if(Ee(e,"Index/Document.iwa")){if(typeof Uint8Array=="undefined")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof Lm!="undefined"){if(e.FileIndex)return Lm.parse_numbers(e);var t=X.utils.cfb_new();Te(e).forEach(function(r){_e(t,r,ye(e,r))});return Lm.parse_numbers(t)}throw new Error("Unsupported NUMBERS file")}if(!Ee(e,"[Content_Types].xml")){if(Ee(e,"index.xml.gz"))throw new Error("Unsupported NUMBERS 08 file");if(Ee(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Error("Unsupported ZIP file")}var a=Te(e);var n=Ma(Ce(e,"[Content_Types].xml"));var i=false;var s,f;if(n.workbooks.length===0){f="xl/workbook.xml";if(Be(e,f,true))n.workbooks.push(f)}if(n.workbooks.length===0){f="xl/workbook.bin";if(!Be(e,f,true))throw new Error("Could not find workbook");n.workbooks.push(f);i=true}if(n.workbooks[0].slice(-3)=="bin")i=true;var l={};var o={};if(!r.bookSheets&&!r.bookProps){hh=[];if(n.sst)try{hh=lp(Be(e,Gm(n.sst)),n.sst,r)}catch(c){if(r.WTF)throw c}if(r.cellStyles&&n.themes.length)l=fp(Ce(e,n.themes[0].replace(/^\//,""),true)||"",n.themes[0],r);if(n.style)o=sp(Be(e,Gm(n.style)),n.style,l,r)}n.links.map(function(t){try{var a=Ga(Ce(e,Xa(Gm(t))),t);return up(Be(e,Gm(t)),a,t,r)}catch(n){}});var u=rp(Be(e,Gm(n.workbooks[0])),n.workbooks[0],r);var h={},d="";if(n.coreprops.length){d=Be(e,Gm(n.coreprops[0]),true);if(d)h=nn(d);if(n.extprops.length!==0){d=Be(e,Gm(n.extprops[0]),true);if(d)hn(d,h,r)}}var v={};if(!r.bookSheets||r.bookProps){if(n.custprops.length!==0){d=Ce(e,Gm(n.custprops[0]),true);if(d)v=mn(d,r)}}var p={};if(r.bookSheets||r.bookProps){if(u.Sheets)s=u.Sheets.map(function F(e){return e.name});else if(h.Worksheets&&h.SheetNames.length>0)s=h.SheetNames;if(r.bookProps){p.Props=h;p.Custprops=v}if(r.bookSheets&&typeof s!=="undefined")p.SheetNames=s;if(r.bookSheets?p.SheetNames:r.bookProps)return p}s={};var m={};if(r.bookDeps&&n.calcchain)m=cp(Be(e,Gm(n.calcchain)),n.calcchain,r);var b=0;var g={};var w,k;{var E=u.Sheets;h.Worksheets=E.length;h.SheetNames=[];for(var S=0;S!=E.length;++S){h.SheetNames[S]=E[S].name}}var B=i?"bin":"xml";var C=n.workbooks[0].lastIndexOf("/");var y=(n.workbooks[0].slice(0,C+1)+"_rels/"+n.workbooks[0].slice(C+1)+".rels").replace(/^\//,"");if(!Ee(e,y))y="xl/_rels/workbook."+B+".rels";var T=Ga(Ce(e,y,true),y);if(T)T=Vm(T,u.Sheets);var _=Be(e,"xl/worksheets/sheet.xml",true)?1:0;e:for(b=0;b!=h.Worksheets;++b){var x="sheet";if(T&&T[b]){w="xl/"+T[b][1].replace(/[\/]?xl\//,"");if(!Ee(e,w))w=T[b][1];if(!Ee(e,w))w=y.replace(/_rels\/.*$/,"")+T[b][1];x=T[b][2]}else{w="xl/worksheets/sheet"+(b+1-_)+"."+B;w=w.replace(/sheet0\./,"sheet.")}k=w.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels");if(r&&r.sheets!=null)switch(typeof r.sheets){case"number":if(b!=r.sheets)continue e;break;case"string":if(h.SheetNames[b].toLowerCase()!=r.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(r.sheets)){var A=false;for(var R=0;R!=r.sheets.length;++R){if(typeof r.sheets[R]=="number"&&r.sheets[R]==b)A=1;if(typeof r.sheets[R]=="string"&&r.sheets[R].toLowerCase()==h.SheetNames[b].toLowerCase())A=1}if(!A)continue e};}Xm(e,w,k,h.SheetNames[b],b,g,s,x,r,u,l,o)}p={Directory:n,Workbook:u,Props:h,Custprops:v,Deps:m,Sheets:s,SheetNames:h.SheetNames,Strings:hh,Styles:o,Themes:l,SSF:P.get_table()};if(r&&r.bookFiles){if(e.files){p.keys=a;p.files=e.files}else{p.keys=[];p.files={};e.FullPaths.forEach(function(r,t){r=r.replace(/^Root Entry[\/]/,"");p.keys.push(r);p.files[r]=e.FileIndex[t]})}}if(r&&r.bookVBA){if(n.vba.length>0)p.vbaraw=Be(e,Gm(n.vba[0]),true);else if(n.defaults&&n.defaults.bin===rc)p.vbaraw=Be(e,"xl/vbaProject.bin",true)}return p}function jm(e,r){var t=r||{};var a="Workbook",n=X.find(e,a);try{a="/!DataSpaces/Version";n=X.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);Gf(n.content);a="/!DataSpaces/DataSpaceMap";n=X.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var i=jf(n.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace";n=X.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var s=$f(n.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary";n=X.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);Yf(n.content)}catch(f){}a="/EncryptionInfo";n=X.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var l=Qf(n.content);a="/EncryptedPackage";n=X.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);if(l[0]==4&&typeof decrypt_agile!=="undefined")return decrypt_agile(l[1],n.content,t.password||"",t);if(l[0]==2&&typeof decrypt_std76!=="undefined")return decrypt_std76(l[1],n.content,t.password||"",t);throw new Error("File is password-protected")}function $m(e,r){if(r.bookType=="ods")return Nm(e,r);return Km(e,r)}function Km(e,r){Xo=1024;if(e&&!e.SSF){e.SSF=P.get_table()}if(e&&e.SSF){O(P);P.load_table(e.SSF);r.revssf=Q(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(vh)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t=r.bookType=="xlsb"?"bin":"xml";var a=nc.indexOf(r.bookType)>-1;var n=La();Wm(r=r||{});var i=xe();var s="",f=0;r.cellXfs=[];gh(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";_e(i,s,ln(e.Props,r));n.coreprops.push(s);Ka(r.rels,2,s,Va.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var l=[];for(var o=0;o0){s="docProps/custom.xml";_e(i,s,gn(e.Custprops,r));n.custprops.push(s);Ka(r.rels,4,s,Va.CUST_PROPS)}for(f=1;f<=e.SheetNames.length;++f){var c={"!id":{}};var u=e.Sheets[e.SheetNames[f-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+f+"."+t;_e(i,s,dp(f-1,s,r,e,c));n.sheets.push(s);Ka(r.wbrels,-1,"worksheets/sheet"+f+"."+t,Va.WS[0]);}if(u){var d=u["!comments"];var v=false;if(d&&d.length>0){var p="xl/comments"+f+"."+t;_e(i,p,bp(d,p,r));n.comments.push(p);Ka(c,-1,"../comments"+f+"."+t,Va.CMNT);v=true}if(u["!legacy"]){if(v)_e(i,"xl/drawings/vmlDrawing"+f+".vml",Go(f,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(c["!id"].rId1)_e(i,Xa(s),ja(c))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;_e(i,s,mp(r.Strings,s,r));n.strs.push(s);Ka(r.wbrels,-1,"sharedStrings."+t,Va.SST)}s="xl/workbook."+t;_e(i,s,hp(e,s,r));n.workbooks.push(s);Ka(r.rels,1,s,Va.WB);s="xl/theme/theme1.xml";_e(i,s,xo(e.Themes,r));n.themes.push(s);Ka(r.wbrels,-1,"theme/theme1.xml",Va.THEME);s="xl/styles."+t;_e(i,s,pp(e,s,r));n.styles.push(s);Ka(r.wbrels,-1,"styles."+t,Va.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";_e(i,s,e.vbaraw);n.vba.push(s);Ka(r.wbrels,-1,"vbaProject.bin",Va.VBA)}_e(i,"[Content_Types].xml",Ha(n,r));_e(i,"_rels/.rels",ja(r.rels));_e(i,"xl/_rels/workbook."+t+".rels",ja(r.wbrels));delete r.revssf;delete r.ssf;return i}function Ym(e,r){Xo=1024;if(e&&!e.SSF){e.SSF=P.get_table()}if(e&&e.SSF){O(P);P.load_table(e.SSF);r.revssf=Q(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(vh)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t="xml";var a=nc.indexOf(r.bookType)>-1;var n=La();Wm(r=r||{});var i=xe();var s="",f=0;r.cellXfs=[];gh(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";_e(i,s,ln(e.Props,r));n.coreprops.push(s);Ka(r.rels,2,s,Va.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var l=[];for(var o=0;o0){s="docProps/custom.xml";_e(i,s,gn(e.Custprops,r));n.custprops.push(s);Ka(r.rels,4,s,Va.CUST_PROPS)}for(f=1;f<=e.SheetNames.length;++f){var c={"!id":{}};var u=e.Sheets[e.SheetNames[f-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+f+"."+t;_e(i,s,ed(f-1,r,e,c));n.sheets.push(s);Ka(r.wbrels,-1,"worksheets/sheet"+f+"."+t,Va.WS[0]);}if(u){var d=u["!comments"];var v=false;if(d&&d.length>0){var p="xl/comments"+f+"."+t;_e(i,p,Ko(d,r));n.comments.push(p);Ka(c,-1,"../comments"+f+"."+t,Va.CMNT);v=true}if(u["!legacy"]){if(v)_e(i,"xl/drawings/vmlDrawing"+f+".vml",Go(f,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(c["!id"].rId1)_e(i,Xa(s),ja(c))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;_e(i,s,Nf(r.Strings,r));n.strs.push(s);Ka(r.wbrels,-1,"sharedStrings."+t,Va.SST)}s="xl/workbook."+t;_e(i,s,Vv(e,r));n.workbooks.push(s);Ka(r.rels,1,s,Va.WB);s="xl/theme/theme1.xml";_e(i,s,xo(e.Themes,r));n.themes.push(s);Ka(r.wbrels,-1,"theme/theme1.xml",Va.THEME);s="xl/styles."+t;_e(i,s,Xl(e,r));n.styles.push(s);Ka(r.wbrels,-1,"styles."+t,Va.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";_e(i,s,e.vbaraw);n.vba.push(s);Ka(r.wbrels,-1,"vbaProject.bin",Va.VBA)}_e(i,"[Content_Types].xml",Ha(n,r));_e(i,"_rels/.rels",ja(r.rels));_e(i,"xl/_rels/workbook."+t+".rels",ja(r.wbrels));delete r.revssf;delete r.ssf;return i}function Jm(e,r){var t="";switch((r||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":t=g.decode(e.slice(0,12));break;case"binary":t=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(r&&r.type||"undefined"));}return[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3),t.charCodeAt(4),t.charCodeAt(5),t.charCodeAt(6),t.charCodeAt(7)]}function qm(e,r){if(X.find(e,"EncryptedPackage"))return jm(e,r);return Zp(e,r)}function Qm(e,r){var t,a=e;var n=r||{};if(!n.type)n.type=w&&Buffer.isBuffer(e)?"buffer":"base64";t=Ae(a,n);return zm(t,n)}function Zm(e,r){var t=0;e:while(t=2&&n[3]===0)return Bf.to_workbook(a,t);if(n[2]===0&&(n[3]===8||n[3]===9))return Bf.to_workbook(a,t)}break;case 3:;case 131:;case 139:;case 140:return bf.to_workbook(a,t);case 123:if(n[1]===92&&n[2]===114&&n[3]===116)return ul.to_workbook(a,t);break;case 10:;case 13:;case 32:return eb(a,t);case 137:if(n[1]===80&&n[2]===78&&n[3]===71)throw new Error("PNG Image File is not a spreadsheet");break;}if(bf.versions.indexOf(n[0])>-1&&n[2]<=12&&n[3]<=31)return bf.to_workbook(a,t);return ab(e,a,t,i)}function ib(e,r){var t=r||{};t.type="file";return nb(e,t)}function sb(e){return function r(t,a){var n=0;if(a.sheet){if(typeof a.sheet=="number")n=a.sheet;else n=t.SheetNames.indexOf(a.sheet);if(!t.SheetNames[n])throw new Error("Sheet not found: "+a.sheet+" : "+typeof a.sheet)}return e.from_sheet(t.Sheets[t.SheetNames[n]],a,t)}}var fb=sb(ym);var lb=sb({from_sheet:Ob});var ob=sb(typeof gf!=="undefined"?gf:{});var cb=sb(typeof wf!=="undefined"?wf:{});var ub=sb(typeof Ef!=="undefined"?Ef:{});var hb=sb(typeof ul!=="undefined"?ul:{});var db=sb({from_sheet:Nb});var vb=sb(typeof bf!=="undefined"?bf:{});var pb=sb(typeof kf!=="undefined"?kf:{});var mb=sb(typeof Bf!=="undefined"?{from_sheet:Bf.sheet_to_wk1}:{});function bb(e,r){switch(r.type){case"base64":;case"binary":break;case"buffer":;case"array":r.type="";break;case"file":return j(r.file,X.write(e,{type:w?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");default:throw new Error("Unrecognized type "+r.type);}return X.write(e,r)}function gb(e,r){var t=ue(r||{});var a=$m(e,t);return kb(a,t)}function wb(e,r){var t=ue(r||{});var a=Ym(e,t);return kb(a,t)}function kb(e,r){var t={};if(r.compression)t.compression="DEFLATE";if(r.password)t.type=w?"nodebuffer":"string";else switch(r.type){case"base64":t.type="base64";break;case"binary":t.type="string";break;case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");case"buffer":;case"file":t.type=w?"nodebuffer":"string";break;default:throw new Error("Unrecognized type "+r.type);}var a=e.FullPaths?X.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[t.type]||t.type,compression:!!r.compression}):e.generate(t);if(typeof Deno!=="undefined"){if(typeof a=="string"){if(r.type=="binary"||r.type=="base64")return a;a=new Uint8Array(T(a))}}if(r.password&&typeof encrypt_agile!=="undefined")return bb(encrypt_agile(a,r.password),r);if(r.type==="file")return j(r.file,a);return r.type=="string"?qe(a):a}function Eb(e,r){var t=r||{};var a=em(e,t);return bb(a,t)}function Sb(e,r,t){if(!t)t="";var a=t+e;switch(r.type){case"base64":return g.encode(Qe(a));case"binary":return Qe(a);case"string":return e;case"file":return j(r.file,a,"utf8");case"buffer":{if(w)return k(a,"utf8");else if(typeof TextEncoder!=="undefined")return(new TextEncoder).encode(a);else return Sb(a,{type:"binary"}).split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function Bb(e,r){switch(r.type){case"base64":return g.encode(e);case"binary":return e;case"string":return e;case"file":return j(r.file,e,"binary");case"buffer":{if(w)return k(e,"binary");else return e.split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function Cb(e,r){switch(r.type){case"string":;case"base64":;case"binary":var t="";for(var a=0;a0)n=0;var u=ut(l.s.r);var h=[];var d=[];var v=0,p=0;var m=Array.isArray(e);var b=l.s.r,g=0,w=0;if(m&&!e[b])e[b]=[];for(g=l.s.c;g<=l.e.c;++g){h[g]=pt(g);t=m?e[b][g]:e[h[g]+u];switch(a){case 1:i[g]=g-l.s.c;break;case 2:i[g]=h[g];break;case 3:i[g]=o.header[g-l.s.c];break;default:if(t==null)t={w:"__EMPTY",t:"s"};f=s=yt(t,null,o);p=0;for(w=0;w=0)c='"'+c.replace(Db,'""')+'"'}else c="";o.push(c)}if(f.blankrows===false&&l)return null;return o.join(s)}function Ob(e,r){var t=[];var a=r==null?{}:r;if(e==null||e["!ref"]==null)return"";var n=Bt(e["!ref"]);var i=a.FS!==undefined?a.FS:",",s=i.charCodeAt(0);var f=a.RS!==undefined?a.RS:"\n",l=f.charCodeAt(0);var o=new RegExp((i=="|"?"\\|":i)+"+$");var c="",u=[];a.dense=Array.isArray(e);var h=a.skipHidden&&e["!cols"]||[];var d=a.skipHidden&&e["!rows"]||[];for(var v=n.s.c;v<=n.e.c;++v)if(!(h[v]||{}).hidden)u[v]=pt(v);for(var p=n.s.r;p<=n.e.r;++p){if((d[p]||{}).hidden)continue; -c=Pb(e,n,p,u,s,l,i,a);if(c==null){continue}if(a.strip)c=c.replace(o,"");t.push(c+f)}delete a.dense;return t.join("")}function Nb(e,r){if(!r)r={};r.FS="\t";r.RS="\n";var t=Ob(e,r);if(typeof cptable=="undefined"||r.type=="string")return t;var a=cptable.utils.encode(1200,t,"str");return String.fromCharCode(255)+String.fromCharCode(254)+a}function Lb(e){var r="",t,a="";if(e==null||e["!ref"]==null)return[];var n=Bt(e["!ref"]),i="",s=[],f;var l=[];var o=Array.isArray(e);for(f=n.s.c;f<=n.e.c;++f)s[f]=pt(f);for(var c=n.s.r;c<=n.e.r;++c){i=ut(c);for(f=n.s.c;f<=n.e.c;++f){r=s[f]+i;t=o?(e[c]||[])[f]:e[r];a="";if(t===undefined)continue;else if(t.F!=null){r=t.F;if(!t.f)continue;a=t.f;if(r.indexOf(":")==-1)r=r+":"+r}if(t.f!=null)a=t.f;else if(t.t=="z")continue;else if(t.t=="n"&&t.v!=null)a=""+t.v;else if(t.t=="b")a=t.v?"TRUE":"FALSE";else if(t.w!==undefined)a="'"+t.w;else if(t.v===undefined)continue;else if(t.t=="s")a="'"+t.v;else a=""+t.v;l[l.length]=r+"="+a}}return l}function Mb(e,r,t){var a=t||{};var n=+!a.skipHeader;var i=e||{};var s=0,f=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var l=typeof a.origin=="string"?wt(a.origin):a.origin;s=l.r;f=l.c}}var o;var c={s:{c:0,r:0},e:{c:f,r:s+r.length-1+n}};if(i["!ref"]){var u=Bt(i["!ref"]);c.e.c=Math.max(c.e.c,u.e.c);c.e.r=Math.max(c.e.r,u.e.r);if(s==-1){s=u.e.r+1;c.e.r=s+r.length-1+n}}else{if(s==-1){s=0;c.e.r=r.length-1+n}}var h=a.header||[],d=0;r.forEach(function(e,r){Y(e).forEach(function(t){if((d=h.indexOf(t))==-1)h[d=h.length]=t;var l=e[t];var c="z";var u="";var v=kt({c:f+d,r:s+r+n});o=Wb.sheet_get_cell(i,v);if(l&&typeof l==="object"&&!(l instanceof Date)){i[v]=l}else{if(typeof l=="number")c="n";else if(typeof l=="boolean")c="b";else if(typeof l=="string")c="s";else if(l instanceof Date){c="d";if(!a.cellDates){c="n";l=re(l)}u=a.dateNF||P._table[14]}else if(l===null&&a.nullError){c="e";l=0}if(!o)i[v]=o={t:c,v:l};else{o.t=c;o.v=l;delete o.w;delete o.R;if(u)o.z=u}if(u)o.z=u}})});c.e.c=Math.max(c.e.c,f+h.length-1);var v=ut(s);if(n)for(d=0;d=0&&e.SheetNames.length>r)return r;throw new Error("Cannot find sheet # "+r)}else if(typeof r=="string"){var t=e.SheetNames.indexOf(r);if(t>-1)return t;throw new Error("Cannot find sheet name |"+r+"|")}else throw new Error("Cannot find sheet |"+r+"|")}e.book_new=function(){return{SheetNames:[],Sheets:{}}};e.book_append_sheet=function(e,r,t){if(!t)for(var a=1;a<=65535;++a,t=undefined)if(e.SheetNames.indexOf(t="Sheet"+a)==-1)break;if(!t||e.SheetNames.length>=65535)throw new Error("Too many worksheets");Nv(t);if(e.SheetNames.indexOf(t)>=0)throw new Error("Worksheet with name |"+t+"| already exists!");e.SheetNames.push(t);e.Sheets[t]=r};e.book_set_sheet_visibility=function(e,r,a){t(e,"Workbook",{});t(e.Workbook,"Sheets",[]);var i=n(e,r);t(e.Workbook.Sheets,i,{});switch(a){case 0:;case 1:;case 2:break;default:throw new Error("Bad sheet visibility setting "+a);}e.Workbook.Sheets[i].Hidden=a};r([["SHEET_VISIBLE",0],["SHEET_HIDDEN",1],["SHEET_VERY_HIDDEN",2]]);e.cell_set_number_format=function(e,r){e.z=r;return e};e.cell_set_hyperlink=function(e,r,t){if(!r){delete e.l}else{e.l={Target:r};if(t)e.l.Tooltip=t}return e};e.cell_set_internal_link=function(r,t,a){return e.cell_set_hyperlink(r,"#"+t,a)};e.cell_add_comment=function(e,r,t){if(!e.c)e.c=[];e.c.push({t:r,a:t||"SheetJS"})};e.sheet_set_array_formula=function(e,r,t){var n=typeof r!="string"?r:Bt(r);var i=typeof r=="string"?r:St(r);for(var s=n.s.r;s<=n.e.r;++s)for(var f=n.s.c;f<=n.e.c;++f){var l=a(e,s,f);l.t="n";l.F=i;delete l.v;if(s==n.s.r&&f==n.s.c)l.f=t}return e};return e})(Wb);if(w&&typeof require!="undefined")(function(){var r=undefined;if(!r)return;var t=r.Readable;if(!t)return;var a=function(e,r){var a=t();var n=r==null?{}:r;if(e==null||e["!ref"]==null){a.push(null);return a}var i=Bt(e["!ref"]);var s=n.FS!==undefined?n.FS:",",f=s.charCodeAt(0);var l=n.RS!==undefined?n.RS:"\n",o=l.charCodeAt(0);var c=new RegExp((s=="|"?"\\|":s)+"+$");var u="",h=[];n.dense=Array.isArray(e);var d=n.skipHidden&&e["!cols"]||[];var v=n.skipHidden&&e["!rows"]||[];for(var p=i.s.c;p<=i.e.c;++p)if(!(d[p]||{}).hidden)h[p]=pt(p);var m=i.s.r;var b=false;a._read=function(){if(!b){b=true;return a.push("\ufeff")}while(m<=i.e.r){++m;if((v[m-1]||{}).hidden)continue;u=Pb(e,i,m-1,h,f,o,s,n);if(u!=null){if(n.strip)u=u.replace(c,"");a.push(u+l);break}}if(m>i.e.r)return a.push(null)};return a};var n=function(e,r){var a=t();var n=r||{};var i=n.header!=null?n.header:ym.BEGIN;var s=n.footer!=null?n.footer:ym.END;a.push(i);var f=Et(e["!ref"]);n.dense=Array.isArray(e);a.push(ym._preamble(e,f,n));var l=f.s.r;var o=false;a._read=function(){if(l>f.e.r){if(!o){o=true;a.push(""+s)}return a.push(null)}while(l<=f.e.r){a.push(ym._row(e,f,l,n));++l;break}};return a};var i=function(e,r){var a=t({objectMode:true});if(e==null||e["!ref"]==null){a.push(null);return a}var n={t:"n",v:0},i=0,s=1,f=[],l=0,o="";var c={s:{r:0,c:0},e:{r:0,c:0}};var u=r||{};var h=u.range!=null?u.range:e["!ref"];if(u.header===1)i=1;else if(u.header==="A")i=2;else if(Array.isArray(u.header))i=3;switch(typeof h){case"string":c=Bt(h);break;case"number":c=Bt(e["!ref"]);c.s.r=h;break;default:c=h;}if(i>0)s=0;var d=ut(c.s.r);var v=[];var p=0;var m=Array.isArray(e);var b=c.s.r,g=0,w=0;if(m&&!e[b])e[b]=[];for(g=c.s.c;g<=c.e.c;++g){v[g]=pt(g);n=m?e[b][g]:e[v[g]+d];switch(i){case 1:f[g]=g-c.s.c;break;case 2:f[g]=v[g];break;case 3:f[g]=u.header[g-c.s.c];break;default:if(n==null)n={w:"__EMPTY",t:"s"};o=l=yt(n,null,u);p=0;for(w=0;wc.e.r)return a.push(null);while(b<=c.e.r){var r=Fb(e,c,b,v,i,f,m,u);++b;if(r.isempty===false||(i===1?u.blankrows!==false:!!u.blankrows)){a.push(r.row);break}}};return a};e.stream={to_json:i,to_html:n,to_csv:a}})();if(typeof Zp!=="undefined")e.parse_xlscfb=Zp;e.parse_zip=zm;e.read=nb;e.readFile=ib;e.readFileSync=ib;e.write=Tb;e.writeFile=xb;e.writeFileSync=xb;e.writeFileAsync=Rb;e.utils=Wb;e.writeXLSX=yb;e.writeFileXLSX=Ab;e.SSF=P;if(typeof X!=="undefined")e.CFB=X}if(typeof exports!=="undefined")make_xlsx_lib(exports);else if(typeof module!=="undefined"&&module.exports)make_xlsx_lib(module.exports);else if(typeof define==="function"&&define.amd)define("xlsx",function(){if(!XLSX.version)make_xlsx_lib(XLSX);return XLSX});else make_xlsx_lib(XLSX);if(typeof window!=="undefined"&&!window.XLSX)try{window.XLSX=XLSX}catch(e){} diff --git a/dist/xlsx.min.map b/dist/xlsx.min.map deleted file mode 100644 index c65cbf7..0000000 --- a/dist/xlsx.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["misc/suppress_export.js","dist/xlsx.js"],"names":["DO_NOT_EXPORT_CODEPAGE","XLSX","make_xlsx_lib","version","current_codepage","current_ansi","module","require","cptable","global","undefined","window","VALID_ANSI","i","push","CS2CP","0","1","2","77","128","129","130","134","136","161","162","163","177","178","186","204","222","238","255","69","set_ansi","cp","indexOf","reset_ansi","set_cp","reset_cp","char_codes","data","o","len","length","charCodeAt","utf16leread","String","fromCharCode","join","utf16beread","debom","c1","c2","slice","_getchar","_gc1","x","_getansi","_ga1","utils","decode","_gc2","_ga2","DENSE","DIF_XL","Base64","map","encode","input","c3","e1","e2","e3","e4","isNaN","charAt","replace","has_buf","Buffer","process","versions","node","Buffer_from","nbfs","from","e","buf","enc","bind","alloc","n","allocUnsafe","new_raw_buf","Uint8Array","Array","new_unsafe_buf","s2a","s","split","s2ab","ArrayBuffer","view","a2s","isArray","c","a2u","Error","ab2a","utf8decode","content","out","widx","L","ridx","d","bconcat","bufs","maxlen","set","concat","apply","call","chr0","chr1","SSF","make_ssf","_strrev","fill","l","pad0","v","t","pad_","rpad_","pad0r1","Math","round","pad0r2","p2_32","pow","pad0r","isgeneral","days","months","init_table","table_fmt","default_map","defi","default_str","frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","floor","q","parse_date_code","opts","b2","date","time","dow","dout","T","u","y","m","H","M","S","abs","date1904","Date","setDate","getDate","getFullYear","getMonth","getDay","fix_hijri","basedate","dnthresh","getTime","base1904","datenum_local","epoch","getTimezoneOffset","general_fmt_int","toString","_general_int","general_fmt_num","make_general_fmt_num","trailing_zeroes_and_decimal","strip_decimal","mantissa_zeroes_and_decimal","exp_with_single_digit","normalize_exp","small_exp","w","toFixed","toPrecision","toExponential","large_exp","general_fmt_num_base","V","log","LOG10E","substr","toUpperCase","_general_num","general_fmt","format","_general","write_date","type","fmt","val","ss0","ss","tt","outl","outstr","commaify","j","write_num","make_write_num","pct1","write_num_pct","sfmt","mul","write_num_cm","idx","write_num_exp","match","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","r","aval","sign","den","parseInt","rr","base","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","str","cc","rnd","dd","dec","_frac","carry","flr","write_num_flt","ffmt","ri","ff","oa","min","max","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","lastIndexOf","split_fmt","in_str","_split","abstime","fmt_is_date","is_date","eval_fmt","flen","lst","dt","hr","toLowerCase","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","_eval","cfregex","cfregex2","chkcond","thresh","parseFloat","choose_fmt","f","lat","m1","m2","dateNF","table","load_entry","load","_table","get_table","load_table","tbl","XLMLFormatMap","General Number","General Date","Long Date","Medium Date","Short Date","Long Time","Medium Time","Short Time","Currency","Fixed","Standard","Percent","Scientific","Yes/No","True/False","On/Off","SSFImplicit","5","6","7","8","23","24","25","26","27","28","29","30","31","32","33","34","35","36","41","42","43","44","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","70","71","72","73","74","75","76","78","79","80","81","dateNFregex","dateNF_regex","RegExp","dateNF_fix","Y","forEach","datestr","timestr","DO_NOT_EXPORT_CFB","CRC32","factory","signed_crc_table","Int32Array","T0","slice_by_16_tables","subarray","TT","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","seed","C","crc32_buf","crc32_str","CFB","_CFB","exports","namecmp","R","Z","dirname","p","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_dos_date","read_shift","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_extra_field","blob","prep_blob","flags","sz","tgt","mtime","atime","ctime","mt","fs","get_fs","parse","file","options","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","header","check_shifts","dir_cnt","chk","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","name","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","shift","raw","HEADER_SIGNATURE","nsectors","ceil","FI","FP","pl","dad","get_mfat_entry","entry","payload","mini","start","size","MSSZ","__readInt32LE","new_buf","cnt","sector","get_sector_list","chkd","buf_chain","modulus","addr","nodes","__toBuffer","sl","k","seen","minifat_store","namelen","__utf16le","color","clsid","state","ct","read_date","storage","offset","__readUInt32LE","read_file","readFileSync","read","isBuffer","init_cfb","cfb","root","CLSID","seed_cfb","nm","find","rebuild_cfb","gc","_file","pop","now","fullPaths","Object","create","HEADER_CLSID","sort","elt","_write","_opts","fileType","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","copy","path","UCFullPaths","UCPaths","UCPath","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","write_file","writeFileSync","write","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_processChunk","_finishFlushFlag","bytesRead","console","error","message","_inflateRawSync","usz","_inflate","_deflateRawSync","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","b","rev","read_bits_2","bl","h","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","a","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","_deflateRawIIFE","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","off","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","h2","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","code","dst","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","unsafe","cdirs","method","compression","desc","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","htm","xml","gif","jpg","png","mso","thmx","sh33tj5","get_content_type","ctype","ext","write_base64_76","write_quoted_printable","text","encoded","si","end","tmp","parse_quoted_printable","di","line","oi","parse_mime","fname","cte","fdata","trim","row","test","mboundary","boundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","fpath","cfb_gc","cfb_del","splice","cfb_mov","old_name","new_name","writeFile","ReadShift","CheckField","_inflateRaw","_fs","blobify","write_dl","Deno","TextEncoder","utf8write","IE_SaveFile","Blob","navigator","msSaveBlob","saveAs","URL","document","createElement","createObjectURL","url","chrome","downloads","download","revokeObjectURL","setTimeout","href","body","appendChild","click","removeChild","$","File","Folder","open","encoding","close","read_binary","infile","keys","ks","o2","prototype","hasOwnProperty","evert_key","obj","key","K","evert","evert_num","evert_arr","datenum","refdate","refoffset","numdate","setTime","parse_isodur","sec","good_pd_date","good_pd","parseDate","fixdate","cc2str","arr","debomit","dup","JSON","stringify","fuzzynum","Number","isFinite","NaN","wt","lower_months","fuzzydate","getYear","lower","safe_split_regex","split_regex","re","def","getdatastr","asNodeBuffer","asBinary","_data","getContent","getdatabin","getdata","safegetzipfile","zip","g","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_add_file","res","zip_new","zip_read","resolve_path","result","target","step","XML_HEADER","attregexg","tagregex","nsregex","nsregex2","parsexmltag","tag","skip_root","skip_LC","z","eq","quot","strip_ns","encodings",""","'",">","<","&","rencoding","unescapexml","encregex","coderegex","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","escapexlml","xlml_fixstr","entregex","entrepl","xlml_unfixstr","parsexmlbool","value","utf8read","utf8reada","orig","utf8readb","ww","corpus","utf8readc","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vt_regex","vtvregex","vtmregex","parseVector","matches","baseType","WTF","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","toISOString","write_vt","xlsx","XMLNS","dc","dcterms","dcmitype","mx","sjs","vt","xsi","xsd","main","XLMLNS","html","read_double_le","Infinity","write_double_le","bs","av","LN2","___toBuffer","__readUInt16LE","___utf16le","__hexlify","___hexlify","__utf8","__readUInt8","___utf8","__lpstr","___lpstr","__cpstr","___cpstr","__lpwstr","___lpwstr","__lpp4","___lpp4","lpp4_","__8lpp4","___8lpp4","__double","___double","is_buf","is_buf_a","lpstr_b","readUInt32LE","cpstr_b","lpwstr_b","lpp4_b","lpp4_8b","utf8_b","double_","readDoubleLE","is_buf_b","cpdoit","__readInt16LE","__readInt32BE","oI","oR","oo","loc","this","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","hexstr","fld","pos","parsenoop","recordhopper","cb","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","ba_newblk","curbuf","endbuf","ba_endbuf","next","ba_next","ba_end","ba_push","_bufs","write_record","ba","XLSBRE","make_XLSBRE","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","range","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_col","encode_row","OFFCRYPTO","make_offcrypto","O","_crypto","crypto","rc4","md5","hex","createHash","update","digest","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","col","split_cell","decode_cell","decode_range","encode_range","cs","ce","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","origin","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","write_StrRun","run","parse_RichStr","rgsStrRun","dwSizeStrRun","write_RichStr","parse_BrtCommentText","write_BrtCommentText","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBShortCell","write_XLSBShortCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","write_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","parse_BrtColor","xColorType","index","nTS","bR","bG","bB","auto","icv","XLSIcv","rgb","rgb2Hex","theme","tint","write_BrtColor","parse_FontFlags","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","write_FontFlags","font","grbit","italic","strike","outline","shadow","condense","extend","parse_ClipboardFormatOrString","ClipFmt","3","14","parse_ClipboardFormatOrAnsiString","parse_ClipboardFormatOrUnicodeString","VT_I2","VT_I4","VT_BOOL","VT_VARIANT","VT_UI4","VT_LPSTR","VT_FILETIME","VT_BLOB","VT_CF","VT_VECTOR","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","4","9","10","11","12","13","15","16","17","19","22","2147483648","2147483651","1919054434","SummaryPIDSI","18","DocSummaryRE","SummaryRE","CountryEnum","20","39","45","46","47","48","49","82","84","86","90","105","213","216","218","351","354","358","420","886","961","962","963","964","965","966","971","972","974","981","65535","XLSFillPattern","rgbify","_XLSIcv","RBErr","ct2type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml","application/vnd.ms-excel.binIndexWs","application/vnd.ms-excel.intlmacrosheet","application/vnd.ms-excel.binIndexMs","application/vnd.openxmlformats-package.core-properties+xml","application/vnd.openxmlformats-officedocument.custom-properties+xml","application/vnd.openxmlformats-officedocument.extended-properties+xml","application/vnd.openxmlformats-officedocument.customXmlProperties+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty","application/vnd.ms-excel.pivotTable","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml","application/vnd.openxmlformats-officedocument.drawingml.chart+xml","application/vnd.ms-office.chartcolorstyle+xml","application/vnd.ms-office.chartstyle+xml","application/vnd.ms-office.chartex+xml","application/vnd.ms-excel.calcChain","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings","application/vnd.ms-office.activeX","application/vnd.ms-office.activeX+xml","application/vnd.ms-excel.attachedToolbars","application/vnd.ms-excel.connections","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml","application/vnd.ms-excel.externalLink","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml","application/vnd.ms-excel.sheetMetadata","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml","application/vnd.ms-excel.pivotCacheDefinition","application/vnd.ms-excel.pivotCacheRecords","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml","application/vnd.ms-excel.queryTable","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml","application/vnd.ms-excel.userNames","application/vnd.ms-excel.revisionHeaders","application/vnd.ms-excel.revisionLog","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml","application/vnd.ms-excel.tableSingleCells","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml","application/vnd.ms-excel.slicer","application/vnd.ms-excel.slicerCache","application/vnd.ms-excel.slicer+xml","application/vnd.ms-excel.slicerCache+xml","application/vnd.ms-excel.wsSortMap","application/vnd.ms-excel.table","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml","application/vnd.openxmlformats-officedocument.theme+xml","application/vnd.openxmlformats-officedocument.themeOverride+xml","application/vnd.ms-excel.Timeline+xml","application/vnd.ms-excel.TimelineCache+xml","application/vnd.ms-office.vbaProject","application/vnd.ms-office.vbaProjectSignature","application/vnd.ms-office.volatileDependencies","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml","application/vnd.ms-excel.controlproperties+xml","application/vnd.openxmlformats-officedocument.model+data","application/vnd.ms-excel.Survey+xml","application/vnd.openxmlformats-officedocument.drawing+xml","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml","application/vnd.openxmlformats-officedocument.vmlDrawing","application/vnd.openxmlformats-package.relationships+xml","application/vnd.openxmlformats-officedocument.oleObject","image/png","CT_LIST","workbooks","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","styles","type2ct","CT","new_ct","rels","links","coreprops","extprops","custprops","themes","calcchains","vba","drawings","TODO","xmlns","parse_ct","ctext","Extension","ContentType","PartName","calcchain","sst","style","defaults","CTYPE_XML_ROOT","xmlns:xsd","xmlns:xsi","CTYPE_DEFAULTS","write_ct","f1","bookType","f2","f3","RELS","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","VBA","get_rels_path","parse_rels","currentFilePath","!id","rel","Type","Target","Id","TargetMode","canonictarget","RELS_ROOT","write_rels","rid","RELS_EXTERN","add_rels","rId","relobj","targetmode","CT_ODS","parse_manifest","xlml_normalize","Rn","FEtag","xlmlregex","exec","write_manifest","manifest","write_rdf_type","write_rdf_has","write_rdf","rdf","write_meta_ods","wmo","CORE_PROPS","CORE_PROPS_REGEX","parse_core_props","cur","CORE_PROPS_XML_ROOT","xmlns:cp","xmlns:dc","xmlns:dcterms","xmlns:dcmitype","cp_doit","write_core_props","Props","CreatedDate","xsi:type","ModifiedDate","EXT_PROPS","PseudoPropsPairs","load_props_pairs","HP","TOP","props","hp","parts","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","parse_ext_props","HeadingPairs","TitlesOfParts","EXT_PROPS_XML_ROOT","xmlns:vt","write_ext_props","W","Application","CUST_PROPS","custregex","parse_cust_props","toks","warn","CUST_PROPS_XML_ROOT","write_cust_props","pid","custprop","fmtid","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","evert_XLMLDPM","xlml_set_prop","xlml_write_docprops","xlml_write_custprops","Custprops","BLACKLIST","dt:dt","parse_FILETIME","dwLowDateTime","dwHighDateTime","write_FILETIME","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtUnalignedString","parse_VtVecLpwstrValue","ret","parse_VtVecUnalignedLpstrValue","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","headerParts","parse_VtVecHeadingPairValue","cElements","parse_dictionary","CodePage","dict","parse_BLOB","bytes","parse_ClipboardData","Size","write_TypedPropertyValue","parse_PropertySet","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","fail","piddsi","oldpos","parsebool","XLSPSSkip","guess_property_type","write_PropertySet","entries","RE","hdr","piao","prop","pr","pio","unshift","pinfo","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet0","rval","FMTID","PSet1","write_PropertySetStream","entries2","clsid2","ps0","ps1","parsenoop2","writezeroes","parslurp","writebool","parseuint16","writeuint16","parseuint16a","parse_Bes","write_Bes","parse_ShortXLUnicodeString","cch","fHighByte","parse_XLUnicodeRichExtendedString","fExtSt","fRichSt","width","cRun","cbExtRst","write_XLUnicodeRichExtendedString","xlstr","nfmts","otext","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","parse_ControlInfo","accel","parse_URLMoniker","extra","parse_FileMoniker","cAnti","preamble","ansiPath","unicodePath","parse_HyperlinkMoniker","parse_HyperlinkString","write_HyperlinkString","parse_Hyperlink","sVer","displayName","targetFrameName","moniker","oleMoniker","Loc","guid","fileTime","Tooltip","write_Hyperlink","hl","hashidx","F","Pretarget","parse_LongRGBA","parse_LongRGB","parse_XLSCell","rw","ixfe","write_XLSCell","parse_frtHeader","rt","parse_OptXLUnicodeString","parse_XTI","iSupBook","itabFirst","itabLast","parse_RkRec","parse_AddinUdf","udfName","parse_Ref8U","rwFirst","rwLast","colFirst","colLast","write_Ref8U","parse_RefU","parse_Ref","parse_FtCmo","ot","id","parse_FtNts","fSharedNote","parse_FtCf","cf","parse_FtSkip","FtTab","21","parse_FtArray","fts","ft","parse_BOF","BIFFVer","write_BOF","wb","parse_InterfaceHdr","parse_WriteAccess","UserName","write_WriteAccess","b8","parse_WsBool","fDialog","fBelow","fRight","parse_BoundSheet8","hidden","hs","write_BoundSheet8","parse_SST","ucnt","Count","Unique","write_SST","parse_ExtSST","extsst","dsst","parse_Row","miyRw","level","hpt","parse_ForceFullCalculation","fullcalc","parse_RecalcId","parse_DefaultRowHeight","fl","Unsynced","DyZero","ExAsc","ExDsc","parse_Window1","xWn","yWn","dxWn","dyWn","iTabCur","iTabFirst","ctabSel","wTabRatio","Pos","Dim","Flags","CurTab","FirstTab","Selected","TabRatio","write_Window1","parse_Window2","RTL","write_Window2","parse_Pane","parse_Font","dyHeight","write_Font","b5","parse_LabelSst","isst","write_LabelSst","os","parse_Label","biffguess","write_Label","parse_Format","fmtstr","write_Format","parse_BIFF2Format","parse_Dimensions","write_Dimensions","parse_RK","rkrec","rknum","parse_MulRk","rkrecs","lastcol","parse_MulBlank","ixfes","parse_CellStyleXF","patternType","cellStyles","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","icvFore","icvBack","fsxButton","parse_XF","fStyle","write_XF","ixfeP","parse_Guts","write_Guts","guts","parse_BoolErr","write_BoolErr","parse_Number","xnum","write_Number","parse_XLHeaderFooter","parse_SupBook","ctab","sbcch","virtPath","rgst","parse_ExternName","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","Name","XLSLblBuiltIn","parse_Lbl","chKey","cce","itab","npflen","rgce","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_NameCmt","cchName","cchComment","comment","parse_ShrFmla","ref","cUse","parse_SharedParsedFormula","parse_Array","parse_ArrayParsedFormula","parse_MTRSettings","fMTREnabled","fUserSetThreadCount","cUserThreadCount","parse_NoteSh","idObj","stAuthor","parse_Note","parse_MergeCells","merges","cmcs","write_MergeCells","parse_Obj","parse_BIFF5Obj","cmo","parse_BIFF5OT","parse_TxO","texts","lastobj","controlInfo","cchText","parse_HLink","hlink","write_HLink","parse_HLinkTooltip","wzTooltip","write_HLinkTooltip","parse_Country","write_Country","parse_ClrtClient","ccv","parse_Palette","parse_XFCRC","cxfs","crc","parse_ColInfo","coldx","write_ColInfo","parse_Setup","footer","parse_ShtProps","area","write_RRTabId","parse_Blank","parse_Scl","parse_String","parse_ImData","env","lcb","parse_BIFF2STR","parse_BIFF2NUM","num","write_BIFF2NUM","write_BIFF2Cell","parse_BIFF2INT","write_BIFF2INT","parse_BIFF2STRING","parse_BIFF2FONTXTRA","parse_RString","DBF","dbf_codepage_map","100","101","102","103","104","106","107","120","121","122","123","124","125","126","150","151","152","200","201","202","203","37","38","87","88","89","108","135","dbf_reverse_map","DBF_SUPPORTED_VERSIONS","dbf_to_aoa","memo","vfp","l7","nrow","fpos","rlen","current_cp","codepage","fields","field","hend","sheetRows","dbf_to_sheet","dbf_to_workbook","_RLEN","?","","sheet_to_dbf","aoa","sheet_to_json","headers","hcnt","coltypes","guess","_guess","hf","_f","hb","rout","_s","to_workbook","to_sheet","from_sheet","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Ai","Bi","Ci","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","B ","!","\"","#","(","%","'","H ","+",";","<","=",">","{","sylk_char_regex","sylk_char_fn","_","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","wch","process_col","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_workbook","write_ws_cell_sylk","a1_to_rc","write_ws_cols_sylk","cols","rec","wpx","width2px","px2char","write_ws_rows_sylk","rows","px2pt","sheet_to_sylk","RS","coord","DIF","dif_to_aoa","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_workbook","sheet_to_dif","push_field","pf","topic","push_value","po","ETH","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","meta","sheet_to_eth_data","sheet_to_eth","PRN","set_text_arr","prn_to_aoa_str","lines","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","finish_cell","fuzzyfmla","cellText","cellNF","outer","prn_to_sheet_str","prn_to_sheet","firstbyte","prn_to_workbook","sheet_to_prn","read_wb_ID","OLD_WTF","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","!ref","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","write_INTEGER","write_NUMBER","write_LABEL","book_to_wk3","write_BOF_WK3","write_XFORMAT_SHEETNAME","wsidx","write_NUMBER_17","write_LABEL_16","wscnt","parse_RANGE","parse_cell","parse_LABEL","parse_INTEGER","parse_NUMBER","parse_FORMULA","wk1_fmla_to_csf","wk1_parse_rc","oprec","FuncTab","83","111","BinOpTab","argc","argL","argR","args","parse_cell_3","parse_LABEL_16","parse_NUMBER_18","parse_NUMBER_17","v1","v2","log2","parse_FORMULA_19","parse_NUMBER_25","parse_NUMBER_27","parse_FORMULA_28","parse_SHEETNAMECS","parse_SHEETNAMELP","parse_SHEETINFOQP","parse_XFORMAT","40","142","147","153","154","155","156","174","175","176","184","185","187","188","195","205","206","207","208","256","259","260","261","262","263","265","266","267","268","270","271","384","389","390","393","396","512","514","513","516","517","640","641","642","643","644","645","646","647","648","658","659","660","661","662","665","666","768","772","1537","1600","1602","1793","1794","1795","1796","1920","2048","2049","2052","2688","10998","12849","28233","28484","parse_rpr","rpr","pass","uval","family","valign","parse_rs","tregex","rpregex","parse_r","rregex","rend","rs","filter","rs_to_html","parse_rs_factory","nlregex","parse_rpr2","intro","outro","align","r_to_html","terms","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","parse_sst_xml","count","uniqueCount","SST","straywsregex","write_sst_xml","bookSST","sitag","parse_BrtBeginSst","parse_sst_bin","hopper_sst","R_n","write_BrtBeginSst","write_BrtSSTItem","write_sst_bin","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceVersionInfo","U","parse_DataSpaceMapEntry","comps","parse_DataSpaceMap","parse_DataSpaceDefinition","parse_TransformInfoHeader","parse_Primary","ename","cmode","parse_EncryptionHeader","AlgID","valid","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncryptionInfo","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","verifier","KeyData","xml_agile","encryptedHmacKey","encryptedHmacValue","encs","uri","parse_RC4CryptoHeader","EncryptionVersionInfo","EncryptionHeader","EncryptionVerifier","parse_RC4Header","EncryptedVerifier","EncryptedVerifierHash","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordDecoded","PasswordByte","Intermediate1","Intermediate2","Intermediate3","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","Ror","Byte","XorRor","byte1","byte2","CreateXorKey_Method1","XorKey","CurrentElement","Char","password","Index","ObfuscationArray","Temp","PasswordLastChar","PadIndex","crypto_DecryptData_Method1","Data","XorArrayIndex","XorArray","Value","crypto_MakeXorDecryptor","parse_XORObfuscation","verificationBytes","insitu","parse_FilePassHeader","Info","parse_FilePass","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","lastIndex","rtf_to_workbook","sheet_to_rtf","hex2RGB","rgb2HSL","G","H6","L2","hsl2RGB","hsl","h6","X","rgb_tint","DEF_MDW","MAX_MDW","MIN_MDW","MDW","px","char2width","chr","cycle_width","collw","find_mdw_colw","delta","_MDW","coll","customWidth","DEF_PPI","PPI","pt","XLMLPatternTypeMap","None","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinHorzCross","parse_borders","Borders","border","diagonalUp","diagonalDown","parse_fills","Fills","bgColor","indexed","fgColor","parse_fonts","Fonts","bold","underline","vertAlign","scheme","themeElements","clrScheme","parse_numFmts","NumberFmt","formatCode","write_numFmts","NF","cellXF_uint","cellXF_bool","parse_cellXfs","CellXf","xf","alignment","vertical","horizontal","textRotation","indent","wrapText","write_cellXfs","cellXfs","parse_sty_xml","make_pstyx","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","STYLES_XML_ROOT","STY","write_sty_xml","parse_BrtFmt","stFmtCode","write_BrtFmt","parse_BrtFont","bls","bCharSet","charset","write_BrtFont","sss","XLSBFillPTNames","rev_XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","parse_BrtXF","ixfeParent","ifmt","write_BrtXF","flow","write_Blxf","parse_BrtBorder","write_BrtBorder","write_BrtStyle","xfId","builtinId","write_BrtBeginTableStyles","defTableStyle","defPivotStyle","parse_sty_bin","hopper_sty","write_FMTS_bin","write_FONTS_bin","write_FILLS_bin","write_BORDERS_bin","write_CELLSTYLEXFS_bin","fontId","fillId","borderId","write_CELLXFS_bin","write_STYLES_bin","write_DXFS_bin","write_TABLESTYLES_bin","write_COLORPALETTE_bin","write_sty_bin","THEME","XLSXThemeClrScheme","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","parse_themeElements","themeltregex","parse_theme_xml","write_theme","Themes","themeXLSX","parse_Theme","dwThemeVersion","themeXML","parse_ColorTheme","parse_FullColorExt","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_XFExtGradient","parse_ExtProp","extType","parse_XFExt","cexts","update_xfext","xfext","xfe","parse_cc_xml","parse_BrtCalcChainItem$","parse_cc_bin","hopper_cc","parse_xlink_xml","parse_xlink_bin","xlink_parse","IMG","DRAW","parse_drawing","_shapeid","write_comments_vml","csize","bbox","xmlns:v","xmlns:o","xmlns:x","xmlns:mv","v:ext","joinstyle","gradientshapeok","o:connecttype","o:spt","coordsize","fillopts","color2","angle","fillparm","fillxml","shadata","on","obscured","fillcolor","strokecolor","CMNT","sheet_insert_comments","author","parse_comments_xml","authors","commentList","authtag","cmnttag","cm","authorId","textMatch","CMNT_XML_ROOT","write_comments_xml","iauthor","parse_BrtBeginComment","rfx","write_BrtBeginComment","parse_BrtCommentAuthor","write_BrtCommentAuthor","parse_comments_bin","hopper_cmnt","write_comments_bin","CT_VBA","make_vba_xls","newcfb","newpath","fill_vba_xls","VBAFMTS","DS","MS","parse_ds_bin","!type","parse_ds_xml","parse_ms_bin","parse_ms_xml","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceAreaRel","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_RgceLocRel","parse_RgceLocRel_BIFF2","cl","rl","parse_PtgArea","parse_PtgArea3d","ixti","parse_PtgAreaErr","parse_PtgAreaErr3d","parse_PtgAreaN","parse_PtgArray","parse_PtgAttrBaxcel","bitSemi","bitBaxcel","parse_PtgAttrChoose","parse_PtgAttrGoto","bitGoto","parse_PtgAttrIf","bitIf","parse_PtgAttrIfError","parse_PtgAttrSemi","parse_PtgAttrSpaceType","parse_PtgAttrSpace","parse_PtgAttrSpaceSemi","parse_PtgRef","parse_PtgRefN","parse_PtgRef3d","parse_PtgFunc","iftab","FtabArgc","Ftab","parse_PtgFuncVar","cparams","tab","parsetab","Cetab","parse_PtgAttrSum","parse_PtgExp","parse_PtgErr","parse_PtgInt","parse_PtgBool","parse_PtgNum","parse_PtgStr","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgName","nameindex","parse_PtgNameX","parse_PtgNameX_BIFF5","parse_PtgMemArea","parse_PtgMemFunc","parse_PtgRefErr","parse_PtgRefErr3d","parse_PtgMemErr","parse_PtgMemNoMem","parse_PtgTbl","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfCol","parse_PtgElfColS","parse_PtgElfColSV","parse_PtgElfColV","parse_PtgElfLel","parse_PtgElfRadical","parse_PtgElfRadicalLel","parse_PtgElfRadicalS","parse_PtgElfRw","parse_PtgElfRwV","PtgListRT","parse_PtgList","coltype","parse_PtgSxName","parse_PtgSheet","parse_PtgEndSheet","parse_PtgMemAreaN","parse_PtgMemNoMemN","parse_PtgAttrNoop","PtgTypes","PtgDupes","96","97","98","99","109","110","91","92","93","Ptg18","Ptg19","parse_RgbExtra","parse_Rgce","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","quoteCharacters","formula_quote_sheet_name","sname","get_ixti_raw","supbooks","XTI","SID","get_ixti","ixtiraw","stringify_formula","stack","nameidx","last_sp","sp","fflen","func","lbl","names","bookidx","externbook","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","PtgNonDisp","_left","rgcb","parse_XLSCellParsedFormula","parse_FormulaValue","write_FormulaValue","parse_Formula","cbf","shared","write_Formula","o1","o3","bf","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","85","94","95","112","113","114","115","116","117","118","119","127","131","132","133","137","138","139","140","143","144","145","146","148","149","159","164","166","167","168","169","170","171","172","173","189","190","191","192","193","194","196","197","198","199","209","210","211","212","214","215","217","219","220","223","224","225","226","227","228","229","240","243","249","250","251","252","253","254","269","272","273","274","276","277","278","279","280","281","282","283","284","285","288","289","290","291","292","293","295","296","297","298","302","305","306","307","308","309","310","311","312","313","314","315","316","318","319","320","321","322","323","324","325","328","330","336","338","339","342","343","344","350","352","355","356","370","373","374","375","376","377","378","379","380","381","382","383","385","386","388","391","392","394","395","397","398","399","400","412","413","414","415","416","417","421","422","423","424","425","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455","456","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","480","481","482","485","489","491","493","494","495","509","510","511","518","519","520","521","522","523","545","546","547","548","549","620","621","653","667","673","753","755","808","141","157","158","160","165","179","180","181","182","183","221","230","231","232","233","234","235","236","237","239","241","242","244","245","246","247","248","257","258","264","275","286","287","294","299","300","301","303","304","317","326","327","329","331","332","334","335","337","340","341","345","346","347","348","349","353","357","359","360","361","362","363","364","365","366","367","368","369","371","372","387","401","402","403","404","405","406","407","408","409","410","411","418","419","426","427","428","429","457","724","479","483","484","ods_to_csf_formula","csf_to_ods_formula","ods_to_csf_3D","csf_to_ods_3D","_ssfopts","WS","browser_has_Map","Map","get_sst_id","has","revarr","get","col_obj_w","outlineLevel","default_margins","margins","mode","defs","left","right","top","bottom","get_cell_style","revssf","ssf","applyNumberFormat","safe_format","fillid","raw_rgb","check_ws","parse_ws_xml_dim","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml","data1","data2","mtch","sheetPr","parse_ws_xml_sheetpr","parse_ws_xml_sheetpr2","svs","parse_ws_xml_sheetviews","columns","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","_merge","parse_ws_xml_hlinks","parse_ws_xml_margins","tmpref","write_ws_xml_merges","codeName","CodeName","write_ws_xml_sheetpr","needed","vbaraw","cname","Workbook","outlineprops","summaryBelow","summaryRight","above","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_protection","location","Rel","tooltip","rng","margin","write_ws_xml_margins","seencol","coli","colm","colM","write_ws_xml_cols","write_ws_xml_autofilter","Names","Sheet","Ref","sviewregex","Views","zoomScale","zoom","rightToLeft","write_ws_xml_sheetviews","sview","workbookViewId","write_ws_xml_cell","oldt","oldv","Strings","revStrings","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","cells","cref","tagr","tagc","sstr","ftag","do_format","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","ht","rslice","cellFormula","xlfn","___f","_tag","_r","write_ws_xml_data","params","height","_cell","customHeight","WS_XML_ROOT","xmlns:r","write_ws_xml","rdata","_drawing","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","relc","ignoreEC","numberStoredAsText","sqref","r:id","parse_BrtRowHdr","write_BrtRowHdr","ncolspan","lcs","caddr","first","last","write_row_header","parse_BrtWsDim","write_BrtWsDim","parse_BrtWsFmtInfo","parse_BrtWsProp","write_BrtWsProp","parse_BrtCellBlank","write_BrtCellBlank","ncell","parse_BrtShortBlank","write_BrtShortBlank","parse_BrtCellBool","fBool","write_BrtCellBool","parse_BrtShortBool","write_BrtShortBool","parse_BrtCellError","bError","write_BrtCellError","parse_BrtShortError","write_BrtShortError","parse_BrtCellIsst","write_BrtCellIsst","parse_BrtShortIsst","write_BrtShortIsst","parse_BrtCellReal","write_BrtCellReal","parse_BrtShortReal","write_BrtShortReal","parse_BrtCellRk","write_BrtCellRk","parse_BrtShortRk","write_BrtShortRk","parse_BrtCellRString","parse_BrtCellSt","write_BrtCellSt","parse_BrtShortSt","write_BrtShortSt","parse_BrtFmlaBool","parse_BrtFmlaError","parse_BrtFmlaNum","parse_BrtFmlaString","parse_BrtMergeCell","write_BrtMergeCell","write_BrtBeginMergeCells","parse_BrtHLink","relId","display","write_BrtHLink","locidx","parse_BrtPane","parse_BrtArrFmla","fAlwaysCalc","parse_BrtShrFmla","write_BrtColInfo","BrtMarginKeys","parse_BrtMargins","write_BrtMargins","parse_BrtBeginWsView","write_BrtBeginWsView","write_BrtCellIgnoreEC","write_BrtSheetProtection","parse_BrtDVal","parse_BrtDVal14","parse_ws_bin","ai","af","ws_parse","aii","_d","write_ws_bin_cell","last_seen","write_CELLTABLE","cap","write_MERGECELLS","write_COLINFOS","write_IGNOREECS","write_HLINKS","write_LEGACYDRAWING","write_AUTOFILTER","write_WSVIEWS2","write_WSFMTINFO","write_SHEETPROTECT","write_ws_bin","CHART","CHARTEX","parse_Cache","nf","parse_chart","csheet","nc","cache","CS","CS_XML_ROOT","parse_cs_xml","!drawel","!rel","write_cs_xml","parse_BrtCsProp","parse_cs_bin","cs_parse","write_cs_bin","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","safe1904","badchars","check_ws_name","_good","check_wb_names","N","codes","cn","check_wb","wbnsregex","parse_wb_xml","dname","dnstart","xml_wb","Hidden","Comment","localSheetId","WB_XML_ROOT","write_wb_xml","write_names","workbookPr","sheetId","parse_BrtBundleSh","iTabID","strRelID","write_BrtBundleSh","parse_BrtWbProp","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","filterPrivacy","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","write_BrtWbProp","parse_BrtFRTArchID$","ArchID","parse_BrtName","Ptg","parse_wb_bin","hopper_wb","write_BUNDLESHS","viz","write_BrtFileVersion","write_BrtBookView","write_BOOKVIEWS","vistab","write_wb_bin","parse_wb","parse_ws","parse_cs","parse_ms","parse_ds","parse_sty","parse_theme","parse_sst","parse_cmnt","parse_cc","parse_xlink","write_wb","write_ws","write_cs","write_sty","write_sst","write_cmnt","attregexg2","attregex2","xlml_parsexmltag","words","xlml_parsexmltagobj","xlml_format","xlml_set_custprop","oval","safe_format_xlml","process_style_xlml","stag","Interior","I","Pattern","ID","parse_xlml_data","csty","sid","StyleID","interiors","Parent","UTC","Formula","ArrayRange","xlml_clean_comment","parse_xlml_xml","opening","ishtml","_o","HTML_","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","raw_Rn3","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","Height","Format","ssfidx","Width","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","Range","parse_fods","Margin","pagemargins","Top","Left","Right","Bottom","bookSheets","bookProps","parse_xlml","fix_read_opts","write_props_xlml","write_wb_xlml","write_sty_xlml","ss:Format","ss:ID","write_name_xlml","ss:Name","ss:RefersTo","write_names_xlml","write_ws_xlml_names","write_ws_xlml_wsopts","x:Margin","x:Bottom","x:Left","x:Right","x:Top","objects","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_comment","ss:Author","write_ws_xlml_cell","attr","mi","_v","write_ws_xlml_row","write_ws_xlml_table","ss:Index","skip","write_ws_xlml","write_xlml","General","xmlns:ss","xmlns:dt","xmlns:html","parse_compobj","AnsiUserType","AnsiClipboardFormat","Reserved1","UnicodeClipboardFormat","Reserved2","slurp","XLSRecordEnum","ll","safe_format_xf","make_cell","parse_workbook","Directory","last_formula","cur_sheet","Preamble","lastcell","last_cell","cmnt","rngC","rngR","temp_val","country","XFs","palette","get_rgb","getrgb","process_cell_style","pcs","xfd","addcell","file_depth","afi","rrtabid","lastuser","winlocked","wtf","defwidth","defheight","last_Rn","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","last_lbl","seen_codepage","RecordType","Date1904","WriteProtect","cpval","CalcRefMode","FullCalc","ExternCount","tmpri","1033","1024","1280","1536","fakebs8","_fr","_fc","_fe","_arraystart","_j","_ixfe","b4idx","b2idx","TxO","ImData","noteobj","Encryption","Metadata","Country","PSCLSID","SI","DSI","UDI","parse_xls_props","DocSummary","Summary","write_xls_props","DSEntries","SEntries","CEntries","Keys","CEntries2","parse_xlscfb","CompObj","WorkbookP","bookVBA","bookFiles","write_xlscfb","wbpath","write_biff_buf","333","486","487","488","490","492","496","497","498","499","500","501","502","503","504","505","506","507","508","515","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","540","541","542","550","551","552","553","554","555","556","557","558","559","560","561","562","564","565","566","569","570","572","573","574","577","578","579","580","581","582","583","584","585","586","587","588","589","590","591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618","619","625","626","627","628","629","630","631","632","633","634","635","636","637","638","639","649","650","651","652","654","655","656","657","663","664","668","669","671","672","674","675","676","677","678","679","680","681","1025","1026","1027","1028","1029","1030","1031","1032","1034","1035","1036","1037","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1111","1112","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139","1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1177","1178","1180","1181","1182","2050","2051","2053","2054","2055","2056","2057","2058","2060","2067","2068","2069","2070","2071","2072","2073","2075","2076","2077","2078","2079","2080","2081","2082","2083","2084","2085","2086","2087","2088","2089","2090","2091","2092","2093","2094","2095","2096","2097","2098","2099","2100","2101","2102","2103","2104","2105","2106","2107","2108","2109","2110","2111","2112","2113","2114","2115","2116","2117","2118","2119","2120","2121","2122","2123","2124","2125","2126","2127","2128","2129","2130","2131","2132","2133","2134","2135","2136","2137","2138","2139","2140","2141","3072","3073","5095","5096","5097","1212","2059","2061","2062","2063","2064","2066","2146","2147","2148","2149","2150","2151","2152","2154","2155","2156","2161","2162","2164","2165","2166","2167","2168","2169","2170","2171","2172","2173","2174","2175","2180","2181","2182","2183","2184","2185","2186","2187","2188","2189","2190","2191","2192","2194","2195","2196","2197","2198","2199","2200","2201","2202","2203","2204","2205","2206","2207","2211","2212","2213","2214","2215","4097","4098","4099","4102","4103","4105","4106","4107","4108","4109","4116","4117","4118","4119","4120","4121","4122","4123","4124","4125","4126","4127","4128","4129","4130","4132","4133","4134","4135","4146","4147","4148","4149","4154","4156","4157","4158","4159","4160","4161","4163","4164","4165","4166","4168","4170","4171","4174","4175","4176","4177","4187","4188","4189","4191","4192","4193","4194","4195","4196","4197","4198","4199","4200","2157","2163","2177","2240","2241","2242","2243","2244","2245","2246","2247","2248","2249","2250","2251","2262","29282","XLSRE","write_biff_continue","write_BIFF2BERR","write_BIFF2LABEL","write_ws_biff2_cell","write_ws_biff2","write_biff2_buf","write_FONTS_biff8","write_FMTS_biff8","write_FEAT","write_CELLXFS_biff8","write_ws_biff8_hlinks","HL","write_ws_cols_biff8","write_ws_biff8_cell","write_ws_biff8","_WB","_sheet","MAX_ROWS","write_biff8_global","_sheets","_wb","blen","write_biff8_buf","fix_write_opts","html_to_sheet","mtch2","hd","midx","colspan","rowspan","_t","html_to_book","book_new","book_append_sheet","make_html_row","editable","make_html_preamble","_BEGIN","_END","sheet_to_html","_row","BEGIN","END","_preamble","sheet_add_dom","or_R","or_C","getElementsByTagName","is_dom_element_hidden","elts","hasAttribute","getAttribute","innerHTML","Aelts","Aelti","parse_dom_table","table_to_book","element","get_computed_style","get_get_computed_style_function","getPropertyValue","ownerDocument","defaultView","getComputedStyle","parse_content_xml","parse_text_p","fixed","number_formats","day","month","year","hours","minutes","seconds","am-pm","day-of-week","era","quarter","pcx","NFtag","sheetag","rowtag","ctag","textp","textpidx","textptag","textR","row_ol","number_format_map","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","rptR","rpt","nrange","ptp","parse_ods","write_styles_ods","master_styles","xmlns:office","xmlns:table","xmlns:style","xmlns:text","xmlns:draw","xmlns:fo","xmlns:xlink","xmlns:number","xmlns:svg","xmlns:of","office:version","wso","write_content_ods","write_text_p","null_cell_xml","covered_cell_xml","ods","ROWS","_Fref","text_p","_tgt","xlink:href","write_automatic_styles_ods","cidx","colobj","wcx","xmlns:meta","xmlns:presentation","xmlns:chart","xmlns:dr3d","xmlns:math","xmlns:form","xmlns:script","xmlns:ooo","xmlns:ooow","xmlns:oooc","xmlns:dom","xmlns:xforms","xmlns:sheet","xmlns:rpt","xmlns:xhtml","xmlns:grddl","xmlns:tableooo","xmlns:drawooo","xmlns:calcext","xmlns:loext","xmlns:field","xmlns:formx","xmlns:css3t","fods","xmlns:config","office:mimetype","write_ods","NUMBERS","defineProperty","__defProp","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","__markAsModule","__export","all","enumerable","__reExport","copyDefault","__toCommonJS","temp","WeakMap","numbers_exports","parse_numbers","numbers_default","u8_to_dataview","array","DataView","buffer","byteOffset","byteLength","u8str","u8","TextDecoder","u8concat","u8a","reduce","acc","popcnt","readDecimal128LE","exp","mantissa","parse_varint49","ptr","varint","varint_to_i32","i32","parse_shallow","mappa","_a","deframe","parse_snappy_chunk","chunks","parse_iwa","messages","parse_old_storage","rsst","dv","getUint32","data_offset","ieee","getFloat64","parse_storage","d128","packets","packet","docroot","iwams","iwam","mtype","parse_docroot","parse_Reference","pb","parse_TST_TableDataList","le","rtp","rtpref","tswpsa","parse_TST_TileRowInfo","_b","_c","_e","_g","_h","_i","pre_bnc","pre_bnc_offsets","storage_offsets","wide_offsets","getUint16","parse_TST_Tile","parse_TST_TableModelArchive","store","tile","tiles","tl","tile2","parse_TST_TableInfoArchive","tableref","parse_sheetroot","shapeoffs","sheetoffs","root2","fix_opts_func","fix_opts","get_sheet_type","safe_parse_wbrels","wbrels","pwbr","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","draw","chartp","crelsp","strip_front_slash","_zip","dir","binname","link","propdata","pluck","deps","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","wsloop","snjseen","snj","Deps","Styles","bin","parse_xlsxcfb","dsm","seds","einfo","decrypt_agile","decrypt_std76","write_zip_xlsxb","foo","vbafmt","_sn","wsrels","_type","need_vml","rId1","write_zip_xlsx","read_cfb","read_zip","read_plaintext","read_plaintext_raw","read_utf16","bstrify","read_prn","readSync","ab","vu","write_obj_str","write_str","write_htm_str","write_csv_str","sheet_to_csv","write_slk_str","write_dif_str","write_prn_str","write_rtf_str","write_txt_str","sheet_to_txt","write_dbf_buf","write_eth_str","write_wk1_buf","write_cfb_ctr","write_zip_type","write_zip_denouement","write_zip_typeXLSX","oopts","nodebuffer","string","generate","encrypt_agile","write_cfb_type","write_string_type","bom","write_stxt_type","write_binary_type","writeSyncXLSX","writeSync","resolve_book_type","_BT","xls","slk","socialcalc","Sh33tJS","writeFileSyncXLSX","writeFileAsync","_cb","Function","make_json_row","defval","isempty","__rowNum__","rawNumbers","outi","counter","CC","blankrows","qreg","make_csv_row","txt","forceQuotes","endregex","skipHidden","strip","sheet_to_formulae","cmds","sheet_add_json","js","skipHeader","JS","sheet_get_cell","json_to_sheet","table_to_sheet","sheet_to_row_object_array","add_consts","get_default","ws_get_cell_stub","RC","wb_sheet_idx","sh","book_set_sheet_visibility","vis","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","rngstr","strmod","Readable","write_csv_stream","stream","BOM","_read","write_html_stream","write_json_stream","objectMode","to_json","to_html","to_csv","readFile","writeXLSX","writeFileXLSX","define","amd"],"mappings":"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C,IAAQ,KACRC,IAAQ,KACRC,IAAQ,KACRC,MAAQ,KAIR,IAAIC,KACH,KACA,QACA,aACA,WACA,YACA,iBACA,eACA,WACA,SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA;AAGD,QAASC,IAAOtZ,GAAO,MAAOA,GAAIjvB,IAAI,SAASV,GAAK,OAASA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAIA,EAAE,OAIrF,GAAIkpC,IAAUD,IAEb,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAED,IAAI/F,IAASrT,GAAIqZ,GAGjB,IAAIvK,KACJthC,EAAM,SACN6U,EAAM,UACNk0B,GAAM,UACNh0B,GAAM,QACNM,GAAM,SACNO,GAAM,QACNE,GAAM,OACNC,GAAM,gBACN7U,IAAM,QAEN,IAAI4qC,IAAQta,EAAU8P,GAKtB,IAAIyK,KAEHC,6EAA8E,YAG9EC,sCAAuC,OAGvCC,0CAA2C,OAC3CC,sCAAuC,OAGvCC,6DAA8D,YAC9DC,sEAAuE,YACvEC,wEAAyE,WAGzEC,wEAAyE,OACzEC,6EAA8E,OAG9EC,sCAAuC,OACvCC,6EAA8E,OAG9EC,oEAAqE,OAGrEC,gDAAiD,OAGjDC,2CAA4C,OAG5CC,wCAAyC,OAGzCC,qCAAsC,aACtCC,4EAA6E,aAG7EC,8EAA+E,OAG/EC,oCAAqC,OACrCC,wCAAyC,OAGzCC,4CAA6C,OAG7CC,uCAAwC,OACxCC,8EAA+E,OAG/EC,wCAAyC,QAC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IAAK,OACLuK,IAAK,WACLC,IAAK,OACLC,IAAK,gBACLC,IAAK,YACLzK,IAAK,cACL0K,IAAK,QACLzK,IAAK,iBACLC,IAAK,kBACLyK,IAAK,kBACLC,IAAK,iBACLzK,IAAK,UACLC,IAAK,UACLC,IAAK,WACLwK,IAAK,QACLC,IAAK,UACLC,IAAK,aACLC,IAAK,eACLC,IAAK,oBACL3K,IAAK,QACLznD,IAAK,UACL0nD,IAAK,aACL2K,IAAK,eACLpyD,IAAK,QACL0nD,IAAK,cACLC,IAAK,cACL0K,IAAK,WACLpyD,IAAK,eACLqyD,IAAK,YACLC,IAAK,WACLC,IAAK,WACLC,IAAK,OACLC,IAAK,OACLC,IAAK,UACLC,IAAK,QACLC,IAAK,SACLC,IAAK,OACLC,IAAK,WACLC,IAAK,gBACLpL,IAAK,YACLqL,IAAK,kBACLC,IAAK,eACLrL,IAAK,gBACLC,IAAK,mBACLC,IAAK,cACLC,IAAK,gBACLC,IAAK,cACLC,IAAK,WACLC,IAAK,MACLC,IAAK,YACLC,IAAK,aACLC,IAAK,qBACLC,IAAK,mBACLptB,IAAK,UACLqtB,IAAK,UACLC,IAAK,UACL0K,IAAK,UACLzK,IAAK,UACLttB,IAAK,UACLC,IAAK,UACLstB,IAAK,UACLC,IAAK,UACLttB,IAAK,UACLutB,IAAK,UACLC,IAAK,UACLvtB,IAAK,QACLwtB,IAAK,QACLC,IAAK,UACLC,IAAK,QACLC,IAAK,SACLkK,IAAK,OACLC,IAAK,SACLC,IAAK,UACLC,IAAK,QACLC,IAAK,QACLC,IAAK,QACLC,IAAK,aACLC,IAAK,cACLC,IAAK,YACLC,IAAK,SACLC,IAAK,UACL3K,IAAK,QACLC,IAAK,YACLC,IAAK,YACLC,IAAK,aACLC,IAAK,SACLC,IAAK,WACLuK,IAAK,QACLC,IAAK,SACL9zD,IAAK,SACLupD,IAAK,QACLC,IAAK,SACLC,IAAK,MACLC,IAAK,OACLC,IAAK,UACLoK,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,OACLtK,IAAK,OACLC,IAAK,WACLC,IAAK,WACLC,IAAK,UACLC,IA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","file":"dist/xlsx.min.js"} \ No newline at end of file diff --git a/dist/xlsx.mini.min.js b/dist/xlsx.mini.min.js index a3bfa21..637eb0c 100644 --- a/dist/xlsx.mini.min.js +++ b/dist/xlsx.mini.min.js @@ -1,9 +1,9 @@ /*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ -var DO_NOT_EXPORT_CODEPAGE=true;var XLSX={};function make_xlsx_lib(e){e.version="0.18.2";var r=1200,t=1252;if(typeof module!=="undefined"&&typeof require!=="undefined"){if(typeof cptable==="undefined"){if(typeof global!=="undefined")global.cptable=require("./dist/cpexcel.js");else if(typeof window!=="undefined")window.cptable=require("./dist/cpexcel.js")}}var a=[874,932,936,949,950,1e4];for(var n=0;n<=8;++n)a.push(1250+n);var i={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969};var s=function(e){if(a.indexOf(e)==-1)return;t=i[0]=e};function o(){s(1252)}var l=function(e){r=e;s(e)};function c(){l(1200);o()}function f(e){var r=[];for(var t=0,a=e.length;t>1;++t)r[t]=String.fromCharCode(e.charCodeAt(2*t)+(e.charCodeAt(2*t+1)<<8));return r.join("")}function h(e){var r=[];for(var t=0;t>1;++t)r[t]=String.fromCharCode(e.charCodeAt(2*t+1)+(e.charCodeAt(2*t)<<8));return r.join("")}var d=function(e){var r=e.charCodeAt(0),t=e.charCodeAt(1);if(r==255&&t==254)return u(e.slice(2));if(r==254&&t==255)return h(e.slice(2));if(r==65279)return e.slice(1);return e};var p=function el(e){return String.fromCharCode(e)};var v=function rl(e){return String.fromCharCode(e)};if(typeof cptable!=="undefined"){l=function(e){r=e;s(e)};d=function(e){if(e.charCodeAt(0)===255&&e.charCodeAt(1)===254){return cptable.utils.decode(1200,f(e.slice(2)))}return e};p=function tl(e){if(r===1200)return String.fromCharCode(e);return cptable.utils.decode(r,[e&255,e>>8])[0]};v=function al(e){return cptable.utils.decode(t,[e])[0]}}var m=null;var g=true;var b=function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{encode:function(r){var t="";var a=0,n=0,i=0,s=0,o=0,l=0,c=0;for(var f=0;f>2;n=r.charCodeAt(f++);o=(a&3)<<4|n>>4;i=r.charCodeAt(f++);l=(n&15)<<2|i>>6;c=i&63;if(isNaN(n)){l=c=64}else if(isNaN(i)){c=64}t+=e.charAt(s)+e.charAt(o)+e.charAt(l)+e.charAt(c)}return t},decode:function(r){var t="";var a=0,n=0,i=0,s=0,o=0,l=0,c=0;r=r.replace(/[^\w\+\/\=]/g,"");for(var f=0;f>4;t+=String.fromCharCode(a);l=e.indexOf(r.charAt(f++));n=(o&15)<<4|l>>2;if(l!==64){t+=String.fromCharCode(n)}c=e.indexOf(r.charAt(f++));i=(l&3)<<6|c;if(c!==64){t+=String.fromCharCode(i)}}return t}}}();var w=typeof Buffer!=="undefined"&&typeof process!=="undefined"&&typeof process.versions!=="undefined"&&!!process.versions.node;var y=function(){};if(typeof Buffer!=="undefined"){var k=!Buffer.from;if(!k)try{Buffer.from("foo","utf8")}catch(x){k=true}y=k?function(e,r){return r?new Buffer(e,r):new Buffer(e)}:Buffer.from.bind(Buffer);if(!Buffer.alloc)Buffer.alloc=function(e){return new Buffer(e)};if(!Buffer.allocUnsafe)Buffer.allocUnsafe=function(e){return new Buffer(e)}}function S(e){return w?Buffer.alloc(e):typeof Uint8Array!="undefined"?new Uint8Array(e):new Array(e)}function _(e){return w?Buffer.allocUnsafe(e):typeof Uint8Array!="undefined"?new Uint8Array(e):new Array(e)}var C=function nl(e){if(w)return y(e,"binary");return e.split("").map(function(e){return e.charCodeAt(0)&255})};function A(e){if(typeof ArrayBuffer==="undefined")return C(e);var r=new ArrayBuffer(e.length),t=new Uint8Array(r);for(var a=0;a!=e.length;++a)t[a]=e.charCodeAt(a)&255;return r}function E(e){if(Array.isArray(e))return e.map(function(e){return String.fromCharCode(e)}).join("");var r=[];for(var t=0;t>6&31;n[t++]=128|s&63}else if(s>=55296&&s<57344){s=(s&1023)+64;var o=e.charCodeAt(++i)&1023;n[t++]=240|s>>8&7;n[t++]=128|s>>2&63;n[t++]=128|o>>6&15|(s&3)<<4;n[t++]=128|o&63}else{n[t++]=224|s>>12&15;n[t++]=128|s>>6&63;n[t++]=128|s&63}if(t>a){r.push(n.slice(0,t));t=0;n=S(65535);a=65530}}r.push(n.slice(0,t));return D(r)}var D=function(e){if(typeof Uint8Array!=="undefined"){var r=0,t=0;for(r=0;r=0)r+=e.charAt(t--);return r}function t(e,r){var t="";while(t.length=r?a:t("0",r-a.length)+a}function n(e,r){var a=""+e;return a.length>=r?a:t(" ",r-a.length)+a}function i(e,r){var a=""+e;return a.length>=r?a:a+t(" ",r-a.length)}function s(e,r){var a=""+Math.round(e);return a.length>=r?a:t("0",r-a.length)+a}function o(e,r){var a=""+e;return a.length>=r?a:t("0",r-a.length)+a}var l=Math.pow(2,32);function c(e,r){if(e>l||e<-l)return s(e,r);var t=Math.round(e);return o(t,r)}function f(e,r){r=r||0;return e.length>=7+r&&(e.charCodeAt(r)|32)===103&&(e.charCodeAt(r+1)|32)===101&&(e.charCodeAt(r+2)|32)===110&&(e.charCodeAt(r+3)|32)===101&&(e.charCodeAt(r+4)|32)===114&&(e.charCodeAt(r+5)|32)===97&&(e.charCodeAt(r+6)|32)===108}var u=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]];var h=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function d(e){e[0]="General";e[1]="0";e[2]="0.00";e[3]="#,##0";e[4]="#,##0.00";e[9]="0%";e[10]="0.00%";e[11]="0.00E+00";e[12]="# ?/?";e[13]="# ??/??";e[14]="m/d/yy";e[15]="d-mmm-yy";e[16]="d-mmm";e[17]="mmm-yy";e[18]="h:mm AM/PM";e[19]="h:mm:ss AM/PM";e[20]="h:mm";e[21]="h:mm:ss";e[22]="m/d/yy h:mm";e[37]="#,##0 ;(#,##0)";e[38]="#,##0 ;[Red](#,##0)";e[39]="#,##0.00;(#,##0.00)";e[40]="#,##0.00;[Red](#,##0.00)";e[45]="mm:ss";e[46]="[h]:mm:ss";e[47]="mmss.0";e[48]="##0.0E+0";e[49]="@";e[56]='"上午/下午 "hh"時"mm"分"ss"秒 "'}var p={};d(p);var v=[];var m=0;for(m=5;m<=8;++m)v[m]=32+m;for(m=23;m<=26;++m)v[m]=0;for(m=27;m<=31;++m)v[m]=14;for(m=50;m<=58;++m)v[m]=14;for(m=59;m<=62;++m)v[m]=m-58;for(m=67;m<=68;++m)v[m]=m-58;for(m=72;m<=75;++m)v[m]=m-58;for(m=67;m<=68;++m)v[m]=m-57;for(m=76;m<=78;++m)v[m]=m-56;for(m=79;m<=81;++m)v[m]=m-34;var g=[];g[5]=g[63]='"$"#,##0_);\\("$"#,##0\\)';g[6]=g[64]='"$"#,##0_);[Red]\\("$"#,##0\\)';g[7]=g[65]='"$"#,##0.00_);\\("$"#,##0.00\\)';g[8]=g[66]='"$"#,##0.00_);[Red]\\("$"#,##0.00\\)';g[41]='_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)';g[42]='_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)';g[43]='_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)';g[44]='_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)';function b(e,r,t){var a=e<0?-1:1;var n=e*a;var i=0,s=1,o=0;var l=1,c=0,f=0;var u=Math.floor(n);while(cr){if(c>r){f=l;o=i}else{f=c;o=s}}if(!t)return[0,a*o,f];var h=Math.floor(a*o/f);return[h,a*o-h*f,f]}function w(e,r,t){if(e>2958465||e<0)return null;var a=e|0,n=Math.floor(86400*(e-a)),i=0;var s=[];var o={D:a,T:n,u:86400*(e-a)-n,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(o.u)<1e-6)o.u=0;if(r&&r.date1904)a+=1462;if(o.u>.9999){o.u=0;if(++n==86400){o.T=n=0;++a;++o.D}}if(a===60){s=t?[1317,10,29]:[1900,2,29];i=3}else if(a===0){s=t?[1317,8,29]:[1900,1,0];i=6}else{if(a>60)--a;var l=new Date(1900,0,1);l.setDate(l.getDate()+a-1);s=[l.getFullYear(),l.getMonth()+1,l.getDate()];i=l.getDay();if(a<60)i=(i+6)%7;if(t)i=E(l,s)}o.y=s[0];o.m=s[1];o.d=s[2];o.S=n%60;n=Math.floor(n/60);o.M=n%60;n=Math.floor(n/60);o.H=n;o.q=i;return o}e.parse_date_code=w;var y=new Date(1899,11,31,0,0,0);var k=y.getTime();var x=new Date(1900,2,1,0,0,0);function S(e,r){var t=e.getTime();if(r)t-=1461*24*60*60*1e3;else if(e>=x)t+=24*60*60*1e3;return(t-(k+(e.getTimezoneOffset()-y.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function _(e){return e.toString(10)}e._general_int=_;var C=function W(){var e=/(?:\.0*|(\.\d*[1-9])0+)$/;function r(r){return r.indexOf(".")==-1?r:r.replace(e,"$1")}var t=/(?:\.0*|(\.\d*[1-9])0+)[Ee]/;var a=/(E[+-])(\d)$/;function n(e){if(e.indexOf("E")==-1)return e;return e.replace(t,"$1E").replace(a,"$10$2")}function i(e){var t=e<0?12:11;var a=r(e.toFixed(12));if(a.length<=t)return a;a=e.toPrecision(10);if(a.length<=t)return a;return e.toExponential(5)}function s(e){var t=r(e.toFixed(11));return t.length>(e<0?12:11)||t==="0"||t==="-0"?e.toPrecision(6):t}function o(e){var t=Math.floor(Math.log(Math.abs(e))*Math.LOG10E),a;if(t>=-4&&t<=-1)a=e.toPrecision(10+t);else if(Math.abs(t)<=9)a=i(e);else if(t===10)a=e.toFixed(10).substr(0,12);else a=s(e);return r(n(a.toUpperCase()))}return o}();e._general_num=C;function A(e,r){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":return(e|0)===e?e.toString(10):C(e);case"undefined":return"";case"object":if(e==null)return"";if(e instanceof Date)return U(14,S(e,r&&r.date1904),r);}throw new Error("unsupported value in General format: "+e)}e._general=A;function E(e,r){r[0]-=581;var t=e.getDay();if(e<60)t=(t+6)%7;return t}function F(e,r,t,n){var i="",s=0,o=0,l=t.y,c,f=0;switch(e){case 98:l=t.y+543;case 121:switch(r.length){case 1:;case 2:c=l%100;f=2;break;default:c=l%1e4;f=4;break;}break;case 109:switch(r.length){case 1:;case 2:c=t.m;f=r.length;break;case 3:return h[t.m-1][1];case 5:return h[t.m-1][0];default:return h[t.m-1][2];}break;case 100:switch(r.length){case 1:;case 2:c=t.d;f=r.length;break;case 3:return u[t.q][0];default:return u[t.q][1];}break;case 104:switch(r.length){case 1:;case 2:c=1+(t.H+11)%12;f=r.length;break;default:throw"bad hour format: "+r;}break;case 72:switch(r.length){case 1:;case 2:c=t.H;f=r.length;break;default:throw"bad hour format: "+r;}break;case 77:switch(r.length){case 1:;case 2:c=t.M;f=r.length;break;default:throw"bad minute format: "+r;}break;case 115:if(r!="s"&&r!="ss"&&r!=".0"&&r!=".00"&&r!=".000")throw"bad second format: "+r;if(t.u===0&&(r=="s"||r=="ss"))return a(t.S,r.length);if(n>=2)o=n===3?1e3:100;else o=n===1?10:1;s=Math.round(o*(t.S+t.u));if(s>=60*o)s=0;if(r==="s")return s===0?"0":""+s/o;i=a(s,2+n);if(r==="ss")return i.substr(0,2);return"."+i.substr(2,r.length-1);case 90:switch(r){case"[h]":;case"[hh]":c=t.D*24+t.H;break;case"[m]":;case"[mm]":c=(t.D*24+t.H)*60+t.M;break;case"[s]":;case"[ss]":c=((t.D*24+t.H)*60+t.M)*60+Math.round(t.S+t.u);break;default:throw"bad abstime format: "+r;}f=r.length===3?1:2;break;case 101:c=l;f=1;break;}var d=f>0?a(c,f):"";return d}function T(e){var r=3;if(e.length<=r)return e;var t=e.length%r,a=e.substr(0,t);for(;t!=e.length;t+=r)a+=(a.length>0?",":"")+e.substr(t,r);return a}var O=function j(){var e=/%/g;function s(r,a,n){var i=a.replace(e,""),s=a.length-i.length;return O(r,i,n*Math.pow(10,2*s))+t("%",s)}function o(e,r,t){var a=r.length-1;while(r.charCodeAt(a-1)===44)--a;return O(e,r.substr(0,a),t/Math.pow(10,3*(r.length-a)))}function l(e,r){var t;var a=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(r==0)return"0.0E+0";else if(r<0)return"-"+l(e,-r);var n=e.indexOf(".");if(n===-1)n=e.indexOf("E");var i=Math.floor(Math.log(r)*Math.LOG10E)%n;if(i<0)i+=n;t=(r/Math.pow(10,i)).toPrecision(a+1+(n+i)%n);if(t.indexOf("e")===-1){var s=Math.floor(Math.log(r)*Math.LOG10E);if(t.indexOf(".")===-1)t=t.charAt(0)+"."+t.substr(1)+"E+"+(s-t.length+i);else t+="E+"+(s-i);while(t.substr(0,2)==="0."){t=t.charAt(0)+t.substr(2,n)+"."+t.substr(2+n);t=t.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.")}t=t.replace(/\+-/,"-")}t=t.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(e,r,t,a){return r+t+a.substr(0,(n+i)%n)+"."+a.substr(i)+"E"})}else t=r.toExponential(a);if(e.match(/E\+00$/)&&t.match(/e[+-]\d$/))t=t.substr(0,t.length-1)+"0"+t.charAt(t.length-1);if(e.match(/E\-/)&&t.match(/e\+/))t=t.replace(/e\+/,"e");return t.replace("e","E")}var f=/# (\?+)( ?)\/( ?)(\d+)/;function u(e,r,i){var s=parseInt(e[4],10),o=Math.round(r*s),l=Math.floor(o/s);var c=o-l*s,f=s;return i+(l===0?"":""+l)+" "+(c===0?t(" ",e[1].length+1+e[4].length):n(c,e[1].length)+e[2]+"/"+e[3]+a(f,e[4].length))}function h(e,r,a){return a+(r===0?"":""+r)+t(" ",e[1].length+2+e[4].length)}var d=/^#*0*\.([0#]+)/;var p=/\).*[0#]/;var v=/\(###\) ###\\?-####/;function m(e){var r="",t;for(var a=0;a!=e.length;++a)switch(t=e.charCodeAt(a)){case 35:break;case 63:r+=" ";break;case 48:r+="0";break;default:r+=String.fromCharCode(t);}return r}function g(e,r){var t=Math.pow(10,r);return""+Math.round(e*t)/t}function w(e,r){var t=e-Math.floor(e),a=Math.pow(10,r);if(r<(""+Math.round(t*a)).length)return 0;return Math.round(t*a)}function y(e,r){if(r<(""+Math.round((e-Math.floor(e))*Math.pow(10,r))).length){return 1}return 0}function k(e){if(e<2147483647&&e>-2147483648)return""+(e>=0?e|0:e-1|0);return""+Math.floor(e)}function x(e,h,S){if(e.charCodeAt(0)===40&&!h.match(p)){var _=h.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");if(S>=0)return x("n",_,S);return"("+x("n",_,-S)+")"}if(h.charCodeAt(h.length-1)===44)return o(e,h,S);if(h.indexOf("%")!==-1)return s(e,h,S);if(h.indexOf("E")!==-1)return l(h,S);if(h.charCodeAt(0)===36)return"$"+x(e,h.substr(h.charAt(1)==" "?2:1),S);var C;var A,E,F,D=Math.abs(S),M=S<0?"-":"";if(h.match(/^00+$/))return M+c(D,h.length);if(h.match(/^[#?]+$/)){C=c(S,0);if(C==="0")C="";return C.length>h.length?C:m(h.substr(0,h.length-C.length))+C}if(A=h.match(f))return u(A,D,M);if(h.match(/^#+0+$/))return M+c(D,h.length-h.indexOf("0"));if(A=h.match(d)){C=g(S,A[1].length).replace(/^([^\.]+)$/,"$1."+m(A[1])).replace(/\.$/,"."+m(A[1])).replace(/\.(\d*)$/,function(e,r){return"."+r+t("0",m(A[1]).length-r.length)});return h.indexOf("0.")!==-1?C:C.replace(/^0\./,".")}h=h.replace(/^#+([0.])/,"$1");if(A=h.match(/^(0*)\.(#*)$/)){return M+g(D,A[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,A[1].length?"0.":".")}if(A=h.match(/^#{1,3},##0(\.?)$/))return M+T(c(D,0));if(A=h.match(/^#,##0\.([#0]*0)$/)){return S<0?"-"+x(e,h,-S):T(""+(Math.floor(S)+y(S,A[1].length)))+"."+a(w(S,A[1].length),A[1].length)}if(A=h.match(/^#,#*,#0/))return x(e,h.replace(/^#,#*,/,""),S);if(A=h.match(/^([0#]+)(\\?-([0#]+))+$/)){C=r(x(e,h.replace(/[\\-]/g,""),S));E=0;return r(r(h.replace(/\\/g,"")).replace(/[0#]/g,function(e){return E=0)return A("n",l,o);return"("+A("n",l,-o)+")"}if(s.charCodeAt(s.length-1)===44)return S(e,s,o);if(s.indexOf("%")!==-1)return _(e,s,o);if(s.indexOf("E")!==-1)return C(s,o);if(s.charCodeAt(0)===36)return"$"+A(e,s.substr(s.charAt(1)==" "?2:1),o);var c;var u,g,w,y=Math.abs(o),k=o<0?"-":"";if(s.match(/^00+$/))return k+a(y,s.length);if(s.match(/^[#?]+$/)){c=""+o;if(o===0)c="";return c.length>s.length?c:m(s.substr(0,s.length-c.length))+c}if(u=s.match(f))return h(u,y,k);if(s.match(/^#+0+$/))return k+a(y,s.length-s.indexOf("0"));if(u=s.match(d)){c=(""+o).replace(/^([^\.]+)$/,"$1."+m(u[1])).replace(/\.$/,"."+m(u[1]));c=c.replace(/\.(\d*)$/,function(e,r){return"."+r+t("0",m(u[1]).length-r.length)});return s.indexOf("0.")!==-1?c:c.replace(/^0\./,".")}s=s.replace(/^#+([0.])/,"$1");if(u=s.match(/^(0*)\.(#*)$/)){return k+(""+y).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,u[1].length?"0.":".")}if(u=s.match(/^#{1,3},##0(\.?)$/))return k+T(""+y);if(u=s.match(/^#,##0\.([#0]*0)$/)){return o<0?"-"+A(e,s,-o):T(""+o)+"."+t("0",u[1].length)}if(u=s.match(/^#,#*,#0/))return A(e,s.replace(/^#,#*,/,""),o);if(u=s.match(/^([0#]+)(\\?-([0#]+))+$/)){c=r(A(e,s.replace(/[\\-]/g,""),o));g=0;return r(r(s.replace(/\\/g,"")).replace(/[0#]/g,function(e){return g-1||t=="\\"&&e.charAt(r+1)=="-"&&"0#".indexOf(e.charAt(r+2))>-1)){}break;case"?":while(e.charAt(++r)===t){}break;case"*":++r;if(e.charAt(r)==" "||e.charAt(r)=="*")++r;break;case"(":;case")":++r;break;case"1":;case"2":;case"3":;case"4":;case"5":;case"6":;case"7":;case"8":;case"9":while(r-1){}break;case" ":++r;break;default:++r;break;}}return false}e.is_date=N;function P(e,r,t,a){var n=[],i="",s=0,o="",l="t",c,u,h;var d="H";while(s=12?"P":"A";m.t="T";d="h";s+=3}else if(e.substr(s,5).toUpperCase()==="AM/PM"){if(c!=null)m.v=c.H>=12?"PM":"AM";m.t="T";s+=5;d="h"}else if(e.substr(s,5).toUpperCase()==="上午/下午"){if(c!=null)m.v=c.H>=12?"下午":"上午";m.t="T";s+=5;d="h"}else{m.t="t";++s}if(c==null&&m.t==="T")return"";n[n.length]=m;l=o;break;case"[":i=o;while(e.charAt(s++)!=="]"&&s-1){i=(i.match(/\$([^-\[\]]*)/)||[])[1]||"$";if(!N(e))n[n.length]={t:"t",v:i}}break;case".":if(c!=null){i=o;while(++s-1)i+=o;n[n.length]={t:"n",v:i};break;case"?":i=o;while(e.charAt(++s)===o)i+=o;n[n.length]={t:o,v:i};l=o;break;case"*":++s;if(e.charAt(s)==" "||e.charAt(s)=="*")++s;break;case"(":;case")":n[n.length]={t:a===1?"t":o,v:o};++s;break;case"1":;case"2":;case"3":;case"4":;case"5":;case"6":;case"7":;case"8":;case"9":i=o;while(s-1)i+=e.charAt(s);n[n.length]={t:"D",v:i};break;case" ":n[n.length]={t:o,v:o};++s;break;case"$":n[n.length]={t:"t",v:"$"};++s;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(o)===-1)throw new Error("unrecognized character "+o+" in "+e);n[n.length]={t:"t",v:o};++s;break;}}var g=0,b=0,y;for(s=n.length-1,l="t";s>=0;--s){switch(n[s].t){case"h":;case"H":n[s].t=d;l="h";if(g<1)g=1;break;case"s":if(y=n[s].v.match(/\.0+$/))b=Math.max(b,y[0].length-1);if(g<3)g=3;case"d":;case"y":;case"M":;case"e":l=n[s].t;break;case"m":if(l==="s"){n[s].t="M";if(g<2)g=2}break;case"X":break;case"Z":if(g<1&&n[s].v.match(/[Hh]/))g=1;if(g<2&&n[s].v.match(/[Mm]/))g=2;if(g<3&&n[s].v.match(/[Ss]/))g=3;}}switch(g){case 0:break;case 1:if(c.u>=.5){c.u=0;++c.S}if(c.S>=60){c.S=0;++c.M}if(c.M>=60){c.M=0;++c.H}break;case 2:if(c.u>=.5){c.u=0;++c.S}if(c.S>=60){c.S=0;++c.M}break;}var k="",x;for(s=0;s0){if(k.charCodeAt(0)==40){_=r<0&&k.charCodeAt(0)===45?-r:r;C=O("n",k,_)}else{_=r<0&&a>1?-r:r;C=O("n",k,_);if(_<0&&n[0]&&n[0].t=="t"){C=C.substr(1);n[0].v="-"+n[0].v}}x=C.length-1;var E=n.length;for(s=0;s-1){E=s;break}var T=n.length;if(E===n.length&&C.indexOf("E")===-1){for(s=n.length-1;s>=0;--s){if(n[s]==null||"n?".indexOf(n[s].t)===-1)continue;if(x>=n[s].v.length-1){x-=n[s].v.length;n[s].v=C.substr(x+1,n[s].v.length)}else if(x<0)n[s].v="";else{n[s].v=C.substr(0,x+1);x=-1}n[s].t="t";T=s}if(x>=0&&T=0;--s){if(n[s]==null||"n?".indexOf(n[s].t)===-1)continue;u=n[s].v.indexOf(".")>-1&&s===E?n[s].v.indexOf(".")-1:n[s].v.length-1;S=n[s].v.substr(u+1);for(;u>=0;--u){if(x>=0&&(n[s].v.charAt(u)==="0"||n[s].v.charAt(u)==="#"))S=C.charAt(x--)+S}n[s].v=S;n[s].t="t";T=s}if(x>=0&&T-1&&s===E?n[s].v.indexOf(".")+1:0;S=n[s].v.substr(0,u);for(;u-1){_=a>1&&r<0&&s>0&&n[s-1].v==="-"?-r:r;n[s].v=O(n[s].t,n[s].v,_);n[s].t="t"}var D="";for(s=0;s!==n.length;++s)if(n[s]!=null)D+=n[s].v;return D}e._eval=P;var R=/\[[=<>]/;var I=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function L(e,r){if(r==null)return false;var t=parseFloat(r[2]);switch(r[1]){case"=":if(e==t)return true;break;case">":if(e>t)return true;break;case"<":if(e":if(e!=t)return true;break;case">=":if(e>=t)return true;break;case"<=":if(e<=t)return true;break;}return false}function B(e,r){var t=D(e);var a=t.length,n=t[a-1].indexOf("@");if(a<4&&n>-1)--a;if(t.length>4)throw new Error("cannot find right format for |"+t.join("|")+"|");if(typeof r!=="number")return[4,t.length===4||n>-1?t[t.length-1]:"@"];switch(t.length){case 1:t=n>-1?["General","General","General",t[0]]:[t[0],t[0],t[0],"@"];break;case 2:t=n>-1?[t[0],t[0],t[0],t[1]]:[t[0],t[1],t[0],"@"];break;case 3:t=n>-1?[t[0],t[1],t[0],t[2]]:[t[0],t[1],t[2],"@"];break;case 4:break;}var i=r>0?t[0]:r<0?t[1]:t[2];if(t[0].indexOf("[")===-1&&t[1].indexOf("[")===-1)return[a,i];if(t[0].match(R)!=null||t[1].match(R)!=null){var s=t[0].match(I);var o=t[1].match(I);return L(r,s)?[a,t[0]]:L(r,o)?[a,t[1]]:[a,t[s!=null&&o!=null?2:1]]}return[a,i]}function U(e,r,t){if(t==null)t={};var a="";switch(typeof e){case"string":if(e=="m/d/yy"&&t.dateNF)a=t.dateNF;else a=e;break;case"number":if(e==14&&t.dateNF)a=t.dateNF;else a=(t.table!=null?t.table:p)[e];if(a==null)a=t.table&&t.table[v[e]]||p[v[e]];if(a==null)a=g[e]||"General";break;}if(f(a,0))return A(r,t);if(r instanceof Date)r=S(r,t.date1904);var n=B(a,r);if(f(n[1]))return A(r,t);if(r===true)r="TRUE";else if(r===false)r="FALSE";else if(r===""||r==null)return"";return P(n[1],r,t,n[0])}function z(e,r){if(typeof r!="number"){r=+r||-1;for(var t=0;t<392;++t){if(p[t]==undefined){if(r<0)r=t;continue}if(p[t]==e){r=t;break}}if(r<0)r=391}p[r]=e;return r}e.load=z;e._table=p;e.get_table=function $(){return p};e.load_table=function H(e){for(var r=0;r!=392;++r)if(e[r]!==undefined)z(e[r],r)};e.init_table=d;e.format=U};R(P);var I={"General Number":"General","General Date":P._table[22],"Long Date":"dddd, mmmm dd, yyyy","Medium Date":P._table[15],"Short Date":P._table[14],"Long Time":P._table[19],"Medium Time":P._table[18],"Short Time":P._table[20],Currency:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',Fixed:P._table[2],Standard:P._table[4],Percent:P._table[10],Scientific:P._table[11],"Yes/No":'"Yes";"Yes";"No";@',"True/False":'"True";"True";"False";@',"On/Off":'"Yes";"Yes";"No";@'};var L={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"};var B=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function U(e){var r=typeof e=="number"?P._table[e]:e;r=r.replace(B,"(\\d+)");return new RegExp("^"+r+"$")}function z(e,r,t){var a=-1,n=-1,i=-1,s=-1,o=-1,l=-1;(r.match(B)||[]).forEach(function(e,r){var c=parseInt(t[r+1],10);switch(e.toLowerCase().charAt(0)){case"y":a=c;break;case"d":i=c;break;case"h":s=c;break;case"s":l=c;break;case"m":if(s>=0)o=c;else n=c;break;}});if(l>=0&&o==-1&&n>=0){o=n;n=-1}var c=(""+(a>=0?a:(new Date).getFullYear())).slice(-4)+"-"+("00"+(n>=1?n:1)).slice(-2)+"-"+("00"+(i>=1?i:1)).slice(-2);if(c.length==7)c="0"+c;if(c.length==8)c="20"+c;var f=("00"+(s>=0?s:0)).slice(-2)+":"+("00"+(o>=0?o:0)).slice(-2)+":"+("00"+(l>=0?l:0)).slice(-2);if(s==-1&&o==-1&&l==-1)return c;if(a==-1&&n==-1&&i==-1)return f;return c+"T"+f}var W=true;var j;(function(e){e(j={})})(function(e){e.version="1.2.0";function r(){var e=0,r=new Array(256);for(var t=0;t!=256;++t){e=t;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;r[t]=e}return typeof Int32Array!=="undefined"?new Int32Array(r):r}var t=r();function a(e){var r=0,t=0,a=0,n=typeof Int32Array!=="undefined"?new Int32Array(4096):new Array(4096);for(a=0;a!=256;++a)n[a]=e[a];for(a=0;a!=256;++a){t=e[a];for(r=256+a;r<4096;r+=256)t=n[r]=t>>>8^e[t&255]; -}var i=[];for(a=1;a!=16;++a)i[a-1]=typeof Int32Array!=="undefined"?n.subarray(a*256,a*256+256):n.slice(a*256,a*256+256);return i}var n=a(t);var i=n[0],s=n[1],o=n[2],l=n[3],c=n[4];var f=n[5],u=n[6],h=n[7],d=n[8],p=n[9];var v=n[10],m=n[11],g=n[12],b=n[13],w=n[14];function y(e,r){var a=r^-1;for(var n=0,i=e.length;n>>8^t[(a^e.charCodeAt(n++))&255];return~a}function k(e,r){var a=r^-1,n=e.length-15,y=0;for(;y>8&255]^g[e[y++]^a>>16&255]^m[e[y++]^a>>>24]^v[e[y++]]^p[e[y++]]^d[e[y++]]^h[e[y++]]^u[e[y++]]^f[e[y++]]^c[e[y++]]^l[e[y++]]^o[e[y++]]^s[e[y++]]^i[e[y++]]^t[e[y++]];n+=15;while(y>>8^t[(a^e[y++])&255];return~a}function x(e,r){var a=r^-1;for(var n=0,i=e.length,s=0,o=0;n>>8^t[(a^s)&255]}else if(s<2048){a=a>>>8^t[(a^(192|s>>6&31))&255];a=a>>>8^t[(a^(128|s&63))&255]}else if(s>=55296&&s<57344){s=(s&1023)+64;o=e.charCodeAt(n++)&1023;a=a>>>8^t[(a^(240|s>>8&7))&255];a=a>>>8^t[(a^(128|s>>2&63))&255];a=a>>>8^t[(a^(128|o>>6&15|(s&3)<<4))&255];a=a>>>8^t[(a^(128|o&63))&255]}else{a=a>>>8^t[(a^(224|s>>12&15))&255];a=a>>>8^t[(a^(128|s>>6&63))&255];a=a>>>8^t[(a^(128|s&63))&255]}}return~a}e.table=t;e.bstr=y;e.buf=k;e.str=x});var H=function sl(){var e={};e.version="1.2.1";function r(e,r){var t=e.split("/"),a=r.split("/");for(var n=0,i=0,s=Math.min(t.length,a.length);n>>1;e._W(2,t);var a=r.getFullYear()-1980;a=a<<4|r.getMonth()+1;a=a<<5|r.getDate();e._W(2,a)}function i(e){var r=e._R(2)&65535;var t=e._R(2)&65535;var a=new Date;var n=t&31;t>>>=5;var i=t&15;t>>>=4;a.setMilliseconds(0);a.setFullYear(t+1980);a.setMonth(i-1);a.setDate(n);var s=r&31;r>>>=5;var o=r&63;r>>>=6;a.setHours(r);a.setMinutes(o);a.setSeconds(s<<1);return a}function s(e){Zr(e,0);var r={};var t=0;while(e.l<=e.length-4){var a=e._R(2);var n=e._R(2),i=e.l+n;var s={};switch(a){case 21589:{t=e._R(1);if(t&1)s.mtime=e._R(4);if(n>5){if(t&2)s.atime=e._R(4);if(t&4)s.ctime=e._R(4)}if(s.mtime)s.mt=new Date(s.mtime*1e3)}break;}e.l=i;r[a]=s}return r}var o;function l(){return o||(o=require("fs"))}function c(e,r){if(e[0]==80&&e[1]==75)return Me(e,r);if((e[0]|32)==109&&(e[1]|32)==105)return We(e,r);if(e.length<512)throw new Error("CFB file size "+e.length+" < 512");var t=3;var a=512;var n=0;var i=0;var s=0;var o=0;var l=0;var c=[];var p=e.slice(0,512);Zr(p,0);var m=f(p);t=m[0];switch(t){case 3:a=512;break;case 4:a=4096;break;case 0:if(m[1]==0)return Me(e,r);default:throw new Error("Major Version: Expected 3 or 4 saw "+t);}if(a!==512){p=e.slice(0,a);Zr(p,28)}var b=e.slice(0,a);u(p,t);var w=p._R(4,"i");if(t===3&&w!==0)throw new Error("# Directory Sectors: Expected 0 saw "+w);p.l+=4;s=p._R(4,"i");p.l+=4;p.chk("00100000","Mini Stream Cutoff Size: ");o=p._R(4,"i");n=p._R(4,"i");l=p._R(4,"i");i=p._R(4,"i");for(var y=-1,x=0;x<109;++x){y=p._R(4,"i");if(y<0)break;c[x]=y}var S=h(e,a);v(l,i,S,a,c);var _=g(S,s,c,a);_[s].name="!Directory";if(n>0&&o!==L)_[o].name="!MiniFAT";_[c[0]].name="!FAT";_.fat_addrs=c;_.ssz=a;var C={},A=[],E=[],F=[];k(s,_,S,A,n,C,E,o);d(E,F,A);A.shift();var T={FileIndex:E,FullPaths:F};if(r&&r.raw)T.raw={header:b,sectors:S};return T}function f(e){if(e[e.l]==80&&e[e.l+1]==75)return[0,0];e.chk(B,"Header Signature: ");e.l+=16;var r=e._R(2,"u");return[e._R(2,"u"),r]}function u(e,r){var t=9;e.l+=2;switch(t=e._R(2)){case 9:if(r!=3)throw new Error("Sector Shift: Expected 9 saw "+t);break;case 12:if(r!=4)throw new Error("Sector Shift: Expected 12 saw "+t);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+t);}e.chk("0600","Mini Sector Shift: ");e.chk("000000000000","Reserved: ")}function h(e,r){var t=Math.ceil(e.length/r)-1;var a=[];for(var n=1;n0&&s>=0){i.push(r.slice(s*I,s*I+I));n-=I;s=Hr(t,s*4)}if(i.length===0)return et(0);return D(i).slice(0,e.size)}function v(e,r,t,a,n){var i=L;if(e===L){if(r!==0)throw new Error("DIFAT chain shorter than expected")}else if(e!==-1){var s=t[e],o=(a>>>2)-1;if(!s)return;for(var l=0;l=0;){n[l]=true;i[i.length]=l;s.push(e[l]);var f=t[Math.floor(l*4/a)];c=l*4&o;if(a<4+c)throw new Error("FAT boundary crossed: "+l+" 4 "+a);if(!e[f])break;l=Hr(e[f],c)}return{nodes:i,data:br([s])}}function g(e,r,t,a){var n=e.length,i=[];var s=[],o=[],l=[];var c=a-1,f=0,u=0,h=0,d=0;for(f=0;f=n)h-=n;if(s[h])continue;l=[];var p=[];for(u=h;u>=0;){p[u]=true;s[u]=true;o[o.length]=u;l.push(e[u]);var v=t[Math.floor(u*4/a)];d=u*4&c;if(a<4+d)throw new Error("FAT boundary crossed: "+u+" 4 "+a);if(!e[v])break;u=Hr(e[v],d);if(p[u])break}i[h]={nodes:o,data:br([l])}}return i}function k(e,r,t,a,n,i,s,o){var l=0,c=a.length?2:0;var f=r[e].data;var u=0,h=0,d;for(;u0&&l!==L)r[l].name="!StreamData"}else if(g.size>=4096){g.storage="fat";if(r[g.start]===undefined)r[g.start]=m(t,g.start,r.fat_addrs,r.ssz);r[g.start].name=g.name;g.content=r[g.start].data.slice(0,g.size)}else{g.storage="minifat";if(g.size<0)g.size=0;else if(l!==L&&g.start!==L&&r[l]){g.content=p(g,r[l].data,(r[o]||{}).data)}}if(g.content)Zr(g.content,0);i[d]=g;s.push(g)}}function x(e,r){return new Date(($r(e,r+4)/1e7*Math.pow(2,32)+$r(e,r)/1e7-11644473600)*1e3)}function A(e,r){l();return c(o.readFileSync(e),r)}function E(e,r){var t=r&&r.type;if(!t){if(w&&Buffer.isBuffer(e))t="buffer"}switch(t||"base64"){case"file":return A(e,r);case"base64":return c(C(b.decode(e)),r);case"binary":return c(C(e),r);}return c(e,r)}function F(e,r){var t=r||{},a=t.root||"Root Entry";if(!e.FullPaths)e.FullPaths=[];if(!e.FileIndex)e.FileIndex=[];if(e.FullPaths.length!==e.FileIndex.length)throw new Error("inconsistent CFB structure");if(e.FullPaths.length===0){e.FullPaths[0]=a+"/";e.FileIndex[0]={name:a,type:5}}if(t.CLSID)e.FileIndex[0].clsid=t.CLSID;T(e)}function T(e){var r="Sh33tJ5";if(H.find(e,"/"+r))return;var t=et(4);t[0]=55;t[1]=t[3]=50;t[2]=54;e.FileIndex.push({name:r,type:2,content:t,size:4,L:69,R:69,C:69});e.FullPaths.push(e.FullPaths[0]+r);O(e)}function O(e,n){F(e);var i=false,s=false;for(var o=e.FullPaths.length-1;o>=0;--o){var l=e.FileIndex[o];switch(l.type){case 0:if(s)i=true;else{e.FileIndex.pop();e.FullPaths.pop()}break;case 1:;case 2:;case 5:s=true;if(isNaN(l.R*l.L*l.C))i=true;if(l.R>-1&&l.L>-1&&l.R==l.L)i=true;break;default:i=true;break;}}if(!i&&!n)return;var c=new Date(1987,1,19),f=0;var u=Object.create?Object.create(null):{};var h=[];for(o=0;o1?1:-1;p.size=0;p.type=5}else if(v.slice(-1)=="/"){for(f=o+1;f=h.length?-1:f;for(f=o+1;f=h.length?-1:f;p.type=1}else{if(t(e.FullPaths[o+1]||"")==t(v))p.R=o+1;p.type=2}}}function P(e,r){var t=r||{};if(t.fileType=="mad")return je(e,t);O(e);switch(t.fileType){case"zip":return Pe(e,t);}var a=function(e){var r=0,t=0;for(var a=0;a0){if(i<4096)r+=i+63>>6;else t+=i+511>>9}}var s=e.FullPaths.length+3>>2;var o=r+7>>3;var l=r+127>>7;var c=o+t+s+l;var f=c+127>>7;var u=f<=109?0:Math.ceil((f-109)/127);while(c+f+u+127>>7>f)u=++f<=109?0:Math.ceil((f-109)/127);var h=[1,u,f,l,s,t,r,0];e.FileIndex[0].size=r<<6;h[7]=(e.FileIndex[0].start=h[0]+h[1]+h[2]+h[3]+h[4]+h[5])+(h[6]+7>>3);return h}(e);var n=et(a[7]<<9);var i=0,s=0;{for(i=0;i<8;++i)n._W(1,U[i]);for(i=0;i<8;++i)n._W(2,0);n._W(2,62);n._W(2,3);n._W(2,65534);n._W(2,9);n._W(2,6);for(i=0;i<3;++i)n._W(2,0);n._W(4,0);n._W(4,a[2]);n._W(4,a[0]+a[1]+a[2]+a[3]-1);n._W(4,0);n._W(4,1<<12);n._W(4,a[3]?a[0]+a[1]+a[2]-1:L);n._W(4,a[3]);n._W(-4,a[1]?a[0]-1:L);n._W(4,a[1]);for(i=0;i<109;++i)n._W(-4,i>9)}o(a[6]+7>>3);while(n.l&511)n._W(-4,W.ENDOFCHAIN);s=i=0;for(l=0;l=4096)continue;f.start=s;o(c+63>>6)}while(n.l&511)n._W(-4,W.ENDOFCHAIN);for(i=0;i=4096){n.l=f.start+1<<9;if(w&&Buffer.isBuffer(f.content)){f.content.copy(n,n.l,0,f.size);n.l+=f.size+511&-512}else{for(l=0;l0&&f.size<4096){if(w&&Buffer.isBuffer(f.content)){f.content.copy(n,n.l,0,f.size);n.l+=f.size+63&-64}else{for(l=0;l>16|r>>8|r)&255}var re=typeof Uint8Array!=="undefined";var te=re?new Uint8Array(1<<8):[];for(var ae=0;ae<1<<8;++ae)te[ae]=ee(ae);function ne(e,r){var t=te[e&255];if(r<=8)return t>>>8-r;t=t<<8|te[e>>8&255];if(r<=16)return t>>>16-r;t=t<<8|te[e>>16&255];return t>>>24-r}function ie(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=6?0:e[a+1]<<8))>>>t&3}function se(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=5?0:e[a+1]<<8))>>>t&7}function oe(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=4?0:e[a+1]<<8))>>>t&15}function le(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=3?0:e[a+1]<<8))>>>t&31}function ce(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=1?0:e[a+1]<<8))>>>t&127}function fe(e,r,t){var a=r&7,n=r>>>3,i=(1<>>a;if(t<8-a)return s&i;s|=e[n+1]<<8-a;if(t<16-a)return s&i;s|=e[n+2]<<16-a;if(t<24-a)return s&i;s|=e[n+3]<<24-a;return s&i}function ue(e,r,t){var a=r&7,n=r>>>3;if(a<=5)e[n]|=(t&7)<>8-a}return r+3}function he(e,r,t){var a=r&7,n=r>>>3;t=(t&1)<>>3;t<<=a;e[n]|=t&255;t>>>=8;e[n+1]=t;return r+8}function pe(e,r,t){var a=r&7,n=r>>>3;t<<=a;e[n]|=t&255;t>>>=8;e[n+1]=t&255;e[n+2]=t>>>8;return r+16}function ve(e,r){var t=e.length,a=2*t>r?2*t:r+5,n=0;if(t>=r)return e;if(w){var i=_(a);if(e.copy)e.copy(i);else for(;n>a-u;for(s=(1<=0;--s)r[o|s<0)r[r.l++]=e[t++]}return r.l}function i(r,t){var n=0;var i=0;var s=re?new Uint16Array(32768):[];while(i0)t[t.l++]=r[i++];n=t.l*8;continue}n=ue(t,n,+!!(i+o==r.length)+2);var l=0;while(o-- >0){var c=r[i];l=(l<<5^c)&32767;var f=-1,u=0;if(f=s[l]){f|=i&~32767;if(f>i)f-=32768;if(f2){c=a[u];if(c<=22)n=de(t,n,te[c+1]>>1)-1;else{de(t,n,3);n+=5;de(t,n,te[c-23]>>5);n+=3}var h=c<8?0:c-4>>2;if(h>0){pe(t,n,u-Z[c]);n+=h}c=e[i-f];n=de(t,n,te[c]>>3);n-=3;var d=c<4?0:c-2>>1;if(d>0){pe(t,n,i-f-Q[c]);n+=d}for(var p=0;p>8-p;for(var v=(1<<7-p)-1;v>=0;--v)Ce[d|v<>>=3){case 16:i=3+ie(e,r);r+=2;d=m[m.length-1];while(i-- >0)m.push(d);break;case 17:i=3+se(e,r);r+=3;while(i-- >0)m.push(0);break;case 18:i=11+ce(e,r);r+=7;while(i-- >0)m.push(0);break;default:m.push(d);if(l>>0;var o=0,l=0;while((a&1)==0){a=se(e,t);t+=3;if(a>>>1==0){if(t&7)t+=8-(t&7);var c=e[t>>>3]|e[(t>>>3)+1]<<8;t+=32;if(c>0){if(!r&&s0){n[i++]=e[t>>>3];t+=8}}continue}else if(a>>1==1){o=9;l=5}else{t=Fe(e,t);o=Ae;l=Ee}for(;;){if(!r&&s>>1==1?be[f]:Se[f];t+=u&15;u>>>=4;if((u>>>8&255)===0)n[i++]=u;else if(u==256)break;else{u-=257;var h=u<8?0:u-4>>2;if(h>5)h=0;var d=i+Z[u];if(h>0){d+=fe(e,t,h);t+=h}f=fe(e,t,l);u=a>>>1==1?we[f]:_e[f];t+=u&15;u>>>=4;var p=u<4?0:u-2>>1;var v=Q[u];if(p>0){v+=fe(e,t,p);t+=p}if(!r&&s>>3];return[n.slice(0,i),t+7>>>3]}function Oe(e,r){var t=e.slice(e.l||0);var a=Te(t,r);e.l+=a[1];return a[0]}function De(e,r){if(e){if(typeof console!=="undefined")console.error(r)}else throw new Error(r)}function Me(e,r){var t=e;Zr(t,0);var a=[],n=[];var i={FileIndex:a,FullPaths:n};F(i,{root:r.root});var o=t.length-4;while((t[o]!=80||t[o+1]!=75||t[o+2]!=5||t[o+3]!=6)&&o>=0)--o;t.l=o+4;t.l+=4;var l=t._R(2);t.l+=6;var c=t._R(4);t.l=c;for(o=0;o0){t=t.slice(0,t.length-1);t=t.slice(0,t.lastIndexOf("/")+1);if(i.slice(0,t.length)==t)break}}var s=(a[1]||"").match(/boundary="(.*?)"/);if(!s)throw new Error("MAD cannot find boundary");var o="--"+(s[1]||"");var l=[],c=[];var f={FileIndex:l,FullPaths:c};F(f);var u,h=0;for(n=0;n=32&&d<128)++u;var v=u>=h*4/5;n.push(a);n.push("Content-Location: "+(t.root||"file:///C:/SheetJS/")+s);n.push("Content-Transfer-Encoding: "+(v?"quoted-printable":"base64"));n.push("Content-Type: "+Ie(o,s));n.push("");n.push(v?Be(f):Le(f))}n.push(a+"--\r\n");return n.join("\r\n")}function $e(e){var r={};F(r,e);return r}function He(e,r,t,n){var i=n&&n.unsafe;if(!i)F(e);var s=!i&&H.find(e,r);if(!s){var o=e.FullPaths[0];if(r.slice(0,o.length)==o)o=r;else{if(o.slice(-1)!="/")o+="/";o=(o+r).replace("//","/")}s={name:a(r),type:2};e.FileIndex.push(s);e.FullPaths.push(o);if(!i)H.utils.cfb_gc(e)}s.content=t;s.size=t?t.length:0;if(n){if(n.CLSID)s.clsid=n.CLSID;if(n.mt)s.mt=n.mt;if(n.ct)s.ct=n.ct}return s}function Xe(e,r){F(e);var t=H.find(e,r);if(t)for(var a=0;a3)a=true;switch(n[i].slice(n[i].length-1)){case"Y":throw new Error("Unsupported ISO Duration Field: "+n[i].slice(n[i].length-1));case"D":t*=24;case"H":t*=60;case"M":if(!a)throw new Error("Unsupported ISO Duration Field: M");else t*=60;case"S":break;}r+=t*parseInt(n[i],10)}return r}var oe=new Date("2017-02-19T19:06:09.000Z"); -if(isNaN(oe.getFullYear()))oe=new Date("2/19/17");var le=oe.getFullYear()==2017;function ce(e,r){var t=new Date(e);if(le){if(r>0)t.setTime(t.getTime()+t.getTimezoneOffset()*60*1e3);else if(r<0)t.setTime(t.getTime()-t.getTimezoneOffset()*60*1e3);return t}if(e instanceof Date)return e;if(oe.getFullYear()==1917&&!isNaN(t.getFullYear())){var a=t.getFullYear();if(e.indexOf(""+a)>-1)return t;t.setFullYear(t.getFullYear()+100);return t}var n=e.match(/\d+/g)||["2017","2","19","0","0","0"];var i=new Date(+n[0],+n[1]-1,+n[2],+n[3]||0,+n[4]||0,+n[5]||0);if(e.indexOf("Z")>-1)i=new Date(i.getTime()-i.getTimezoneOffset()*60*1e3);return i}function fe(e,r){if(w&&Buffer.isBuffer(e)){if(r){if(e[0]==255&&e[1]==254)return e.slice(2).toString("utf16le");if(e[1]==254&&e[2]==255)return h(e.slice(2).toString("binary"))}return e.toString("binary")}var t=[];for(var a=0;a!=e.length;++a)t.push(String.fromCharCode(e[a]));return t.join("")}function ue(e){if(typeof JSON!="undefined"&&!Array.isArray(e))return JSON.parse(JSON.stringify(e));if(typeof e!="object"||e==null)return e;if(e instanceof Date)return new Date(e.getTime());var r={};for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))r[t]=ue(e[t]);return r}function he(e,r){var t="";while(t.length3&&pe.indexOf(s)==-1)return t}else if(s.match(/[a-z]/))return t;if(a<0||a>8099)return t;if((n>0||i>1)&&a!=101)return r;if(e.match(/[^-0-9:,\/\\]/))return t;return r}var me="abacaba".split(/(:?b)/i).length==5;function ge(e,r,t){if(me||typeof r=="string")return e.split(r);var a=e.split(r),n=[a[0]];for(var i=1;i\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g;var Ne=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/gm;if(!De.match(Ne))Ne=/<[^>]*>/g;var Pe=/<\w*:/,Re=/<(\/?)\w+:/;function Ie(e,r,t){var a={};var n=0,i=0;for(;n!==e.length;++n)if((i=e.charCodeAt(n))===32||i===10||i===13)break;if(!r)a[0]=e.slice(0,n);if(n===e.length)return a;var s=e.match(Me),o=0,l="",c=0,f="",u="",h=1;if(s)for(c=0;c!=s.length;++c){u=s[c];for(i=0;i!=u.length;++i)if(u.charCodeAt(i)===61)break;f=u.slice(0,i).trim();while(u.charCodeAt(i+1)==32)++i;h=(n=u.charCodeAt(i+1))==34||n==39?1:0;l=u.slice(i+1+h,u.length-h);for(o=0;o!=f.length;++o)if(f.charCodeAt(o)===58)break;if(o===f.length){if(f.indexOf("_")>0)f=f.slice(0,f.indexOf("_"));a[f]=l;if(!t)a[f.toLowerCase()]=l}else{var d=(o===5&&f.slice(0,5)==="xmlns"?"xmlns":"")+f.slice(o+1);if(a[d]&&f.slice(o-3,o)=="ext")continue;a[d]=l;if(!t)a[d.toLowerCase()]=l}}return a}function Le(e){return e.replace(Re,"<$1")}var Be={""":'"',"'":"'",">":">","<":"<","&":"&"};var Ue=K(Be);var ze=function(){var e=/&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/gi,r=/_x([\da-fA-F]{4})_/gi;return function t(a){var n=a+"",i=n.indexOf("-1?16:10))||e}).replace(r,function(e,r){return String.fromCharCode(parseInt(r,16))});var s=n.indexOf("]]>");return t(n.slice(0,i))+n.slice(i+9,s)+t(n.slice(s+3))}}();var We=/[&<>'"]/g,je=/[\u0000-\u0008\u000b-\u001f]/g;function $e(e){var r=e+"";return r.replace(We,function(e){return Ue[e]}).replace(je,function(e){return"_x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+"_"})}function He(e){return $e(e).replace(/ /g,"_x0020_")}var Xe=/[\u0000-\u001f]/g;function Ve(e){var r=e+"";return r.replace(We,function(e){return Ue[e]}).replace(/\n/g,"
").replace(Xe,function(e){return"&#x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+";"})}function Ge(e){var r=e+"";return r.replace(We,function(e){return Ue[e]}).replace(Xe,function(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"})}var Ye=function(){var e=/&#(\d+);/g;function r(e,r){return String.fromCharCode(parseInt(r,10))}return function t(a){return a.replace(e,r)}}();var qe=function(){return function e(r){return r.replace(/(\r\n|[\r\n])/g," ")}}();function Je(e){switch(e){case 1:;case true:;case"1":;case"true":;case"TRUE":return true;default:return false;}}var Ke=function ol(e){var r="",t=0,a=0,n=0,i=0,s=0,o=0;while(t191&&a<224){s=(a&31)<<6;s|=n&63;r+=String.fromCharCode(s);continue}i=e.charCodeAt(t++);if(a<240){r+=String.fromCharCode((a&15)<<12|(n&63)<<6|i&63);continue}s=e.charCodeAt(t++);o=((a&7)<<18|(n&63)<<12|(i&63)<<6|s&63)-65536;r+=String.fromCharCode(55296+(o>>>10&1023));r+=String.fromCharCode(56320+(o&1023))}return r};var Ze=function(e){var r=[],t=0,a=0,n=0;while(t>6)));r.push(String.fromCharCode(128+(a&63)));break;case a>=55296&&a<57344:a-=55296;n=e.charCodeAt(t++)-56320+(a<<10);r.push(String.fromCharCode(240+(n>>18&7)));r.push(String.fromCharCode(144+(n>>12&63)));r.push(String.fromCharCode(128+(n>>6&63)));r.push(String.fromCharCode(128+(n&63)));break;default:r.push(String.fromCharCode(224+(a>>12)));r.push(String.fromCharCode(128+(a>>6&63)));r.push(String.fromCharCode(128+(a&63)));}}return r.join("")};if(w){var Qe=function ll(e){var r=Buffer.alloc(2*e.length),t,a,n=1,i=0,s=0,o;for(a=0;a>>10&1023);t=56320+(t&1023)}if(s!==0){r[i++]=s&255;r[i++]=s>>>8;s=0}r[i++]=t%256;r[i++]=t>>>8}return r.slice(0,i).toString("ucs2")};var er="foo bar baz☃🍣";if(Ke(er)==Qe(er))Ke=Qe;var rr=function cl(e){return y(e,"binary").toString("utf8")};if(Ke(er)==rr(er))Ke=rr;Ze=function(e){return y(e,"utf8").toString("binary")}}var tr=function(){var e={};return function r(t,a){var n=t+"|"+(a||"");if(e[n])return e[n];return e[n]=new RegExp("<(?:\\w+:)?"+t+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)",a||"")}}();var ar=function(){var e=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map(function(e){return[new RegExp("&"+e[0]+";","ig"),e[1]]});return function r(t){var a=t.replace(/^[\t\n\r ]+/,"").replace(/[\t\n\r ]+$/,"").replace(/>\s+/g,">").replace(/\s+/g,"\n").replace(/<[^>]*>/g,"");for(var n=0;n([\\s\\S]*?)","g")}}();var ir=/<\/?(?:vt:)?variant>/g,sr=/<(?:vt:)([^>]*)>([\s\S]*)"+r+""}function fr(e){return q(e).map(function(r){return" "+r+'="'+e[r]+'"'}).join("")}function ur(e,r,t){return"<"+e+(t!=null?fr(t):"")+(r!=null?(r.match(lr)?' xml:space="preserve"':"")+">"+r+""}function hr(e,r){try{return e.toISOString().replace(/\.\d*/,"")}catch(t){if(r)throw t}return""}function dr(e,r){switch(typeof e){case"string":var t=ur("vt:lpwstr",$e(e));if(r)t=t.replace(/"/g,"_x0022_");return t;case"number":return ur((e|0)==e?"vt:i4":"vt:r8",$e(String(e)));case"boolean":return ur("vt:bool",e?"true":"false");}if(e instanceof Date)return ur("vt:filetime",hr(e));throw new Error("Unable to serialize "+e)}var pr={dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"};pr.main=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"];var vr={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 mr(e,r){var t=1-2*(e[r+7]>>>7);var a=((e[r+7]&127)<<4)+(e[r+6]>>>4&15);var n=e[r+6]&15;for(var i=5;i>=0;--i)n=n*256+e[r+i];if(a==2047)return n==0?t*Infinity:NaN;if(a==0)a=-1022;else{a-=1023;n+=Math.pow(2,52)}return t*Math.pow(2,a-52)*n}function gr(e,r,t){var a=(r<0||1/r==-Infinity?1:0)<<7,n=0,i=0;var s=a?-r:r;if(!isFinite(s)){n=2047;i=isNaN(r)?26985:0}else if(s==0)n=i=0;else{n=Math.floor(Math.log(s)/Math.LN2);i=s*Math.pow(2,52-n);if(n<=-1023&&(!isFinite(i)||i>4|a}var br=function(e){var r=[],t=10240;for(var a=0;a0?_r(e,r+4,r+4+t-1):""};var Er=Ar;var Fr=function(e,r){var t=$r(e,r);return t>0?_r(e,r+4,r+4+t-1):""};var Tr=Fr;var Or=function(e,r){var t=2*$r(e,r);return t>0?_r(e,r+4,r+4+t-1):""};var Dr=Or;var Mr,Nr;Mr=Nr=function fl(e,r){var t=$r(e,r);return t>0?yr(e,r+4,r+4+t):""};var Pr=function(e,r){var t=$r(e,r);return t>0?_r(e,r+4,r+4+t):""};var Rr=Pr;var Ir,Lr;Ir=Lr=function(e,r){return mr(e,r)};var Br=function ul(e){return Array.isArray(e)||typeof Uint8Array!=="undefined"&&e instanceof Uint8Array};if(w){yr=function(e,r,t){if(!Buffer.isBuffer(e))return kr(e,r,t);return e.toString("utf16le",r,t).replace(M,"")};xr=function(e,r,t){return Buffer.isBuffer(e)?e.toString("hex",r,r+t):Sr(e,r,t)};Ar=function hl(e,r){if(!Buffer.isBuffer(e))return Er(e,r);var t=e.readUInt32LE(r);return t>0?e.toString("utf8",r+4,r+4+t-1):""};Fr=function dl(e,r){if(!Buffer.isBuffer(e))return Tr(e,r);var t=e.readUInt32LE(r);return t>0?e.toString("utf8",r+4,r+4+t-1):""};Or=function pl(e,r){if(!Buffer.isBuffer(e))return Dr(e,r);var t=2*e.readUInt32LE(r);return e.toString("utf16le",r+4,r+4+t-1)};Mr=function vl(e,r){if(!Buffer.isBuffer(e))return Nr(e,r);var t=e.readUInt32LE(r);return e.toString("utf16le",r+4,r+4+t)};Pr=function ml(e,r){if(!Buffer.isBuffer(e))return Rr(e,r);var t=e.readUInt32LE(r);return e.toString("utf8",r+4,r+4+t)};_r=function gl(e,r,t){return Buffer.isBuffer(e)?e.toString("utf8",r,t):Cr(e,r,t)};br=function(e){return e[0].length>0&&Buffer.isBuffer(e[0][0])?Buffer.concat(e[0].map(function(e){return Buffer.isBuffer(e)?e:y(e)})):wr(e)};D=function(e){return Buffer.concat(e.map(function(e){return Buffer.isBuffer(e)?e:y(e)}))};Ir=function bl(e,r){if(Buffer.isBuffer(e))return e.readDoubleLE(r);return Lr(e,r)};Br=function wl(e){return Buffer.isBuffer(e)||Array.isArray(e)||typeof Uint8Array!=="undefined"&&e instanceof Uint8Array}}function Ur(){yr=function(e,r,t){return cptable.utils.decode(1200,e.slice(r,t)).replace(M,"")};_r=function(e,r,t){return cptable.utils.decode(65001,e.slice(r,t))};Ar=function(e,r){var a=$r(e,r);return a>0?cptable.utils.decode(t,e.slice(r+4,r+4+a-1)):""};Fr=function(e,t){var a=$r(e,t);return a>0?cptable.utils.decode(r,e.slice(t+4,t+4+a-1)):""};Or=function(e,r){var t=2*$r(e,r);return t>0?cptable.utils.decode(1200,e.slice(r+4,r+4+t-1)):""};Mr=function(e,r){var t=$r(e,r);return t>0?cptable.utils.decode(1200,e.slice(r+4,r+4+t)):""};Pr=function(e,r){var t=$r(e,r);return t>0?cptable.utils.decode(65001,e.slice(r+4,r+4+t)):""}}if(typeof cptable!=="undefined")Ur();var zr=function(e,r){return e[r]};var Wr=function(e,r){return e[r+1]*(1<<8)+e[r]};var jr=function(e,r){var t=e[r+1]*(1<<8)+e[r];return t<32768?t:(65535-t+1)*-1};var $r=function(e,r){return e[r+3]*(1<<24)+(e[r+2]<<16)+(e[r+1]<<8)+e[r]};var Hr=function(e,r){return e[r+3]<<24|e[r+2]<<16|e[r+1]<<8|e[r]};var Xr=function(e,r){return e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3]};function Vr(e,t){var a="",n,i,s=[],o,l,c,f;switch(t){case"dbcs":f=this.l;if(w&&Buffer.isBuffer(this))a=this.slice(this.l,this.l+2*e).toString("utf16le");else for(c=0;c0?Hr:Xr)(this,this.l);this.l+=4;return n}else{i=$r(this,this.l);this.l+=4}return i;case 8:;case-8:if(t==="f"){if(e==8)i=Ir(this,this.l);else i=Ir([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0);this.l+=8;return i}else e=8;case 16:a=xr(this,this.l,e);break;};}this.l+=e;return a}var Gr=function(e,r,t){e[t]=r&255;e[t+1]=r>>>8&255;e[t+2]=r>>>16&255;e[t+3]=r>>>24&255};var Yr=function(e,r,t){e[t]=r&255;e[t+1]=r>>8&255;e[t+2]=r>>16&255;e[t+3]=r>>24&255};var qr=function(e,r,t){e[t]=r&255;e[t+1]=r>>>8&255};function Jr(e,r,a){var n=0,i=0;if(a==="dbcs"){for(i=0;i!=r.length;++i)qr(this,r.charCodeAt(i),this.l+2*i);n=2*r.length}else if(a==="sbcs"){if(typeof cptable!=="undefined"&&t==874){for(i=0;i!=r.length;++i){var s=cptable.utils.encode(t,r.charAt(i));this[this.l+i]=s[0]}}else{r=r.replace(/[^\x00-\x7F]/g,"_");for(i=0;i!=r.length;++i)this[this.l+i]=r.charCodeAt(i)&255}n=r.length}else if(a==="hex"){for(;i>8}while(this.l>>=8;this[this.l+1]=r&255;break;case 3:n=3;this[this.l]=r&255;r>>>=8;this[this.l+1]=r&255;r>>>=8;this[this.l+2]=r&255;break;case 4:n=4;Gr(this,r,this.l);break;case 8:n=8;if(a==="f"){gr(this,r,this.l);break};case 16:break;case-4:n=4;Yr(this,r,this.l);break;}this.l+=n;return this}function Kr(e,r){var t=xr(this,this.l,e.length>>1);if(t!==e)throw new Error(r+"Expected "+e+" saw "+t);this.l+=e.length>>1}function Zr(e,r){e.l=r;e._R=Vr;e.chk=Kr;e._W=Jr}function Qr(e,r){e.l+=r}function et(e){var r=S(e);Zr(r,0);return r}function rt(e,r,t){if(!e)return;var a,n,i;Zr(e,e.l||0);var s=e.length,o=0,l=0;while(e.la.l){a=a.slice(0,a.l);a.l=a.length}if(a.length>0)e.push(a);a=null};var i=function f(e){if(a&&e=128?1:0)+1;if(a>=128)++i;if(a>=16384)++i;if(a>=2097152)++i;var s=e.next(i);if(n<=127)s._W(1,n);else{s._W(1,(n&127)+128);s._W(1,n>>7)}for(var o=0;o!=4;++o){if(a>=128){s._W(1,(a&127)+128);a>>=7}else{s._W(1,a);break}}if(a>0&&Br(t))e.push(t)}function nt(e,r,t){var a=ue(e);if(r.s){if(a.cRel)a.c+=r.s.c;if(a.rRel)a.r+=r.s.r}else{if(a.cRel)a.c+=r.c;if(a.rRel)a.r+=r.r}if(!t||t.biff<12){while(a.c>=256)a.c-=256;while(a.r>=65536)a.r-=65536}return a}function it(e,r,t){var a=ue(e);a.s=nt(a.s,r.s,t);a.e=nt(a.e,r.s,t);return a}function st(e,r){if(e.cRel&&e.c<0){e=ue(e);while(e.c<0)e.c+=r>8?16384:256}if(e.rRel&&e.r<0){e=ue(e);while(e.r<0)e.r+=r>8?1048576:r>5?65536:16384}var t=bt(e);if(!e.cRel&&e.cRel!=null)t=pt(t);if(!e.rRel&&e.rRel!=null)t=ft(t);return t}function ot(e,r){if(e.s.r==0&&!e.s.rRel){if(e.e.r==(r.biff>=12?1048575:r.biff>=8?65536:16384)&&!e.e.rRel){return(e.s.cRel?"":"$")+dt(e.s.c)+":"+(e.e.cRel?"":"$")+dt(e.e.c)}}if(e.s.c==0&&!e.s.cRel){if(e.e.c==(r.biff>=12?16383:255)&&!e.e.cRel){return(e.s.rRel?"":"$")+ct(e.s.r)+":"+(e.e.rRel?"":"$")+ct(e.e.r)}}return st(e.s,r.biff)+":"+st(e.e,r.biff)}function lt(e){return parseInt(ut(e),10)-1}function ct(e){return""+(e+1)}function ft(e){return e.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function ut(e){return e.replace(/\$(\d+)$/,"$1")}function ht(e){var r=vt(e),t=0,a=0;for(;a!==r.length;++a)t=26*t+r.charCodeAt(a)-64;return t-1}function dt(e){if(e<0)throw new Error("invalid column "+e);var r="";for(++e;e;e=Math.floor((e-1)/26))r=String.fromCharCode((e-1)%26+65)+r;return r}function pt(e){return e.replace(/^([A-Z])/,"$$$1")}function vt(e){return e.replace(/^\$([A-Z])/,"$1")}function mt(e){return e.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")}function gt(e){var r=0,t=0;for(var a=0;a=48&&n<=57)r=10*r+(n-48);else if(n>=65&&n<=90)t=26*t+(n-64)}return{c:t-1,r:r-1}}function bt(e){var r=e.c+1;var t="";for(;r;r=(r-1)/26|0)t=String.fromCharCode((r-1)%26+65)+t;return t+(e.r+1)}function wt(e){var r=e.indexOf(":");if(r==-1)return{s:gt(e),e:gt(e)};return{s:gt(e.slice(0,r)),e:gt(e.slice(r+1))}}function yt(e,r){if(typeof r==="undefined"||typeof r==="number"){return yt(e.s,e.e)}if(typeof e!=="string")e=bt(e);if(typeof r!=="string")r=bt(r);return e==r?e:e+":"+r}function kt(e){var r={s:{c:0,r:0},e:{c:0,r:0}};var t=0,a=0,n=0;var i=e.length;for(t=0;a26)break;t=26*t+n}r.s.c=--t;for(t=0;a9)break;t=10*t+n}r.s.r=--t;if(a===i||n!=10){r.e.c=r.s.c;r.e.r=r.s.r;return r}++a;for(t=0;a!=i;++a){if((n=e.charCodeAt(a)-64)<1||n>26)break;t=26*t+n}r.e.c=--t;for(t=0;a!=i;++a){if((n=e.charCodeAt(a)-48)<0||n>9)break;t=10*t+n}r.e.r=--t;return r}function xt(e,r){var t=e.t=="d"&&r instanceof Date;if(e.z!=null)try{return e.w=P.format(e.z,t?re(r):r)}catch(a){}try{return e.w=P.format((e.XF||{}).numFmtId||(t?14:0),t?re(r):r)}catch(a){return""+r}}function St(e,r,t){if(e==null||e.t==null||e.t=="z")return"";if(e.w!==undefined)return e.w;if(e.t=="d"&&!e.z&&t&&t.dateNF)e.z=t.dateNF;if(e.t=="e")return qt[e.v]||e.v;if(r==undefined)return xt(e,e.v);return xt(e,r)}function _t(e,r){var t=r&&r.sheet?r.sheet:"Sheet1";var a={};a[t]=e;return{SheetNames:[t],Sheets:a}}function Ct(e,r,t){var a=t||{};var n=e?Array.isArray(e):a.dense;if(m!=null&&n==null)n=m;var i=e||(n?[]:{});var s=0,o=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var l=typeof a.origin=="string"?gt(a.origin):a.origin;s=l.r;o=l.c}if(!i["!ref"])i["!ref"]="A1:A1"}var c={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(i["!ref"]){var f=kt(i["!ref"]);c.s.c=f.s.c;c.s.r=f.s.r;c.e.c=Math.max(c.e.c,f.e.c);c.e.r=Math.max(c.e.r,f.e.r);if(s==-1)c.e.r=s=f.e.r+1}for(var u=0;u!=r.length;++u){if(!r[u])continue;if(!Array.isArray(r[u]))throw new Error("aoa_to_sheet expects an array of arrays");for(var h=0;h!=r[u].length;++h){if(typeof r[u][h]==="undefined")continue;var d={v:r[u][h]};var p=s+u,v=o+h;if(c.s.r>p)c.s.r=p;if(c.s.c>v)c.s.c=v;if(c.e.r>16&255,e>>8&255,e&255]})}var Gt=Vt([0,16777215,16711680,65280,255,16776960,16711935,65535,0,16777215,16711680,65280,255,16776960,16711935,65535,8388608,32768,128,8421376,8388736,32896,12632256,8421504,10066431,10040166,16777164,13434879,6684774,16744576,26316,13421823,128,16711935,16776960,65535,8388736,8388608,32896,255,52479,13434879,13434828,16777113,10079487,16751052,13408767,16764057,3368703,3394764,10079232,16763904,16750848,16737792,6710937,9868950,13158,3381606,13056,3355392,10040064,10040166,3355545,3355443,16777215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);var Yt=ue(Gt);var qt={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"};var Jt=Z(qt);var Kt={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty":"TODO","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.ms-office.chartcolorstyle+xml":"TODO","application/vnd.ms-office.chartstyle+xml":"TODO","application/vnd.ms-office.chartex+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"links","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"links","application/vnd.ms-excel.sheetMetadata":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"TODO","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.openxmlformats-officedocument.themeOverride+xml":"TODO","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"TODO","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"drawings","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO", -"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO","image/png":"TODO",sheet:"js"};var Zt=function(){var e={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main",xlam:"application/vnd.ms-excel.addin.macroEnabled.main+xml",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"},comments:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",xlsb:"application/vnd.ms-excel.comments"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},charts:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",xlsb:"application/vnd.ms-excel.chartsheet"},dialogs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",xlsb:"application/vnd.ms-excel.dialogsheet"},macros:{xlsx:"application/vnd.ms-excel.macrosheet+xml",xlsb:"application/vnd.ms-excel.macrosheet"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};q(e).forEach(function(r){["xlsm","xlam"].forEach(function(t){if(!e[r][t])e[r][t]=e[r].xlsx})});q(e).forEach(function(r){q(e[r]).forEach(function(t){Kt[e[r][t]]=r})});return e}();var Qt=Q(Kt);pr.CT="http://schemas.openxmlformats.org/package/2006/content-types";function ea(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],TODO:[],xmlns:""}}function ra(e){var r=ea();if(!e||!e.match)return r;var t={};(e.match(Ne)||[]).forEach(function(e){var a=Ie(e);switch(a[0].replace(Pe,"<")){case"0?r.calcchains[0]:"";r.sst=r.strs.length>0?r.strs[0]:"";r.style=r.styles.length>0?r.styles[0]:"";r.defaults=t;delete r.calcchains;return r}var ta=ur("Types",null,{xmlns:pr.CT,"xmlns:xsd":pr.xsd,"xmlns:xsi":pr.xsi});var aa=[["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["vml","application/vnd.openxmlformats-officedocument.vmlDrawing"],["data","application/vnd.openxmlformats-officedocument.model+data"],["bmp","image/bmp"],["png","image/png"],["gif","image/gif"],["emf","image/x-emf"],["wmf","image/x-wmf"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["tif","image/tiff"],["tiff","image/tiff"],["pdf","application/pdf"],["rels",Qt.rels[0]]].map(function(e){return ur("Default",null,{Extension:e[0],ContentType:e[1]})});function na(e,r){var t=[],a;t[t.length]=De;t[t.length]=ta;t=t.concat(aa);var n=function(n){if(e[n]&&e[n].length>0){a=e[n][0];t[t.length]=ur("Override",null,{PartName:(a[0]=="/"?"":"/")+a,ContentType:Zt[n][r.bookType||"xlsx"]})}};var i=function(a){(e[a]||[]).forEach(function(e){t[t.length]=ur("Override",null,{PartName:(e[0]=="/"?"":"/")+e,ContentType:Zt[a][r.bookType||"xlsx"]})})};var s=function(r){(e[r]||[]).forEach(function(e){t[t.length]=ur("Override",null,{PartName:(e[0]=="/"?"":"/")+e,ContentType:Qt[r][0]})})};n("workbooks");i("sheets");i("charts");s("themes");["strs","styles"].forEach(n);["coreprops","extprops","custprops"].forEach(s);s("vba");s("comments");s("drawings");if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}var ia={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",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function sa(e){var r=e.lastIndexOf("/");return e.slice(0,r+1)+"_rels/"+e.slice(r+1)+".rels"}function oa(e,r){var t={"!id":{}};if(!e)return t;if(r.charAt(0)!=="/"){r="/"+r}var a={};(e.match(Ne)||[]).forEach(function(e){var n=Ie(e);if(n[0]==="2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}var fa=[ia.HLINK,ia.XPATH,ia.XMISS];function ua(e,r,t,a,n,i){if(!n)n={};if(!e["!id"])e["!id"]={};if(r<0)for(r=1;e["!id"]["rId"+r];++r){}n.Id="rId"+r;n.Type=a;n.Target=t;if(i)n.TargetMode=i;else if(fa.indexOf(n.Type)>-1)n.TargetMode="External";if(e["!id"][n.Id])throw new Error("Cannot rewrite rId "+r);e["!id"][n.Id]=n;e[("/"+n.Target).replace("//","/")]=n;return r}var ha=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]];pr.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/metadata/core-properties";ia.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties";var da=function(){var e=new Array(ha.length);for(var r=0;r]*>([\\s\\S]*?)")}return e}();function pa(e){var r={};e=Ke(e);for(var t=0;t0)r[a[1]]=ze(n[1]);if(a[2]==="date"&&r[a[1]])r[a[1]]=ce(r[a[1]])}return r}var va=ur("cp:coreProperties",null,{"xmlns:cp":pr.CORE_PROPS,"xmlns:dc":pr.dc,"xmlns:dcterms":pr.dcterms,"xmlns:dcmitype":pr.dcmitype,"xmlns:xsi":pr.xsi});function ma(e,r,t,a,n){if(n[e]!=null||r==null||r==="")return;n[e]=r;r=$e(r);a[a.length]=t?ur(e,r,t):cr(e,r)}function ga(e,r){var t=r||{};var a=[De,va],n={};if(!e&&!t.Props)return a.join("");if(e){if(e.CreatedDate!=null)ma("dcterms:created",typeof e.CreatedDate==="string"?e.CreatedDate:hr(e.CreatedDate,t.WTF),{"xsi:type":"dcterms:W3CDTF"},a,n);if(e.ModifiedDate!=null)ma("dcterms:modified",typeof e.ModifiedDate==="string"?e.ModifiedDate:hr(e.ModifiedDate,t.WTF),{"xsi:type":"dcterms:W3CDTF"},a,n)}for(var i=0;i!=ha.length;++i){var s=ha[i];var o=t.Props&&t.Props[s[1]]!=null?t.Props[s[1]]:e?e[s[1]]:null;if(o===true)o="1";else if(o===false)o="0";else if(typeof o=="number")o=String(o);if(o!=null)ma(s[0],o,null,a,n)}if(a.length>2){a[a.length]="";a[1]=a[1].replace("/>",">")}return a.join("")}var ba=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]];pr.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties";ia.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties";var wa=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function ya(e,r,t,a){var n=[];if(typeof e=="string")n=or(e,a);else for(var i=0;i0)for(var c=0;c!==n.length;c+=2){l=+n[c+1].v;switch(n[c].v){case"Worksheets":;case"工作表":;case"Листы":;case"أوراق العمل":;case"ワークシート":;case"גליונות עבודה":;case"Arbeitsblätter":;case"Çalışma Sayfaları":;case"Feuilles de calcul":;case"Fogli di lavoro":;case"Folhas de cálculo":;case"Planilhas":;case"Regneark":;case"Hojas de cálculo":;case"Werkbladen":t.Worksheets=l;t.SheetNames=s.slice(o,o+l);break;case"Named Ranges":;case"Rangos con nombre":;case"名前付き一覧":;case"Benannte Bereiche":;case"Navngivne områder":t.NamedRanges=l;t.DefinedNames=s.slice(o,o+l);break;case"Charts":;case"Diagramme":t.Chartsheets=l;t.ChartNames=s.slice(o,o+l);break;}o+=l}}function ka(e,r,t){var a={};if(!r)r={};e=Ke(e);ba.forEach(function(t){var n=(e.match(tr(t[0]))||[])[1];switch(t[2]){case"string":if(n)r[t[1]]=ze(n);break;case"bool":r[t[1]]=n==="true";break;case"raw":var i=e.match(new RegExp("<"+t[0]+"[^>]*>([\\s\\S]*?)"));if(i&&i.length>0)a[t[1]]=i[1];break;}});if(a.HeadingPairs&&a.TitlesOfParts)ya(a.HeadingPairs,a.TitlesOfParts,r,t);return r}var xa=ur("Properties",null,{xmlns:pr.EXT_PROPS,"xmlns:vt":pr.vt});function Sa(e){var r=[],t=ur;if(!e)e={};e.Application="SheetJS";r[r.length]=De;r[r.length]=xa;ba.forEach(function(a){if(e[a[1]]===undefined)return;var n;switch(a[2]){case"string":n=$e(String(e[a[1]]));break;case"bool":n=e[a[1]]?"true":"false";break;}if(n!==undefined)r[r.length]=t(a[0],n)});r[r.length]=t("HeadingPairs",t("vt:vector",t("vt:variant","Worksheets")+t("vt:variant",t("vt:i4",String(e.Worksheets))),{size:2,baseType:"variant"}));r[r.length]=t("TitlesOfParts",t("vt:vector",e.SheetNames.map(function(e){return""+$e(e)+""}).join(""),{size:e.Worksheets,baseType:"lpstr"}));if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}pr.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties";ia.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties";var _a=/<[^>]+>[^<]*/g;function Ca(e,r){var t={},a="";var n=e.match(_a);if(n)for(var i=0;i!=n.length;++i){var s=n[i],o=Ie(s);switch(o[0]){case"":a=null;break;default:if(s.indexOf("");var c=l[0].slice(4),f=l[1];switch(c){case"lpstr":;case"bstr":;case"lpwstr":t[a]=ze(f);break;case"bool":t[a]=Je(f);break;case"i1":;case"i2":;case"i4":;case"i8":;case"int":;case"uint":t[a]=parseInt(f,10);break;case"r4":;case"r8":;case"decimal":t[a]=parseFloat(f);break;case"filetime":;case"date":t[a]=ce(f);break;case"cy":;case"error":t[a]=ze(f);break;default:if(c.slice(-1)=="/")break;if(r.WTF&&typeof console!=="undefined")console.warn("Unexpected",s,c,l);}}else if(s.slice(0,2)==="2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}var Fa=function(){var e={1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127,8:865,9:437,10:850,11:437,13:437,14:850,15:437,16:850,17:437,18:850,19:932,20:850,21:437,22:850,23:865,24:437,25:437,26:850,27:437,28:863,29:850,31:852,34:852,35:852,36:860,37:850,38:866,55:850,64:852,77:936,78:949,79:950,80:874,87:1252,88:1252,89:1252,108:863,134:737,135:852,136:857,204:1257,255:16969};var r=K({1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127});var a=[2,3,48,49,131,139,140,245];function n(r,t){var a=[];var n=S(1);switch(t.type){case"base64":n=C(b.decode(r));break;case"binary":n=C(r);break;case"buffer":;case"array":n=r;break;}Zr(n,0);var i=n._R(1);var s=!!(i&136);var o=false,l=false;switch(i){case 2:break;case 3:break;case 48:o=true;s=true;break;case 49:o=true;s=true;break;case 131:break;case 139:break;case 140:l=true;break;case 245:break;default:throw new Error("DBF Unsupported Version: "+i.toString(16));}var c=0,f=521;if(i==2)c=n._R(2);n.l+=3;if(i!=2)c=n._R(4);if(c>1048576)c=1e6;if(i!=2)f=n._R(2);var u=n._R(2);var h=t.codepage||1252;if(i!=2){n.l+=16;n._R(1);if(n[n.l]!==0)h=e[n[n.l]];n.l+=1;n.l+=2}if(l)n.l+=36;var d=[],p={};var v=Math.min(n.length,i==2?521:f-10-(o?264:0));var m=l?32:11;while(n.l0){if(n[n.l]===42){n.l+=u;continue}++n.l;a[++g]=[];w=0;for(w=0;w!=d.length;++w){var y=n.slice(n.l,n.l+d[w].len);n.l+=d[w].len;Zr(y,0);var k=cptable.utils.decode(h,y);switch(d[w].type){case"C":if(k.trim().length)a[g][w]=k.replace(/\s+$/,"");break;case"D":if(k.length===8)a[g][w]=new Date(+k.slice(0,4),+k.slice(4,6)-1,+k.slice(6,8));else a[g][w]=k;break;case"F":a[g][w]=parseFloat(k.trim());break;case"+":;case"I":a[g][w]=l?y._R(-4,"i")^2147483648:y._R(4,"i");break;case"L":switch(k.trim().toUpperCase()){case"Y":;case"T":a[g][w]=true;break;case"N":;case"F":a[g][w]=false;break;case"":;case"?":break;default:throw new Error("DBF Unrecognized L:|"+k+"|");}break;case"M":if(!s)throw new Error("DBF Unexpected MEMO for type "+i.toString(16));a[g][w]="##MEMO##"+(l?parseInt(k.trim(),10):y._R(4));break;case"N":k=k.replace(/\u0000/g,"").trim();if(k&&k!=".")a[g][w]=+k||0;break;case"@":a[g][w]=new Date(y._R(-8,"f")-621356832e5);break;case"T":a[g][w]=new Date((y._R(4)-2440588)*864e5+y._R(4));break;case"Y":a[g][w]=y._R(4,"i")/1e4;break;case"O":a[g][w]=-y._R(-8,"f");break;case"B":if(o&&d[w].len==8){a[g][w]=y._R(8,"f");break};case"G":;case"P":y.l+=d[w].len;break;case"0":if(d[w].name==="_NullFlags")break;default:throw new Error("DBF Unsupported data type "+d[w].type);}}}if(i!=2)if(n.l=0)l(+n.codepage);if(n.type=="string")throw new Error("Cannot write DBF to JS string");var i=tt();var s=Xo(e,{header:1,raw:true,cellDates:true});var c=s[0],f=s.slice(1);var u=0,h=0,d=0,p=1;for(u=0;u":190,"?":191,"{":223};var r=new RegExp("N("+q(e).join("|").replace(/\|\|\|/,"|\\||").replace(/([?()+])/g,"\\$1")+"|\\|)","gm");var t=function(r,t){var a=e[t];return typeof a=="number"?v(a):a};var a=function(e,r,t){var a=r.charCodeAt(0)-32<<4|t.charCodeAt(0)-48;return a==59?e:v(a)};e["|"]=254;function n(e,r){switch(r.type){case"base64":return i(b.decode(e),r);case"binary":return i(e,r);case"buffer":return i(w&&Buffer.isBuffer(e)?e.toString("binary"):E(e),r);case"array":return i(fe(e),r);}throw new Error("Unrecognized type "+r.type)}function i(e,n){var i=e.split(/[\n\r]+/),s=-1,o=-1,c=0,f=0,u=[];var h=[];var d=null;var p={},v=[],m=[],g=[];var b=0,w;if(+n.codepage>=0)l(+n.codepage);for(;c!==i.length;++c){b=0;var y=i[c].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,a).replace(r,t);var k=y.replace(/;;/g,"\0").split(";").map(function(e){return e.replace(/\u0000/g,";")});var x=k[0],S;if(y.length>0)switch(x){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":if(k[1].charAt(0)=="P")h.push(y.slice(3).replace(/;;/g,";"));break;case"C":var _=false,C=false,A=false,E=false,F=-1,T=-1;for(f=1;f-1&&u[F][T];if(!D||!D[1])throw new Error("SYLK shared formula cannot find base");u[s][o][1]=ai(D[1],{r:s-F,c:o-T})}break;case"F":var M=0;for(f=1;f0){v[s].hpt=b;v[s].hpx=hn(b)}else if(b===0)v[s].hidden=true;break;default:if(n&&n.WTF)throw new Error("SYLK bad record "+y);}if(M<1)d=null;break;default:if(n&&n.WTF)throw new Error("SYLK bad record "+y);}}if(v.length>0)p["!rows"]=v;if(m.length>0)p["!cols"]=m;if(n&&n.sheetRows)u=u.slice(0,n.sheetRows);return[u,p]}function s(e,r){var t=n(e,r);var a=t[0],i=t[1];var s=At(a,r);q(i).forEach(function(e){s[e]=i[e]});return s}function o(e,r){return _t(s(e,r),r)}function c(e,r,t,a){var n="C;Y"+(t+1)+";X"+(a+1)+";K";switch(e.t){case"n":n+=e.v||0;if(e.f&&!e.F)n+=";E"+ti(e.f,{r:t,c:a});break;case"b":n+=e.v?"TRUE":"FALSE";break;case"e":n+=e.w||e.v;break;case"d":n+='"'+(e.w||e.v)+'"';break;case"s":n+='"'+e.v.replace(/"/g,"").replace(/;/g,";;")+'"';break;}return n}function f(e,r){r.forEach(function(r,t){var a="F;W"+(t+1)+" "+(t+1)+" ";if(r.hidden)a+="0";else{if(typeof r.width=="number"&&!r.wpx)r.wpx=tn(r.width);if(typeof r.wpx=="number"&&!r.wch)r.wch=an(r.wpx);if(typeof r.wch=="number")a+=Math.round(r.wch)}if(a.charAt(a.length-1)!=" ")e.push(a)})}function u(e,r){r.forEach(function(r,t){var a="F;";if(r.hidden)a+="M0;";else if(r.hpt)a+="M"+20*r.hpt+";";else if(r.hpx)a+="M"+20*un(r.hpx)+";";if(a.length>2)e.push(a+"R"+(t+1))})}function h(e,r){var t=["ID;PWXL;N;E"],a=[];var n=kt(e["!ref"]),i;var s=Array.isArray(e);var o="\r\n";t.push("P;PGeneral");t.push("F;P0;DG0G8;M255");if(e["!cols"])f(t,e["!cols"]);if(e["!rows"])u(t,e["!rows"]);t.push("B;Y"+(n.e.r-n.s.r+1)+";X"+(n.e.c-n.s.c+1)+";D"+[n.s.c,n.s.r,n.e.c,n.e.r].join(" "));for(var l=n.s.r;l<=n.e.r;++l){for(var h=n.s.c;h<=n.e.c;++h){var d=bt({r:l,c:h});i=s?(e[l]||[])[h]:e[d];if(!i||i.v==null&&(!i.f||i.F))continue;a.push(c(i,e,l,h,r))}}return t.join(o)+o+a.join(o)+o+"E"+o}return{to_workbook:o,to_sheet:s,from_sheet:h}}();var Oa=function(){function e(e,t){switch(t.type){case"base64":return r(b.decode(e),t);case"binary":return r(e,t);case"buffer":return r(w&&Buffer.isBuffer(e)?e.toString("binary"):E(e),t);case"array":return r(fe(e),t);}throw new Error("Unrecognized type "+t.type)}function r(e,r){var t=e.split("\n"),a=-1,n=-1,i=0,s=[];for(;i!==t.length;++i){if(t[i].trim()==="BOT"){s[++a]=[];n=0;continue}if(a<0)continue;var o=t[i].trim().split(",");var l=o[0],c=o[1];++i;var f=t[i]||"";while((f.match(/["]/g)||[]).length&1&&i=0&&i[s].length===0)--s;var o=10,l=0;var c=0;for(;c<=s;++c){l=i[c].indexOf(" ");if(l==-1)l=i[c].length;else l++;o=Math.max(o,l)}for(c=0;c<=s;++c){n[c]=[];var f=0;e(i[c].slice(0,o).trim(),n,c,f,a);for(f=1;f<=(i[c].length-o)/10+1;++f)e(i[c].slice(o+(f-1)*10,o+f*10).trim(),n,c,f,a)}if(a.sheetRows)n=n.slice(0,a.sheetRows);return n}var t={44:",",9:"\t",59:";",124:"|"};var a={44:3,9:2,59:1,124:0};function n(e){var r={},n=false,i=0,s=0;for(;i0)b();i["!ref"]=yt(s);return i}function s(e,t){if(!(t&&t.PRN))return i(e,t);if(t.FS)return i(e,t);if(e.slice(0,4)=="sep=")return i(e,t);if(e.indexOf("\t")>=0||e.indexOf(",")>=0||e.indexOf(";")>=0)return i(e,t);return At(r(e,t),t)}function o(e,r){var t="",a=r.type=="string"?[0,0,0,0]:lo(e,r);switch(r.type){case"base64":t=b.decode(e);break;case"binary":t=e;break;case"buffer":if(r.codepage==65001)t=e.toString("utf8");else if(r.codepage&&typeof cptable!=="undefined")t=cptable.utils.decode(r.codepage,e);else t=w&&Buffer.isBuffer(e)?e.toString("binary"):E(e);break;case"array":t=fe(e);break;case"string":t=e;break;default:throw new Error("Unrecognized type "+r.type);}if(a[0]==239&&a[1]==187&&a[2]==191)t=Ke(t.slice(3));else if(r.type!="string"&&r.type!="buffer"&&r.codepage==65001)t=Ke(t);else if(r.type=="binary"&&typeof cptable!=="undefined"&&r.codepage)t=cptable.utils.decode(r.codepage,cptable.utils.encode(28591,t));if(t.slice(0,19)=="socialcalc:version:")return Da.to_sheet(r.type=="string"?t:Ke(t),r);return s(t,r)}function l(e,r){return _t(o(e,r),r); -}function c(e){var r=[];var t=kt(e["!ref"]),a;var n=Array.isArray(e);for(var i=t.s.r;i<=t.e.r;++i){var s=[];for(var o=t.s.c;o<=t.e.c;++o){var l=bt({r:i,c:o});a=n?(e[i]||[])[o]:e[l];if(!a||a.v==null){s.push(" ");continue}var c=(a.w||(St(a),a.w)||"").slice(0,10);while(c.length<10)c+=" ";s.push(c+(o===0?" ":""))}r.push(s.join(""))}return r.join("\n")}return{to_workbook:l,to_sheet:o,from_sheet:c}}();function Na(e,r){var t=r||{},a=!!t.WTF;t.WTF=true;try{var n=Ta.to_workbook(e,t);t.WTF=a;return n}catch(i){t.WTF=a;if(!i.message.match(/SYLK bad record ID/)&&a)throw i;return Ma.to_workbook(e,r)}}function Pa(e){var r={},t=e.match(Ne),a=0;var n=false;if(t)for(;a!=t.length;++a){var s=Ie(t[a]);switch(s[0].replace(/\w*:/g,"")){case"":;case"":r.shadow=1;break;case"":break;case"":;case"":r.outline=1;break;case"":break;case"":;case"":r.strike=1;break;case"":break;case"":;case"":r.u=1;break;case"":break;case"":;case"":r.b=1;break;case"":break;case"":;case"":r.i=1;break;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"
":break;case"":n=false;break;default:if(s[0].charCodeAt(1)!==47&&!n)throw new Error("Unrecognized rich format "+s[0]);}}return r}var Ra=function(){var e=tr("t"),r=tr("rPr");function t(t){var a=t.match(e);if(!a)return{t:"s",v:""};var n={t:"s",v:ze(a[1])};var i=t.match(r);if(i)n.s=Pa(i[1]);return n}var a=/<(?:\w+:)?r>/g,n=/<\/(?:\w+:)?r>/;return function i(e){return e.replace(a,"").split(n).map(t).filter(function(e){return e.v})}}();var Ia=function yl(){var e=/(\r\n|\n)/g;function r(e,r,t){var a=[];if(e.u)a.push("text-decoration: underline;");if(e.uval)a.push("text-underline-style:"+e.uval+";");if(e.sz)a.push("font-size:"+e.sz+"pt;");if(e.outline)a.push("text-effect: outline;");if(e.shadow)a.push("text-shadow: auto;");r.push('');if(e.b){r.push("");t.push("")}if(e.i){r.push("");t.push("")}if(e.strike){r.push("");t.push("")}var n=e.valign||"";if(n=="superscript"||n=="super")n="sup";else if(n=="subscript")n="sub";if(n!=""){r.push("<"+n+">");t.push("")}t.push("");return e}function t(t){var a=[[],t.v,[]];if(!t.v)return"";if(t.s)r(t.s,a[0],a[2]);return a[0].join("")+a[1].replace(e,"
")+a[2].join("")}return function a(e){return e.map(t).join("")}}();var La=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,Ba=/<(?:\w+:)?r>/;var Ua=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function za(e,r){var t=r?r.cellHTML:true;var a={};if(!e)return{t:""};if(e.match(/^\s*<(?:\w+:)?t[^>]*>/)){a.t=ze(Ke(e.slice(e.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||""));a.r=Ke(e);if(t)a.h=Ve(a.t)}else if(e.match(Ba)){a.r=Ke(e);a.t=ze(Ke((e.replace(Ua,"").match(La)||[]).join("").replace(Ne,"")));if(t)a.h=Ia(Ra(a.r))}return a}var Wa=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/;var ja=/<(?:\w+:)?(?:si|sstItem)>/g;var $a=/<\/(?:\w+:)?(?:si|sstItem)>/;function Ha(e,r){var t=[],a="";if(!e)return t;var n=e.match(Wa);if(n){a=n[2].replace(ja,"").split($a);for(var i=0;i!=a.length;++i){var s=za(a[i].trim(),r);if(s!=null)t[t.length]=s}n=Ie(n[1]);t.Count=n.count;t.Unique=n.uniqueCount}return t}ia.SST="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings";var Xa=/^\s|\s$|[\t\n\r]/;function Va(e,r){if(!r.bookSST)return"";var t=[De];t[t.length]=ur("sst",null,{xmlns:pr.main[0],count:e.Count,uniqueCount:e.Unique});for(var a=0;a!=e.length;++a){if(e[a]==null)continue;var n=e[a];var i="";if(n.r)i+=n.r;else{i+=""}i+="";t[t.length]=i}if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}function Ga(e){var r=e.slice(e[0]==="#"?1:0).slice(0,6);return[parseInt(r.slice(0,2),16),parseInt(r.slice(2,4),16),parseInt(r.slice(4,6),16)]}function Ya(e){for(var r=0,t=1;r!=3;++r)t=t*256+(e[r]>255?255:e[r]<0?0:e[r]);return t.toString(16).toUpperCase().slice(1)}function qa(e){var r=e[0]/255,t=e[1]/255,a=e[2]/255;var n=Math.max(r,t,a),i=Math.min(r,t,a),s=n-i;if(s===0)return[0,0,r];var o=0,l=0,c=n+i;l=s/(c>1?2-c:c);switch(n){case r:o=((t-a)/s+6)%6;break;case t:o=(a-r)/s+2;break;case a:o=(r-t)/s+4;break;}return[o/6,l,c/2]}function Ja(e){var r=e[0],t=e[1],a=e[2];var n=t*2*(a<.5?a:1-a),i=a-n/2;var s=[i,i,i],o=6*r;var l;if(t!==0)switch(o|0){case 0:;case 6:l=n*o;s[0]+=n;s[1]+=l;break;case 1:l=n*(2-o);s[0]+=l;s[1]+=n;break;case 2:l=n*(o-2);s[1]+=n;s[2]+=l;break;case 3:l=n*(4-o);s[1]+=l;s[2]+=n;break;case 4:l=n*(o-4);s[2]+=n;s[0]+=l;break;case 5:l=n*(6-o);s[2]+=l;s[0]+=n;break;}for(var c=0;c!=3;++c)s[c]=Math.round(s[c]*255);return s}function Ka(e,r){if(r===0)return e;var t=qa(Ga(e));if(r<0)t[2]=t[2]*(1+r);else t[2]=1-(1-t[2])*(1-r);return Ya(Ja(t))}var Za=6,Qa=15,en=1,rn=Za;function tn(e){return Math.floor((e+Math.round(128/rn)/256)*rn)}function an(e){return Math.floor((e-5)/rn*100+.5)/100}function nn(e){return Math.round((e*rn+5)/rn*256)/256}function sn(e){return nn(an(tn(e)))}function on(e){var r=Math.abs(e-sn(e)),t=rn;if(r>.005)for(rn=en;rn":;case"":break;case"":;case"":n={};if(t.diagonalUp)n.diagonalUp=Je(t.diagonalUp);if(t.diagonalDown)n.diagonalDown=Je(t.diagonalDown);r.Borders.push(n);break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":;case"":break;case"":i=false;break;default:if(a&&a.WTF){if(!i)throw new Error("unrecognized "+t[0]+" in borders")};}})}function vn(e,r,t,a){r.Fills=[];var n={};var i=false;(e[0].match(Ne)||[]).forEach(function(e){var t=Ie(e);switch(Le(t[0])){case"":;case"":break;case"":;case"":n={};r.Fills.push(n);break;case"":break;case"":break;case"":r.Fills.push(n);n={};break;case"":if(t.patternType)n.patternType=t.patternType;break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":break;case"":break;case"":break;case"":break;case"":;case"":break;case"":i=false;break;default:if(a&&a.WTF){if(!i)throw new Error("unrecognized "+t[0]+" in fills")};}})}function mn(e,r,t,a){r.Fonts=[];var n={};var s=false;(e[0].match(Ne)||[]).forEach(function(e){var o=Ie(e);switch(Le(o[0])){case"":;case"":break;case"":break;case"
":;case"":r.Fonts.push(n);n={};break;case"":;case"":break;case"":n.bold=1;break;case"":n.italic=1;break;case"":n.underline=1;break;case"":n.strike=1;break;case"":n.outline=1;break;case"":n.shadow=1;break;case"":n.condense=1;break;case"":n.extend=1;break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":s=false;break;case"":;case"":break;case"":s=false;break;default:if(a&&a.WTF){if(!s)throw new Error("unrecognized "+o[0]+" in fonts")};}})}function gn(e,r,t){r.NumberFmt=[];var a=q(P._table);for(var n=0;n":;case"":;case"":break;case"0){if(l>392){for(l=392;l>60;--l)if(r.NumberFmt[l]==null)break;r.NumberFmt[l]=o}P.load(o,l)}}break;case"":break;default:if(t.WTF)throw new Error("unrecognized "+s[0]+" in numFmts");}}}function bn(e){var r=[""];[[5,8],[23,26],[41,44],[50,392]].forEach(function(t){for(var a=t[0];a<=t[1];++a)if(e[a]!=null)r[r.length]=ur("numFmt",null,{numFmtId:a,formatCode:$e(e[a])})});if(r.length===1)return"";r[r.length]="";r[0]=ur("numFmts",null,{count:r.length-2}).replace("/>",">");return r.join("")}var wn=["numFmtId","fillId","fontId","borderId","xfId"];var yn=["applyAlignment","applyBorder","applyFill","applyFont","applyNumberFormat","applyProtection","pivotButton","quotePrefix"];function kn(e,r,t){r.CellXf=[];var a;var n=false;(e[0].match(Ne)||[]).forEach(function(e){var i=Ie(e),s=0;switch(Le(i[0])){case"":;case"":;case"":break;case"":a=i;delete a[0];for(s=0;s392){for(s=392;s>60;--s)if(r.NumberFmt[a.numFmtId]==r.NumberFmt[s]){a.numFmtId=s;break}}r.CellXf.push(a);break;case"":break;case"":var o={};if(i.vertical)o.vertical=i.vertical;if(i.horizontal)o.horizontal=i.horizontal;if(i.textRotation!=null)o.textRotation=i.textRotation;if(i.indent)o.indent=i.indent;if(i.wrapText)o.wrapText=Je(i.wrapText);a.alignment=o;break;case"":break;case"":;case"":break;case"":n=false;break;case"":;case"":break;case"":n=false;break;default:if(t&&t.WTF){if(!n)throw new Error("unrecognized "+i[0]+" in cellXfs")};}})}function xn(e){var r=[];r[r.length]=ur("cellXfs",null);e.forEach(function(e){r[r.length]=ur("xf",null,e)});r[r.length]="";if(r.length===2)return"";r[0]=ur("cellXfs",null,{count:r.length-2}).replace("/>",">");return r.join("")}var Sn=function kl(){var e=/<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/;var r=/<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/;var t=/<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/;var a=/<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/;var n=/<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/;return function i(s,o,l){var c={};if(!s)return c;s=s.replace(//gm,"").replace(//gm,"");var f;if(f=s.match(e))gn(f,c,l);if(f=s.match(a))mn(f,c,o,l);if(f=s.match(t))vn(f,c,o,l);if(f=s.match(n))pn(f,c,o,l);if(f=s.match(r))kn(f,c,l);return c}}();var _n=ur("styleSheet",null,{xmlns:pr.main[0],"xmlns:vt":pr.vt});ia.STY="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles";function Cn(e,r){var t=[De,_n],a;if(e.SSF&&(a=bn(e.SSF))!=null)t[t.length]=a;t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';if(a=xn(r.cellXfs))t[t.length]=a;t[t.length]='';t[t.length]='';t[t.length]='';if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}ia.THEME="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme";var An=["","","","","","","","","","","",""];function En(e,r,t){r.themeElements.clrScheme=[];var a={};(e[0].match(Ne)||[]).forEach(function(e){var n=Ie(e);switch(n[0]){case"":break;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":if(n[0].charAt(1)==="/"){r.themeElements.clrScheme[An.indexOf(n[0])]=a;a={}}else{a.name=n[0].slice(3,n[0].length-1)}break;default:if(t&&t.WTF)throw new Error("Unrecognized "+n[0]+" in clrScheme");}})}function Fn(){}function Tn(){}var On=/]*)>[\s\S]*<\/a:clrScheme>/;var Dn=/]*)>[\s\S]*<\/a:fontScheme>/;var Mn=/]*)>[\s\S]*<\/a:fmtScheme>/;function Nn(e,r,t){r.themeElements={};var a;[["clrScheme",On,En],["fontScheme",Dn,Fn],["fmtScheme",Mn,Tn]].forEach(function(n){if(!(a=e.match(n[1])))throw new Error(n[0]+" not found in themeElements");n[2](a,r,t)})}var Pn=/]*)>[\s\S]*<\/a:themeElements>/;function Rn(e,r){if(!e||e.length===0)return Rn(In());var t;var a={};if(!(t=e.match(Pn)))throw new Error("themeElements not found in theme");Nn(t[0],a,r);a.raw=e;return a}function In(e,r){if(r&&r.themeXLSX)return r.themeXLSX;if(e&&typeof e.raw=="string")return e.raw;var t=[De];t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";return t.join("")}function Ln(){}function Bn(e,r,t,a){if(!e)return e;var n=a||{};var i=false,s=false;rt(e,function o(e,r,t){if(s)return;switch(t){case 359:;case 363:;case 364:;case 366:;case 367:;case 368:;case 369:;case 370:;case 371:;case 472:;case 577:;case 578:;case 579:;case 580:;case 581:;case 582:;case 583:;case 584:;case 585:;case 586:;case 587:break;case 35:i=true;break;case 36:i=false;break;default:if((r||"").indexOf("Begin")>0){}else if((r||"").indexOf("End")>0){}else if(!i||n.WTF)throw new Error("Unexpected record "+t.toString(16)+" "+r);}},n)}ia.IMG="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image";ia.DRAW="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing";function Un(e,r){if(!e)return"??";var t=(e.match(/]*r:id="([^"]*)"/)||["",""])[1];return r["!id"][t].Target}var zn=1024;function Wn(e,r){var t=[21600,21600];var a=["m0,0l0",t[1],t[0],t[1],t[0],"0xe"].join(",");var n=[ur("xml",null,{"xmlns:v":vr.v,"xmlns:o":vr.o,"xmlns:x":vr.x,"xmlns:mv":vr.mv}).replace(/\/>/,">"),ur("o:shapelayout",ur("o:idmap",null,{"v:ext":"edit",data:e}),{"v:ext":"edit"}),ur("v:shapetype",[ur("v:stroke",null,{joinstyle:"miter"}),ur("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:t.join(","),path:a})];while(zn",i,ur("v:shadow",null,s),ur("v:path",null,{"o:connecttype":"none"}),'
','',"","",cr("x:Anchor",[r.c+1,0,r.r+1,0,r.c+3,20,r.r+5,20].join(",")),cr("x:AutoFill","False"),cr("x:Row",String(r.r)),cr("x:Column",String(r.c)),e[1].hidden?"":"","",""])});n.push("");return n.join("")}ia.CMNT="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments";function jn(e,r){var t=Array.isArray(e);var a;r.forEach(function(r){var n=gt(r.ref);if(t){if(!e[n.r])e[n.r]=[];a=e[n.r][n.c]}else a=e[r.ref];if(!a){a={t:"z"};if(t)e[n.r][n.c]=a;else e[r.ref]=a;var i=kt(e["!ref"]||"BDWGO1000001:A1");if(i.s.r>n.r)i.s.r=n.r;if(i.e.rn.c)i.s.c=n.c;if(i.e.c/))return[];var t=[];var a=[];var n=e.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);if(n&&n[1])n[1].split(/<\/\w*:?author>/).forEach(function(e){if(e===""||e.trim()==="")return;var r=e.match(/<(?:\w+:)?author[^>]*>(.*)/);if(r)t.push(r[1])});var i=e.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);if(i&&i[1])i[1].split(/<\/\w*:?comment>/).forEach(function(e){if(e===""||e.trim()==="")return;var n=e.match(/<(?:\w+:)?comment[^>]*>/);if(!n)return;var i=Ie(n[0]);var s={author:i.authorId&&t[i.authorId]||"sheetjsghost",ref:i.ref,guid:i.guid};var o=gt(i.ref);if(r.sheetRows&&r.sheetRows<=o.r)return;var l=e.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/);var c=!!l&&!!l[1]&&za(l[1])||{r:"",t:"",h:""};s.r=c.r;if(c.r=="")c.t=c.h="";s.t=(c.t||"").replace(/\r\n/g,"\n").replace(/\r/g,"\n");if(r.cellHTML)s.h=c.h;a.push(s)});return a}var Hn=ur("comments",null,{xmlns:pr.main[0]});function Xn(e){var r=[De,Hn];var t=[];r.push("");e.forEach(function(e){e[1].forEach(function(e){var a=$e(e.a);if(t.indexOf(a)>-1)return;t.push(a);r.push(""+a+"")})});r.push("");r.push("");e.forEach(function(e){e[1].forEach(function(a){r.push('');r.push(cr("t",a.t==null?"":$e(a.t)));r.push("")})});r.push("");if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">"); -}return r.join("")}var Vn="application/vnd.ms-office.vbaProject";function Gn(e){var r=H.utils.cfb_new({root:"R"});e.FullPaths.forEach(function(t,a){if(t.slice(-1)==="/"||!t.match(/_VBA_PROJECT_CUR/))return;var n=t.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");H.utils.cfb_add(r,n,e.FileIndex[a].content)});return H.write(r)}function Yn(e,r){r.FullPaths.forEach(function(t,a){if(a==0)return;var n=t.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");if(n.slice(-1)!=="/")H.utils.cfb_add(e,n,r.FileIndex[a].content)})}var qn=["xlsb","xlsm","xlam","biff8","xla"];ia.DS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet";ia.MS="http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet";function Jn(){return{"!type":"dialog"}}function Kn(){return{"!type":"dialog"}}function Zn(){return{"!type":"macro"}}function Qn(){return{"!type":"macro"}}var ei=function(){var e=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g;var r={r:0,c:0};function t(e,t,a,n){var i=false,s=false;if(a.length==0)s=true;else if(a.charAt(0)=="["){s=true;a=a.slice(1,-1)}if(n.length==0)i=true;else if(n.charAt(0)=="["){i=true;n=n.slice(1,-1)}var o=a.length>0?parseInt(a,10)|0:0,l=n.length>0?parseInt(n,10)|0:0;if(i)l+=r.c;else--l;if(s)o+=r.r;else--o;return t+(i?"":"$")+dt(l)+(s?"":"$")+ct(o)}return function a(n,i){r=i;return n.replace(e,t)}}();var ri=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g;var ti=function(){return function e(r,t){return r.replace(ri,function(e,r,a,n,i,s){var o=ht(n)-(a?0:t.c);var l=lt(s)-(i?0:t.r);var c=l==0?"":!i?"["+l+"]":l+1;var f=o==0?"":!a?"["+o+"]":o+1;return r+"R"+c+"C"+f})}}();function ai(e,r){return e.replace(ri,function(e,t,a,n,i,s){return t+(a=="$"?a+n:dt(ht(n)+r.c))+(i=="$"?i+s:ct(lt(s)+r.r))})}function ni(e,r,t){var a=wt(r),n=a.s,i=gt(t);var s={r:i.r-n.r,c:i.c-n.c};return ai(e,s)}function ii(e){if(e.length==1)return false;return true}function si(e){return e.replace(/_xlfn\./g,"")}var oi={};var li={};ia.WS=["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"];var ci=typeof Map!=="undefined";function fi(e,r,t){var a=0,n=e.length;if(t){if(ci?t.has(r):Object.prototype.hasOwnProperty.call(t,r)){var i=ci?t.get(r):t[r];for(;a-1){t.width=nn(a);t.customWidth=1}else if(r.width!=null)t.width=r.width;if(r.hidden)t.hidden=true;if(r.level!=null){t.outlineLevel=t.level=r.level}return t}function hi(e,r){if(!e)return;var t=[.7,.7,.75,.75,.3,.3];if(r=="xlml")t=[1,1,1,1,.5,.5];if(e.left==null)e.left=t[0];if(e.right==null)e.right=t[1];if(e.top==null)e.top=t[2];if(e.bottom==null)e.bottom=t[3];if(e.header==null)e.header=t[4];if(e.footer==null)e.footer=t[5]}function di(e,r,t){var a=t.revssf[r.z!=null?r.z:"General"];var n=60,i=e.length;if(a==null&&t.ssf){for(;n<392;++n)if(t.ssf[n]==null){P.load(r.z,n);t.ssf[n]=r.z;t.revssf[r.z]=a=n;break}}for(n=0;n!=i;++n)if(e[n].numFmtId===a)return n;e[i]={numFmtId:a,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1};return i}function pi(e,r,t,a,n,i){try{if(a.cellNF)e.z=P._table[r]}catch(s){if(a.WTF)throw s}if(e.t==="z"&&!a.cellStyles)return;if(e.t==="d"&&typeof e.v==="string")e.v=ce(e.v);if((!a||a.cellText!==false)&&e.t!=="z")try{if(P._table[r]==null)P.load(L[r]||"General",r);if(e.t==="e")e.w=e.w||qt[e.v];else if(r===0){if(e.t==="n"){if((e.v|0)===e.v)e.w=P._general_int(e.v);else e.w=P._general_num(e.v)}else if(e.t==="d"){var o=re(e.v);if((o|0)===o)e.w=P._general_int(o);else e.w=P._general_num(o)}else if(e.v===undefined)return"";else e.w=P._general(e.v,li)}else if(e.t==="d")e.w=P.format(r,re(e.v),li);else e.w=P.format(r,e.v,li)}catch(s){if(a.WTF)throw s}if(!a.cellStyles)return;if(t!=null)try{e.s=i.Fills[t];if(e.s.fgColor&&e.s.fgColor.theme&&!e.s.fgColor.rgb){e.s.fgColor.rgb=Ka(n.themeElements.clrScheme[e.s.fgColor.theme].rgb,e.s.fgColor.tint||0);if(a.WTF)e.s.fgColor.raw_rgb=n.themeElements.clrScheme[e.s.fgColor.theme].rgb}if(e.s.bgColor&&e.s.bgColor.theme){e.s.bgColor.rgb=Ka(n.themeElements.clrScheme[e.s.bgColor.theme].rgb,e.s.bgColor.tint||0);if(a.WTF)e.s.bgColor.raw_rgb=n.themeElements.clrScheme[e.s.bgColor.theme].rgb}}catch(s){if(a.WTF&&i.Fills)throw s}}function vi(e,r,t){if(e&&e["!ref"]){var a=kt(e["!ref"]);if(a.e.c=0&&t.s.c>=0)e["!ref"]=yt(t)}var gi=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g;var bi=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/;var wi=/<(?:\w:)?hyperlink [^>]*>/gm;var yi=/"(\w*:\w*)"/;var ki=/<(?:\w:)?col\b[^>]*[\/]?>/g;var xi=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g;var Si=/<(?:\w:)?pageMargins[^>]*\/>/g;var _i=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/;var Ci=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/;var Ai=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function Ei(e,r,t,a,n,i,s){if(!e)return e;if(!a)a={"!id":{}};if(m!=null&&r.dense==null)r.dense=m;var o=r.dense?[]:{};var l={s:{r:2e6,c:2e6},e:{r:0,c:0}};var c="",f="";var u=e.match(bi);if(u){c=e.slice(0,u.index);f=e.slice(u.index+u[0].length)}else c=f=e;var h=c.match(_i);if(h)Ti(h[0],o,n,t);else if(h=c.match(Ci))Oi(h[0],h[1]||"",o,n,t,s,i);var d=(c.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(d>0){var p=c.slice(d,d+50).match(yi);if(p)mi(o,p[1])}var v=c.match(Ai);if(v&&v[1])$i(v[1],n);var g=[];if(r.cellStyles){var b=c.match(ki);if(b)Bi(g,b)}if(u)Vi(u[1],o,r,l,i,s);var w=f.match(xi);if(w)o["!autofilter"]=zi(w[0]);var y=[];var k=f.match(gi);if(k)for(d=0;d!=k.length;++d)y[d]=kt(k[d].slice(k[d].indexOf('"')+1));var x=f.match(wi);if(x)Ri(o,x,a);var S=f.match(Si);if(S)o["!margins"]=Ii(Ie(S[0]));if(!o["!ref"]&&l.e.c>=l.s.c&&l.e.r>=l.s.r)o["!ref"]=yt(l);if(r.sheetRows>0&&o["!ref"]){var _=kt(o["!ref"]);if(r.sheetRows<=+_.e.r){_.e.r=r.sheetRows-1;if(_.e.r>l.e.r)_.e.r=l.e.r;if(_.e.r<_.s.r)_.s.r=_.e.r;if(_.e.c>l.e.c)_.e.c=l.e.c;if(_.e.c<_.s.c)_.s.c=_.e.c;o["!fullref"]=o["!ref"];o["!ref"]=yt(_)}}if(g.length>0)o["!cols"]=g;if(y.length>0)o["!merges"]=y;return o}function Fi(e){if(e.length===0)return"";var r='';for(var t=0;t!=e.length;++t)r+='';return r+""}function Ti(e,r,t,a){var n=Ie(e);if(!t.Sheets[a])t.Sheets[a]={};if(n.codeName)t.Sheets[a].CodeName=ze(Ke(n.codeName))}function Oi(e,r,t,a,n,i,s){Ti(e.slice(0,e.indexOf(">")),t,a,n)}function Di(e,r,t,a,n){var i=false;var s={},o=null;if(a.bookType!=="xlsx"&&r.vbaraw){var l=r.SheetNames[t];try{if(r.Workbook)l=r.Workbook.Sheets[t].CodeName||l}catch(c){}i=true;s.codeName=Ze($e(l))}if(e&&e["!outline"]){var f={summaryBelow:1,summaryRight:1};if(e["!outline"].above)f.summaryBelow=0;if(e["!outline"].left)f.summaryRight=0;o=(o||"")+ur("outlinePr",null,f)}if(!i&&!o)return;n[n.length]=ur("sheetPr",o,s)}var Mi=["objects","scenarios","selectLockedCells","selectUnlockedCells"];var Ni=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function Pi(e){var r={sheet:1};Mi.forEach(function(t){if(e[t]!=null&&e[t])r[t]="1"});Ni.forEach(function(t){if(e[t]!=null&&!e[t])r[t]="0"});if(e.password)r.password=crypto_CreatePasswordVerifier_Method1(e.password).toString(16).toUpperCase();return ur("sheetProtection",null,r)}function Ri(e,r,t){var a=Array.isArray(e);for(var n=0;n!=r.length;++n){var i=Ie(Ke(r[n]),true);if(!i.ref)return;var s=((t||{})["!id"]||[])[i.id];if(s){i.Target=s.Target;if(i.location)i.Target+="#"+ze(i.location)}else{i.Target="#"+ze(i.location);s={Target:i.Target,TargetMode:"Internal"}}i.Rel=s;if(i.tooltip){i.Tooltip=i.tooltip;delete i.tooltip}var o=kt(i.ref);for(var l=o.s.r;l<=o.e.r;++l)for(var c=o.s.c;c<=o.e.c;++c){var f=bt({c:c,r:l});if(a){if(!e[l])e[l]=[];if(!e[l][c])e[l][c]={t:"z",v:undefined};e[l][c].l=i}else{if(!e[f])e[f]={t:"z",v:undefined};e[f].l=i}}}}function Ii(e){var r={};["left","right","top","bottom","header","footer"].forEach(function(t){if(e[t])r[t]=parseFloat(e[t])});return r}function Li(e){hi(e);return ur("pageMargins",null,e)}function Bi(e,r){var t=false;for(var a=0;a!=r.length;++a){var n=Ie(r[a],true);if(n.hidden)n.hidden=Je(n.hidden);var i=parseInt(n.min,10)-1,s=parseInt(n.max,10)-1;if(n.outlineLevel)n.level=+n.outlineLevel||0;delete n.min;delete n.max;n.width=+n.width;if(!t&&n.width){t=true;on(n.width)}ln(n);while(i<=s)e[i++]=ue(n)}}function Ui(e,r){var t=[""],a;for(var n=0;n!=r.length;++n){if(!(a=r[n]))continue;t[t.length]=ur("col",null,ui(n,a))}t[t.length]="";return t.join("")}function zi(e){var r={ref:(e.match(/ref="([^"]*)"/)||[])[1]};return r}function Wi(e,r,t,a){var n=typeof e.ref=="string"?e.ref:yt(e.ref);if(!t.Workbook)t.Workbook={Sheets:[]};if(!t.Workbook.Names)t.Workbook.Names=[];var i=t.Workbook.Names;var s=wt(n);if(s.s.r==s.e.r){s.e.r=wt(r["!ref"]).e.r;n=yt(s)}for(var o=0;oa-z][^>]*)?\/?>/;function $i(e,r){if(!r.Views)r.Views=[{}];(e.match(ji)||[]).forEach(function(e,t){var a=Ie(e);if(!r.Views[t])r.Views[t]={};if(+a.zoomScale)r.Views[t].zoom=+a.zoomScale;if(Je(a.rightToLeft))r.Views[t].RTL=true})}function Hi(e,r,t,a){var n={workbookViewId:"0"};if((((a||{}).Workbook||{}).Views||[])[0])n.rightToLeft=a.Workbook.Views[0].RTL?"1":"0";return ur("sheetViews",ur("sheetView",null,n),{})}function Xi(e,r,t,a){if(e.v===undefined&&typeof e.f!=="string"||e.t==="z")return"";var n="";var i=e.t,s=e.v;if(e.t!=="z")switch(e.t){case"b":n=e.v?"1":"0";break;case"n":n=""+e.v;break;case"e":n=qt[e.v];break;case"d":if(a&&a.cellDates)n=ce(e.v,-1).toISOString();else{e=ue(e);e.t="n";n=""+(e.v=re(ce(e.v)))}if(typeof e.z==="undefined")e.z=P._table[14];break;default:n=e.v;break;}var o=cr("v",$e(n)),l={r:r};var c=di(a.cellXfs,e,a);if(c!==0)l.s=c;switch(e.t){case"n":break;case"d":l.t="d";break;case"b":l.t="b";break;case"e":l.t="e";break;case"z":break;default:if(e.v==null){delete e.t;break}if(e.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(a&&a.bookSST){o=cr("v",""+fi(a.Strings,e.v,a.revStrings));l.t="s";break}l.t="str";break;}if(e.t!=i){e.t=i;e.v=s}if(typeof e.f=="string"&&e.f){var f=e.F&&e.F.slice(0,r.length)==r?{t:"array",ref:e.F}:null;o=ur("f",$e(e.f),f)+(e.v!=null?o:"")}if(e.l)t["!links"].push([r,e.l]);if(e.c)t["!comments"].push([r,e.c]);return ur("c",o,l)}var Vi=function(){var e=/<(?:\w+:)?c[ \/>]/,r=/<\/(?:\w+:)?row>/;var t=/r=["']([^"']*)["']/,a=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/;var n=/ref=["']([^"']*)["']/;var i=tr("v"),s=tr("f");return function o(l,c,f,u,h,d){var p=0,v="",m=[],g=[],b=0,w=0,y=0,k="",x;var S,_=0,C=0;var A,E;var F=0,T=0;var O=Array.isArray(d.CellXf),D;var M=[];var N=[];var R=Array.isArray(c);var I=[],L={},B=false;var U=!!f.sheetStubs;for(var z=l.split(r),W=0,j=z.length;W!=j;++W){v=z[W].trim();var $=v.length;if($===0)continue;var H=0;e:for(p=0;p<$;++p)switch(v[p]){case">":if(v[p-1]!="/"){++p;break e}if(f&&f.cellStyles){S=Ie(v.slice(H,p),true);_=S.r!=null?parseInt(S.r,10):_+1;C=-1;if(f.sheetRows&&f.sheetRows<_)continue;L={};B=false;if(S.ht){B=true;L.hpt=parseFloat(S.ht);L.hpx=hn(L.hpt)}if(S.hidden=="1"){B=true;L.hidden=true}if(S.outlineLevel!=null){B=true;L.level=+S.outlineLevel}if(B)I[_-1]=L}break;case"<":H=p;break;}if(H>=p)break;S=Ie(v.slice(H,p),true);_=S.r!=null?parseInt(S.r,10):_+1;C=-1;if(f.sheetRows&&f.sheetRows<_)continue;if(u.s.r>_-1)u.s.r=_-1;if(u.e.r<_-1)u.e.r=_-1;if(f&&f.cellStyles){L={};B=false;if(S.ht){B=true;L.hpt=parseFloat(S.ht);L.hpx=hn(L.hpt)}if(S.hidden=="1"){B=true;L.hidden=true}if(S.outlineLevel!=null){B=true;L.level=+S.outlineLevel}if(B)I[_-1]=L}m=v.slice(p).split(e);for(var X=0;X!=m.length;++X)if(m[X].trim().charAt(0)!="<")break;m=m.slice(X);for(p=0;p!=m.length;++p){v=m[p].trim();if(v.length===0)continue;g=v.match(t);b=p;w=0;y=0;v="":"")+v;if(g!=null&&g.length===2){b=0;k=g[1];for(w=0;w!=k.length;++w){if((y=k.charCodeAt(w)-64)<1||y>26)break;b=26*b+y}--b;C=b}else++C;for(w=0;w!=v.length;++w)if(v.charCodeAt(w)===62)break;++w;S=Ie(v.slice(0,w),true);if(!S.r)S.r=bt({r:_-1,c:C});k=v.slice(w);x={t:""};if((g=k.match(i))!=null&&g[1]!=="")x.v=ze(g[1]);if(f.cellFormula){if((g=k.match(s))!=null&&g[1]!==""){x.f=ze(Ke(g[1])).replace(/\r\n/g,"\n");if(!f.xlfn)x.f=si(x.f);if(g[0].indexOf('t="array"')>-1){x.F=(k.match(n)||[])[1];if(x.F.indexOf(":")>-1)M.push([kt(x.F),x.F])}else if(g[0].indexOf('t="shared"')>-1){E=Ie(g[0]);var V=ze(Ke(g[1]));if(!f.xlfn)V=si(V);N[parseInt(E.si,10)]=[E,V,S.r]}}else if(g=k.match(/]*\/>/)){E=Ie(g[0]);if(N[E.si])x.f=ni(N[E.si][1],N[E.si][2],S.r)}var G=gt(S.r);for(w=0;w=M[w][0].s.r&&G.r<=M[w][0].e.r)if(G.c>=M[w][0].s.c&&G.c<=M[w][0].e.c)x.F=M[w][1]}if(S.t==null&&x.v===undefined){if(x.f||x.F){x.v=0;x.t="n"}else if(!U)continue;else x.t="z"}else x.t=S.t||"n";if(u.s.c>C)u.s.c=C;if(u.e.c0)c["!rows"]=I}}();function Gi(e,r,t,a){var n=[],i=[],s=kt(e["!ref"]),o="",l,c="",f=[],u=0,h=0,d=e["!rows"];var p=Array.isArray(e);var v={r:c},m,g=-1;for(h=s.s.c;h<=s.e.c;++h)f[h]=dt(h);for(u=s.s.r;u<=s.e.r;++u){i=[];c=ct(u);for(h=s.s.c;h<=s.e.c;++h){l=f[h]+c;var b=p?(e[u]||[])[h]:e[l];if(b===undefined)continue;if((o=Xi(b,l,e,r,t,a))!=null)i.push(o)}if(i.length>0||d&&d[u]){v={r:c};if(d&&d[u]){m=d[u];if(m.hidden)v.hidden=1;g=-1;if(m.hpx)g=un(m.hpx);else if(m.hpt)g=m.hpt;if(g>-1){v.ht=g;v.customHeight=1}if(m.level){v.outlineLevel=m.level}}n[n.length]=ur("row",i.join(""),v)}}if(d)for(;u-1){v.ht=g;v.customHeight=1}if(m.level){v.outlineLevel=m.level}n[n.length]=ur("row","",v)}}return n.join("")}var Yi=ur("worksheet",null,{xmlns:pr.main[0],"xmlns:r":pr.r});function qi(e,r,t,a){var n=[De,Yi];var i=t.SheetNames[e],s=0,o="";var l=t.Sheets[i];if(l==null)l={};var c=l["!ref"]||"A1";var f=kt(c);if(f.e.c>16383||f.e.r>1048575){if(r.WTF)throw new Error("Range "+c+" exceeds format limit A1:XFD1048576");f.e.c=Math.min(f.e.c,16383);f.e.r=Math.min(f.e.c,1048575);c=yt(f)}if(!a)a={};l["!comments"]=[];var u=[];Di(l,t,e,r,n);n[n.length]=ur("dimension",null,{ref:c});n[n.length]=Hi(l,r,e,t);if(r.sheetFormat)n[n.length]=ur("sheetFormatPr",null,{defaultRowHeight:r.sheetFormat.defaultRowHeight||"16",baseColWidth:r.sheetFormat.baseColWidth||"10",outlineLevelRow:r.sheetFormat.outlineLevelRow||"7"});if(l["!cols"]!=null&&l["!cols"].length>0)n[n.length]=Ui(l,l["!cols"]);n[s=n.length]="";l["!links"]=[];if(l["!ref"]!=null){o=Gi(l,r,e,t,a);if(o.length>0)n[n.length]=o}if(n.length>s+1){n[n.length]="";n[s]=n[s].replace("/>",">")}if(l["!protect"])n[n.length]=Pi(l["!protect"]);if(l["!autofilter"]!=null)n[n.length]=Wi(l["!autofilter"],l,t,e);if(l["!merges"]!=null&&l["!merges"].length>0)n[n.length]=Fi(l["!merges"]);var h=-1,d,p=-1;if(l["!links"].length>0){n[n.length]="";l["!links"].forEach(function(e){if(!e[1].Target)return;d={ref:e[0]};if(e[1].Target.charAt(0)!="#"){p=ua(a,-1,$e(e[1].Target).replace(/#.*$/,""),ia.HLINK);d["r:id"]="rId"+p}if((h=e[1].Target.indexOf("#"))>-1)d.location=$e(e[1].Target.slice(h+1));if(e[1].Tooltip)d.tooltip=$e(e[1].Tooltip);n[n.length]=ur("hyperlink",null,d)});n[n.length]=""}delete l["!links"];if(l["!margins"]!=null)n[n.length]=Li(l["!margins"]);if(!r||r.ignoreEC||r.ignoreEC==void 0)n[n.length]=cr("ignoredErrors",ur("ignoredError",null,{numberStoredAsText:1,sqref:c}));if(u.length>0){p=ua(a,-1,"../drawings/drawing"+(e+1)+".xml",ia.DRAW);n[n.length]=ur("drawing",null,{"r:id":"rId"+p});l["!drawing"]=u}if(l["!comments"].length>0){p=ua(a,-1,"../drawings/vmlDrawing"+(e+1)+".vml",ia.VML);n[n.length]=ur("legacyDrawing",null,{"r:id":"rId"+p});l["!legacy"]=p}if(n.length>1){n[n.length]="";n[1]=n[1].replace("/>",">")}return n.join("")}ia.CHART="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";ia.CHARTEX="http://schemas.microsoft.com/office/2014/relationships/chartEx";function Ji(e){var r=[];var t=e.match(/^/);var a;(e.match(/(.*?)<\/c:pt>/gm)||[]).forEach(function(e){var a=e.match(/(.*)<\/c:v><\/c:pt>/);if(!a)return;r[+a[1]]=t?+a[2]:a[2]});var n=ze((e.match(/([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);(e.match(/(.*?)<\/c:f>/gm)||[]).forEach(function(e){a=e.replace(/<.*?>/g,"")});return[r,n,a]}function Ki(e,r,t,a,n,i){var s=i||{"!type":"chart"};if(!e)return i;var o=0,l=0,c="A";var f={s:{r:2e6,c:2e6},e:{r:0,c:0}};(e.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(e){var r=Ji(e);f.s.r=f.s.c=0;f.e.c=o;c=dt(o);r[0].forEach(function(e,t){s[c+ct(t)]={t:"n",v:e,z:r[1]};l=t});if(f.e.r0)s["!ref"]=yt(f);return s}ia.CS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet";var Zi=ur("chartsheet",null,{xmlns:pr.main[0],"xmlns:r":pr.r});function Qi(e,r,t,a,n){if(!e)return e;if(!a)a={"!id":{}};var i={"!type":"chart","!drawel":null,"!rel":""};var s;var o=e.match(_i);if(o)Ti(o[0],i,n,t);if(s=e.match(/drawing r:id="(.*?)"/))i["!rel"]=s[1];if(a["!id"][i["!rel"]])i["!drawel"]=a["!id"][i["!rel"]];return i}function es(e,r,t,a){var n=[De,Zi];n[n.length]=ur("drawing",null,{"r:id":"rId1"});ua(a,-1,"../drawings/drawing"+(e+1)+".xml",ia.DRAW);if(n.length>2){n[n.length]="";n[1]=n[1].replace("/>",">")}return n.join("")}function rs(e,r){e.l+=10;var t=parse_XLWideString(e,r-10);return{name:t}}function ts(e,r,t,a,n){if(!e)return e;if(!a)a={"!id":{}};var i={"!type":"chart","!drawel":null,"!rel":""};var s=[];var o=false;rt(e,function l(e,a,c){switch(c){case 550:i["!rel"]=e;break;case 651:if(!n.Sheets[t])n.Sheets[t]={};if(e.name)n.Sheets[t].CodeName=e.name;break;case 562:;case 652:;case 669:;case 679:;case 551:;case 552:;case 476:;case 3072:break;case 35:o=true;break;case 36:o=false;break;case 37:s.push(a);break;case 38:s.pop();break;default:if((a||"").indexOf("Begin")>0)s.push(a);else if((a||"").indexOf("End")>0)s.pop();else if(!o||r.WTF)throw new Error("Unexpected record "+c+" "+a);}},r);if(a["!id"][i["!rel"]])i["!drawel"]=a["!id"][i["!rel"]];return i}function as(){var e=tt();at(e,"BrtBeginSheet");at(e,"BrtEndSheet");return e.end()}var ns=[["allowRefreshQuery",false,"bool"],["autoCompressPictures",true,"bool"],["backupFile",false,"bool"],["checkCompatibility",false,"bool"],["CodeName",""],["date1904",false,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",false,"bool"],["hidePivotFieldList",false,"bool"],["promptedSolutions",false,"bool"],["publishItems",false,"bool"],["refreshAllConnections",false,"bool"],["saveExternalLinkValues",true,"bool"],["showBorderUnselectedTables",true,"bool"],["showInkAnnotation",true,"bool"],["showObjects","all"],["showPivotChartFilter",false,"bool"],["updateLinks","userSet"]];var is=[["activeTab",0,"int"],["autoFilterDateGrouping",true,"bool"],["firstSheet",0,"int"],["minimized",false,"bool"],["showHorizontalScroll",true,"bool"],["showSheetTabs",true,"bool"],["showVerticalScroll",true,"bool"],["tabRatio",600,"int"],["visibility","visible"]];var ss=[];var os=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function ls(e,r){for(var t=0;t!=e.length;++t){var a=e[t];for(var n=0;n!=r.length;++n){var i=r[n];if(a[i[0]]==null)a[i[0]]=i[1];else switch(i[2]){case"bool":if(typeof a[i[0]]=="string")a[i[0]]=Je(a[i[0]]);break;case"int":if(typeof a[i[0]]=="string")a[i[0]]=parseInt(a[i[0]],10);break;}}}}function cs(e,r){for(var t=0;t!=r.length;++t){var a=r[t];if(e[a[0]]==null)e[a[0]]=a[1];else switch(a[2]){case"bool":if(typeof e[a[0]]=="string")e[a[0]]=Je(e[a[0]]);break;case"int":if(typeof e[a[0]]=="string")e[a[0]]=parseInt(e[a[0]],10);break;}}}function fs(e){cs(e.WBProps,ns);cs(e.CalcPr,os);ls(e.WBView,is);ls(e.Sheets,ss);li.date1904=Je(e.WBProps.date1904)}function us(e){if(!e.Workbook)return"false";if(!e.Workbook.WBProps)return"false";return Je(e.Workbook.WBProps.date1904)?"true":"false"}var hs="][*?/\\".split("");function ds(e,r){if(e.length>31){if(r)return false;throw new Error("Sheet names cannot exceed 31 chars")}var t=true;hs.forEach(function(a){if(e.indexOf(a)==-1)return;if(!r)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");t=false});return t}function ps(e,r,t){e.forEach(function(a,n){ds(a);for(var i=0;i22)throw new Error("Bad Code Name: Worksheet"+s)}})}function vs(e){if(!e||!e.SheetNames||!e.Sheets)throw new Error("Invalid Workbook");if(!e.SheetNames.length)throw new Error("Workbook is empty");var r=e.Workbook&&e.Workbook.Sheets||[];ps(e.SheetNames,r,!!e.vbaraw);for(var t=0;t":break;case"":;case"":break;case"":break;case"":ns.forEach(function(e){if(f[e[0]]==null)return;switch(e[2]){case"bool":t.WBProps[e[0]]=Je(f[e[0]]);break;case"int":t.WBProps[e[0]]=parseInt(f[e[0]],10);break;default:t.WBProps[e[0]]=f[e[0]];}});if(f.codeName)t.WBProps.CodeName=Ke(f.codeName);break;case"":break;case"":break;case"":;case"":break;case"":delete f[0];t.WBView.push(f);break;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":a=false;break;case"":{i.Ref=ze(Ke(e.slice(s,c)));t.Names.push(i)}break;case"":break;case"":delete f[0];t.CalcPr=f;break;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":;case"":;case"":break;case"":a=false;break;case"":a=true;break;case"":a=false;break;case"0;var a={codeName:"ThisWorkbook"};if(e.Workbook&&e.Workbook.WBProps){ns.forEach(function(r){if(e.Workbook.WBProps[r[0]]==null)return;if(e.Workbook.WBProps[r[0]]==r[1])return;a[r[0]]=e.Workbook.WBProps[r[0]]});if(e.Workbook.WBProps.CodeName){a.codeName=e.Workbook.WBProps.CodeName;delete a.CodeName}}r[r.length]=ur("workbookPr",null,a);var n=e.Workbook&&e.Workbook.Sheets||[];var i=0;if(n&&n[0]&&!!n[0].Hidden){r[r.length]="";for(i=0;i!=e.SheetNames.length;++i){if(!n[i])break;if(!n[i].Hidden)break}if(i==e.SheetNames.length)i=0;r[r.length]='';r[r.length]=""}r[r.length]="";for(i=0;i!=e.SheetNames.length;++i){var s={name:$e(e.SheetNames[i].slice(0,31))};s.sheetId=""+(i+1);s["r:id"]="rId"+(i+1);if(n[i])switch(n[i].Hidden){case 1:s.state="hidden";break;case 2:s.state="veryHidden";break;}r[r.length]=ur("sheet",null,s)}r[r.length]="";if(t){r[r.length]="";if(e.Workbook&&e.Workbook.Names)e.Workbook.Names.forEach(function(e){var t={name:e.Name};if(e.Comment)t.comment=e.Comment;if(e.Sheet!=null)t.localSheetId=""+e.Sheet;if(e.Hidden)t.hidden="1";if(!e.Ref)return;r[r.length]=ur("definedName",$e(e.Ref),t)});r[r.length]=""}if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}function ys(e,r,t){if(r.slice(-4)===".bin")return parse_wb_bin(e,t);return gs(e,t)}function ks(e,r,t,a,n,i,s,o){if(r.slice(-4)===".bin")return parse_ws_bin(e,a,t,n,i,s,o);return Ei(e,a,t,n,i,s,o)}function xs(e,r,t,a,n,i,s,o){if(r.slice(-4)===".bin")return ts(e,a,t,n,i,s,o);return Qi(e,a,t,n,i,s,o)}function Ss(e,r,t,a,n,i,s,o){if(r.slice(-4)===".bin")return Zn(e,a,t,n,i,s,o);return Qn(e,a,t,n,i,s,o)}function _s(e,r,t,a,n,i,s,o){if(r.slice(-4)===".bin")return Jn(e,a,t,n,i,s,o);return Kn(e,a,t,n,i,s,o)}function Cs(e,r,t,a){if(r.slice(-4)===".bin")return parse_sty_bin(e,t,a);return Sn(e,t,a)}function As(e,r,t){return Rn(e,t)}function Es(e,r,t){if(r.slice(-4)===".bin")return parse_sst_bin(e,t);return Ha(e,t)}function Fs(e,r,t){if(r.slice(-4)===".bin")return parse_comments_bin(e,t);return $n(e,t)}function Ts(e,r,t){if(r.slice(-4)===".bin")return parse_cc_bin(e,r,t);return parse_cc_xml(e,r,t)}function Os(e,r,t,a){if(t.slice(-4)===".bin")return Bn(e,r,t,a);return Ln(e,r,t,a)}function Ds(e,r,t){return(r.slice(-4)===".bin"?write_wb_bin:ws)(e,t)}function Ms(e,r,t,a,n){return(r.slice(-4)===".bin"?write_ws_bin:qi)(e,t,a,n)}function Ns(e,r,t,a,n){return(r.slice(-4)===".bin"?as:es)(e,t,a,n)}function Ps(e,r,t){return(r.slice(-4)===".bin"?write_sty_bin:Cn)(e,t)}function Rs(e,r,t){return(r.slice(-4)===".bin"?write_sst_bin:Va)(e,t)}function Is(e,r,t){return(r.slice(-4)===".bin"?write_comments_bin:Xn)(e,t)}var Ls=function(){function e(e,r){var t=r||{};if(m!=null&&t.dense==null)t.dense=m;var a=t.dense?[]:{};e=e.replace(//g,"");var n=e.match(/");var i=e.match(/<\/table/i);var s=n.index,o=i&&i.index||e.length;var l=ge(e.slice(s,o),/(:?]*>)/i,"");var c=-1,f=0,u=0,h=0;var d={s:{r:1e7,c:1e7},e:{r:0,c:0}};var p=[];for(s=0;s/i);for(o=0;o"))>-1)y=y.slice(k+1);for(var x=0;x")));h=_.colspan?+_.colspan:1;if((u=+_.rowspan)>1||h>1)p.push({s:{r:c,c:f},e:{r:c+(u||1)-1,c:f+h-1}});var C=_.t||_["data-t"]||"";if(!y.length){f+=h;continue}y=ar(y);if(d.s.r>c)d.s.r=c;if(d.e.rf)d.s.c=f;if(d.e.c[\s\S]*?<\/table>/gi);if(!a||a.length==0)throw new Error("Invalid HTML: could not find
");if(a.length==1)return _t(e(a[0],t),t);var n=Qo.book_new();a.forEach(function(r,a){Qo.book_append_sheet(n,e(r,t),"Sheet"+(a+1))});return n}function t(e,r,t,a){var n=e["!merges"]||[];var i=[];for(var s=r.s.c;s<=r.e.c;++s){var o=0,l=0;for(var c=0;ct||n[c].s.c>s)continue;if(n[c].e.r1)d.rowspan=o;if(l>1)d.colspan=l;if(a.editable)h=''+h+"";else if(u){d["data-t"]=u&&u.t||"z";if(u.v!=null)d["data-v"]=u.v;if(u.z!=null)d["data-z"]=u.z;if(u.l&&(u.l.Target||"#").charAt(0)!="#")h=''+h+""}d.id=(a.id||"sjs")+"-"+f;i.push(ur("td",h,d))}var p="";return p+i.join("")+""}function a(e,r,t){var a=[];return a.join("")+""}var n='SheetJS Table Export';var i="";function s(e,r){var s=r||{};var o=s.header!=null?s.header:n;var l=s.footer!=null?s.footer:i;var c=[o];var f=wt(e["!ref"]);s.dense=Array.isArray(e);c.push(a(e,f,s));for(var u=f.s.r;u<=f.e.r;++u)c.push(t(e,f,u,s));c.push("
"+l);return c.join("")}return{to_workbook:r,to_sheet:e,_row:t,BEGIN:n,END:i,_preamble:a,from_sheet:s}}();function Bs(e,r,t){var a=t||{};if(m!=null)a.dense=m;var n=0,i=0;if(a.origin!=null){if(typeof a.origin=="number")n=a.origin;else{var s=typeof a.origin=="string"?gt(a.origin):a.origin;n=s.r;i=s.c}} -var o=r.getElementsByTagName("tr");var l=Math.min(a.sheetRows||1e7,o.length);var c={s:{r:0,c:0},e:{r:n,c:i}};if(e["!ref"]){var f=wt(e["!ref"]);c.s.r=Math.min(c.s.r,f.s.r);c.s.c=Math.min(c.s.c,f.s.c);c.e.r=Math.max(c.e.r,f.e.r);c.e.c=Math.max(c.e.c,f.e.c);if(n==-1)c.e.r=n=f.e.r+1}var u=[],h=0;var d=e["!rows"]||(e["!rows"]=[]);var p=0,v=0,g=0,b=0,w=0,y=0;if(!e["!cols"])e["!cols"]=[];for(;p1||y>1)u.push({s:{r:v+n,c:b+i},e:{r:v+n+(w||1)-1,c:b+i+(y||1)-1}});var E={t:"s",v:_};var F=S.getAttribute("data-t")||S.getAttribute("t")||"";if(_!=null){if(_.length==0)E.t=F||"z";else if(a.raw||_.trim().length==0||F=="s"){}else if(_==="TRUE")E={t:"b",v:true};else if(_==="FALSE")E={t:"b",v:false};else if(!isNaN(de(_)))E={t:"n",v:de(_)};else if(!isNaN(ve(_).getDate())){E={t:"d",v:ce(_)};if(!a.cellDates)E={t:"n",v:re(E.v)};E.z=a.dateNF||P._table[14]}}if(E.z===undefined&&C!=null)E.z=C;var T="",O=S.getElementsByTagName("A");if(O&&O.length)for(var D=0;D=l)e["!fullref"]=yt((c.e.r=o.length-p+v-1+n,c));return e}function Us(e,r){var t=r||{};var a=t.dense?[]:{};return Bs(a,e,r)}function zs(e,r){return _t(Us(e,r),r)}function Ws(e){var r="";var t=js(e);if(t)r=t(e).getPropertyValue("display");if(!r)r=e.style&&e.style.display;return r==="none"}function js(e){if(e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle==="function")return e.ownerDocument.defaultView.getComputedStyle;if(typeof getComputedStyle==="function")return getComputedStyle;return null}var $s=function(){var e=function(e){var r=e.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(//g," ").replace(//g,function(e,r){return Array(parseInt(r,10)+1).join(" ")}).replace(/]*\/>/g,"\t").replace(//g,"\n");var t=ze(r.replace(/<[^>]*>/g,""));return[t]};var r={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};return function t(a,n){var i=n||{};if(m!=null&&i.dense==null)i.dense=m;var s=xlml_normalize(a);var o=[],l;var c;var f={name:""},u="",h=0;var d;var p;var v={},g=[];var b=i.dense?[]:{};var w,y;var k={value:""};var x="",S=0,_;var C=[];var A=-1,E=-1,F={s:{r:1e6,c:1e7},e:{r:0,c:0}};var T=0;var O={};var D=[],M={},N=0,P=0;var R=[],I=1,L=1;var B=[];var U={Names:[]};var z={};var W=["",""];var j=[],$={};var H="",X=0;var V=false,G=false;var Y=0;xlmlregex.lastIndex=0;s=s.replace(//gm,"").replace(//gm,"");while(w=xlmlregex.exec(s))switch(w[3]=w[3].replace(/_.*$/,"")){case"table":;case"工作表":if(w[1]==="/"){if(F.e.c>=F.s.c&&F.e.r>=F.s.r)b["!ref"]=yt(F);else b["!ref"]="A1:A1";if(i.sheetRows>0&&i.sheetRows<=F.e.r){b["!fullref"]=b["!ref"];F.e.r=i.sheetRows-1;b["!ref"]=yt(F)}if(D.length)b["!merges"]=D;if(R.length)b["!rows"]=R;d.name=d["名称"]||d.name;if(typeof JSON!=="undefined")JSON.stringify(d);g.push(d.name);v[d.name]=b;G=false}else if(w[0].charAt(w[0].length-2)!=="/"){d=Ie(w[0],false);A=E=-1;F.s.r=F.s.c=1e7;F.e.r=F.e.c=0;b=i.dense?[]:{};D=[];R=[];G=true}break;case"table-row-group":if(w[1]==="/")--T;else++T;break;case"table-row":;case"行":if(w[1]==="/"){A+=I;I=1;break}p=Ie(w[0],false);if(p["行号"])A=p["行号"]-1;else if(A==-1)A=0;I=+p["number-rows-repeated"]||1;if(I<10)for(Y=0;Y0)R[A+Y]={level:T};E=-1;break;case"covered-table-cell":if(w[1]!=="/")++E;if(i.sheetStubs){if(i.dense){if(!b[A])b[A]=[];b[A][E]={t:"z"}}else b[bt({r:A,c:E})]={t:"z"}}x="";C=[];break;case"table-cell":;case"数据":if(w[0].charAt(w[0].length-2)==="/"){++E;k=Ie(w[0],false);L=parseInt(k["number-columns-repeated"]||"1",10);y={t:"z",v:null};if(k.formula&&i.cellFormula!=false)y.f=ods_to_csf_formula(ze(k.formula));if((k["数据类型"]||k["value-type"])=="string"){y.t="s";y.v=ze(k["string-value"]||"");if(i.dense){if(!b[A])b[A]=[];b[A][E]=y}else{b[bt({r:A,c:E})]=y}}E+=L-1}else if(w[1]!=="/"){++E;x="";S=0;C=[];L=1;var q=I?A+I-1:A;if(E>F.e.c)F.e.c=E;if(EF.e.r)F.e.r=q;k=Ie(w[0],false);j=[];$={};y={t:k["数据类型"]||k["value-type"],v:null};if(i.cellFormula){if(k.formula)k.formula=ze(k.formula);if(k["number-matrix-columns-spanned"]&&k["number-matrix-rows-spanned"]){N=parseInt(k["number-matrix-rows-spanned"],10)||0;P=parseInt(k["number-matrix-columns-spanned"],10)||0;M={s:{r:A,c:E},e:{r:A+N-1,c:E+P-1}};y.F=yt(M);B.push([M,y.F])}if(k.formula)y.f=ods_to_csf_formula(k.formula);else for(Y=0;Y=B[Y][0].s.r&&A<=B[Y][0].e.r)if(E>=B[Y][0].s.c&&E<=B[Y][0].e.c)y.F=B[Y][1]}if(k["number-columns-spanned"]||k["number-rows-spanned"]){N=parseInt(k["number-rows-spanned"],10)||0;P=parseInt(k["number-columns-spanned"],10)||0;M={s:{r:A,c:E},e:{r:A+N-1,c:E+P-1}};D.push(M)}if(k["number-columns-repeated"])L=parseInt(k["number-columns-repeated"],10);switch(y.t){case"boolean":y.t="b";y.v=Je(k["boolean-value"]);break;case"float":y.t="n";y.v=parseFloat(k.value);break;case"percentage":y.t="n";y.v=parseFloat(k.value);break;case"currency":y.t="n";y.v=parseFloat(k.value);break;case"date":y.t="d";y.v=ce(k["date-value"]);if(!i.cellDates){y.t="n";y.v=re(y.v)}y.z="m/d/yy";break;case"time":y.t="n";y.v=se(k["time-value"])/86400;if(i.cellDates){y.t="d";y.v=ie(y.v)}y.z="HH:MM:SS";break;case"number":y.t="n";y.v=parseFloat(k["数据数值"]);break;default:if(y.t==="string"||y.t==="text"||!y.t){y.t="s";if(k["string-value"]!=null){x=ze(k["string-value"]);C=[]}}else throw new Error("Unsupported value type "+y.t);}}else{V=false;if(y.t==="s"){y.v=x||"";if(C.length)y.R=C;V=S==0}if(z.Target)y.l=z;if(j.length>0){y.c=j;j=[]}if(x&&i.cellText!==false)y.w=x;if(V){y.t="z";delete y.v}if(!V||i.sheetStubs){if(!(i.sheetRows&&i.sheetRows<=A)){for(var J=0;J0)b[A+J][E+L]=ue(y)}else{b[bt({r:A+J,c:E})]=y;while(--L>0)b[bt({r:A+J,c:E+L})]=ue(y)}if(F.e.c<=E)F.e.c=E}}}L=parseInt(k["number-columns-repeated"]||"1",10);E+=L-1;L=0;y={};x="";C=[]}z={};break;case"document":;case"document-content":;case"电子表格文档":;case"spreadsheet":;case"主体":;case"scripts":;case"styles":;case"font-face-decls":;case"master-styles":if(w[1]==="/"){if((l=o.pop())[0]!==w[3])throw"Bad state: "+l}else if(w[0].charAt(w[0].length-2)!=="/")o.push([w[3],true]);break;case"annotation":if(w[1]==="/"){if((l=o.pop())[0]!==w[3])throw"Bad state: "+l;$.t=x;if(C.length)$.R=C;$.a=H;j.push($)}else if(w[0].charAt(w[0].length-2)!=="/"){o.push([w[3],false])}H="";X=0;x="";S=0;C=[];break;case"creator":if(w[1]==="/"){H=s.slice(X,w.index)}else X=w.index+w[0].length;break;case"meta":;case"元数据":;case"settings":;case"config-item-set":;case"config-item-map-indexed":;case"config-item-map-entry":;case"config-item-map-named":;case"shapes":;case"frame":;case"text-box":;case"image":;case"data-pilot-tables":;case"list-style":;case"form":;case"dde-links":;case"event-listeners":;case"chart":if(w[1]==="/"){if((l=o.pop())[0]!==w[3])throw"Bad state: "+l}else if(w[0].charAt(w[0].length-2)!=="/")o.push([w[3],false]);x="";S=0;C=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":;case"percentage-style":;case"date-style":;case"time-style":if(w[1]==="/"){O[f.name]=u;if((l=o.pop())[0]!==w[3])throw"Bad state: "+l}else if(w[0].charAt(w[0].length-2)!=="/"){u="";f=Ie(w[0],false);o.push([w[3],true])}break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":;case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(o[o.length-1][0]){case"time-style":;case"date-style":c=Ie(w[0],false);u+=r[w[3]][c.style==="long"?1:0];break;}break;case"fraction":break;case"day":;case"month":;case"year":;case"era":;case"day-of-week":;case"week-of-year":;case"quarter":;case"hours":;case"minutes":;case"seconds":;case"am-pm":switch(o[o.length-1][0]){case"time-style":;case"date-style":c=Ie(w[0],false);u+=r[w[3]][c.style==="long"?1:0];break;}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(w[0].slice(-2)==="/>")break;else if(w[1]==="/")switch(o[o.length-1][0]){case"number-style":;case"date-style":;case"time-style":u+=s.slice(h,w.index);break;}else h=w.index+w[0].length;break;case"named-range":c=Ie(w[0],false);W=ods_to_csf_3D(c["cell-range-address"]);var K={Name:c.name,Ref:W[0]+"!"+W[1]};if(G)K.Sheet=g.length;U.Names.push(K);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":;case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":;case"文本串":if(["master-styles"].indexOf(o[o.length-1][0])>-1)break;if(w[1]==="/"&&(!k||!k["string-value"])){var Z=e(s.slice(S,w.index),_);x=(x.length>0?x+"\n":"")+Z[0]}else{_=Ie(w[0],false);S=w.index+w[0].length}break;case"s":break;case"database-range":if(w[1]==="/")break;try{W=ods_to_csf_3D(Ie(w[0])["target-range-address"]);v[W[0]]["!autofilter"]={ref:W[1]}}catch(Q){}break;case"date":break;case"object":break;case"title":;case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":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"print-date":;case"generator":;case"document-statistic":;case"user-defined":;case"editing-duration":;case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":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":if(w[1]!=="/"){z=Ie(w[0],false);if(!z.href)break;z.Target=ze(z.href);delete z.href;if(z.Target.charAt(0)=="#"&&z.Target.indexOf(".")>-1){W=ods_to_csf_3D(z.Target.slice(1));z.Target="#"+W[0]+"!"+W[1]}else if(z.Target.match(/^\.\.[\\\/]/))z.Target=z.Target.slice(3)}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(w[2]){case"dc:":;case"calcext:":;case"loext:":;case"ooo:":;case"chartooo:":;case"draw:":;case"style:":;case"chart:":;case"form:":;case"uof:":;case"表:":;case"字:":break;default:if(i.WTF)throw new Error(w);};}var ee={Sheets:v,SheetNames:g,Workbook:U};if(i.bookSheets)delete ee.Sheets;return ee}}();function Hs(e,r){r=r||{};if(ke(e,"META-INF/manifest.xml"))parse_manifest(Se(e,"META-INF/manifest.xml"),r);var t=_e(e,"content.xml");if(!t)throw new Error("Missing content.xml in ODS / UOF file");var a=$s(Ke(t),r);if(ke(e,"meta.xml"))a.Props=pa(Se(e,"meta.xml"));return a}function Xs(e,r){return $s(e,r)}var Vs=function(){var e=["",'',"",'',"",'',"",""].join("");var r=""+e+"";return function t(){return De+r}}();var Gs=function(){var e=function(e){return $e(e).replace(/ +/g,function(e){return''}).replace(/\t/g,"").replace(/\n/g,"").replace(/^ /,"").replace(/ $/,"")};var r=" \n";var t=" \n";var a=function(a,n,i){var s=[];s.push(' \n');var o=0,l=0,c=wt(a["!ref"]||"A1");var f=a["!merges"]||[],u=0;var h=Array.isArray(a);if(a["!cols"]){for(l=0;l<=c.e.c;++l)s.push(" \n")}var d="",p=a["!rows"]||[];for(o=0;o\n")}for(;o<=c.e.r;++o){d=p[o]?' table:style-name="ro'+p[o].ods+'"':"";s.push(" \n");for(l=0;ll)continue;if(f[u].s.r>o)continue;if(f[u].e.c\n")}s.push(" \n");return s.join("")};var n=function(e,r){e.push(" \n");e.push(' \n');e.push(' \n');e.push(" /\n");e.push(' \n');e.push(" /\n");e.push(" \n");e.push(" \n");var t=0;r.SheetNames.map(function(e){return r.Sheets[e]}).forEach(function(r){if(!r)return;if(r["!cols"]){for(var a=0;a\n');e.push(' \n');e.push(" \n");++t}}});var a=0;r.SheetNames.map(function(e){return r.Sheets[e]}).forEach(function(r){if(!r)return;if(r["!rows"]){for(var t=0;t\n');e.push(' \n');e.push(" \n");++a}}});e.push(' \n');e.push(' \n');e.push(" \n");e.push(' \n');e.push(" \n")};return function i(e,r){var t=[De];var i=fr({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text: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:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"});var s=fr({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});if(r.bookType=="fods"){t.push("\n");t.push(write_meta_ods().replace(/office:document-meta/g,"office:meta"))}else t.push("\n");n(t,e);t.push(" \n");t.push(" \n");for(var o=0;o!=e.SheetNames.length;++o)t.push(a(e.Sheets[e.SheetNames[o]],e,o,r));t.push(" \n");t.push(" \n");if(r.bookType=="fods")t.push("");else t.push("");return t.join("")}}();function Ys(e,r){if(r.bookType=="fods")return Gs(e,r);var t=Fe();var a="";var n=[];var i=[];a="mimetype";Ee(t,a,"application/vnd.oasis.opendocument.spreadsheet");a="content.xml";Ee(t,a,Gs(e,r));n.push([a,"text/xml"]);i.push([a,"ContentFile"]);a="styles.xml";Ee(t,a,Vs(e,r));n.push([a,"text/xml"]);i.push([a,"StylesFile"]);a="meta.xml";Ee(t,a,De+write_meta_ods());n.push([a,"text/xml"]);i.push([a,"MetadataFile"]);a="manifest.rdf";Ee(t,a,write_rdf(i));n.push([a,"application/rdf+xml"]);a="META-INF/manifest.xml";Ee(t,a,write_manifest(n));return t}var qs=!Object.defineProperty?void 0:function(){var e=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var t=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var n=function(r){return e(r,"__esModule",{value:true})};var i=function(r,t){for(var a in t)e(r,a,{get:t[a],enumerable:true})};var s=function(n,i,s,o){if(i&&typeof i==="object"||typeof i==="function")for(var l=t(i),c=0,f=l.length,u;c>1&1431655765;e=(e&858993459)+(e>>2&858993459);return(e+(e>>4)&252645135)*16843009>>>24};var d=function(e,r){var t=(e[r+15]&127)<<7|e[r+14]>>1;var a=e[r+14]&1;for(var n=r+13;n>=r;--n)a=a*256+e[n];return(e[r+15]&128?-a:a)*Math.pow(10,t-6176)};function p(e,r){var t=r?r[0]:0;var a=e[t]&127;e:if(e[t++]>=128){a|=(e[t]&127)<<7;if(e[t++]<128)break e;a|=(e[t]&127)<<14;if(e[t++]<128)break e;a|=(e[t]&127)<<21;if(e[t++]<128)break e;a+=(e[t]&127)*Math.pow(2,28);++t;if(e[t++]<128)break e;a+=(e[t]&127)*Math.pow(2,35);++t;if(e[t++]<128)break e;a+=(e[t]&127)*Math.pow(2,42);++t;if(e[t++]<128)break e}if(r)r[0]=t;return a}function v(e){var r=0,t=e[r]&127;e:if(e[r++]>=128){t|=(e[r]&127)<<7;if(e[r++]<128)break e;t|=(e[r]&127)<<14;if(e[r++]<128)break e;t|=(e[r]&127)<<21;if(e[r++]<128)break e;t|=(e[r]&127)<<28}return t}function m(e){var r=[],t=[0];while(t[0]=128);o=e.slice(l,t[0])}break;case 5:s=4;o=e.slice(t[0],t[0]+s);t[0]+=s;break;case 1:s=8;o=e.slice(t[0],t[0]+s);t[0]+=s;break;case 2:s=p(e,t);o=e.slice(t[0],t[0]+s);t[0]+=s;break;case 3:;case 4:;default:throw new Error("PB Type ".concat(i," for Field ").concat(n," at offset ").concat(a));}var c={offset:a,data:o,type:i};if(r[n]==null)r[n]=[c];else r[n].push(c)}return r}function g(e,r){if(!e)return[];return e.map(function(e){var t;try{return r(e.data)}catch(a){var n=(t=a.message)==null?void 0:t.match(/at offset (\d+)/);if(n)a.message=a.message.replace(/at offset (\d+)/,"at offset "+(+n[1]+e.offset));throw a}})}function b(e){var r=[];var t=0;while(t>2;if(s<60)++s;else{var o=s-59;s=r[t[0]];if(o>1)s|=r[t[0]+1]<<8;if(o>2)s|=r[t[0]+2]<<16;if(o>3)s|=r[t[0]+3]<<24;s>>>=0;s++;t[0]+=o}n.push(r.slice(t[0],t[0]+s));t[0]+=s;continue}else{var l=0,c=0;if(i==1){c=(r[t[0]]>>2&7)+4;l=(r[t[0]++]&224)<<3;l|=r[t[0]++]}else{c=(r[t[0]++]>>2)+1;if(i==2){l=r[t[0]]|r[t[0]+1]<<8;t[0]+=2}else{l=(r[t[0]]|r[t[0]+1]<<8|r[t[0]+2]<<16|r[t[0]+3]<<24)>>>0;t[0]+=4}}n=[u(n)];if(l==0)throw new Error("Invalid offset 0");if(l>n[0].length)throw new Error("Invalid offset beyond length");if(c>=l){n.push(n[0].slice(-l));c-=l;while(c>=n[n.length-1].length){n.push(n[n.length-1]);c-=n[n.length-1].length}}n.push(n[0].slice(-l,-l+c))}}var f=u(n);if(f.length!=a)throw new Error("Unexpected length: ".concat(f.length," != ").concat(a));return f}function y(e){var r=[],t=[0];while(t[0]0};break;case 7:d={t:"n",v:f};break;case 8:d={t:"e",v:0};break;case 9:{if(o>-1)d={t:"s",v:t[o]};else if(l>-1)d={t:"s",v:r[l]};else if(!isNaN(f))d={t:"n",v:f};else throw new Error("Unsupported cell type ".concat(e.slice(0,4)))}break;default:throw new Error("Unsupported cell type ".concat(e.slice(0,4)));}return d}function x(e,r,t){var a=c(e);var n=e[1];var i=a.getUint32(8,true);var s=12;var o=-1,l=-1,f=NaN,u=NaN,h=new Date(2001,0,1);if(i&1){f=d(e,s);s+=16}if(i&2){u=a.getFloat64(s,true);s+=8}if(i&4){h.setTime(h.getTime()+a.getFloat64(s,true)*1e3);s+=8}if(i&8){l=a.getUint32(s,true);s+=4}if(i&16){o=a.getUint32(s,true);s+=4}var p;switch(n){case 0:break;case 2:p={t:"n",v:f};break;case 3:p={t:"s",v:r[l]};break;case 5:p={t:"d",v:h};break;case 6:p={t:"b",v:u>0};break;case 7:p={t:"n",v:u};break;case 8:p={t:"e",v:0};break;case 9:{if(o>-1)p={t:"s",v:t[o]};else throw new Error("Unsupported cell type ".concat(n," : ").concat(i&31," : ").concat(e.slice(0,4)))}break;case 10:p={t:"n",v:f};break;default:throw new Error("Unsupported cell type ".concat(n," : ").concat(i&31," : ").concat(e.slice(0,4)));}return p}function S(e,r,t){switch(e[0]){case 3:;case 4:return k(e,r,t);case 5:return x(e,r,t);default:throw new Error("Unsupported payload version ".concat(e[0]));}}var _=function(e){var r="";for(++e;e;e=Math.floor((e-1)/26))r=String.fromCharCode((e-1)%26+65)+r;return r};var C=function(e){return"".concat(_(e.c)).concat(e.r+1)};var A=function(e){return C(e.s)+":"+C(e.e)};var F=function(){return{Sheets:{},SheetNames:[]}};var T=function(e,r,t){if(!t)for(var a=1;a<9999;++a){if(e.SheetNames.indexOf(t="Sheet ".concat(a))==-1)break}else if(e.SheetNames.indexOf(t)>-1)for(var a=1;a<9999;++a){if(e.SheetNames.indexOf("".concat(t,"_").concat(a))==-1){t="".concat(t,"_").concat(a);break}}e.SheetNames.push(t);e.Sheets[t]=r};function O(e){var r=[];e.FullPaths.forEach(function(e){if(e.match(/\.iwpv2/))throw new Error("Unsupported password protection")});e.FileIndex.forEach(function(e){if(!e.name.match(/\.iwa$/))return;var t;try{t=b(e.content)}catch(a){return console.log("?? "+e.content.length+" "+(a.message||a))}var n;try{n=y(t)}catch(a){return console.log("## "+(a.message||a))}n.forEach(function(e){r[+e.id]=e.messages})});if(!r.length)throw new Error("File has no messages");var t;r.forEach(function(e){e.forEach(function(e){var r=v(e.meta[1][0].data)>>>0;if(r==1){if(!t)t=e;else throw new Error("Document has multiple roots")}})});if(!t)throw new Error("Cannot find Document root");return U(r,t)}var D=O;function M(e){var r=m(e);return p(r[1][0].data)}function N(e,r){var t=m(r.data);var a=v(t[1][0].data);var n=t[3];var i=[];(n||[]).forEach(function(r){var t=m(r.data);var n=v(t[1][0].data)>>>0;switch(a){case 1:i[n]=f(t[3][0].data);break;case 8:{var s=e[M(t[9][0].data)][0];var o=m(s.data);var l=e[M(o[1][0].data)][0];var c=v(l.meta[1][0].data);if(c!=2001)throw new Error("2000 unexpected reference to ".concat(c));var u=m(l.data);i[n]=u[3].map(function(e){return f(e.data)}).join("")}break;}});return i}function P(e){var r,t,a,n,i,s,o,l,f,u;var h=m(e);var d=v(h[1][0].data)>>>0;var p=(t=(r=h[3])==null?void 0:r[0])==null?void 0:t.data;var g=((n=(a=h[4])==null?void 0:a[0])==null?void 0:n.data)&&c(h[4][0].data);var b=(s=(i=h[6])==null?void 0:i[0])==null?void 0:s.data;var w=((l=(o=h[7])==null?void 0:o[0])==null?void 0:l.data)&&c(h[7][0].data);var y=((u=(f=h[8])==null?void 0:f[0])==null?void 0:u.data)&&v(h[8][0].data)>0||false;var k=y?4:1;var x=[];var S=0;for(var _=0;_>>0)-1;if(i.e.c<0)throw new Error("Invalid col varint ".concat(n[7][0].data));t["!ref"]=A(i);{var s=m(n[4][0].data);var o=N(e,e[M(s[4][0].data)][0]);var l=((a=s[17])==null?void 0:a[0])?N(e,e[M(s[17][0].data)][0]):[];{var c=m(s[3][0].data);var f=[];c[1].forEach(function(r){var t=m(r.data);var a=e[M(t[2][0].data)][0];var n=v(a.meta[1][0].data);if(n!=6002)throw new Error("6001 unexpected reference to ".concat(n));f.push({id:v(t[1][0].data),ref:R(e,a)})});f.forEach(function(e){e.ref.forEach(function(e,r){e.forEach(function(e,a){var n=C({r:r,c:a});var i=S(e,o,l);if(i)t[n]=i})})})}}}function L(e,r){var t=m(r.data);var a={"!ref":"A1"};var n=e[M(t[2][0].data)];var i=v(n[0].meta[1][0].data);if(i!=6001)throw new Error("6000 unexpected reference to ".concat(i));I(e,n[0],a);return a}function B(e,r){var t;var a=m(r.data);var n={name:((t=a[1])==null?void 0:t[0])?f(a[1][0].data):"",sheets:[]};var i=g(a[2],M);i.forEach(function(r){e[r].forEach(function(r){var t=v(r.meta[1][0].data);if(t==6e3)n.sheets.push(L(e,r))})});return n}function U(e,r){var t=F();var a=m(r.data);var n=g(a[1],M);n.forEach(function(r){e[r].forEach(function(r){var a=v(r.meta[1][0].data);if(a==2){var n=B(e,r);n.sheets.forEach(function(e){T(t,e,n.name); -})}})});if(t.SheetNames.length==0)throw new Error("Empty NUMBERS file");return t}return o(l)}();function Js(e){return function r(t){for(var a=0;a!=e.length;++a){var n=e[a];if(t[n[0]]===undefined)t[n[0]]=n[1];if(n[2]==="n")t[n[0]]=Number(t[n[0]])}}}var Ks=function(e){Js([["cellNF",false],["cellHTML",true],["cellFormula",true],["cellStyles",false],["cellText",true],["cellDates",false],["sheetStubs",false],["sheetRows",0,"n"],["bookDeps",false],["bookSheets",false],["bookProps",false],["bookFiles",false],["bookVBA",false],["password",""],["WTF",false]])(e)};var Zs=Js([["cellDates",false],["bookSST",false],["bookType","xlsx"],["compression",false],["WTF",false]]);function Qs(e){if(ia.WS.indexOf(e)>-1)return"sheet";if(ia.CS&&e==ia.CS)return"chart";if(ia.DS&&e==ia.DS)return"dialog";if(ia.MS&&e==ia.MS)return"macro";return e&&e.length?e:"sheet"}function eo(e,r){if(!e)return 0;try{e=r.map(function a(r){if(!r.id)r.id=r.strRelID;return[r.name,e["!id"][r.id].Target,Qs(e["!id"][r.id].Type)]})}catch(t){return null}return!e||e.length===0?null:e}function ro(e,r,t,a,n,i,s,o,l,c,f,u){try{i[a]=oa(_e(e,t,true),r);var h=Se(e,r);var d;switch(o){case"sheet":d=ks(h,r,n,l,i[a],c,f,u);break;case"chart":d=xs(h,r,n,l,i[a],c,f,u);if(!d||!d["!drawel"])break;var p=Oe(d["!drawel"].Target,r);var v=sa(p);var m=Un(_e(e,p,true),oa(_e(e,v,true),p));var g=Oe(m,p);var b=sa(g);d=Ki(_e(e,g,true),g,l,oa(_e(e,b,true),g),c,d);break;case"macro":d=Ss(h,r,n,l,i[a],c,f,u);break;case"dialog":d=_s(h,r,n,l,i[a],c,f,u);break;default:throw new Error("Unrecognized sheet type "+o);}s[a]=d;var w=[];if(i&&i[a])q(i[a]).forEach(function(t){if(i[a][t].Type==ia.CMNT){var n=Oe(i[a][t].Target,r);w=Fs(Se(e,n,true),n,l);if(!w||!w.length)return;jn(d,w)}})}catch(y){if(l.WTF)throw y}}function to(e){return e.charAt(0)=="/"?e.slice(1):e}function ao(e,r){R(P);r=r||{};Ks(r);if(ke(e,"META-INF/manifest.xml"))return Hs(e,r);if(ke(e,"objectdata.xml"))return Hs(e,r);if(ke(e,"Index/Document.iwa")){if(typeof Uint8Array=="undefined")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof qs!="undefined"){if(e.FileIndex)return qs.parse_numbers(e);var t=H.utils.cfb_new();Ae(e).forEach(function(r){Ee(t,r,Ce(e,r))});return qs.parse_numbers(t)}throw new Error("Unsupported NUMBERS file")}if(!ke(e,"[Content_Types].xml")){if(ke(e,"index.xml.gz"))throw new Error("Unsupported NUMBERS 08 file");if(ke(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Error("Unsupported ZIP file")}var a=Ae(e);var n=ra(_e(e,"[Content_Types].xml"));var i=false;var s,o;if(n.workbooks.length===0){o="xl/workbook.xml";if(Se(e,o,true))n.workbooks.push(o)}if(n.workbooks.length===0){o="xl/workbook.bin";if(!Se(e,o,true))throw new Error("Could not find workbook");n.workbooks.push(o);i=true}if(n.workbooks[0].slice(-3)=="bin")i=true;var l={};var c={};if(!r.bookSheets&&!r.bookProps){oi=[];if(n.sst)try{oi=Es(Se(e,to(n.sst)),n.sst,r)}catch(f){if(r.WTF)throw f}if(r.cellStyles&&n.themes.length)l=As(_e(e,n.themes[0].replace(/^\//,""),true)||"",n.themes[0],r);if(n.style)c=Cs(Se(e,to(n.style)),n.style,l,r)}n.links.map(function(t){try{var a=oa(_e(e,sa(to(t))),t);return Os(Se(e,to(t)),a,t,r)}catch(n){}});var u=ys(Se(e,to(n.workbooks[0])),n.workbooks[0],r);var h={},d="";if(n.coreprops.length){d=Se(e,to(n.coreprops[0]),true);if(d)h=pa(d);if(n.extprops.length!==0){d=Se(e,to(n.extprops[0]),true);if(d)ka(d,h,r)}}var p={};if(!r.bookSheets||r.bookProps){if(n.custprops.length!==0){d=_e(e,to(n.custprops[0]),true);if(d)p=Ca(d,r)}}var v={};if(r.bookSheets||r.bookProps){if(u.Sheets)s=u.Sheets.map(function D(e){return e.name});else if(h.Worksheets&&h.SheetNames.length>0)s=h.SheetNames;if(r.bookProps){v.Props=h;v.Custprops=p}if(r.bookSheets&&typeof s!=="undefined")v.SheetNames=s;if(r.bookSheets?v.SheetNames:r.bookProps)return v}s={};var m={};if(r.bookDeps&&n.calcchain)m=Ts(Se(e,to(n.calcchain)),n.calcchain,r);var g=0;var b={};var w,y;{var k=u.Sheets;h.Worksheets=k.length;h.SheetNames=[];for(var x=0;x!=k.length;++x){h.SheetNames[x]=k[x].name}}var S=i?"bin":"xml";var _=n.workbooks[0].lastIndexOf("/");var C=(n.workbooks[0].slice(0,_+1)+"_rels/"+n.workbooks[0].slice(_+1)+".rels").replace(/^\//,"");if(!ke(e,C))C="xl/_rels/workbook."+S+".rels";var A=oa(_e(e,C,true),C);if(A)A=eo(A,u.Sheets);var E=Se(e,"xl/worksheets/sheet.xml",true)?1:0;e:for(g=0;g!=h.Worksheets;++g){var F="sheet";if(A&&A[g]){w="xl/"+A[g][1].replace(/[\/]?xl\//,"");if(!ke(e,w))w=A[g][1];if(!ke(e,w))w=C.replace(/_rels\/.*$/,"")+A[g][1];F=A[g][2]}else{w="xl/worksheets/sheet"+(g+1-E)+"."+S;w=w.replace(/sheet0\./,"sheet.")}y=w.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels");if(r&&r.sheets!=null)switch(typeof r.sheets){case"number":if(g!=r.sheets)continue e;break;case"string":if(h.SheetNames[g].toLowerCase()!=r.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(r.sheets)){var T=false;for(var O=0;O!=r.sheets.length;++O){if(typeof r.sheets[O]=="number"&&r.sheets[O]==g)T=1;if(typeof r.sheets[O]=="string"&&r.sheets[O].toLowerCase()==h.SheetNames[g].toLowerCase())T=1}if(!T)continue e};}ro(e,w,y,h.SheetNames[g],g,b,s,F,r,u,l,c)}v={Directory:n,Workbook:u,Props:h,Custprops:p,Deps:m,Sheets:s,SheetNames:h.SheetNames,Strings:oi,Styles:c,Themes:l,SSF:P.get_table()};if(r&&r.bookFiles){if(e.files){v.keys=a;v.files=e.files}else{v.keys=[];v.files={};e.FullPaths.forEach(function(r,t){r=r.replace(/^Root Entry[\/]/,"");v.keys.push(r);v.files[r]=e.FileIndex[t]})}}if(r&&r.bookVBA){if(n.vba.length>0)v.vbaraw=Se(e,to(n.vba[0]),true);else if(n.defaults&&n.defaults.bin===Vn)v.vbaraw=Se(e,"xl/vbaProject.bin",true)}return v}function no(e,r){var t=r||{};var a="Workbook",n=H.find(e,a);try{a="/!DataSpaces/Version";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);parse_DataSpaceVersionInfo(n.content);a="/!DataSpaces/DataSpaceMap";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var i=parse_DataSpaceMap(n.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var s=parse_DataSpaceDefinition(n.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);parse_Primary(n.content)}catch(o){}a="/EncryptionInfo";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var l=parse_EncryptionInfo(n.content);a="/EncryptedPackage";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);if(l[0]==4&&typeof decrypt_agile!=="undefined")return decrypt_agile(l[1],n.content,t.password||"",t);if(l[0]==2&&typeof decrypt_std76!=="undefined")return decrypt_std76(l[1],n.content,t.password||"",t);throw new Error("File is password-protected")}function io(e,r){if(r.bookType=="ods")return Ys(e,r);return so(e,r)}function so(e,r){zn=1024;if(e&&!e.SSF){e.SSF=P.get_table()}if(e&&e.SSF){R(P);P.load_table(e.SSF);r.revssf=Z(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(ci)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t=r.bookType=="xlsb"?"bin":"xml";var a=qn.indexOf(r.bookType)>-1;var n=ea();Zs(r=r||{});var i=Fe();var s="",o=0;r.cellXfs=[];di(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";Ee(i,s,ga(e.Props,r));n.coreprops.push(s);ua(r.rels,2,s,ia.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var l=[];for(var c=0;c0){s="docProps/custom.xml";Ee(i,s,Ea(e.Custprops,r));n.custprops.push(s);ua(r.rels,4,s,ia.CUST_PROPS)}for(o=1;o<=e.SheetNames.length;++o){var f={"!id":{}};var u=e.Sheets[e.SheetNames[o-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+o+"."+t;Ee(i,s,Ms(o-1,s,r,e,f));n.sheets.push(s);ua(r.wbrels,-1,"worksheets/sheet"+o+"."+t,ia.WS[0]);}if(u){var d=u["!comments"];var p=false;if(d&&d.length>0){var v="xl/comments"+o+"."+t;Ee(i,v,Is(d,v,r));n.comments.push(v);ua(f,-1,"../comments"+o+"."+t,ia.CMNT);p=true}if(u["!legacy"]){if(p)Ee(i,"xl/drawings/vmlDrawing"+o+".vml",Wn(o,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(f["!id"].rId1)Ee(i,sa(s),ca(f))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;Ee(i,s,Rs(r.Strings,s,r));n.strs.push(s);ua(r.wbrels,-1,"sharedStrings."+t,ia.SST)}s="xl/workbook."+t;Ee(i,s,Ds(e,s,r));n.workbooks.push(s);ua(r.rels,1,s,ia.WB);s="xl/theme/theme1.xml";Ee(i,s,In(e.Themes,r));n.themes.push(s);ua(r.wbrels,-1,"theme/theme1.xml",ia.THEME);s="xl/styles."+t;Ee(i,s,Ps(e,s,r));n.styles.push(s);ua(r.wbrels,-1,"styles."+t,ia.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";Ee(i,s,e.vbaraw);n.vba.push(s);ua(r.wbrels,-1,"vbaProject.bin",ia.VBA)}Ee(i,"[Content_Types].xml",na(n,r));Ee(i,"_rels/.rels",ca(r.rels));Ee(i,"xl/_rels/workbook."+t+".rels",ca(r.wbrels));delete r.revssf;delete r.ssf;return i}function oo(e,r){zn=1024;if(e&&!e.SSF){e.SSF=P.get_table()}if(e&&e.SSF){R(P);P.load_table(e.SSF);r.revssf=Z(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(ci)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t="xml";var a=qn.indexOf(r.bookType)>-1;var n=ea();Zs(r=r||{});var i=Fe();var s="",o=0;r.cellXfs=[];di(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";Ee(i,s,ga(e.Props,r));n.coreprops.push(s);ua(r.rels,2,s,ia.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var l=[];for(var c=0;c0){s="docProps/custom.xml";Ee(i,s,Ea(e.Custprops,r));n.custprops.push(s);ua(r.rels,4,s,ia.CUST_PROPS)}for(o=1;o<=e.SheetNames.length;++o){var f={"!id":{}};var u=e.Sheets[e.SheetNames[o-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+o+"."+t;Ee(i,s,qi(o-1,r,e,f));n.sheets.push(s);ua(r.wbrels,-1,"worksheets/sheet"+o+"."+t,ia.WS[0]);}if(u){var d=u["!comments"];var p=false;if(d&&d.length>0){var v="xl/comments"+o+"."+t;Ee(i,v,Xn(d,r));n.comments.push(v);ua(f,-1,"../comments"+o+"."+t,ia.CMNT);p=true}if(u["!legacy"]){if(p)Ee(i,"xl/drawings/vmlDrawing"+o+".vml",Wn(o,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(f["!id"].rId1)Ee(i,sa(s),ca(f))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;Ee(i,s,Va(r.Strings,r));n.strs.push(s);ua(r.wbrels,-1,"sharedStrings."+t,ia.SST)}s="xl/workbook."+t;Ee(i,s,ws(e,r));n.workbooks.push(s);ua(r.rels,1,s,ia.WB);s="xl/theme/theme1.xml";Ee(i,s,In(e.Themes,r));n.themes.push(s);ua(r.wbrels,-1,"theme/theme1.xml",ia.THEME);s="xl/styles."+t;Ee(i,s,Cn(e,r));n.styles.push(s);ua(r.wbrels,-1,"styles."+t,ia.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";Ee(i,s,e.vbaraw);n.vba.push(s);ua(r.wbrels,-1,"vbaProject.bin",ia.VBA)}Ee(i,"[Content_Types].xml",na(n,r));Ee(i,"_rels/.rels",ca(r.rels));Ee(i,"xl/_rels/workbook."+t+".rels",ca(r.wbrels));delete r.revssf;delete r.ssf;return i}function lo(e,r){var t="";switch((r||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":t=b.decode(e.slice(0,12));break;case"binary":t=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(r&&r.type||"undefined"));}return[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3),t.charCodeAt(4),t.charCodeAt(5),t.charCodeAt(6),t.charCodeAt(7)]}function co(e,r){if(H.find(e,"EncryptedPackage"))return no(e,r);return parse_xlscfb(e,r)}function fo(e,r){var t,a=e;var n=r||{};if(!n.type)n.type=w&&Buffer.isBuffer(e)?"buffer":"base64";t=Te(a,n);return ao(t,n)}function uo(e,r){var t=0;e:while(t=2&&n[3]===0)return WK_.to_workbook(a,t);if(n[2]===0&&(n[3]===8||n[3]===9))return WK_.to_workbook(a,t)}break;case 3:;case 131:;case 139:;case 140:return Fa.to_workbook(a,t);case 123:if(n[1]===92&&n[2]===114&&n[3]===116)return RTF.to_workbook(a,t);break;case 10:;case 13:;case 32:return ho(a,t);case 137:if(n[1]===80&&n[2]===78&&n[3]===71)throw new Error("PNG Image File is not a spreadsheet");break;}if(Fa.versions.indexOf(n[0])>-1&&n[2]<=12&&n[3]<=31)return Fa.to_workbook(a,t);return mo(e,a,t,i)}function bo(e,r){var t=r||{};t.type="file";return go(e,t)}function wo(e){return function r(t,a){var n=0;if(a.sheet){if(typeof a.sheet=="number")n=a.sheet;else n=t.SheetNames.indexOf(a.sheet);if(!t.SheetNames[n])throw new Error("Sheet not found: "+a.sheet+" : "+typeof a.sheet)}return e.from_sheet(t.Sheets[t.SheetNames[n]],a,t)}}var yo=wo(Ls);var ko=wo({from_sheet:Yo});var xo=wo(typeof Ta!=="undefined"?Ta:{});var So=wo(typeof Oa!=="undefined"?Oa:{});var _o=wo(typeof Ma!=="undefined"?Ma:{});var Co=wo(typeof RTF!=="undefined"?RTF:{});var Ao=wo({from_sheet:qo});var Eo=wo(typeof Fa!=="undefined"?Fa:{});var Fo=wo(typeof Da!=="undefined"?Da:{});var To=wo(typeof WK_!=="undefined"?{from_sheet:WK_.sheet_to_wk1}:{});function Oo(e,r){switch(r.type){case"base64":;case"binary":break;case"buffer":;case"array":r.type="";break;case"file":return G(r.file,H.write(e,{type:w?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");default:throw new Error("Unrecognized type "+r.type);}return H.write(e,r)}function Do(e,r){var t=ue(r||{});var a=io(e,t);return No(a,t)}function Mo(e,r){var t=ue(r||{});var a=oo(e,t);return No(a,t)}function No(e,r){var t={};if(r.compression)t.compression="DEFLATE";if(r.password)t.type=w?"nodebuffer":"string";else switch(r.type){case"base64":t.type="base64";break;case"binary":t.type="string";break;case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");case"buffer":;case"file":t.type=w?"nodebuffer":"string";break;default:throw new Error("Unrecognized type "+r.type);}var a=e.FullPaths?H.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[t.type]||t.type,compression:!!r.compression}):e.generate(t);if(typeof Deno!=="undefined"){if(typeof a=="string"){if(r.type=="binary"||r.type=="base64")return a;a=new Uint8Array(A(a))}}if(r.password&&typeof encrypt_agile!=="undefined")return Oo(encrypt_agile(a,r.password),r);if(r.type==="file")return G(r.file,a);return r.type=="string"?Ke(a):a}function Po(e,r){var t=r||{};var a=write_xlscfb(e,t);return Oo(a,t)}function Ro(e,r,t){if(!t)t="";var a=t+e;switch(r.type){case"base64":return b.encode(Ze(a));case"binary":return Ze(a);case"string":return e;case"file":return G(r.file,a,"utf8");case"buffer":{if(w)return y(a,"utf8");else if(typeof TextEncoder!=="undefined")return(new TextEncoder).encode(a);else return Ro(a,{type:"binary"}).split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function Io(e,r){switch(r.type){case"base64":return b.encode(e);case"binary":return e;case"string":return e;case"file":return G(r.file,e,"binary");case"buffer":{if(w)return y(e,"binary");else return e.split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function Lo(e,r){switch(r.type){case"string":;case"base64":;case"binary":var t="";for(var a=0;a0)n=0;var u=ct(l.s.r);var h=[];var d=[];var p=0,v=0;var m=Array.isArray(e);var g=l.s.r,b=0,w=0;if(m&&!e[g])e[g]=[];for(b=l.s.c;b<=l.e.c;++b){h[b]=dt(b);t=m?e[g][b]:e[h[b]+u];switch(a){case 1:i[b]=b-l.s.c;break;case 2:i[b]=h[b];break;case 3:i[b]=c.header[b-l.s.c];break;default:if(t==null)t={w:"__EMPTY",t:"s"};o=s=St(t,null,c);v=0;for(w=0;w=0)f='"'+f.replace(Vo,'""')+'"'}else f="";c.push(f)}if(o.blankrows===false&&l)return null;return c.join(s)}function Yo(e,r){var t=[];var a=r==null?{}:r;if(e==null||e["!ref"]==null)return"";var n=kt(e["!ref"]);var i=a.FS!==undefined?a.FS:",",s=i.charCodeAt(0);var o=a.RS!==undefined?a.RS:"\n",l=o.charCodeAt(0);var c=new RegExp((i=="|"?"\\|":i)+"+$");var f="",u=[];a.dense=Array.isArray(e);var h=a.skipHidden&&e["!cols"]||[];var d=a.skipHidden&&e["!rows"]||[];for(var p=n.s.c;p<=n.e.c;++p)if(!(h[p]||{}).hidden)u[p]=dt(p);for(var v=n.s.r;v<=n.e.r;++v){if((d[v]||{}).hidden)continue;f=Go(e,n,v,u,s,l,i,a);if(f==null){continue}if(a.strip)f=f.replace(c,"");t.push(f+o)}delete a.dense;return t.join("")}function qo(e,r){if(!r)r={};r.FS="\t";r.RS="\n";var t=Yo(e,r);if(typeof cptable=="undefined"||r.type=="string")return t;var a=cptable.utils.encode(1200,t,"str");return String.fromCharCode(255)+String.fromCharCode(254)+a}function Jo(e){var r="",t,a="";if(e==null||e["!ref"]==null)return[];var n=kt(e["!ref"]),i="",s=[],o;var l=[];var c=Array.isArray(e);for(o=n.s.c;o<=n.e.c;++o)s[o]=dt(o);for(var f=n.s.r;f<=n.e.r;++f){i=ct(f);for(o=n.s.c;o<=n.e.c;++o){r=s[o]+i;t=c?(e[f]||[])[o]:e[r];a="";if(t===undefined)continue;else if(t.F!=null){r=t.F;if(!t.f)continue;a=t.f;if(r.indexOf(":")==-1)r=r+":"+r}if(t.f!=null)a=t.f;else if(t.t=="z")continue;else if(t.t=="n"&&t.v!=null)a=""+t.v;else if(t.t=="b")a=t.v?"TRUE":"FALSE";else if(t.w!==undefined)a="'"+t.w;else if(t.v===undefined)continue;else if(t.t=="s")a="'"+t.v;else a=""+t.v;l[l.length]=r+"="+a}}return l}function Ko(e,r,t){var a=t||{};var n=+!a.skipHeader;var i=e||{};var s=0,o=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var l=typeof a.origin=="string"?gt(a.origin):a.origin;s=l.r;o=l.c}}var c;var f={s:{c:0,r:0},e:{c:o,r:s+r.length-1+n}};if(i["!ref"]){var u=kt(i["!ref"]);f.e.c=Math.max(f.e.c,u.e.c);f.e.r=Math.max(f.e.r,u.e.r);if(s==-1){s=u.e.r+1;f.e.r=s+r.length-1+n}}else{if(s==-1){s=0;f.e.r=r.length-1+n}}var h=a.header||[],d=0;r.forEach(function(e,r){q(e).forEach(function(t){if((d=h.indexOf(t))==-1)h[d=h.length]=t;var l=e[t];var f="z";var u="";var p=bt({c:o+d,r:s+r+n});c=Qo.sheet_get_cell(i,p);if(l&&typeof l==="object"&&!(l instanceof Date)){i[p]=l}else{if(typeof l=="number")f="n";else if(typeof l=="boolean")f="b";else if(typeof l=="string")f="s";else if(l instanceof Date){f="d";if(!a.cellDates){f="n";l=re(l)}u=a.dateNF||P._table[14]}else if(l===null&&a.nullError){f="e";l=0}if(!c)i[p]=c={t:f,v:l};else{c.t=f;c.v=l;delete c.w;delete c.R;if(u)c.z=u}if(u)c.z=u}})});f.e.c=Math.max(f.e.c,o+h.length-1);var p=ct(s);if(n)for(d=0;d=0&&e.SheetNames.length>r)return r;throw new Error("Cannot find sheet # "+r)}else if(typeof r=="string"){var t=e.SheetNames.indexOf(r);if(t>-1)return t;throw new Error("Cannot find sheet name |"+r+"|")}else throw new Error("Cannot find sheet |"+r+"|")}e.book_new=function(){return{SheetNames:[],Sheets:{}}};e.book_append_sheet=function(e,r,t){if(!t)for(var a=1;a<=65535;++a,t=undefined)if(e.SheetNames.indexOf(t="Sheet"+a)==-1)break;if(!t||e.SheetNames.length>=65535)throw new Error("Too many worksheets");ds(t);if(e.SheetNames.indexOf(t)>=0)throw new Error("Worksheet with name |"+t+"| already exists!");e.SheetNames.push(t);e.Sheets[t]=r};e.book_set_sheet_visibility=function(e,r,a){t(e,"Workbook",{});t(e.Workbook,"Sheets",[]);var i=n(e,r);t(e.Workbook.Sheets,i,{});switch(a){case 0:;case 1:;case 2:break;default:throw new Error("Bad sheet visibility setting "+a);}e.Workbook.Sheets[i].Hidden=a};r([["SHEET_VISIBLE",0],["SHEET_HIDDEN",1],["SHEET_VERY_HIDDEN",2]]);e.cell_set_number_format=function(e,r){e.z=r;return e};e.cell_set_hyperlink=function(e,r,t){if(!r){delete e.l}else{e.l={Target:r};if(t)e.l.Tooltip=t}return e};e.cell_set_internal_link=function(r,t,a){return e.cell_set_hyperlink(r,"#"+t,a)};e.cell_add_comment=function(e,r,t){if(!e.c)e.c=[];e.c.push({t:r,a:t||"SheetJS"})};e.sheet_set_array_formula=function(e,r,t){var n=typeof r!="string"?r:kt(r);var i=typeof r=="string"?r:yt(r);for(var s=n.s.r;s<=n.e.r;++s)for(var o=n.s.c;o<=n.e.c;++o){var l=a(e,s,o);l.t="n";l.F=i;delete l.v;if(s==n.s.r&&o==n.s.c)l.f=t}return e};return e})(Qo);if(typeof parse_xlscfb!=="undefined")e.parse_xlscfb=parse_xlscfb;e.parse_zip=ao;e.read=go;e.readFile=bo;e.readFileSync=bo;e.write=Uo;e.writeFile=Wo;e.writeFileSync=Wo;e.writeFileAsync=$o;e.utils=Qo;e.writeXLSX=Bo;e.writeFileXLSX=jo;e.SSF=P;if(typeof H!=="undefined")e.CFB=H}if(typeof exports!=="undefined")make_xlsx_lib(exports);else if(typeof module!=="undefined"&&module.exports)make_xlsx_lib(module.exports);else if(typeof define==="function"&&define.amd)define("xlsx",function(){if(!XLSX.version)make_xlsx_lib(XLSX);return XLSX});else make_xlsx_lib(XLSX);if(typeof window!=="undefined"&&!window.XLSX)try{window.XLSX=XLSX}catch(e){} +var XLSX={};function make_xlsx_lib(e){e.version="0.18.2";var r=1200,t=1252;var a=[874,932,936,949,950,1e4];for(var n=0;n<=8;++n)a.push(1250+n);var i={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969};var s=function(e){if(a.indexOf(e)==-1)return;t=i[0]=e};function l(){s(1252)}var o=function(e){r=e;s(e)};function c(){o(1200);l()}function f(e){var r=[];for(var t=0,a=e.length;t>1;++t)r[t]=String.fromCharCode(e.charCodeAt(2*t)+(e.charCodeAt(2*t+1)<<8));return r.join("")}function h(e){var r=[];for(var t=0;t>1;++t)r[t]=String.fromCharCode(e.charCodeAt(2*t+1)+(e.charCodeAt(2*t)<<8));return r.join("")}var p=function(e){var r=e.charCodeAt(0),t=e.charCodeAt(1);if(r==255&&t==254)return u(e.slice(2));if(r==254&&t==255)return h(e.slice(2));if(r==65279)return e.slice(1);return e};var d=function so(e){return String.fromCharCode(e)};var m=function lo(e){return String.fromCharCode(e)};var v=null;var g=true;var b=function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{encode:function(r){var t="";var a=0,n=0,i=0,s=0,l=0,o=0,c=0;for(var f=0;f>2;n=r.charCodeAt(f++);l=(a&3)<<4|n>>4;i=r.charCodeAt(f++);o=(n&15)<<2|i>>6;c=i&63;if(isNaN(n)){o=c=64}else if(isNaN(i)){c=64}t+=e.charAt(s)+e.charAt(l)+e.charAt(o)+e.charAt(c)}return t},decode:function(r){var t="";var a=0,n=0,i=0,s=0,l=0,o=0,c=0;r=r.replace(/[^\w\+\/\=]/g,"");for(var f=0;f>4;t+=String.fromCharCode(a);o=e.indexOf(r.charAt(f++));n=(l&15)<<4|o>>2;if(o!==64){t+=String.fromCharCode(n)}c=e.indexOf(r.charAt(f++));i=(o&3)<<6|c;if(c!==64){t+=String.fromCharCode(i)}}return t}}}();var w=typeof Buffer!=="undefined"&&typeof undefined!=="undefined"&&typeof{}!=="undefined"&&!!{}.node;var y=function(){};if(typeof Buffer!=="undefined"){var k=!Buffer.from;if(!k)try{Buffer.from("foo","utf8")}catch(x){k=true}y=k?function(e,r){return r?new Buffer(e,r):new Buffer(e)}:Buffer.from.bind(Buffer);if(!Buffer.alloc)Buffer.alloc=function(e){return new Buffer(e)};if(!Buffer.allocUnsafe)Buffer.allocUnsafe=function(e){return new Buffer(e)}}function S(e){return w?Buffer.alloc(e):typeof Uint8Array!="undefined"?new Uint8Array(e):new Array(e)}function C(e){return w?Buffer.allocUnsafe(e):typeof Uint8Array!="undefined"?new Uint8Array(e):new Array(e)}var _=function oo(e){if(w)return y(e,"binary");return e.split("").map(function(e){return e.charCodeAt(0)&255})};function A(e){if(typeof ArrayBuffer==="undefined")return _(e);var r=new ArrayBuffer(e.length),t=new Uint8Array(r);for(var a=0;a!=e.length;++a)t[a]=e.charCodeAt(a)&255;return r}function F(e){if(Array.isArray(e))return e.map(function(e){return String.fromCharCode(e)}).join("");var r=[];for(var t=0;t>6&31;n[t++]=128|s&63}else if(s>=55296&&s<57344){s=(s&1023)+64;var l=e.charCodeAt(++i)&1023;n[t++]=240|s>>8&7;n[t++]=128|s>>2&63;n[t++]=128|l>>6&15|(s&3)<<4;n[t++]=128|l&63}else{n[t++]=224|s>>12&15;n[t++]=128|s>>6&63;n[t++]=128|s&63}if(t>a){r.push(n.slice(0,t));t=0;n=S(65535);a=65530}}r.push(n.slice(0,t));return D(r)}var D=function(e){if(typeof Uint8Array!=="undefined"){var r=0,t=0;for(r=0;r=0)r+=e.charAt(t--);return r}function t(e,r){var t="";while(t.length=r?a:t("0",r-a.length)+a}function n(e,r){var a=""+e;return a.length>=r?a:t(" ",r-a.length)+a}function i(e,r){var a=""+e;return a.length>=r?a:a+t(" ",r-a.length)}function s(e,r){var a=""+Math.round(e);return a.length>=r?a:t("0",r-a.length)+a}function l(e,r){var a=""+e;return a.length>=r?a:t("0",r-a.length)+a}var o=Math.pow(2,32);function c(e,r){if(e>o||e<-o)return s(e,r);var t=Math.round(e);return l(t,r)}function f(e,r){r=r||0;return e.length>=7+r&&(e.charCodeAt(r)|32)===103&&(e.charCodeAt(r+1)|32)===101&&(e.charCodeAt(r+2)|32)===110&&(e.charCodeAt(r+3)|32)===101&&(e.charCodeAt(r+4)|32)===114&&(e.charCodeAt(r+5)|32)===97&&(e.charCodeAt(r+6)|32)===108}var u=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]];var h=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function p(e){e[0]="General";e[1]="0";e[2]="0.00";e[3]="#,##0";e[4]="#,##0.00";e[9]="0%";e[10]="0.00%";e[11]="0.00E+00";e[12]="# ?/?";e[13]="# ??/??";e[14]="m/d/yy";e[15]="d-mmm-yy";e[16]="d-mmm";e[17]="mmm-yy";e[18]="h:mm AM/PM";e[19]="h:mm:ss AM/PM";e[20]="h:mm";e[21]="h:mm:ss";e[22]="m/d/yy h:mm";e[37]="#,##0 ;(#,##0)";e[38]="#,##0 ;[Red](#,##0)";e[39]="#,##0.00;(#,##0.00)";e[40]="#,##0.00;[Red](#,##0.00)";e[45]="mm:ss";e[46]="[h]:mm:ss";e[47]="mmss.0";e[48]="##0.0E+0";e[49]="@";e[56]='"上午/下午 "hh"時"mm"分"ss"秒 "'}var d={};p(d);var m=[];var v=0;for(v=5;v<=8;++v)m[v]=32+v;for(v=23;v<=26;++v)m[v]=0;for(v=27;v<=31;++v)m[v]=14;for(v=50;v<=58;++v)m[v]=14;for(v=59;v<=62;++v)m[v]=v-58;for(v=67;v<=68;++v)m[v]=v-58;for(v=72;v<=75;++v)m[v]=v-58;for(v=67;v<=68;++v)m[v]=v-57;for(v=76;v<=78;++v)m[v]=v-56;for(v=79;v<=81;++v)m[v]=v-34;var g=[];g[5]=g[63]='"$"#,##0_);\\("$"#,##0\\)';g[6]=g[64]='"$"#,##0_);[Red]\\("$"#,##0\\)';g[7]=g[65]='"$"#,##0.00_);\\("$"#,##0.00\\)';g[8]=g[66]='"$"#,##0.00_);[Red]\\("$"#,##0.00\\)';g[41]='_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)';g[42]='_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)';g[43]='_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)';g[44]='_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)';function b(e,r,t){var a=e<0?-1:1;var n=e*a;var i=0,s=1,l=0;var o=1,c=0,f=0;var u=Math.floor(n);while(cr){if(c>r){f=o;l=i}else{f=c;l=s}}if(!t)return[0,a*l,f];var h=Math.floor(a*l/f);return[h,a*l-h*f,f]}function w(e,r,t){if(e>2958465||e<0)return null;var a=e|0,n=Math.floor(86400*(e-a)),i=0;var s=[];var l={D:a,T:n,u:86400*(e-a)-n,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(l.u)<1e-6)l.u=0;if(r&&r.date1904)a+=1462;if(l.u>.9999){l.u=0;if(++n==86400){l.T=n=0;++a;++l.D}}if(a===60){s=t?[1317,10,29]:[1900,2,29];i=3}else if(a===0){s=t?[1317,8,29]:[1900,1,0];i=6}else{if(a>60)--a;var o=new Date(1900,0,1);o.setDate(o.getDate()+a-1);s=[o.getFullYear(),o.getMonth()+1,o.getDate()];i=o.getDay();if(a<60)i=(i+6)%7;if(t)i=F(o,s)}l.y=s[0];l.m=s[1];l.d=s[2];l.S=n%60;n=Math.floor(n/60);l.M=n%60;n=Math.floor(n/60);l.H=n;l.q=i;return l}e.parse_date_code=w;var y=new Date(1899,11,31,0,0,0);var k=y.getTime();var x=new Date(1900,2,1,0,0,0);function S(e,r){var t=e.getTime();if(r)t-=1461*24*60*60*1e3;else if(e>=x)t+=24*60*60*1e3;return(t-(k+(e.getTimezoneOffset()-y.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function C(e){return e.toString(10)}e._general_int=C;var _=function $(){var e=/(?:\.0*|(\.\d*[1-9])0+)$/;function r(r){return r.indexOf(".")==-1?r:r.replace(e,"$1")}var t=/(?:\.0*|(\.\d*[1-9])0+)[Ee]/;var a=/(E[+-])(\d)$/;function n(e){if(e.indexOf("E")==-1)return e;return e.replace(t,"$1E").replace(a,"$10$2")}function i(e){var t=e<0?12:11;var a=r(e.toFixed(12));if(a.length<=t)return a;a=e.toPrecision(10);if(a.length<=t)return a;return e.toExponential(5)}function s(e){var t=r(e.toFixed(11));return t.length>(e<0?12:11)||t==="0"||t==="-0"?e.toPrecision(6):t}function l(e){var t=Math.floor(Math.log(Math.abs(e))*Math.LOG10E),a;if(t>=-4&&t<=-1)a=e.toPrecision(10+t);else if(Math.abs(t)<=9)a=i(e);else if(t===10)a=e.toFixed(10).substr(0,12);else a=s(e);return r(n(a.toUpperCase()))}return l}();e._general_num=_;function A(e,r){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":return(e|0)===e?e.toString(10):_(e);case"undefined":return"";case"object":if(e==null)return"";if(e instanceof Date)return z(14,S(e,r&&r.date1904),r);}throw new Error("unsupported value in General format: "+e)}e._general=A;function F(e,r){r[0]-=581;var t=e.getDay();if(e<60)t=(t+6)%7;return t}function E(e,r,t,n){var i="",s=0,l=0,o=t.y,c,f=0;switch(e){case 98:o=t.y+543;case 121:switch(r.length){case 1:;case 2:c=o%100;f=2;break;default:c=o%1e4;f=4;break;}break;case 109:switch(r.length){case 1:;case 2:c=t.m;f=r.length;break;case 3:return h[t.m-1][1];case 5:return h[t.m-1][0];default:return h[t.m-1][2];}break;case 100:switch(r.length){case 1:;case 2:c=t.d;f=r.length;break;case 3:return u[t.q][0];default:return u[t.q][1];}break;case 104:switch(r.length){case 1:;case 2:c=1+(t.H+11)%12;f=r.length;break;default:throw"bad hour format: "+r;}break;case 72:switch(r.length){case 1:;case 2:c=t.H;f=r.length;break;default:throw"bad hour format: "+r;}break;case 77:switch(r.length){case 1:;case 2:c=t.M;f=r.length;break;default:throw"bad minute format: "+r;}break;case 115:if(r!="s"&&r!="ss"&&r!=".0"&&r!=".00"&&r!=".000")throw"bad second format: "+r;if(t.u===0&&(r=="s"||r=="ss"))return a(t.S,r.length);if(n>=2)l=n===3?1e3:100;else l=n===1?10:1;s=Math.round(l*(t.S+t.u));if(s>=60*l)s=0;if(r==="s")return s===0?"0":""+s/l;i=a(s,2+n);if(r==="ss")return i.substr(0,2);return"."+i.substr(2,r.length-1);case 90:switch(r){case"[h]":;case"[hh]":c=t.D*24+t.H;break;case"[m]":;case"[mm]":c=(t.D*24+t.H)*60+t.M;break;case"[s]":;case"[ss]":c=((t.D*24+t.H)*60+t.M)*60+Math.round(t.S+t.u);break;default:throw"bad abstime format: "+r;}f=r.length===3?1:2;break;case 101:c=o;f=1;break;}var p=f>0?a(c,f):"";return p}function T(e){var r=3;if(e.length<=r)return e;var t=e.length%r,a=e.substr(0,t);for(;t!=e.length;t+=r)a+=(a.length>0?",":"")+e.substr(t,r);return a}var O=function W(){var e=/%/g;function s(r,a,n){var i=a.replace(e,""),s=a.length-i.length;return O(r,i,n*Math.pow(10,2*s))+t("%",s)}function l(e,r,t){var a=r.length-1;while(r.charCodeAt(a-1)===44)--a;return O(e,r.substr(0,a),t/Math.pow(10,3*(r.length-a)))}function o(e,r){var t;var a=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(r==0)return"0.0E+0";else if(r<0)return"-"+o(e,-r);var n=e.indexOf(".");if(n===-1)n=e.indexOf("E");var i=Math.floor(Math.log(r)*Math.LOG10E)%n;if(i<0)i+=n;t=(r/Math.pow(10,i)).toPrecision(a+1+(n+i)%n);if(t.indexOf("e")===-1){var s=Math.floor(Math.log(r)*Math.LOG10E);if(t.indexOf(".")===-1)t=t.charAt(0)+"."+t.substr(1)+"E+"+(s-t.length+i);else t+="E+"+(s-i);while(t.substr(0,2)==="0."){t=t.charAt(0)+t.substr(2,n)+"."+t.substr(2+n);t=t.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.")}t=t.replace(/\+-/,"-")}t=t.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(e,r,t,a){return r+t+a.substr(0,(n+i)%n)+"."+a.substr(i)+"E"})}else t=r.toExponential(a);if(e.match(/E\+00$/)&&t.match(/e[+-]\d$/))t=t.substr(0,t.length-1)+"0"+t.charAt(t.length-1);if(e.match(/E\-/)&&t.match(/e\+/))t=t.replace(/e\+/,"e");return t.replace("e","E")}var f=/# (\?+)( ?)\/( ?)(\d+)/;function u(e,r,i){var s=parseInt(e[4],10),l=Math.round(r*s),o=Math.floor(l/s);var c=l-o*s,f=s;return i+(o===0?"":""+o)+" "+(c===0?t(" ",e[1].length+1+e[4].length):n(c,e[1].length)+e[2]+"/"+e[3]+a(f,e[4].length))}function h(e,r,a){return a+(r===0?"":""+r)+t(" ",e[1].length+2+e[4].length)}var p=/^#*0*\.([0#]+)/;var d=/\).*[0#]/;var m=/\(###\) ###\\?-####/;function v(e){var r="",t;for(var a=0;a!=e.length;++a)switch(t=e.charCodeAt(a)){case 35:break;case 63:r+=" ";break;case 48:r+="0";break;default:r+=String.fromCharCode(t);}return r}function g(e,r){var t=Math.pow(10,r);return""+Math.round(e*t)/t}function w(e,r){var t=e-Math.floor(e),a=Math.pow(10,r);if(r<(""+Math.round(t*a)).length)return 0;return Math.round(t*a)}function y(e,r){if(r<(""+Math.round((e-Math.floor(e))*Math.pow(10,r))).length){return 1}return 0}function k(e){if(e<2147483647&&e>-2147483648)return""+(e>=0?e|0:e-1|0);return""+Math.floor(e)}function x(e,h,S){if(e.charCodeAt(0)===40&&!h.match(d)){var C=h.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");if(S>=0)return x("n",C,S);return"("+x("n",C,-S)+")"}if(h.charCodeAt(h.length-1)===44)return l(e,h,S);if(h.indexOf("%")!==-1)return s(e,h,S);if(h.indexOf("E")!==-1)return o(h,S);if(h.charCodeAt(0)===36)return"$"+x(e,h.substr(h.charAt(1)==" "?2:1),S);var _;var A,F,E,D=Math.abs(S),M=S<0?"-":"";if(h.match(/^00+$/))return M+c(D,h.length);if(h.match(/^[#?]+$/)){_=c(S,0);if(_==="0")_="";return _.length>h.length?_:v(h.substr(0,h.length-_.length))+_}if(A=h.match(f))return u(A,D,M);if(h.match(/^#+0+$/))return M+c(D,h.length-h.indexOf("0"));if(A=h.match(p)){_=g(S,A[1].length).replace(/^([^\.]+)$/,"$1."+v(A[1])).replace(/\.$/,"."+v(A[1])).replace(/\.(\d*)$/,function(e,r){return"."+r+t("0",v(A[1]).length-r.length)});return h.indexOf("0.")!==-1?_:_.replace(/^0\./,".")}h=h.replace(/^#+([0.])/,"$1");if(A=h.match(/^(0*)\.(#*)$/)){return M+g(D,A[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,A[1].length?"0.":".")}if(A=h.match(/^#{1,3},##0(\.?)$/))return M+T(c(D,0));if(A=h.match(/^#,##0\.([#0]*0)$/)){return S<0?"-"+x(e,h,-S):T(""+(Math.floor(S)+y(S,A[1].length)))+"."+a(w(S,A[1].length),A[1].length)}if(A=h.match(/^#,#*,#0/))return x(e,h.replace(/^#,#*,/,""),S);if(A=h.match(/^([0#]+)(\\?-([0#]+))+$/)){_=r(x(e,h.replace(/[\\-]/g,""),S));F=0;return r(r(h.replace(/\\/g,"")).replace(/[0#]/g,function(e){return F<_.length?_.charAt(F++):e==="0"?"0":""}))}if(h.match(m)){_=x(e,"##########",S);return"("+_.substr(0,3)+") "+_.substr(3,3)+"-"+_.substr(6)}var N="";if(A=h.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)){F=Math.min(A[4].length,7);E=b(D,Math.pow(10,F)-1,false);_=""+M;N=O("n",A[1],E[1]);if(N.charAt(N.length-1)==" ")N=N.substr(0,N.length-1)+"0";_+=N+A[2]+"/"+A[3];N=i(E[2],F);if(N.length=0)return A("n",o,l);return"("+A("n",o,-l)+")"}if(s.charCodeAt(s.length-1)===44)return S(e,s,l);if(s.indexOf("%")!==-1)return C(e,s,l);if(s.indexOf("E")!==-1)return _(s,l);if(s.charCodeAt(0)===36)return"$"+A(e,s.substr(s.charAt(1)==" "?2:1),l);var c;var u,g,w,y=Math.abs(l),k=l<0?"-":"";if(s.match(/^00+$/))return k+a(y,s.length);if(s.match(/^[#?]+$/)){c=""+l;if(l===0)c="";return c.length>s.length?c:v(s.substr(0,s.length-c.length))+c}if(u=s.match(f))return h(u,y,k);if(s.match(/^#+0+$/))return k+a(y,s.length-s.indexOf("0"));if(u=s.match(p)){c=(""+l).replace(/^([^\.]+)$/,"$1."+v(u[1])).replace(/\.$/,"."+v(u[1]));c=c.replace(/\.(\d*)$/,function(e,r){return"."+r+t("0",v(u[1]).length-r.length)});return s.indexOf("0.")!==-1?c:c.replace(/^0\./,".")}s=s.replace(/^#+([0.])/,"$1");if(u=s.match(/^(0*)\.(#*)$/)){return k+(""+y).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,u[1].length?"0.":".")}if(u=s.match(/^#{1,3},##0(\.?)$/))return k+T(""+y);if(u=s.match(/^#,##0\.([#0]*0)$/)){return l<0?"-"+A(e,s,-l):T(""+l)+"."+t("0",u[1].length)}if(u=s.match(/^#,#*,#0/))return A(e,s.replace(/^#,#*,/,""),l);if(u=s.match(/^([0#]+)(\\?-([0#]+))+$/)){c=r(A(e,s.replace(/[\\-]/g,""),l));g=0;return r(r(s.replace(/\\/g,"")).replace(/[0#]/g,function(e){return g-1||t=="\\"&&e.charAt(r+1)=="-"&&"0#".indexOf(e.charAt(r+2))>-1)){}break;case"?":while(e.charAt(++r)===t){}break;case"*":++r;if(e.charAt(r)==" "||e.charAt(r)=="*")++r;break;case"(":;case")":++r;break;case"1":;case"2":;case"3":;case"4":;case"5":;case"6":;case"7":;case"8":;case"9":while(r-1){}break;case" ":++r;break;default:++r;break;}}return false}e.is_date=N;function P(e,r,t,a){var n=[],i="",s=0,l="",o="t",c,u,h;var p="H";while(s=12?"P":"A";v.t="T";p="h";s+=3}else if(e.substr(s,5).toUpperCase()==="AM/PM"){if(c!=null)v.v=c.H>=12?"PM":"AM";v.t="T";s+=5;p="h"}else if(e.substr(s,5).toUpperCase()==="上午/下午"){if(c!=null)v.v=c.H>=12?"下午":"上午";v.t="T";s+=5;p="h"}else{v.t="t";++s}if(c==null&&v.t==="T")return"";n[n.length]=v;o=l;break;case"[":i=l;while(e.charAt(s++)!=="]"&&s-1){i=(i.match(/\$([^-\[\]]*)/)||[])[1]||"$";if(!N(e))n[n.length]={t:"t",v:i}}break;case".":if(c!=null){i=l;while(++s-1)i+=l;n[n.length]={t:"n",v:i};break;case"?":i=l;while(e.charAt(++s)===l)i+=l;n[n.length]={t:l,v:i};o=l;break;case"*":++s;if(e.charAt(s)==" "||e.charAt(s)=="*")++s;break;case"(":;case")":n[n.length]={t:a===1?"t":l,v:l};++s;break;case"1":;case"2":;case"3":;case"4":;case"5":;case"6":;case"7":;case"8":;case"9":i=l;while(s-1)i+=e.charAt(s);n[n.length]={t:"D",v:i};break;case" ":n[n.length]={t:l,v:l};++s;break;case"$":n[n.length]={t:"t",v:"$"};++s;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(l)===-1)throw new Error("unrecognized character "+l+" in "+e);n[n.length]={t:"t",v:l};++s;break;}}var g=0,b=0,y;for(s=n.length-1,o="t";s>=0;--s){switch(n[s].t){case"h":;case"H":n[s].t=p;o="h";if(g<1)g=1;break;case"s":if(y=n[s].v.match(/\.0+$/))b=Math.max(b,y[0].length-1);if(g<3)g=3;case"d":;case"y":;case"M":;case"e":o=n[s].t;break;case"m":if(o==="s"){n[s].t="M";if(g<2)g=2}break;case"X":break;case"Z":if(g<1&&n[s].v.match(/[Hh]/))g=1;if(g<2&&n[s].v.match(/[Mm]/))g=2;if(g<3&&n[s].v.match(/[Ss]/))g=3;}}switch(g){case 0:break;case 1:if(c.u>=.5){c.u=0;++c.S}if(c.S>=60){c.S=0;++c.M}if(c.M>=60){c.M=0;++c.H}break;case 2:if(c.u>=.5){c.u=0;++c.S}if(c.S>=60){c.S=0;++c.M}break;}var k="",x;for(s=0;s0){if(k.charCodeAt(0)==40){C=r<0&&k.charCodeAt(0)===45?-r:r;_=O("n",k,C)}else{C=r<0&&a>1?-r:r;_=O("n",k,C);if(C<0&&n[0]&&n[0].t=="t"){_=_.substr(1);n[0].v="-"+n[0].v}}x=_.length-1;var F=n.length;for(s=0;s-1){F=s;break}var T=n.length;if(F===n.length&&_.indexOf("E")===-1){for(s=n.length-1;s>=0;--s){if(n[s]==null||"n?".indexOf(n[s].t)===-1)continue;if(x>=n[s].v.length-1){x-=n[s].v.length;n[s].v=_.substr(x+1,n[s].v.length)}else if(x<0)n[s].v="";else{n[s].v=_.substr(0,x+1);x=-1}n[s].t="t";T=s}if(x>=0&&T=0;--s){if(n[s]==null||"n?".indexOf(n[s].t)===-1)continue;u=n[s].v.indexOf(".")>-1&&s===F?n[s].v.indexOf(".")-1:n[s].v.length-1;S=n[s].v.substr(u+1);for(;u>=0;--u){if(x>=0&&(n[s].v.charAt(u)==="0"||n[s].v.charAt(u)==="#"))S=_.charAt(x--)+S}n[s].v=S;n[s].t="t";T=s}if(x>=0&&T-1&&s===F?n[s].v.indexOf(".")+1:0;S=n[s].v.substr(0,u);for(;u-1){C=a>1&&r<0&&s>0&&n[s-1].v==="-"?-r:r;n[s].v=O(n[s].t,n[s].v,C);n[s].t="t"}var D="";for(s=0;s!==n.length;++s)if(n[s]!=null)D+=n[s].v;return D}e._eval=P;var R=/\[[=<>]/;var I=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function L(e,r){if(r==null)return false;var t=parseFloat(r[2]);switch(r[1]){case"=":if(e==t)return true;break;case">":if(e>t)return true;break;case"<":if(e":if(e!=t)return true;break;case">=":if(e>=t)return true;break;case"<=":if(e<=t)return true;break;}return false}function B(e,r){var t=D(e);var a=t.length,n=t[a-1].indexOf("@");if(a<4&&n>-1)--a;if(t.length>4)throw new Error("cannot find right format for |"+t.join("|")+"|");if(typeof r!=="number")return[4,t.length===4||n>-1?t[t.length-1]:"@"];switch(t.length){case 1:t=n>-1?["General","General","General",t[0]]:[t[0],t[0],t[0],"@"];break;case 2:t=n>-1?[t[0],t[0],t[0],t[1]]:[t[0],t[1],t[0],"@"];break;case 3:t=n>-1?[t[0],t[1],t[0],t[2]]:[t[0],t[1],t[2],"@"];break;case 4:break;}var i=r>0?t[0]:r<0?t[1]:t[2];if(t[0].indexOf("[")===-1&&t[1].indexOf("[")===-1)return[a,i];if(t[0].match(R)!=null||t[1].match(R)!=null){var s=t[0].match(I);var l=t[1].match(I);return L(r,s)?[a,t[0]]:L(r,l)?[a,t[1]]:[a,t[s!=null&&l!=null?2:1]]}return[a,i]}function z(e,r,t){if(t==null)t={};var a="";switch(typeof e){case"string":if(e=="m/d/yy"&&t.dateNF)a=t.dateNF;else a=e;break;case"number":if(e==14&&t.dateNF)a=t.dateNF;else a=(t.table!=null?t.table:d)[e];if(a==null)a=t.table&&t.table[m[e]]||d[m[e]];if(a==null)a=g[e]||"General";break;}if(f(a,0))return A(r,t);if(r instanceof Date)r=S(r,t.date1904);var n=B(a,r);if(f(n[1]))return A(r,t);if(r===true)r="TRUE";else if(r===false)r="FALSE";else if(r===""||r==null)return"";return P(n[1],r,t,n[0])}function U(e,r){if(typeof r!="number"){r=+r||-1;for(var t=0;t<392;++t){if(d[t]==undefined){if(r<0)r=t;continue}if(d[t]==e){r=t;break}}if(r<0)r=391}d[r]=e;return r}e.load=U;e._table=d;e.get_table=function j(){return d};e.load_table=function H(e){for(var r=0;r!=392;++r)if(e[r]!==undefined)U(e[r],r)};e.init_table=p;e.format=z};R(P);var I={"General Number":"General","General Date":P._table[22],"Long Date":"dddd, mmmm dd, yyyy","Medium Date":P._table[15],"Short Date":P._table[14],"Long Time":P._table[19],"Medium Time":P._table[18],"Short Time":P._table[20],Currency:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',Fixed:P._table[2],Standard:P._table[4],Percent:P._table[10],Scientific:P._table[11],"Yes/No":'"Yes";"Yes";"No";@',"True/False":'"True";"True";"False";@',"On/Off":'"Yes";"Yes";"No";@'};var L={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"};var B=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function z(e){var r=typeof e=="number"?P._table[e]:e;r=r.replace(B,"(\\d+)");return new RegExp("^"+r+"$")}function U(e,r,t){var a=-1,n=-1,i=-1,s=-1,l=-1,o=-1;(r.match(B)||[]).forEach(function(e,r){var c=parseInt(t[r+1],10);switch(e.toLowerCase().charAt(0)){case"y":a=c;break;case"d":i=c;break;case"h":s=c;break;case"s":o=c;break;case"m":if(s>=0)l=c;else n=c;break;}});if(o>=0&&l==-1&&n>=0){l=n;n=-1}var c=(""+(a>=0?a:(new Date).getFullYear())).slice(-4)+"-"+("00"+(n>=1?n:1)).slice(-2)+"-"+("00"+(i>=1?i:1)).slice(-2);if(c.length==7)c="0"+c;if(c.length==8)c="20"+c;var f=("00"+(s>=0?s:0)).slice(-2)+":"+("00"+(l>=0?l:0)).slice(-2)+":"+("00"+(o>=0?o:0)).slice(-2);if(s==-1&&l==-1&&o==-1)return c;if(a==-1&&n==-1&&i==-1)return f;return c+"T"+f}var W=true;var j;(function(e){e(j={})})(function(e){e.version="1.2.0";function r(){var e=0,r=new Array(256);for(var t=0;t!=256;++t){e=t;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;e=e&1?-306674912^e>>>1:e>>>1;r[t]=e}return typeof Int32Array!=="undefined"?new Int32Array(r):r}var t=r();function a(e){var r=0,t=0,a=0,n=typeof Int32Array!=="undefined"?new Int32Array(4096):new Array(4096);for(a=0;a!=256;++a)n[a]=e[a];for(a=0;a!=256;++a){t=e[a];for(r=256+a;r<4096;r+=256)t=n[r]=t>>>8^e[t&255]}var i=[];for(a=1;a!=16;++a)i[a-1]=typeof Int32Array!=="undefined"?n.subarray(a*256,a*256+256):n.slice(a*256,a*256+256);return i}var n=a(t);var i=n[0],s=n[1],l=n[2],o=n[3],c=n[4];var f=n[5],u=n[6],h=n[7],p=n[8],d=n[9];var m=n[10],v=n[11],g=n[12],b=n[13],w=n[14];function y(e,r){var a=r^-1;for(var n=0,i=e.length;n>>8^t[(a^e.charCodeAt(n++))&255];return~a}function k(e,r){var a=r^-1,n=e.length-15,y=0;for(;y>8&255]^g[e[y++]^a>>16&255]^v[e[y++]^a>>>24]^m[e[y++]]^d[e[y++]]^p[e[y++]]^h[e[y++]]^u[e[y++]]^f[e[y++]]^c[e[y++]]^o[e[y++]]^l[e[y++]]^s[e[y++]]^i[e[y++]]^t[e[y++]];n+=15; +while(y>>8^t[(a^e[y++])&255];return~a}function x(e,r){var a=r^-1;for(var n=0,i=e.length,s=0,l=0;n>>8^t[(a^s)&255]}else if(s<2048){a=a>>>8^t[(a^(192|s>>6&31))&255];a=a>>>8^t[(a^(128|s&63))&255]}else if(s>=55296&&s<57344){s=(s&1023)+64;l=e.charCodeAt(n++)&1023;a=a>>>8^t[(a^(240|s>>8&7))&255];a=a>>>8^t[(a^(128|s>>2&63))&255];a=a>>>8^t[(a^(128|l>>6&15|(s&3)<<4))&255];a=a>>>8^t[(a^(128|l&63))&255]}else{a=a>>>8^t[(a^(224|s>>12&15))&255];a=a>>>8^t[(a^(128|s>>6&63))&255];a=a>>>8^t[(a^(128|s&63))&255]}}return~a}e.table=t;e.bstr=y;e.buf=k;e.str=x});var H=function fo(){var e={};e.version="1.2.1";function r(e,r){var t=e.split("/"),a=r.split("/");for(var n=0,i=0,s=Math.min(t.length,a.length);n>>1;e._W(2,t);var a=r.getFullYear()-1980;a=a<<4|r.getMonth()+1;a=a<<5|r.getDate();e._W(2,a)}function i(e){var r=e._R(2)&65535;var t=e._R(2)&65535;var a=new Date;var n=t&31;t>>>=5;var i=t&15;t>>>=4;a.setMilliseconds(0);a.setFullYear(t+1980);a.setMonth(i-1);a.setDate(n);var s=r&31;r>>>=5;var l=r&63;r>>>=6;a.setHours(r);a.setMinutes(l);a.setSeconds(s<<1);return a}function s(e){Zr(e,0);var r={};var t=0;while(e.l<=e.length-4){var a=e._R(2);var n=e._R(2),i=e.l+n;var s={};switch(a){case 21589:{t=e._R(1);if(t&1)s.mtime=e._R(4);if(n>5){if(t&2)s.atime=e._R(4);if(t&4)s.ctime=e._R(4)}if(s.mtime)s.mt=new Date(s.mtime*1e3)}break;}e.l=i;r[a]=s}return r}var l;function o(){return l||(l=undefined)}function c(e,r){if(e[0]==80&&e[1]==75)return Me(e,r);if((e[0]|32)==109&&(e[1]|32)==105)return $e(e,r);if(e.length<512)throw new Error("CFB file size "+e.length+" < 512");var t=3;var a=512;var n=0;var i=0;var s=0;var l=0;var o=0;var c=[];var d=e.slice(0,512);Zr(d,0);var v=f(d);t=v[0];switch(t){case 3:a=512;break;case 4:a=4096;break;case 0:if(v[1]==0)return Me(e,r);default:throw new Error("Major Version: Expected 3 or 4 saw "+t);}if(a!==512){d=e.slice(0,a);Zr(d,28)}var b=e.slice(0,a);u(d,t);var w=d._R(4,"i");if(t===3&&w!==0)throw new Error("# Directory Sectors: Expected 0 saw "+w);d.l+=4;s=d._R(4,"i");d.l+=4;d.chk("00100000","Mini Stream Cutoff Size: ");l=d._R(4,"i");n=d._R(4,"i");o=d._R(4,"i");i=d._R(4,"i");for(var y=-1,x=0;x<109;++x){y=d._R(4,"i");if(y<0)break;c[x]=y}var S=h(e,a);m(o,i,S,a,c);var C=g(S,s,c,a);C[s].name="!Directory";if(n>0&&l!==L)C[l].name="!MiniFAT";C[c[0]].name="!FAT";C.fat_addrs=c;C.ssz=a;var _={},A=[],F=[],E=[];k(s,C,S,A,n,_,F,l);p(F,E,A);A.shift();var T={FileIndex:F,FullPaths:E};if(r&&r.raw)T.raw={header:b,sectors:S};return T}function f(e){if(e[e.l]==80&&e[e.l+1]==75)return[0,0];e.chk(B,"Header Signature: ");e.l+=16;var r=e._R(2,"u");return[e._R(2,"u"),r]}function u(e,r){var t=9;e.l+=2;switch(t=e._R(2)){case 9:if(r!=3)throw new Error("Sector Shift: Expected 9 saw "+t);break;case 12:if(r!=4)throw new Error("Sector Shift: Expected 12 saw "+t);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+t);}e.chk("0600","Mini Sector Shift: ");e.chk("000000000000","Reserved: ")}function h(e,r){var t=Math.ceil(e.length/r)-1;var a=[];for(var n=1;n0&&s>=0){i.push(r.slice(s*I,s*I+I));n-=I;s=Hr(t,s*4)}if(i.length===0)return et(0);return D(i).slice(0,e.size)}function m(e,r,t,a,n){var i=L;if(e===L){if(r!==0)throw new Error("DIFAT chain shorter than expected")}else if(e!==-1){var s=t[e],l=(a>>>2)-1;if(!s)return;for(var o=0;o=0;){n[o]=true;i[i.length]=o;s.push(e[o]);var f=t[Math.floor(o*4/a)];c=o*4&l;if(a<4+c)throw new Error("FAT boundary crossed: "+o+" 4 "+a);if(!e[f])break;o=Hr(e[f],c)}return{nodes:i,data:br([s])}}function g(e,r,t,a){var n=e.length,i=[];var s=[],l=[],o=[];var c=a-1,f=0,u=0,h=0,p=0;for(f=0;f=n)h-=n;if(s[h])continue;o=[];var d=[];for(u=h;u>=0;){d[u]=true;s[u]=true;l[l.length]=u;o.push(e[u]);var m=t[Math.floor(u*4/a)];p=u*4&c;if(a<4+p)throw new Error("FAT boundary crossed: "+u+" 4 "+a);if(!e[m])break;u=Hr(e[m],p);if(d[u])break}i[h]={nodes:l,data:br([o])}}return i}function k(e,r,t,a,n,i,s,l){var o=0,c=a.length?2:0;var f=r[e].data;var u=0,h=0,p;for(;u0&&o!==L)r[o].name="!StreamData"}else if(g.size>=4096){g.storage="fat";if(r[g.start]===undefined)r[g.start]=v(t,g.start,r.fat_addrs,r.ssz);r[g.start].name=g.name;g.content=r[g.start].data.slice(0,g.size)}else{g.storage="minifat";if(g.size<0)g.size=0;else if(o!==L&&g.start!==L&&r[o]){g.content=d(g,r[o].data,(r[l]||{}).data)}}if(g.content)Zr(g.content,0);i[p]=g;s.push(g)}}function x(e,r){return new Date((jr(e,r+4)/1e7*Math.pow(2,32)+jr(e,r)/1e7-11644473600)*1e3)}function A(e,r){o();return c(l.readFileSync(e),r)}function F(e,r){var t=r&&r.type;if(!t){if(w&&Buffer.isBuffer(e))t="buffer"}switch(t||"base64"){case"file":return A(e,r);case"base64":return c(_(b.decode(e)),r);case"binary":return c(_(e),r);}return c(e,r)}function E(e,r){var t=r||{},a=t.root||"Root Entry";if(!e.FullPaths)e.FullPaths=[];if(!e.FileIndex)e.FileIndex=[];if(e.FullPaths.length!==e.FileIndex.length)throw new Error("inconsistent CFB structure");if(e.FullPaths.length===0){e.FullPaths[0]=a+"/";e.FileIndex[0]={name:a,type:5}}if(t.CLSID)e.FileIndex[0].clsid=t.CLSID;T(e)}function T(e){var r="Sh33tJ5";if(H.find(e,"/"+r))return;var t=et(4);t[0]=55;t[1]=t[3]=50;t[2]=54;e.FileIndex.push({name:r,type:2,content:t,size:4,L:69,R:69,C:69});e.FullPaths.push(e.FullPaths[0]+r);O(e)}function O(e,n){E(e);var i=false,s=false;for(var l=e.FullPaths.length-1;l>=0;--l){var o=e.FileIndex[l];switch(o.type){case 0:if(s)i=true;else{e.FileIndex.pop();e.FullPaths.pop()}break;case 1:;case 2:;case 5:s=true;if(isNaN(o.R*o.L*o.C))i=true;if(o.R>-1&&o.L>-1&&o.R==o.L)i=true;break;default:i=true;break;}}if(!i&&!n)return;var c=new Date(1987,1,19),f=0;var u=Object.create?Object.create(null):{};var h=[];for(l=0;l1?1:-1;d.size=0;d.type=5}else if(m.slice(-1)=="/"){for(f=l+1;f=h.length?-1:f;for(f=l+1;f=h.length?-1:f;d.type=1}else{if(t(e.FullPaths[l+1]||"")==t(m))d.R=l+1;d.type=2}}}function P(e,r){var t=r||{};if(t.fileType=="mad")return We(e,t);O(e);switch(t.fileType){case"zip":return Pe(e,t);}var a=function(e){var r=0,t=0;for(var a=0;a0){if(i<4096)r+=i+63>>6;else t+=i+511>>9}}var s=e.FullPaths.length+3>>2;var l=r+7>>3;var o=r+127>>7;var c=l+t+s+o;var f=c+127>>7;var u=f<=109?0:Math.ceil((f-109)/127);while(c+f+u+127>>7>f)u=++f<=109?0:Math.ceil((f-109)/127);var h=[1,u,f,o,s,t,r,0];e.FileIndex[0].size=r<<6;h[7]=(e.FileIndex[0].start=h[0]+h[1]+h[2]+h[3]+h[4]+h[5])+(h[6]+7>>3);return h}(e);var n=et(a[7]<<9);var i=0,s=0;{for(i=0;i<8;++i)n._W(1,z[i]);for(i=0;i<8;++i)n._W(2,0);n._W(2,62);n._W(2,3);n._W(2,65534);n._W(2,9);n._W(2,6);for(i=0;i<3;++i)n._W(2,0);n._W(4,0);n._W(4,a[2]);n._W(4,a[0]+a[1]+a[2]+a[3]-1);n._W(4,0);n._W(4,1<<12);n._W(4,a[3]?a[0]+a[1]+a[2]-1:L);n._W(4,a[3]);n._W(-4,a[1]?a[0]-1:L);n._W(4,a[1]);for(i=0;i<109;++i)n._W(-4,i>9)}l(a[6]+7>>3);while(n.l&511)n._W(-4,$.ENDOFCHAIN);s=i=0;for(o=0;o=4096)continue;f.start=s;l(c+63>>6)}while(n.l&511)n._W(-4,$.ENDOFCHAIN);for(i=0;i=4096){n.l=f.start+1<<9;if(w&&Buffer.isBuffer(f.content)){f.content.copy(n,n.l,0,f.size);n.l+=f.size+511&-512}else{for(o=0;o0&&f.size<4096){if(w&&Buffer.isBuffer(f.content)){f.content.copy(n,n.l,0,f.size);n.l+=f.size+63&-64}else{for(o=0;o>16|r>>8|r)&255}var re=typeof Uint8Array!=="undefined";var te=re?new Uint8Array(1<<8):[];for(var ae=0;ae<1<<8;++ae)te[ae]=ee(ae);function ne(e,r){var t=te[e&255];if(r<=8)return t>>>8-r;t=t<<8|te[e>>8&255];if(r<=16)return t>>>16-r;t=t<<8|te[e>>16&255];return t>>>24-r}function ie(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=6?0:e[a+1]<<8))>>>t&3}function se(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=5?0:e[a+1]<<8))>>>t&7}function le(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=4?0:e[a+1]<<8))>>>t&15}function oe(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=3?0:e[a+1]<<8))>>>t&31}function ce(e,r){var t=r&7,a=r>>>3;return(e[a]|(t<=1?0:e[a+1]<<8))>>>t&127}function fe(e,r,t){var a=r&7,n=r>>>3,i=(1<>>a;if(t<8-a)return s&i;s|=e[n+1]<<8-a;if(t<16-a)return s&i;s|=e[n+2]<<16-a;if(t<24-a)return s&i;s|=e[n+3]<<24-a;return s&i}function ue(e,r,t){var a=r&7,n=r>>>3;if(a<=5)e[n]|=(t&7)<>8-a}return r+3}function he(e,r,t){var a=r&7,n=r>>>3;t=(t&1)<>>3;t<<=a;e[n]|=t&255;t>>>=8;e[n+1]=t;return r+8}function de(e,r,t){var a=r&7,n=r>>>3;t<<=a;e[n]|=t&255;t>>>=8;e[n+1]=t&255;e[n+2]=t>>>8;return r+16}function me(e,r){var t=e.length,a=2*t>r?2*t:r+5,n=0;if(t>=r)return e;if(w){var i=C(a);if(e.copy)e.copy(i);else for(;n>a-u;for(s=(1<=0;--s)r[l|s<0)r[r.l++]=e[t++]}return r.l}function i(r,t){var n=0;var i=0;var s=re?new Uint16Array(32768):[];while(i0)t[t.l++]=r[i++];n=t.l*8;continue}n=ue(t,n,+!!(i+l==r.length)+2);var o=0;while(l-- >0){var c=r[i];o=(o<<5^c)&32767;var f=-1,u=0;if(f=s[o]){f|=i&~32767;if(f>i)f-=32768;if(f2){c=a[u];if(c<=22)n=pe(t,n,te[c+1]>>1)-1;else{pe(t,n,3);n+=5;pe(t,n,te[c-23]>>5);n+=3}var h=c<8?0:c-4>>2;if(h>0){de(t,n,u-Z[c]);n+=h}c=e[i-f];n=pe(t,n,te[c]>>3);n-=3;var p=c<4?0:c-2>>1;if(p>0){de(t,n,i-f-Q[c]);n+=p}for(var d=0;d>8-d;for(var m=(1<<7-d)-1;m>=0;--m)_e[p|m<>>=3){case 16:i=3+ie(e,r);r+=2;p=v[v.length-1];while(i-- >0)v.push(p);break;case 17:i=3+se(e,r);r+=3;while(i-- >0)v.push(0);break;case 18:i=11+ce(e,r);r+=7;while(i-- >0)v.push(0);break;default:v.push(p);if(o>>0;var l=0,o=0;while((a&1)==0){a=se(e,t);t+=3;if(a>>>1==0){if(t&7)t+=8-(t&7);var c=e[t>>>3]|e[(t>>>3)+1]<<8;t+=32;if(c>0){if(!r&&s0){n[i++]=e[t>>>3];t+=8}}continue}else if(a>>1==1){l=9;o=5}else{t=Ee(e,t);l=Ae;o=Fe}for(;;){if(!r&&s>>1==1?be[f]:Se[f];t+=u&15;u>>>=4;if((u>>>8&255)===0)n[i++]=u;else if(u==256)break;else{u-=257;var h=u<8?0:u-4>>2;if(h>5)h=0;var p=i+Z[u];if(h>0){p+=fe(e,t,h);t+=h}f=fe(e,t,o);u=a>>>1==1?we[f]:Ce[f];t+=u&15;u>>>=4;var d=u<4?0:u-2>>1;var m=Q[u];if(d>0){m+=fe(e,t,d);t+=d}if(!r&&s>>3];return[n.slice(0,i),t+7>>>3]}function Oe(e,r){var t=e.slice(e.l||0);var a=Te(t,r);e.l+=a[1];return a[0]}function De(e,r){if(e){if(typeof console!=="undefined")console.error(r)}else throw new Error(r)}function Me(e,r){var t=e;Zr(t,0);var a=[],n=[];var i={FileIndex:a,FullPaths:n};E(i,{root:r.root});var l=t.length-4;while((t[l]!=80||t[l+1]!=75||t[l+2]!=5||t[l+3]!=6)&&l>=0)--l;t.l=l+4;t.l+=4;var o=t._R(2);t.l+=6;var c=t._R(4);t.l=c;for(l=0;l0){t=t.slice(0,t.length-1);t=t.slice(0,t.lastIndexOf("/")+1);if(i.slice(0,t.length)==t)break}}var s=(a[1]||"").match(/boundary="(.*?)"/);if(!s)throw new Error("MAD cannot find boundary");var l="--"+(s[1]||"");var o=[],c=[];var f={FileIndex:o,FullPaths:c};E(f);var u,h=0;for(n=0;n=32&&p<128)++u;var m=u>=h*4/5;n.push(a);n.push("Content-Location: "+(t.root||"file:///C:/SheetJS/")+s);n.push("Content-Transfer-Encoding: "+(m?"quoted-printable":"base64"));n.push("Content-Type: "+Ie(l,s));n.push("");n.push(m?Be(f):Le(f))}n.push(a+"--\r\n");return n.join("\r\n")}function je(e){var r={};E(r,e);return r}function He(e,r,t,n){var i=n&&n.unsafe;if(!i)E(e);var s=!i&&H.find(e,r);if(!s){var l=e.FullPaths[0];if(r.slice(0,l.length)==l)l=r;else{if(l.slice(-1)!="/")l+="/";l=(l+r).replace("//","/")}s={name:a(r),type:2};e.FileIndex.push(s);e.FullPaths.push(l);if(!i)H.utils.cfb_gc(e)}s.content=t;s.size=t?t.length:0;if(n){if(n.CLSID)s.clsid=n.CLSID;if(n.mt)s.mt=n.mt;if(n.ct)s.ct=n.ct}return s}function Ve(e,r){E(e);var t=H.find(e,r);if(t)for(var a=0;a3)a=true;switch(n[i].slice(n[i].length-1)){case"Y":throw new Error("Unsupported ISO Duration Field: "+n[i].slice(n[i].length-1));case"D":t*=24;case"H":t*=60;case"M":if(!a)throw new Error("Unsupported ISO Duration Field: M");else t*=60;case"S":break;}r+=t*parseInt(n[i],10)}return r}var le=new Date("2017-02-19T19:06:09.000Z");if(isNaN(le.getFullYear()))le=new Date("2/19/17");var oe=le.getFullYear()==2017;function ce(e,r){var t=new Date(e);if(oe){if(r>0)t.setTime(t.getTime()+t.getTimezoneOffset()*60*1e3);else if(r<0)t.setTime(t.getTime()-t.getTimezoneOffset()*60*1e3);return t}if(e instanceof Date)return e;if(le.getFullYear()==1917&&!isNaN(t.getFullYear())){var a=t.getFullYear();if(e.indexOf(""+a)>-1)return t;t.setFullYear(t.getFullYear()+100);return t}var n=e.match(/\d+/g)||["2017","2","19","0","0","0"];var i=new Date(+n[0],+n[1]-1,+n[2],+n[3]||0,+n[4]||0,+n[5]||0);if(e.indexOf("Z")>-1)i=new Date(i.getTime()-i.getTimezoneOffset()*60*1e3); +return i}function fe(e,r){if(w&&Buffer.isBuffer(e)){if(r){if(e[0]==255&&e[1]==254)return e.slice(2).toString("utf16le");if(e[1]==254&&e[2]==255)return h(e.slice(2).toString("binary"))}return e.toString("binary")}var t=[];for(var a=0;a!=e.length;++a)t.push(String.fromCharCode(e[a]));return t.join("")}function ue(e){if(typeof JSON!="undefined"&&!Array.isArray(e))return JSON.parse(JSON.stringify(e));if(typeof e!="object"||e==null)return e;if(e instanceof Date)return new Date(e.getTime());var r={};for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))r[t]=ue(e[t]);return r}function he(e,r){var t="";while(t.length3&&de.indexOf(s)==-1)return t}else if(s.match(/[a-z]/))return t;if(a<0||a>8099)return t;if((n>0||i>1)&&a!=101)return r;if(e.match(/[^-0-9:,\/\\]/))return t;return r}var ve="abacaba".split(/(:?b)/i).length==5;function ge(e,r,t){if(ve||typeof r=="string")return e.split(r);var a=e.split(r),n=[a[0]];for(var i=1;i\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g;var Ne=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/gm;if(!De.match(Ne))Ne=/<[^>]*>/g;var Pe=/<\w*:/,Re=/<(\/?)\w+:/;function Ie(e,r,t){var a={};var n=0,i=0;for(;n!==e.length;++n)if((i=e.charCodeAt(n))===32||i===10||i===13)break;if(!r)a[0]=e.slice(0,n);if(n===e.length)return a;var s=e.match(Me),l=0,o="",c=0,f="",u="",h=1;if(s)for(c=0;c!=s.length;++c){u=s[c];for(i=0;i!=u.length;++i)if(u.charCodeAt(i)===61)break;f=u.slice(0,i).trim();while(u.charCodeAt(i+1)==32)++i;h=(n=u.charCodeAt(i+1))==34||n==39?1:0;o=u.slice(i+1+h,u.length-h);for(l=0;l!=f.length;++l)if(f.charCodeAt(l)===58)break;if(l===f.length){if(f.indexOf("_")>0)f=f.slice(0,f.indexOf("_"));a[f]=o;if(!t)a[f.toLowerCase()]=o}else{var p=(l===5&&f.slice(0,5)==="xmlns"?"xmlns":"")+f.slice(l+1);if(a[p]&&f.slice(l-3,l)=="ext")continue;a[p]=o;if(!t)a[p.toLowerCase()]=o}}return a}function Le(e){return e.replace(Re,"<$1")}var Be={""":'"',"'":"'",">":">","<":"<","&":"&"};var ze=q(Be);var Ue=function(){var e=/&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/gi,r=/_x([\da-fA-F]{4})_/gi;return function t(a){var n=a+"",i=n.indexOf("-1?16:10))||e}).replace(r,function(e,r){return String.fromCharCode(parseInt(r,16))});var s=n.indexOf("]]>");return t(n.slice(0,i))+n.slice(i+9,s)+t(n.slice(s+3))}}();var $e=/[&<>'"]/g,We=/[\u0000-\u0008\u000b-\u001f]/g;function je(e){var r=e+"";return r.replace($e,function(e){return ze[e]}).replace(We,function(e){return"_x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+"_"})}function He(e){return je(e).replace(/ /g,"_x0020_")}var Ve=/[\u0000-\u001f]/g;function Xe(e){var r=e+"";return r.replace($e,function(e){return ze[e]}).replace(/\n/g,"
").replace(Ve,function(e){return"&#x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+";"})}function Ge(e){var r=e+"";return r.replace($e,function(e){return ze[e]}).replace(Ve,function(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"})}var Ye=function(){var e=/&#(\d+);/g;function r(e,r){return String.fromCharCode(parseInt(r,10))}return function t(a){return a.replace(e,r)}}();var Je=function(){return function e(r){return r.replace(/(\r\n|[\r\n])/g," ")}}();function Ke(e){switch(e){case 1:;case true:;case"1":;case"true":;case"TRUE":return true;default:return false;}}var qe=function uo(e){var r="",t=0,a=0,n=0,i=0,s=0,l=0;while(t191&&a<224){s=(a&31)<<6;s|=n&63;r+=String.fromCharCode(s);continue}i=e.charCodeAt(t++);if(a<240){r+=String.fromCharCode((a&15)<<12|(n&63)<<6|i&63);continue}s=e.charCodeAt(t++);l=((a&7)<<18|(n&63)<<12|(i&63)<<6|s&63)-65536;r+=String.fromCharCode(55296+(l>>>10&1023));r+=String.fromCharCode(56320+(l&1023))}return r};var Ze=function(e){var r=[],t=0,a=0,n=0;while(t>6)));r.push(String.fromCharCode(128+(a&63)));break;case a>=55296&&a<57344:a-=55296;n=e.charCodeAt(t++)-56320+(a<<10);r.push(String.fromCharCode(240+(n>>18&7)));r.push(String.fromCharCode(144+(n>>12&63)));r.push(String.fromCharCode(128+(n>>6&63)));r.push(String.fromCharCode(128+(n&63)));break;default:r.push(String.fromCharCode(224+(a>>12)));r.push(String.fromCharCode(128+(a>>6&63)));r.push(String.fromCharCode(128+(a&63)));}}return r.join("")};if(w){var Qe=function ho(e){var r=Buffer.alloc(2*e.length),t,a,n=1,i=0,s=0,l;for(a=0;a>>10&1023);t=56320+(t&1023)}if(s!==0){r[i++]=s&255;r[i++]=s>>>8;s=0}r[i++]=t%256;r[i++]=t>>>8}return r.slice(0,i).toString("ucs2")};var er="foo bar baz☃🍣";if(qe(er)==Qe(er))qe=Qe;var rr=function po(e){return y(e,"binary").toString("utf8")};if(qe(er)==rr(er))qe=rr;Ze=function(e){return y(e,"utf8").toString("binary")}}var tr=function(){var e={};return function r(t,a){var n=t+"|"+(a||"");if(e[n])return e[n];return e[n]=new RegExp("<(?:\\w+:)?"+t+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)",a||"")}}();var ar=function(){var e=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map(function(e){return[new RegExp("&"+e[0]+";","ig"),e[1]]});return function r(t){var a=t.replace(/^[\t\n\r ]+/,"").replace(/[\t\n\r ]+$/,"").replace(/>\s+/g,">").replace(/\s+/g,"\n").replace(/<[^>]*>/g,"");for(var n=0;n([\\s\\S]*?)","g")}}();var ir=/<\/?(?:vt:)?variant>/g,sr=/<(?:vt:)([^>]*)>([\s\S]*)"+r+""}function fr(e){return J(e).map(function(r){return" "+r+'="'+e[r]+'"'}).join("")}function ur(e,r,t){return"<"+e+(t!=null?fr(t):"")+(r!=null?(r.match(or)?' xml:space="preserve"':"")+">"+r+""}function hr(e,r){try{return e.toISOString().replace(/\.\d*/,"")}catch(t){if(r)throw t}return""}function pr(e,r){switch(typeof e){case"string":var t=ur("vt:lpwstr",je(e));if(r)t=t.replace(/"/g,"_x0022_");return t;case"number":return ur((e|0)==e?"vt:i4":"vt:r8",je(String(e)));case"boolean":return ur("vt:bool",e?"true":"false");}if(e instanceof Date)return ur("vt:filetime",hr(e));throw new Error("Unable to serialize "+e)}var dr={dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"};dr.main=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"];var mr={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 vr(e,r){var t=1-2*(e[r+7]>>>7);var a=((e[r+7]&127)<<4)+(e[r+6]>>>4&15);var n=e[r+6]&15;for(var i=5;i>=0;--i)n=n*256+e[r+i];if(a==2047)return n==0?t*Infinity:NaN;if(a==0)a=-1022;else{a-=1023;n+=Math.pow(2,52)}return t*Math.pow(2,a-52)*n}function gr(e,r,t){var a=(r<0||1/r==-Infinity?1:0)<<7,n=0,i=0;var s=a?-r:r;if(!isFinite(s)){n=2047;i=isNaN(r)?26985:0}else if(s==0)n=i=0;else{n=Math.floor(Math.log(s)/Math.LN2);i=s*Math.pow(2,52-n);if(n<=-1023&&(!isFinite(i)||i>4|a}var br=function(e){var r=[],t=10240;for(var a=0;a0?Cr(e,r+4,r+4+t-1):""};var Fr=Ar;var Er=function(e,r){var t=jr(e,r);return t>0?Cr(e,r+4,r+4+t-1):""};var Tr=Er;var Or=function(e,r){var t=2*jr(e,r);return t>0?Cr(e,r+4,r+4+t-1):""};var Dr=Or;var Mr,Nr;Mr=Nr=function mo(e,r){var t=jr(e,r);return t>0?yr(e,r+4,r+4+t):""};var Pr=function(e,r){var t=jr(e,r);return t>0?Cr(e,r+4,r+4+t):""};var Rr=Pr;var Ir,Lr;Ir=Lr=function(e,r){return vr(e,r)};var Br=function vo(e){return Array.isArray(e)||typeof Uint8Array!=="undefined"&&e instanceof Uint8Array};if(w){yr=function(e,r,t){if(!Buffer.isBuffer(e))return kr(e,r,t);return e.toString("utf16le",r,t).replace(M,"")};xr=function(e,r,t){return Buffer.isBuffer(e)?e.toString("hex",r,r+t):Sr(e,r,t)};Ar=function go(e,r){if(!Buffer.isBuffer(e))return Fr(e,r);var t=e.readUInt32LE(r);return t>0?e.toString("utf8",r+4,r+4+t-1):""};Er=function bo(e,r){if(!Buffer.isBuffer(e))return Tr(e,r);var t=e.readUInt32LE(r);return t>0?e.toString("utf8",r+4,r+4+t-1):""};Or=function wo(e,r){if(!Buffer.isBuffer(e))return Dr(e,r);var t=2*e.readUInt32LE(r);return e.toString("utf16le",r+4,r+4+t-1)};Mr=function yo(e,r){if(!Buffer.isBuffer(e))return Nr(e,r);var t=e.readUInt32LE(r);return e.toString("utf16le",r+4,r+4+t)};Pr=function ko(e,r){if(!Buffer.isBuffer(e))return Rr(e,r);var t=e.readUInt32LE(r);return e.toString("utf8",r+4,r+4+t)};Cr=function xo(e,r,t){return Buffer.isBuffer(e)?e.toString("utf8",r,t):_r(e,r,t)};br=function(e){return e[0].length>0&&Buffer.isBuffer(e[0][0])?Buffer.concat(e[0].map(function(e){return Buffer.isBuffer(e)?e:y(e)})):wr(e)};D=function(e){return Buffer.concat(e.map(function(e){return Buffer.isBuffer(e)?e:y(e)}))};Ir=function So(e,r){if(Buffer.isBuffer(e))return e.readDoubleLE(r);return Lr(e,r)};Br=function Co(e){return Buffer.isBuffer(e)||Array.isArray(e)||typeof Uint8Array!=="undefined"&&e instanceof Uint8Array}}function zr(){yr=function(e,r,t){return cptable.utils.decode(1200,e.slice(r,t)).replace(M,"")};Cr=function(e,r,t){return cptable.utils.decode(65001,e.slice(r,t))};Ar=function(e,r){var a=jr(e,r);return a>0?cptable.utils.decode(t,e.slice(r+4,r+4+a-1)):""};Er=function(e,t){var a=jr(e,t);return a>0?cptable.utils.decode(r,e.slice(t+4,t+4+a-1)):""};Or=function(e,r){var t=2*jr(e,r);return t>0?cptable.utils.decode(1200,e.slice(r+4,r+4+t-1)):""};Mr=function(e,r){var t=jr(e,r);return t>0?cptable.utils.decode(1200,e.slice(r+4,r+4+t)):""};Pr=function(e,r){var t=jr(e,r);return t>0?cptable.utils.decode(65001,e.slice(r+4,r+4+t)):""}}if(typeof cptable!=="undefined")zr();var Ur=function(e,r){return e[r]};var $r=function(e,r){return e[r+1]*(1<<8)+e[r]};var Wr=function(e,r){var t=e[r+1]*(1<<8)+e[r];return t<32768?t:(65535-t+1)*-1};var jr=function(e,r){return e[r+3]*(1<<24)+(e[r+2]<<16)+(e[r+1]<<8)+e[r]};var Hr=function(e,r){return e[r+3]<<24|e[r+2]<<16|e[r+1]<<8|e[r]};var Vr=function(e,r){return e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3]};function Xr(e,t){var a="",n,i,s=[],l,o,c,f;switch(t){case"dbcs":f=this.l;if(w&&Buffer.isBuffer(this))a=this.slice(this.l,this.l+2*e).toString("utf16le");else for(c=0;c0?Hr:Vr)(this,this.l);this.l+=4;return n}else{i=jr(this,this.l);this.l+=4}return i;case 8:;case-8:if(t==="f"){if(e==8)i=Ir(this,this.l);else i=Ir([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0);this.l+=8;return i}else e=8;case 16:a=xr(this,this.l,e);break;};}this.l+=e;return a}var Gr=function(e,r,t){e[t]=r&255;e[t+1]=r>>>8&255;e[t+2]=r>>>16&255;e[t+3]=r>>>24&255};var Yr=function(e,r,t){e[t]=r&255;e[t+1]=r>>8&255;e[t+2]=r>>16&255;e[t+3]=r>>24&255};var Jr=function(e,r,t){e[t]=r&255;e[t+1]=r>>>8&255};function Kr(e,r,a){var n=0,i=0;if(a==="dbcs"){for(i=0;i!=r.length;++i)Jr(this,r.charCodeAt(i),this.l+2*i);n=2*r.length}else if(a==="sbcs"){if(typeof cptable!=="undefined"&&t==874){for(i=0;i!=r.length;++i){var s=cptable.utils.encode(t,r.charAt(i));this[this.l+i]=s[0]}}else{r=r.replace(/[^\x00-\x7F]/g,"_");for(i=0;i!=r.length;++i)this[this.l+i]=r.charCodeAt(i)&255}n=r.length}else if(a==="hex"){for(;i>8}while(this.l>>=8;this[this.l+1]=r&255;break;case 3:n=3;this[this.l]=r&255;r>>>=8;this[this.l+1]=r&255;r>>>=8;this[this.l+2]=r&255;break;case 4:n=4;Gr(this,r,this.l);break;case 8:n=8;if(a==="f"){gr(this,r,this.l);break};case 16:break;case-4:n=4;Yr(this,r,this.l);break;}this.l+=n;return this}function qr(e,r){var t=xr(this,this.l,e.length>>1);if(t!==e)throw new Error(r+"Expected "+e+" saw "+t);this.l+=e.length>>1}function Zr(e,r){e.l=r;e._R=Xr;e.chk=qr;e._W=Kr}function Qr(e,r){e.l+=r}function et(e){var r=S(e);Zr(r,0);return r}function rt(e,r,t){if(!e)return;var a,n,i;Zr(e,e.l||0);var s=e.length,l=0,o=0;while(e.la.l){a=a.slice(0,a.l);a.l=a.length}if(a.length>0)e.push(a);a=null};var i=function f(e){if(a&&e=128?1:0)+1;if(a>=128)++i;if(a>=16384)++i;if(a>=2097152)++i;var s=e.next(i);if(n<=127)s._W(1,n);else{s._W(1,(n&127)+128);s._W(1,n>>7)}for(var l=0;l!=4;++l){if(a>=128){s._W(1,(a&127)+128);a>>=7}else{s._W(1,a);break}}if(a>0&&Br(t))e.push(t)}function nt(e,r,t){var a=ue(e);if(r.s){if(a.cRel)a.c+=r.s.c;if(a.rRel)a.r+=r.s.r}else{if(a.cRel)a.c+=r.c;if(a.rRel)a.r+=r.r}if(!t||t.biff<12){while(a.c>=256)a.c-=256;while(a.r>=65536)a.r-=65536}return a}function it(e,r,t){var a=ue(e);a.s=nt(a.s,r.s,t);a.e=nt(a.e,r.s,t);return a}function st(e,r){if(e.cRel&&e.c<0){e=ue(e);while(e.c<0)e.c+=r>8?16384:256}if(e.rRel&&e.r<0){e=ue(e);while(e.r<0)e.r+=r>8?1048576:r>5?65536:16384}var t=bt(e);if(!e.cRel&&e.cRel!=null)t=dt(t);if(!e.rRel&&e.rRel!=null)t=ft(t);return t}function lt(e,r){if(e.s.r==0&&!e.s.rRel){if(e.e.r==(r.biff>=12?1048575:r.biff>=8?65536:16384)&&!e.e.rRel){return(e.s.cRel?"":"$")+pt(e.s.c)+":"+(e.e.cRel?"":"$")+pt(e.e.c)}}if(e.s.c==0&&!e.s.cRel){if(e.e.c==(r.biff>=12?16383:255)&&!e.e.cRel){return(e.s.rRel?"":"$")+ct(e.s.r)+":"+(e.e.rRel?"":"$")+ct(e.e.r)}}return st(e.s,r.biff)+":"+st(e.e,r.biff)}function ot(e){return parseInt(ut(e),10)-1}function ct(e){return""+(e+1)}function ft(e){return e.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function ut(e){return e.replace(/\$(\d+)$/,"$1")}function ht(e){var r=mt(e),t=0,a=0;for(;a!==r.length;++a)t=26*t+r.charCodeAt(a)-64;return t-1}function pt(e){if(e<0)throw new Error("invalid column "+e);var r="";for(++e;e;e=Math.floor((e-1)/26))r=String.fromCharCode((e-1)%26+65)+r;return r}function dt(e){return e.replace(/^([A-Z])/,"$$$1")}function mt(e){return e.replace(/^\$([A-Z])/,"$1")}function vt(e){return e.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")}function gt(e){var r=0,t=0;for(var a=0;a=48&&n<=57)r=10*r+(n-48);else if(n>=65&&n<=90)t=26*t+(n-64)}return{c:t-1,r:r-1}}function bt(e){var r=e.c+1;var t="";for(;r;r=(r-1)/26|0)t=String.fromCharCode((r-1)%26+65)+t;return t+(e.r+1)}function wt(e){var r=e.indexOf(":");if(r==-1)return{s:gt(e),e:gt(e)};return{s:gt(e.slice(0,r)),e:gt(e.slice(r+1))}}function yt(e,r){if(typeof r==="undefined"||typeof r==="number"){return yt(e.s,e.e)}if(typeof e!=="string")e=bt(e);if(typeof r!=="string")r=bt(r);return e==r?e:e+":"+r}function kt(e){var r={s:{c:0,r:0},e:{c:0,r:0}};var t=0,a=0,n=0;var i=e.length;for(t=0;a26)break;t=26*t+n}r.s.c=--t;for(t=0;a9)break;t=10*t+n}r.s.r=--t;if(a===i||n!=10){r.e.c=r.s.c;r.e.r=r.s.r;return r}++a;for(t=0;a!=i;++a){if((n=e.charCodeAt(a)-64)<1||n>26)break;t=26*t+n}r.e.c=--t;for(t=0;a!=i;++a){if((n=e.charCodeAt(a)-48)<0||n>9)break;t=10*t+n}r.e.r=--t;return r}function xt(e,r){var t=e.t=="d"&&r instanceof Date;if(e.z!=null)try{return e.w=P.format(e.z,t?re(r):r)}catch(a){}try{return e.w=P.format((e.XF||{}).numFmtId||(t?14:0),t?re(r):r)}catch(a){return""+r}}function St(e,r,t){if(e==null||e.t==null||e.t=="z")return"";if(e.w!==undefined)return e.w;if(e.t=="d"&&!e.z&&t&&t.dateNF)e.z=t.dateNF;if(e.t=="e")return Jt[e.v]||e.v;if(r==undefined)return xt(e,e.v);return xt(e,r)}function Ct(e,r){var t=r&&r.sheet?r.sheet:"Sheet1";var a={};a[t]=e;return{SheetNames:[t],Sheets:a}}function _t(e,r,t){var a=t||{};var n=e?Array.isArray(e):a.dense;if(v!=null&&n==null)n=v;var i=e||(n?[]:{});var s=0,l=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var o=typeof a.origin=="string"?gt(a.origin):a.origin;s=o.r;l=o.c}if(!i["!ref"])i["!ref"]="A1:A1"}var c={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(i["!ref"]){var f=kt(i["!ref"]);c.s.c=f.s.c;c.s.r=f.s.r;c.e.c=Math.max(c.e.c,f.e.c);c.e.r=Math.max(c.e.r,f.e.r);if(s==-1)c.e.r=s=f.e.r+1}for(var u=0;u!=r.length;++u){if(!r[u])continue;if(!Array.isArray(r[u]))throw new Error("aoa_to_sheet expects an array of arrays");for(var h=0;h!=r[u].length;++h){if(typeof r[u][h]==="undefined")continue;var p={v:r[u][h]};var d=s+u,m=l+h;if(c.s.r>d)c.s.r=d;if(c.s.c>m)c.s.c=m;if(c.e.r>16&255,e>>8&255,e&255]})}var Gt=Xt([0,16777215,16711680,65280,255,16776960,16711935,65535,0,16777215,16711680,65280,255,16776960,16711935,65535,8388608,32768,128,8421376,8388736,32896,12632256,8421504,10066431,10040166,16777164,13434879,6684774,16744576,26316,13421823,128,16711935,16776960,65535,8388736,8388608,32896,255,52479,13434879,13434828,16777113,10079487,16751052,13408767,16764057,3368703,3394764,10079232,16763904,16750848,16737792,6710937,9868950,13158,3381606,13056,3355392,10040064,10040166,3355545,3355443,16777215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);var Yt=ue(Gt);var Jt={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"};var Kt=Z(Jt);var qt={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty":"TODO","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.ms-office.chartcolorstyle+xml":"TODO","application/vnd.ms-office.chartstyle+xml":"TODO","application/vnd.ms-office.chartex+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"links","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"links","application/vnd.ms-excel.sheetMetadata":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"TODO","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.openxmlformats-officedocument.themeOverride+xml":"TODO","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"TODO","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"drawings","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO","image/png":"TODO",sheet:"js"};var Zt=function(){var e={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main", +xlam:"application/vnd.ms-excel.addin.macroEnabled.main+xml",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"},comments:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",xlsb:"application/vnd.ms-excel.comments"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},charts:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",xlsb:"application/vnd.ms-excel.chartsheet"},dialogs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",xlsb:"application/vnd.ms-excel.dialogsheet"},macros:{xlsx:"application/vnd.ms-excel.macrosheet+xml",xlsb:"application/vnd.ms-excel.macrosheet"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};J(e).forEach(function(r){["xlsm","xlam"].forEach(function(t){if(!e[r][t])e[r][t]=e[r].xlsx})});J(e).forEach(function(r){J(e[r]).forEach(function(t){qt[e[r][t]]=r})});return e}();var Qt=Q(qt);dr.CT="http://schemas.openxmlformats.org/package/2006/content-types";function ea(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],TODO:[],xmlns:""}}function ra(e){var r=ea();if(!e||!e.match)return r;var t={};(e.match(Ne)||[]).forEach(function(e){var a=Ie(e);switch(a[0].replace(Pe,"<")){case"0?r.calcchains[0]:"";r.sst=r.strs.length>0?r.strs[0]:"";r.style=r.styles.length>0?r.styles[0]:"";r.defaults=t;delete r.calcchains;return r}var ta=ur("Types",null,{xmlns:dr.CT,"xmlns:xsd":dr.xsd,"xmlns:xsi":dr.xsi});var aa=[["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["vml","application/vnd.openxmlformats-officedocument.vmlDrawing"],["data","application/vnd.openxmlformats-officedocument.model+data"],["bmp","image/bmp"],["png","image/png"],["gif","image/gif"],["emf","image/x-emf"],["wmf","image/x-wmf"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["tif","image/tiff"],["tiff","image/tiff"],["pdf","application/pdf"],["rels",Qt.rels[0]]].map(function(e){return ur("Default",null,{Extension:e[0],ContentType:e[1]})});function na(e,r){var t=[],a;t[t.length]=De;t[t.length]=ta;t=t.concat(aa);var n=function(n){if(e[n]&&e[n].length>0){a=e[n][0];t[t.length]=ur("Override",null,{PartName:(a[0]=="/"?"":"/")+a,ContentType:Zt[n][r.bookType||"xlsx"]})}};var i=function(a){(e[a]||[]).forEach(function(e){t[t.length]=ur("Override",null,{PartName:(e[0]=="/"?"":"/")+e,ContentType:Zt[a][r.bookType||"xlsx"]})})};var s=function(r){(e[r]||[]).forEach(function(e){t[t.length]=ur("Override",null,{PartName:(e[0]=="/"?"":"/")+e,ContentType:Qt[r][0]})})};n("workbooks");i("sheets");i("charts");s("themes");["strs","styles"].forEach(n);["coreprops","extprops","custprops"].forEach(s);s("vba");s("comments");s("drawings");if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}var ia={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",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function sa(e){var r=e.lastIndexOf("/");return e.slice(0,r+1)+"_rels/"+e.slice(r+1)+".rels"}function la(e,r){var t={"!id":{}};if(!e)return t;if(r.charAt(0)!=="/"){r="/"+r}var a={};(e.match(Ne)||[]).forEach(function(e){var n=Ie(e);if(n[0]==="2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}var fa=[ia.HLINK,ia.XPATH,ia.XMISS];function ua(e,r,t,a,n,i){if(!n)n={};if(!e["!id"])e["!id"]={};if(r<0)for(r=1;e["!id"]["rId"+r];++r){}n.Id="rId"+r;n.Type=a;n.Target=t;if(i)n.TargetMode=i;else if(fa.indexOf(n.Type)>-1)n.TargetMode="External";if(e["!id"][n.Id])throw new Error("Cannot rewrite rId "+r);e["!id"][n.Id]=n;e[("/"+n.Target).replace("//","/")]=n;return r}var ha="application/vnd.oasis.opendocument.spreadsheet";function pa(e,r){var t=xlml_normalize(e);var a;var n;while(a=xlmlregex.exec(t))switch(a[3]){case"manifest":break;case"file-entry":n=Ie(a[0],false);if(n.path=="/"&&n.type!==ha)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(r&&r.WTF)throw a;}}function da(e){var r=[De];r.push('\n');r.push(' \n');for(var t=0;t\n');r.push("");return r.join("")}function ma(e,r,t){return[' \n',' \n'," \n"].join("")}function va(e,r){return[' \n',' \n'," \n"].join("")}function ga(e){var r=[De];r.push('\n');for(var t=0;t!=e.length;++t){r.push(ma(e[t][0],e[t][1]));r.push(va("",e[t][0]))}r.push(ma("","Document","pkg"));r.push("");return r.join("")}var ba=function(){var r='Sheet'+"JS "+e.version+"";return function t(){return r}}();var wa=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]];dr.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/metadata/core-properties";ia.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties";var ya=function(){var e=new Array(wa.length);for(var r=0;r]*>([\\s\\S]*?)")}return e}();function ka(e){var r={};e=qe(e);for(var t=0;t0)r[a[1]]=Ue(n[1]);if(a[2]==="date"&&r[a[1]])r[a[1]]=ce(r[a[1]])}return r}var xa=ur("cp:coreProperties",null,{"xmlns:cp":dr.CORE_PROPS,"xmlns:dc":dr.dc,"xmlns:dcterms":dr.dcterms,"xmlns:dcmitype":dr.dcmitype,"xmlns:xsi":dr.xsi});function Sa(e,r,t,a,n){if(n[e]!=null||r==null||r==="")return;n[e]=r;r=je(r);a[a.length]=t?ur(e,r,t):cr(e,r)}function Ca(e,r){var t=r||{};var a=[De,xa],n={};if(!e&&!t.Props)return a.join("");if(e){if(e.CreatedDate!=null)Sa("dcterms:created",typeof e.CreatedDate==="string"?e.CreatedDate:hr(e.CreatedDate,t.WTF),{"xsi:type":"dcterms:W3CDTF"},a,n);if(e.ModifiedDate!=null)Sa("dcterms:modified",typeof e.ModifiedDate==="string"?e.ModifiedDate:hr(e.ModifiedDate,t.WTF),{"xsi:type":"dcterms:W3CDTF"},a,n)}for(var i=0;i!=wa.length;++i){var s=wa[i];var l=t.Props&&t.Props[s[1]]!=null?t.Props[s[1]]:e?e[s[1]]:null;if(l===true)l="1";else if(l===false)l="0";else if(typeof l=="number")l=String(l);if(l!=null)Sa(s[0],l,null,a,n)}if(a.length>2){a[a.length]="";a[1]=a[1].replace("/>",">")}return a.join("")}var _a=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]];dr.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties";ia.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties";var Aa=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function Fa(e,r,t,a){var n=[];if(typeof e=="string")n=lr(e,a);else for(var i=0;i0)for(var c=0;c!==n.length;c+=2){o=+n[c+1].v;switch(n[c].v){case"Worksheets":;case"工作表":;case"Листы":;case"أوراق العمل":;case"ワークシート":;case"גליונות עבודה":;case"Arbeitsblätter":;case"Çalışma Sayfaları":;case"Feuilles de calcul":;case"Fogli di lavoro":;case"Folhas de cálculo":;case"Planilhas":;case"Regneark":;case"Hojas de cálculo":;case"Werkbladen":t.Worksheets=o;t.SheetNames=s.slice(l,l+o);break;case"Named Ranges":;case"Rangos con nombre":;case"名前付き一覧":;case"Benannte Bereiche":;case"Navngivne områder":t.NamedRanges=o;t.DefinedNames=s.slice(l,l+o);break;case"Charts":;case"Diagramme":t.Chartsheets=o;t.ChartNames=s.slice(l,l+o);break;}l+=o}}function Ea(e,r,t){var a={};if(!r)r={};e=qe(e);_a.forEach(function(t){var n=(e.match(tr(t[0]))||[])[1];switch(t[2]){case"string":if(n)r[t[1]]=Ue(n);break;case"bool":r[t[1]]=n==="true";break;case"raw":var i=e.match(new RegExp("<"+t[0]+"[^>]*>([\\s\\S]*?)"));if(i&&i.length>0)a[t[1]]=i[1];break;}});if(a.HeadingPairs&&a.TitlesOfParts)Fa(a.HeadingPairs,a.TitlesOfParts,r,t);return r}var Ta=ur("Properties",null,{xmlns:dr.EXT_PROPS,"xmlns:vt":dr.vt});function Oa(e){var r=[],t=ur;if(!e)e={};e.Application="SheetJS";r[r.length]=De;r[r.length]=Ta;_a.forEach(function(a){if(e[a[1]]===undefined)return;var n;switch(a[2]){case"string":n=je(String(e[a[1]]));break;case"bool":n=e[a[1]]?"true":"false";break;}if(n!==undefined)r[r.length]=t(a[0],n)});r[r.length]=t("HeadingPairs",t("vt:vector",t("vt:variant","Worksheets")+t("vt:variant",t("vt:i4",String(e.Worksheets))),{size:2,baseType:"variant"}));r[r.length]=t("TitlesOfParts",t("vt:vector",e.SheetNames.map(function(e){return""+je(e)+""}).join(""),{size:e.Worksheets,baseType:"lpstr"}));if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}dr.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties";ia.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties";var Da=/<[^>]+>[^<]*/g;function Ma(e,r){var t={},a="";var n=e.match(Da);if(n)for(var i=0;i!=n.length;++i){var s=n[i],l=Ie(s);switch(l[0]){case"":a=null;break;default:if(s.indexOf("");var c=o[0].slice(4),f=o[1];switch(c){case"lpstr":;case"bstr":;case"lpwstr":t[a]=Ue(f);break;case"bool":t[a]=Ke(f);break;case"i1":;case"i2":;case"i4":;case"i8":;case"int":;case"uint":t[a]=parseInt(f,10);break;case"r4":;case"r8":;case"decimal":t[a]=parseFloat(f);break;case"filetime":;case"date":t[a]=ce(f);break;case"cy":;case"error":t[a]=Ue(f);break;default:if(c.slice(-1)=="/")break;if(r.WTF&&typeof console!=="undefined")console.warn("Unexpected",s,c,o);}}else if(s.slice(0,2)==="2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}var Ra=function(){var e={1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127,8:865,9:437,10:850,11:437,13:437,14:850,15:437,16:850,17:437,18:850,19:932,20:850,21:437,22:850,23:865,24:437,25:437,26:850,27:437,28:863,29:850,31:852,34:852,35:852,36:860,37:850,38:866,55:850,64:852,77:936,78:949,79:950,80:874,87:1252,88:1252,89:1252,108:863,134:737,135:852,136:857,204:1257,255:16969};var r=q({1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127});var a=[2,3,48,49,131,139,140,245];function n(r,t){var a=[];var n=S(1);switch(t.type){case"base64":n=_(b.decode(r));break;case"binary":n=_(r);break;case"buffer":;case"array":n=r;break;}Zr(n,0);var i=n._R(1);var s=!!(i&136);var l=false,o=false;switch(i){case 2:break;case 3:break;case 48:l=true;s=true;break;case 49:l=true;s=true;break;case 131:break;case 139:break;case 140:o=true;break;case 245:break;default:throw new Error("DBF Unsupported Version: "+i.toString(16));}var c=0,f=521;if(i==2)c=n._R(2);n.l+=3;if(i!=2)c=n._R(4);if(c>1048576)c=1e6;if(i!=2)f=n._R(2);var u=n._R(2);var h=t.codepage||1252;if(i!=2){n.l+=16;n._R(1);if(n[n.l]!==0)h=e[n[n.l]];n.l+=1;n.l+=2}if(o)n.l+=36;var p=[],d={};var m=Math.min(n.length,i==2?521:f-10-(l?264:0));var v=o?32:11;while(n.l0){if(n[n.l]===42){n.l+=u;continue}++n.l;a[++g]=[];w=0;for(w=0;w!=p.length;++w){var y=n.slice(n.l,n.l+p[w].len);n.l+=p[w].len;Zr(y,0);var k=cptable.utils.decode(h,y);switch(p[w].type){case"C":if(k.trim().length)a[g][w]=k.replace(/\s+$/,"");break;case"D":if(k.length===8)a[g][w]=new Date(+k.slice(0,4),+k.slice(4,6)-1,+k.slice(6,8));else a[g][w]=k;break;case"F":a[g][w]=parseFloat(k.trim());break;case"+":;case"I":a[g][w]=o?y._R(-4,"i")^2147483648:y._R(4,"i");break;case"L":switch(k.trim().toUpperCase()){case"Y":;case"T":a[g][w]=true;break;case"N":;case"F":a[g][w]=false;break;case"":;case"?":break;default:throw new Error("DBF Unrecognized L:|"+k+"|");}break;case"M":if(!s)throw new Error("DBF Unexpected MEMO for type "+i.toString(16));a[g][w]="##MEMO##"+(o?parseInt(k.trim(),10):y._R(4));break;case"N":k=k.replace(/\u0000/g,"").trim();if(k&&k!=".")a[g][w]=+k||0;break;case"@":a[g][w]=new Date(y._R(-8,"f")-621356832e5);break;case"T":a[g][w]=new Date((y._R(4)-2440588)*864e5+y._R(4));break;case"Y":a[g][w]=y._R(4,"i")/1e4;break;case"O":a[g][w]=-y._R(-8,"f");break;case"B":if(l&&p[w].len==8){a[g][w]=y._R(8,"f");break};case"G":;case"P":y.l+=p[w].len;break;case"0":if(p[w].name==="_NullFlags")break;default:throw new Error("DBF Unsupported data type "+p[w].type);}}}if(i!=2)if(n.l=0)o(+n.codepage);if(n.type=="string")throw new Error("Cannot write DBF to JS string");var i=tt();var s=ql(e,{header:1,raw:true,cellDates:true});var c=s[0],f=s.slice(1);var u=0,h=0,p=0,d=1;for(u=0;u":190,"?":191,"{":223};var r=new RegExp("N("+J(e).join("|").replace(/\|\|\|/,"|\\||").replace(/([?()+])/g,"\\$1")+"|\\|)","gm");var t=function(r,t){var a=e[t];return typeof a=="number"?m(a):a};var a=function(e,r,t){var a=r.charCodeAt(0)-32<<4|t.charCodeAt(0)-48;return a==59?e:m(a)};e["|"]=254;function n(e,r){switch(r.type){case"base64":return i(b.decode(e),r);case"binary":return i(e,r);case"buffer":return i(w&&Buffer.isBuffer(e)?e.toString("binary"):F(e),r);case"array":return i(fe(e),r);}throw new Error("Unrecognized type "+r.type)}function i(e,n){var i=e.split(/[\n\r]+/),s=-1,l=-1,c=0,f=0,u=[];var h=[];var p=null;var d={},m=[],v=[],g=[];var b=0,w;if(+n.codepage>=0)o(+n.codepage);for(;c!==i.length;++c){b=0;var y=i[c].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,a).replace(r,t);var k=y.replace(/;;/g,"\0").split(";").map(function(e){return e.replace(/\u0000/g,";")});var x=k[0],S;if(y.length>0)switch(x){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":if(k[1].charAt(0)=="P")h.push(y.slice(3).replace(/;;/g,";"));break;case"C":var C=false,_=false,A=false,F=false,E=-1,T=-1;for(f=1;f-1&&u[E][T];if(!D||!D[1])throw new Error("SYLK shared formula cannot find base");u[s][l][1]=fi(D[1],{r:s-E,c:l-T})}break;case"F":var M=0;for(f=1;f0){m[s].hpt=b;m[s].hpx=wn(b)}else if(b===0)m[s].hidden=true;break;default:if(n&&n.WTF)throw new Error("SYLK bad record "+y);}if(M<1)p=null;break;default:if(n&&n.WTF)throw new Error("SYLK bad record "+y);}}if(m.length>0)d["!rows"]=m;if(v.length>0)d["!cols"]=v;if(n&&n.sheetRows)u=u.slice(0,n.sheetRows);return[u,d]}function s(e,r){var t=n(e,r);var a=t[0],i=t[1];var s=At(a,r);J(i).forEach(function(e){s[e]=i[e]});return s}function l(e,r){return Ct(s(e,r),r)}function c(e,r,t,a){var n="C;Y"+(t+1)+";X"+(a+1)+";K";switch(e.t){case"n":n+=e.v||0;if(e.f&&!e.F)n+=";E"+ci(e.f,{r:t,c:a});break;case"b":n+=e.v?"TRUE":"FALSE";break;case"e":n+=e.w||e.v;break;case"d":n+='"'+(e.w||e.v)+'"';break;case"s":n+='"'+e.v.replace(/"/g,"").replace(/;/g,";;")+'"';break;}return n}function f(e,r){r.forEach(function(r,t){var a="F;W"+(t+1)+" "+(t+1)+" ";if(r.hidden)a+="0";else{if(typeof r.width=="number"&&!r.wpx)r.wpx=fn(r.width);if(typeof r.wpx=="number"&&!r.wch)r.wch=un(r.wpx);if(typeof r.wch=="number")a+=Math.round(r.wch)}if(a.charAt(a.length-1)!=" ")e.push(a)})}function u(e,r){r.forEach(function(r,t){var a="F;";if(r.hidden)a+="M0;";else if(r.hpt)a+="M"+20*r.hpt+";";else if(r.hpx)a+="M"+20*bn(r.hpx)+";";if(a.length>2)e.push(a+"R"+(t+1))})}function h(e,r){var t=["ID;PWXL;N;E"],a=[];var n=kt(e["!ref"]),i;var s=Array.isArray(e);var l="\r\n";t.push("P;PGeneral");t.push("F;P0;DG0G8;M255");if(e["!cols"])f(t,e["!cols"]);if(e["!rows"])u(t,e["!rows"]);t.push("B;Y"+(n.e.r-n.s.r+1)+";X"+(n.e.c-n.s.c+1)+";D"+[n.s.c,n.s.r,n.e.c,n.e.r].join(" "));for(var o=n.s.r;o<=n.e.r;++o){for(var h=n.s.c;h<=n.e.c;++h){var p=bt({r:o,c:h});i=s?(e[o]||[])[h]:e[p];if(!i||i.v==null&&(!i.f||i.F))continue;a.push(c(i,e,o,h,r))}}return t.join(l)+l+a.join(l)+l+"E"+l}return{to_workbook:l,to_sheet:s,from_sheet:h}}();var La=function(){function e(e,t){switch(t.type){case"base64":return r(b.decode(e),t);case"binary":return r(e,t);case"buffer":return r(w&&Buffer.isBuffer(e)?e.toString("binary"):F(e),t);case"array":return r(fe(e),t);}throw new Error("Unrecognized type "+t.type)}function r(e,r){var t=e.split("\n"),a=-1,n=-1,i=0,s=[];for(;i!==t.length;++i){if(t[i].trim()==="BOT"){s[++a]=[];n=0;continue}if(a<0)continue;var l=t[i].trim().split(",");var o=l[0],c=l[1];++i;var f=t[i]||"";while((f.match(/["]/g)||[]).length&1&&i=0&&i[s].length===0)--s;var l=10,o=0;var c=0;for(;c<=s;++c){o=i[c].indexOf(" ");if(o==-1)o=i[c].length;else o++;l=Math.max(l,o)}for(c=0;c<=s;++c){n[c]=[];var f=0;e(i[c].slice(0,l).trim(),n,c,f,a);for(f=1;f<=(i[c].length-l)/10+1;++f)e(i[c].slice(l+(f-1)*10,l+f*10).trim(),n,c,f,a)}if(a.sheetRows)n=n.slice(0,a.sheetRows);return n}var t={44:",",9:"\t",59:";",124:"|"};var a={44:3,9:2,59:1,124:0};function n(e){var r={},n=false,i=0,s=0;for(;i0)b();i["!ref"]=yt(s);return i}function s(e,t){if(!(t&&t.PRN))return i(e,t);if(t.FS)return i(e,t);if(e.slice(0,4)=="sep=")return i(e,t);if(e.indexOf("\t")>=0||e.indexOf(",")>=0||e.indexOf(";")>=0)return i(e,t);return At(r(e,t),t)}function l(e,r){var t="",a=r.type=="string"?[0,0,0,0]:ml(e,r);switch(r.type){case"base64":t=b.decode(e);break;case"binary":t=e;break;case"buffer":if(r.codepage==65001)t=e.toString("utf8");else if(r.codepage&&typeof cptable!=="undefined")t=cptable.utils.decode(r.codepage,e);else t=w&&Buffer.isBuffer(e)?e.toString("binary"):F(e);break;case"array":t=fe(e);break;case"string":t=e;break;default:throw new Error("Unrecognized type "+r.type);}if(a[0]==239&&a[1]==187&&a[2]==191)t=qe(t.slice(3));else if(r.type!="string"&&r.type!="buffer"&&r.codepage==65001)t=qe(t);else if(r.type=="binary"&&typeof cptable!=="undefined"&&r.codepage)t=cptable.utils.decode(r.codepage,cptable.utils.encode(28591,t));if(t.slice(0,19)=="socialcalc:version:")return Ba.to_sheet(r.type=="string"?t:qe(t),r);return s(t,r)}function o(e,r){return Ct(l(e,r),r)}function c(e){var r=[];var t=kt(e["!ref"]),a;var n=Array.isArray(e);for(var i=t.s.r;i<=t.e.r;++i){var s=[];for(var l=t.s.c;l<=t.e.c;++l){var o=bt({r:i,c:l});a=n?(e[i]||[])[l]:e[o];if(!a||a.v==null){s.push(" ");continue}var c=(a.w||(St(a),a.w)||"").slice(0,10);while(c.length<10)c+=" ";s.push(c+(l===0?" ":""))}r.push(s.join(""))}return r.join("\n")}return{to_workbook:o,to_sheet:l,from_sheet:c}}();function Ua(e,r){var t=r||{},a=!!t.WTF;t.WTF=true;try{var n=Ia.to_workbook(e,t);t.WTF=a;return n}catch(i){t.WTF=a;if(!i.message.match(/SYLK bad record ID/)&&a)throw i;return za.to_workbook(e,r)}}function $a(e){var r={},t=e.match(Ne),a=0;var n=false;if(t)for(;a!=t.length;++a){var s=Ie(t[a]);switch(s[0].replace(/\w*:/g,"")){case"":;case"":r.shadow=1;break;case"":break;case"":;case"":r.outline=1;break;case"":break;case"":;case"":r.strike=1;break;case"":break;case"":;case"":r.u=1;break;case"":break;case"":;case"":r.b=1;break;case"":break;case"":;case"":r.i=1;break;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"
":break;case"":n=false;break;default:if(s[0].charCodeAt(1)!==47&&!n)throw new Error("Unrecognized rich format "+s[0]);}}return r}var Wa=function(){var e=tr("t"),r=tr("rPr");function t(t){var a=t.match(e);if(!a)return{t:"s",v:""};var n={t:"s",v:Ue(a[1])};var i=t.match(r);if(i)n.s=$a(i[1]);return n}var a=/<(?:\w+:)?r>/g,n=/<\/(?:\w+:)?r>/;return function i(e){return e.replace(a,"").split(n).map(t).filter(function(e){return e.v})}}();var ja=function _o(){var e=/(\r\n|\n)/g;function r(e,r,t){var a=[];if(e.u)a.push("text-decoration: underline;");if(e.uval)a.push("text-underline-style:"+e.uval+";");if(e.sz)a.push("font-size:"+e.sz+"pt;");if(e.outline)a.push("text-effect: outline;");if(e.shadow)a.push("text-shadow: auto;");r.push('');if(e.b){r.push("");t.push("")}if(e.i){r.push("");t.push("")}if(e.strike){r.push("");t.push("")}var n=e.valign||"";if(n=="superscript"||n=="super")n="sup";else if(n=="subscript")n="sub";if(n!=""){r.push("<"+n+">");t.push("")}t.push("");return e}function t(t){var a=[[],t.v,[]];if(!t.v)return"";if(t.s)r(t.s,a[0],a[2]);return a[0].join("")+a[1].replace(e,"
")+a[2].join("")}return function a(e){return e.map(t).join("")}}();var Ha=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,Va=/<(?:\w+:)?r>/;var Xa=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function Ga(e,r){var t=r?r.cellHTML:true;var a={};if(!e)return{t:""};if(e.match(/^\s*<(?:\w+:)?t[^>]*>/)){a.t=Ue(qe(e.slice(e.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||""));a.r=qe(e);if(t)a.h=Xe(a.t)}else if(e.match(Va)){a.r=qe(e);a.t=Ue(qe((e.replace(Xa,"").match(Ha)||[]).join("").replace(Ne,"")));if(t)a.h=ja(Wa(a.r))}return a}var Ya=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/;var Ja=/<(?:\w+:)?(?:si|sstItem)>/g;var Ka=/<\/(?:\w+:)?(?:si|sstItem)>/;function qa(e,r){var t=[],a="";if(!e)return t;var n=e.match(Ya);if(n){a=n[2].replace(Ja,"").split(Ka);for(var i=0;i!=a.length;++i){var s=Ga(a[i].trim(),r);if(s!=null)t[t.length]=s}n=Ie(n[1]);t.Count=n.count;t.Unique=n.uniqueCount}return t}ia.SST="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings";var Za=/^\s|\s$|[\t\n\r]/;function Qa(e,r){if(!r.bookSST)return"";var t=[De];t[t.length]=ur("sst",null,{xmlns:dr.main[0],count:e.Count,uniqueCount:e.Unique});for(var a=0;a!=e.length;++a){if(e[a]==null)continue;var n=e[a];var i="";if(n.r)i+=n.r;else{i+=""}i+="";t[t.length]=i}if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}function en(e){var r=e.slice(e[0]==="#"?1:0).slice(0,6);return[parseInt(r.slice(0,2),16),parseInt(r.slice(2,4),16),parseInt(r.slice(4,6),16)]}function rn(e){for(var r=0,t=1;r!=3;++r)t=t*256+(e[r]>255?255:e[r]<0?0:e[r]);return t.toString(16).toUpperCase().slice(1)}function tn(e){var r=e[0]/255,t=e[1]/255,a=e[2]/255;var n=Math.max(r,t,a),i=Math.min(r,t,a),s=n-i;if(s===0)return[0,0,r];var l=0,o=0,c=n+i;o=s/(c>1?2-c:c);switch(n){case r:l=((t-a)/s+6)%6;break;case t:l=(a-r)/s+2;break;case a:l=(r-t)/s+4;break;}return[l/6,o,c/2]}function an(e){var r=e[0],t=e[1],a=e[2];var n=t*2*(a<.5?a:1-a),i=a-n/2;var s=[i,i,i],l=6*r;var o;if(t!==0)switch(l|0){case 0:;case 6:o=n*l;s[0]+=n;s[1]+=o;break;case 1:o=n*(2-l);s[0]+=o;s[1]+=n;break;case 2:o=n*(l-2);s[1]+=n;s[2]+=o;break;case 3:o=n*(4-l);s[1]+=o;s[2]+=n;break;case 4:o=n*(l-4);s[2]+=n;s[0]+=o;break;case 5:o=n*(6-l);s[2]+=o;s[0]+=n;break;}for(var c=0;c!=3;++c)s[c]=Math.round(s[c]*255);return s}function nn(e,r){if(r===0)return e;var t=tn(en(e));if(r<0)t[2]=t[2]*(1+r);else t[2]=1-(1-t[2])*(1-r);return rn(an(t))}var sn=6,ln=15,on=1,cn=sn;function fn(e){return Math.floor((e+Math.round(128/cn)/256)*cn)}function un(e){return Math.floor((e-5)/cn*100+.5)/100}function hn(e){return Math.round((e*cn+5)/cn*256)/256}function pn(e){return hn(un(fn(e)))}function dn(e){var r=Math.abs(e-pn(e)),t=cn;if(r>.005)for(cn=on;cn":;case"":break;case"":;case"":n={};if(t.diagonalUp)n.diagonalUp=Ke(t.diagonalUp);if(t.diagonalDown)n.diagonalDown=Ke(t.diagonalDown);r.Borders.push(n);break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":;case"":break;case"":i=false;break;default:if(a&&a.WTF){if(!i)throw new Error("unrecognized "+t[0]+" in borders")};}})}function xn(e,r,t,a){r.Fills=[];var n={};var i=false;(e[0].match(Ne)||[]).forEach(function(e){var t=Ie(e);switch(Le(t[0])){case"":;case"":break;case"":;case"":n={};r.Fills.push(n);break;case"":break;case"":break;case"":r.Fills.push(n);n={};break;case"":if(t.patternType)n.patternType=t.patternType;break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":break;case"":break;case"":break;case"":break;case"":;case"":break;case"":i=false;break;default:if(a&&a.WTF){if(!i)throw new Error("unrecognized "+t[0]+" in fills")};}})}function Sn(e,r,t,a){r.Fonts=[];var n={};var s=false;(e[0].match(Ne)||[]).forEach(function(e){var l=Ie(e);switch(Le(l[0])){case"":;case"":break;case"":break;case"
":;case"":r.Fonts.push(n);n={};break;case"":;case"":break;case"":n.bold=1;break;case"":n.italic=1;break;case"":n.underline=1;break;case"":n.strike=1;break;case"":n.outline=1;break;case"":n.shadow=1;break;case"":n.condense=1;break;case"":n.extend=1;break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":;case"":break;case"":s=false;break;case"":;case"":break;case"":s=false;break;default:if(a&&a.WTF){if(!s)throw new Error("unrecognized "+l[0]+" in fonts")};}})}function Cn(e,r,t){r.NumberFmt=[];var a=J(P._table);for(var n=0;n":;case"":;case"":break;case"0){if(o>392){for(o=392;o>60;--o)if(r.NumberFmt[o]==null)break;r.NumberFmt[o]=l}P.load(l,o)}}break;case"":break;default:if(t.WTF)throw new Error("unrecognized "+s[0]+" in numFmts");}}}function _n(e){var r=[""];[[5,8],[23,26],[41,44],[50,392]].forEach(function(t){for(var a=t[0];a<=t[1];++a)if(e[a]!=null)r[r.length]=ur("numFmt",null,{numFmtId:a,formatCode:je(e[a])})});if(r.length===1)return"";r[r.length]="";r[0]=ur("numFmts",null,{count:r.length-2}).replace("/>",">");return r.join("")}var An=["numFmtId","fillId","fontId","borderId","xfId"];var Fn=["applyAlignment","applyBorder","applyFill","applyFont","applyNumberFormat","applyProtection","pivotButton","quotePrefix"];function En(e,r,t){r.CellXf=[];var a;var n=false;(e[0].match(Ne)||[]).forEach(function(e){var i=Ie(e),s=0;switch(Le(i[0])){case"":;case"":;case"":break;case"":a=i;delete a[0];for(s=0;s392){for(s=392;s>60;--s)if(r.NumberFmt[a.numFmtId]==r.NumberFmt[s]){a.numFmtId=s;break}}r.CellXf.push(a);break;case"":break;case"":var l={};if(i.vertical)l.vertical=i.vertical;if(i.horizontal)l.horizontal=i.horizontal;if(i.textRotation!=null)l.textRotation=i.textRotation;if(i.indent)l.indent=i.indent;if(i.wrapText)l.wrapText=Ke(i.wrapText);a.alignment=l;break;case"":break;case"":;case"":break;case"":n=false;break;case"":;case"":break;case"":n=false;break;default:if(t&&t.WTF){if(!n)throw new Error("unrecognized "+i[0]+" in cellXfs")};}})}function Tn(e){var r=[];r[r.length]=ur("cellXfs",null);e.forEach(function(e){r[r.length]=ur("xf",null,e)});r[r.length]="";if(r.length===2)return"";r[0]=ur("cellXfs",null,{count:r.length-2}).replace("/>",">");return r.join("")}var On=function Ao(){var e=/<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/;var r=/<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/;var t=/<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/;var a=/<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/;var n=/<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/;return function i(s,l,o){var c={};if(!s)return c;s=s.replace(//gm,"").replace(//gm,"");var f;if(f=s.match(e))Cn(f,c,o);if(f=s.match(a))Sn(f,c,l,o);if(f=s.match(t))xn(f,c,l,o);if(f=s.match(n))kn(f,c,l,o);if(f=s.match(r))En(f,c,o);return c}}();var Dn=ur("styleSheet",null,{xmlns:dr.main[0],"xmlns:vt":dr.vt});ia.STY="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles";function Mn(e,r){var t=[De,Dn],a;if(e.SSF&&(a=_n(e.SSF))!=null)t[t.length]=a;t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';if(a=Tn(r.cellXfs))t[t.length]=a;t[t.length]='';t[t.length]='';t[t.length]='';if(t.length>2){t[t.length]="";t[1]=t[1].replace("/>",">")}return t.join("")}ia.THEME="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme";var Nn=["","","","","","","","","","","",""];function Pn(e,r,t){r.themeElements.clrScheme=[];var a={};(e[0].match(Ne)||[]).forEach(function(e){var n=Ie(e);switch(n[0]){case"":break;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":;case"":if(n[0].charAt(1)==="/"){r.themeElements.clrScheme[Nn.indexOf(n[0])]=a;a={}}else{a.name=n[0].slice(3,n[0].length-1)}break;default:if(t&&t.WTF)throw new Error("Unrecognized "+n[0]+" in clrScheme");}})}function Rn(){}function In(){}var Ln=/]*)>[\s\S]*<\/a:clrScheme>/;var Bn=/]*)>[\s\S]*<\/a:fontScheme>/;var zn=/]*)>[\s\S]*<\/a:fmtScheme>/;function Un(e,r,t){r.themeElements={};var a;[["clrScheme",Ln,Pn],["fontScheme",Bn,Rn],["fmtScheme",zn,In]].forEach(function(n){if(!(a=e.match(n[1])))throw new Error(n[0]+" not found in themeElements");n[2](a,r,t)})}var $n=/]*)>[\s\S]*<\/a:themeElements>/;function Wn(e,r){if(!e||e.length===0)return Wn(jn());var t;var a={};if(!(t=e.match($n)))throw new Error("themeElements not found in theme");Un(t[0],a,r);a.raw=e;return a}function jn(e,r){if(r&&r.themeXLSX)return r.themeXLSX;if(e&&typeof e.raw=="string")return e.raw;var t=[De];t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]='';t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]='';t[t.length]="";t[t.length]="";t[t.length]="";t[t.length]="";return t.join("")}function Hn(){}function Vn(e,r,t,a){if(!e)return e;var n=a||{};var i=false,s=false;rt(e,function l(e,r,t){if(s)return;switch(t){case 359:;case 363:;case 364:;case 366:;case 367:;case 368:;case 369:;case 370:;case 371:;case 472:;case 577:;case 578:;case 579:;case 580:;case 581:;case 582:;case 583:;case 584:;case 585:;case 586:;case 587:break;case 35:i=true;break;case 36:i=false;break;default:if((r||"").indexOf("Begin")>0){}else if((r||"").indexOf("End")>0){}else if(!i||n.WTF)throw new Error("Unexpected record "+t.toString(16)+" "+r);}},n)}ia.IMG="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image";ia.DRAW="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing";function Xn(e,r){if(!e)return"??";var t=(e.match(/]*r:id="([^"]*)"/)||["",""])[1];return r["!id"][t].Target}var Gn=1024;function Yn(e,r){var t=[21600,21600];var a=["m0,0l0",t[1],t[0],t[1],t[0],"0xe"].join(",");var n=[ur("xml",null,{"xmlns:v":mr.v,"xmlns:o":mr.o,"xmlns:x":mr.x,"xmlns:mv":mr.mv}).replace(/\/>/,">"),ur("o:shapelayout",ur("o:idmap",null,{"v:ext":"edit",data:e}),{"v:ext":"edit"}),ur("v:shapetype",[ur("v:stroke",null,{joinstyle:"miter"}),ur("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:t.join(","),path:a})];while(Gn",i,ur("v:shadow",null,s),ur("v:path",null,{"o:connecttype":"none"}),'
','',"","",cr("x:Anchor",[r.c+1,0,r.r+1,0,r.c+3,20,r.r+5,20].join(",")),cr("x:AutoFill","False"),cr("x:Row",String(r.r)),cr("x:Column",String(r.c)),e[1].hidden?"":"","",""])});n.push("");return n.join("")}ia.CMNT="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments";function Jn(e,r){var t=Array.isArray(e);var a;r.forEach(function(r){var n=gt(r.ref);if(t){if(!e[n.r])e[n.r]=[];a=e[n.r][n.c]}else a=e[r.ref];if(!a){a={t:"z"};if(t)e[n.r][n.c]=a;else e[r.ref]=a;var i=kt(e["!ref"]||"BDWGO1000001:A1");if(i.s.r>n.r)i.s.r=n.r;if(i.e.rn.c)i.s.c=n.c;if(i.e.c/))return[];var t=[];var a=[];var n=e.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);if(n&&n[1])n[1].split(/<\/\w*:?author>/).forEach(function(e){if(e===""||e.trim()==="")return;var r=e.match(/<(?:\w+:)?author[^>]*>(.*)/);if(r)t.push(r[1])});var i=e.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);if(i&&i[1])i[1].split(/<\/\w*:?comment>/).forEach(function(e){if(e===""||e.trim()==="")return;var n=e.match(/<(?:\w+:)?comment[^>]*>/);if(!n)return;var i=Ie(n[0]);var s={author:i.authorId&&t[i.authorId]||"sheetjsghost",ref:i.ref,guid:i.guid};var l=gt(i.ref);if(r.sheetRows&&r.sheetRows<=l.r)return;var o=e.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/);var c=!!o&&!!o[1]&&Ga(o[1])||{r:"",t:"",h:""};s.r=c.r;if(c.r=="")c.t=c.h="";s.t=(c.t||"").replace(/\r\n/g,"\n").replace(/\r/g,"\n");if(r.cellHTML)s.h=c.h;a.push(s)});return a}var qn=ur("comments",null,{xmlns:dr.main[0]});function Zn(e){var r=[De,qn];var t=[];r.push("");e.forEach(function(e){e[1].forEach(function(e){var a=je(e.a);if(t.indexOf(a)>-1)return;t.push(a);r.push(""+a+"")})});r.push("");r.push("");e.forEach(function(e){e[1].forEach(function(a){r.push('');r.push(cr("t",a.t==null?"":je(a.t)));r.push("")})});r.push("");if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}var Qn="application/vnd.ms-office.vbaProject";function ei(e){var r=H.utils.cfb_new({root:"R"});e.FullPaths.forEach(function(t,a){if(t.slice(-1)==="/"||!t.match(/_VBA_PROJECT_CUR/))return;var n=t.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");H.utils.cfb_add(r,n,e.FileIndex[a].content)});return H.write(r)}function ri(e,r){r.FullPaths.forEach(function(t,a){if(a==0)return;var n=t.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");if(n.slice(-1)!=="/")H.utils.cfb_add(e,n,r.FileIndex[a].content)})}var ti=["xlsb","xlsm","xlam","biff8","xla"];ia.DS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet";ia.MS="http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet";function ai(){return{"!type":"dialog"}}function ni(){return{"!type":"dialog"}}function ii(){return{"!type":"macro"}}function si(){return{"!type":"macro"}}var li=function(){var e=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g;var r={r:0,c:0};function t(e,t,a,n){var i=false,s=false;if(a.length==0)s=true;else if(a.charAt(0)=="["){s=true;a=a.slice(1,-1)}if(n.length==0)i=true;else if(n.charAt(0)=="["){i=true;n=n.slice(1,-1)}var l=a.length>0?parseInt(a,10)|0:0,o=n.length>0?parseInt(n,10)|0:0;if(i)o+=r.c;else--o;if(s)l+=r.r;else--l;return t+(i?"":"$")+pt(o)+(s?"":"$")+ct(l)}return function a(n,i){r=i;return n.replace(e,t)}}();var oi=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g;var ci=function(){return function e(r,t){return r.replace(oi,function(e,r,a,n,i,s){var l=ht(n)-(a?0:t.c);var o=ot(s)-(i?0:t.r);var c=o==0?"":!i?"["+o+"]":o+1;var f=l==0?"":!a?"["+l+"]":l+1;return r+"R"+c+"C"+f})}}();function fi(e,r){return e.replace(oi,function(e,t,a,n,i,s){return t+(a=="$"?a+n:pt(ht(n)+r.c))+(i=="$"?i+s:ct(ot(s)+r.r))})}function ui(e,r,t){var a=wt(r),n=a.s,i=gt(t);var s={r:i.r-n.r,c:i.c-n.c};return fi(e,s)}function hi(e){if(e.length==1)return false;return true}function pi(e){return e.replace(/_xlfn\./g,"")}function di(e){if(e.slice(0,3)=="of:")e=e.slice(3);if(e.charCodeAt(0)==61){e=e.slice(1);if(e.charCodeAt(0)==61)e=e.slice(1)}e=e.replace(/COM\.MICROSOFT\./g,"");e=e.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g,function(e,r){return r.replace(/\./g,"")});e=e.replace(/\[.(#[A-Z]*[?!])\]/g,"$1");return e.replace(/[;~]/g,",").replace(/\|/g,";")}function mi(e){var r="of:="+e.replace(oi,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return r.replace(/;/g,"|").replace(/,/g,";")}function vi(e){var r=e.split(":");var t=r[0].split(".")[0];return[t,r[0].split(".")[1]+(r.length>1?":"+(r[1].split(".")[1]||r[1].split(".")[0]):"")]}function gi(e){return e.replace(/\./,"!")}var bi={};var wi={};ia.WS=["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"];var yi=typeof Map!=="undefined";function ki(e,r,t){var a=0,n=e.length;if(t){if(yi?t.has(r):Object.prototype.hasOwnProperty.call(t,r)){var i=yi?t.get(r):t[r];for(;a-1){t.width=hn(a);t.customWidth=1}else if(r.width!=null)t.width=r.width;if(r.hidden)t.hidden=true;if(r.level!=null){t.outlineLevel=t.level=r.level}return t}function Si(e,r){if(!e)return;var t=[.7,.7,.75,.75,.3,.3];if(r=="xlml")t=[1,1,1,1,.5,.5];if(e.left==null)e.left=t[0];if(e.right==null)e.right=t[1];if(e.top==null)e.top=t[2];if(e.bottom==null)e.bottom=t[3];if(e.header==null)e.header=t[4];if(e.footer==null)e.footer=t[5]}function Ci(e,r,t){var a=t.revssf[r.z!=null?r.z:"General"];var n=60,i=e.length;if(a==null&&t.ssf){for(;n<392;++n)if(t.ssf[n]==null){P.load(r.z,n);t.ssf[n]=r.z;t.revssf[r.z]=a=n;break}}for(n=0;n!=i;++n)if(e[n].numFmtId===a)return n;e[i]={numFmtId:a,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1};return i}function _i(e,r,t,a,n,i){try{if(a.cellNF)e.z=P._table[r]}catch(s){if(a.WTF)throw s}if(e.t==="z"&&!a.cellStyles)return;if(e.t==="d"&&typeof e.v==="string")e.v=ce(e.v);if((!a||a.cellText!==false)&&e.t!=="z")try{if(P._table[r]==null)P.load(L[r]||"General",r);if(e.t==="e")e.w=e.w||Jt[e.v];else if(r===0){if(e.t==="n"){if((e.v|0)===e.v)e.w=P._general_int(e.v);else e.w=P._general_num(e.v)}else if(e.t==="d"){var l=re(e.v);if((l|0)===l)e.w=P._general_int(l);else e.w=P._general_num(l)}else if(e.v===undefined)return"";else e.w=P._general(e.v,wi)}else if(e.t==="d")e.w=P.format(r,re(e.v),wi);else e.w=P.format(r,e.v,wi)}catch(s){if(a.WTF)throw s}if(!a.cellStyles)return;if(t!=null)try{e.s=i.Fills[t];if(e.s.fgColor&&e.s.fgColor.theme&&!e.s.fgColor.rgb){e.s.fgColor.rgb=nn(n.themeElements.clrScheme[e.s.fgColor.theme].rgb,e.s.fgColor.tint||0);if(a.WTF)e.s.fgColor.raw_rgb=n.themeElements.clrScheme[e.s.fgColor.theme].rgb}if(e.s.bgColor&&e.s.bgColor.theme){e.s.bgColor.rgb=nn(n.themeElements.clrScheme[e.s.bgColor.theme].rgb,e.s.bgColor.tint||0);if(a.WTF)e.s.bgColor.raw_rgb=n.themeElements.clrScheme[e.s.bgColor.theme].rgb}}catch(s){if(a.WTF&&i.Fills)throw s}}function Ai(e,r,t){if(e&&e["!ref"]){var a=kt(e["!ref"]);if(a.e.c=0&&t.s.c>=0)e["!ref"]=yt(t)}var Ei=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g;var Ti=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/;var Oi=/<(?:\w:)?hyperlink [^>]*>/gm;var Di=/"(\w*:\w*)"/;var Mi=/<(?:\w:)?col\b[^>]*[\/]?>/g;var Ni=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g;var Pi=/<(?:\w:)?pageMargins[^>]*\/>/g;var Ri=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/;var Ii=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/;var Li=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function Bi(e,r,t,a,n,i,s){if(!e)return e;if(!a)a={"!id":{}};if(v!=null&&r.dense==null)r.dense=v;var l=r.dense?[]:{};var o={s:{r:2e6,c:2e6},e:{r:0,c:0}};var c="",f="";var u=e.match(Ti);if(u){c=e.slice(0,u.index);f=e.slice(u.index+u[0].length)}else c=f=e;var h=c.match(Ri);if(h)Ui(h[0],l,n,t);else if(h=c.match(Ii))$i(h[0],h[1]||"",l,n,t,s,i);var p=(c.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(p>0){var d=c.slice(p,p+50).match(Di);if(d)Fi(l,d[1])}var m=c.match(Li);if(m&&m[1])es(m[1],n);var g=[];if(r.cellStyles){var b=c.match(Mi);if(b)Ji(g,b)}if(u)as(u[1],l,r,o,i,s);var w=f.match(Ni);if(w)l["!autofilter"]=qi(w[0]);var y=[];var k=f.match(Ei);if(k)for(p=0;p!=k.length;++p)y[p]=kt(k[p].slice(k[p].indexOf('"')+1));var x=f.match(Oi);if(x)Xi(l,x,a);var S=f.match(Pi);if(S)l["!margins"]=Gi(Ie(S[0]));if(!l["!ref"]&&o.e.c>=o.s.c&&o.e.r>=o.s.r)l["!ref"]=yt(o);if(r.sheetRows>0&&l["!ref"]){var C=kt(l["!ref"]);if(r.sheetRows<=+C.e.r){C.e.r=r.sheetRows-1;if(C.e.r>o.e.r)C.e.r=o.e.r;if(C.e.ro.e.c)C.e.c=o.e.c;if(C.e.c0)l["!cols"]=g;if(y.length>0)l["!merges"]=y;return l}function zi(e){if(e.length===0)return"";var r='';for(var t=0;t!=e.length;++t)r+='';return r+""}function Ui(e,r,t,a){var n=Ie(e);if(!t.Sheets[a])t.Sheets[a]={};if(n.codeName)t.Sheets[a].CodeName=Ue(qe(n.codeName))}function $i(e,r,t,a,n,i,s){Ui(e.slice(0,e.indexOf(">")),t,a,n)}function Wi(e,r,t,a,n){var i=false;var s={},l=null;if(a.bookType!=="xlsx"&&r.vbaraw){var o=r.SheetNames[t];try{if(r.Workbook)o=r.Workbook.Sheets[t].CodeName||o}catch(c){}i=true;s.codeName=Ze(je(o))}if(e&&e["!outline"]){var f={summaryBelow:1,summaryRight:1};if(e["!outline"].above)f.summaryBelow=0;if(e["!outline"].left)f.summaryRight=0;l=(l||"")+ur("outlinePr",null,f)}if(!i&&!l)return;n[n.length]=ur("sheetPr",l,s)}var ji=["objects","scenarios","selectLockedCells","selectUnlockedCells"];var Hi=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function Vi(e){var r={sheet:1};ji.forEach(function(t){if(e[t]!=null&&e[t])r[t]="1"});Hi.forEach(function(t){if(e[t]!=null&&!e[t])r[t]="0"});if(e.password)r.password=crypto_CreatePasswordVerifier_Method1(e.password).toString(16).toUpperCase();return ur("sheetProtection",null,r)}function Xi(e,r,t){var a=Array.isArray(e);for(var n=0;n!=r.length;++n){var i=Ie(qe(r[n]),true);if(!i.ref)return;var s=((t||{})["!id"]||[])[i.id];if(s){i.Target=s.Target;if(i.location)i.Target+="#"+Ue(i.location)}else{i.Target="#"+Ue(i.location);s={Target:i.Target,TargetMode:"Internal"}}i.Rel=s;if(i.tooltip){i.Tooltip=i.tooltip;delete i.tooltip}var l=kt(i.ref);for(var o=l.s.r;o<=l.e.r;++o)for(var c=l.s.c;c<=l.e.c;++c){var f=bt({c:c,r:o});if(a){if(!e[o])e[o]=[];if(!e[o][c])e[o][c]={t:"z",v:undefined};e[o][c].l=i}else{if(!e[f])e[f]={t:"z",v:undefined};e[f].l=i}}}}function Gi(e){var r={};["left","right","top","bottom","header","footer"].forEach(function(t){if(e[t])r[t]=parseFloat(e[t])});return r}function Yi(e){Si(e);return ur("pageMargins",null,e)}function Ji(e,r){var t=false;for(var a=0;a!=r.length;++a){var n=Ie(r[a],true);if(n.hidden)n.hidden=Ke(n.hidden);var i=parseInt(n.min,10)-1,s=parseInt(n.max,10)-1;if(n.outlineLevel)n.level=+n.outlineLevel||0;delete n.min;delete n.max;n.width=+n.width;if(!t&&n.width){t=true;dn(n.width)}mn(n);while(i<=s)e[i++]=ue(n)}}function Ki(e,r){var t=[""],a;for(var n=0;n!=r.length;++n){if(!(a=r[n]))continue;t[t.length]=ur("col",null,xi(n,a))}t[t.length]="";return t.join("")}function qi(e){var r={ref:(e.match(/ref="([^"]*)"/)||[])[1]};return r}function Zi(e,r,t,a){var n=typeof e.ref=="string"?e.ref:yt(e.ref);if(!t.Workbook)t.Workbook={Sheets:[]};if(!t.Workbook.Names)t.Workbook.Names=[];var i=t.Workbook.Names;var s=wt(n);if(s.s.r==s.e.r){s.e.r=wt(r["!ref"]).e.r;n=yt(s)}for(var l=0;la-z][^>]*)?\/?>/;function es(e,r){if(!r.Views)r.Views=[{}];(e.match(Qi)||[]).forEach(function(e,t){var a=Ie(e);if(!r.Views[t])r.Views[t]={};if(+a.zoomScale)r.Views[t].zoom=+a.zoomScale;if(Ke(a.rightToLeft))r.Views[t].RTL=true})}function rs(e,r,t,a){var n={workbookViewId:"0"};if((((a||{}).Workbook||{}).Views||[])[0])n.rightToLeft=a.Workbook.Views[0].RTL?"1":"0";return ur("sheetViews",ur("sheetView",null,n),{})}function ts(e,r,t,a){if(e.v===undefined&&typeof e.f!=="string"||e.t==="z")return"";var n="";var i=e.t,s=e.v;if(e.t!=="z")switch(e.t){case"b":n=e.v?"1":"0";break;case"n":n=""+e.v;break;case"e":n=Jt[e.v];break;case"d":if(a&&a.cellDates)n=ce(e.v,-1).toISOString();else{e=ue(e);e.t="n";n=""+(e.v=re(ce(e.v)))}if(typeof e.z==="undefined")e.z=P._table[14];break;default:n=e.v;break;}var l=cr("v",je(n)),o={r:r};var c=Ci(a.cellXfs,e,a);if(c!==0)o.s=c;switch(e.t){case"n":break;case"d":o.t="d";break;case"b":o.t="b";break;case"e":o.t="e";break;case"z":break;default:if(e.v==null){delete e.t;break}if(e.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(a&&a.bookSST){l=cr("v",""+ki(a.Strings,e.v,a.revStrings));o.t="s";break}o.t="str";break;}if(e.t!=i){e.t=i;e.v=s}if(typeof e.f=="string"&&e.f){var f=e.F&&e.F.slice(0,r.length)==r?{t:"array",ref:e.F}:null;l=ur("f",je(e.f),f)+(e.v!=null?l:"")}if(e.l)t["!links"].push([r,e.l]);if(e.c)t["!comments"].push([r,e.c]);return ur("c",l,o)}var as=function(){var e=/<(?:\w+:)?c[ \/>]/,r=/<\/(?:\w+:)?row>/;var t=/r=["']([^"']*)["']/,a=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/;var n=/ref=["']([^"']*)["']/;var i=tr("v"),s=tr("f");return function l(o,c,f,u,h,p){var d=0,m="",v=[],g=[],b=0,w=0,y=0,k="",x;var S,C=0,_=0;var A,F;var E=0,T=0;var O=Array.isArray(p.CellXf),D;var M=[];var N=[];var R=Array.isArray(c);var I=[],L={},B=false;var z=!!f.sheetStubs;for(var U=o.split(r),$=0,W=U.length;$!=W;++$){m=U[$].trim();var j=m.length;if(j===0)continue;var H=0;e:for(d=0;d":if(m[d-1]!="/"){++d;break e}if(f&&f.cellStyles){S=Ie(m.slice(H,d),true);C=S.r!=null?parseInt(S.r,10):C+1;_=-1;if(f.sheetRows&&f.sheetRows=d)break;S=Ie(m.slice(H,d),true);C=S.r!=null?parseInt(S.r,10):C+1;_=-1;if(f.sheetRows&&f.sheetRowsC-1)u.s.r=C-1;if(u.e.r":"")+m;if(g!=null&&g.length===2){b=0;k=g[1];for(w=0;w!=k.length;++w){if((y=k.charCodeAt(w)-64)<1||y>26)break;b=26*b+y}--b;_=b}else++_;for(w=0;w!=m.length;++w)if(m.charCodeAt(w)===62)break;++w;S=Ie(m.slice(0,w),true);if(!S.r)S.r=bt({r:C-1,c:_});k=m.slice(w);x={t:""};if((g=k.match(i))!=null&&g[1]!=="")x.v=Ue(g[1]);if(f.cellFormula){if((g=k.match(s))!=null&&g[1]!==""){x.f=Ue(qe(g[1])).replace(/\r\n/g,"\n");if(!f.xlfn)x.f=pi(x.f);if(g[0].indexOf('t="array"')>-1){x.F=(k.match(n)||[])[1];if(x.F.indexOf(":")>-1)M.push([kt(x.F),x.F])}else if(g[0].indexOf('t="shared"')>-1){F=Ie(g[0]);var X=Ue(qe(g[1]));if(!f.xlfn)X=pi(X);N[parseInt(F.si,10)]=[F,X,S.r]}}else if(g=k.match(/]*\/>/)){F=Ie(g[0]);if(N[F.si])x.f=ui(N[F.si][1],N[F.si][2],S.r)}var G=gt(S.r);for(w=0;w=M[w][0].s.r&&G.r<=M[w][0].e.r)if(G.c>=M[w][0].s.c&&G.c<=M[w][0].e.c)x.F=M[w][1]}if(S.t==null&&x.v===undefined){if(x.f||x.F){x.v=0;x.t="n"}else if(!z)continue;else x.t="z"}else x.t=S.t||"n";if(u.s.c>_)u.s.c=_;if(u.e.c<_)u.e.c=_;switch(x.t){case"n":if(x.v==""||x.v==null){if(!z)continue;x.t="z"}else x.v=parseFloat(x.v);break;case"s":if(typeof x.v=="undefined"){if(!z)continue;x.t="z"}else{A=bi[parseInt(x.v,10)];x.v=A.t;x.r=A.r;if(f.cellHTML)x.h=A.h}break;case"str":x.t="s";x.v=x.v!=null?qe(x.v):"";if(f.cellHTML)x.h=Xe(x.v);break;case"inlineStr":g=k.match(a);x.t="s";if(g!=null&&(A=Ga(g[1]))){x.v=A.t;if(f.cellHTML)x.h=A.h}else x.v="";break;case"b":x.v=Ke(x.v);break;case"d":if(f.cellDates)x.v=ce(x.v,1);else{x.v=re(ce(x.v,1));x.t="n"}break;case"e":if(!f||f.cellText!==false)x.w=x.v;x.v=Kt[x.v];break;}E=T=0;D=null;if(O&&S.s!==undefined){D=p.CellXf[S.s];if(D!=null){if(D.numFmtId!=null)E=D.numFmtId;if(f.cellStyles){if(D.fillId!=null)T=D.fillId}}}_i(x,E,T,f,h,p);if(f.cellDates&&O&&x.t=="n"&&P.is_date(P._table[E])){x.t="d";x.v=ie(x.v)}if(R){var Y=gt(S.r);if(!c[Y.r])c[Y.r]=[];c[Y.r][Y.c]=x}else c[S.r]=x}}if(I.length>0)c["!rows"]=I}}();function ns(e,r,t,a){var n=[],i=[],s=kt(e["!ref"]),l="",o,c="",f=[],u=0,h=0,p=e["!rows"];var d=Array.isArray(e);var m={r:c},v,g=-1;for(h=s.s.c;h<=s.e.c;++h)f[h]=pt(h);for(u=s.s.r;u<=s.e.r;++u){i=[];c=ct(u);for(h=s.s.c;h<=s.e.c;++h){o=f[h]+c;var b=d?(e[u]||[])[h]:e[o];if(b===undefined)continue;if((l=ts(b,o,e,r,t,a))!=null)i.push(l)}if(i.length>0||p&&p[u]){m={r:c};if(p&&p[u]){v=p[u];if(v.hidden)m.hidden=1;g=-1;if(v.hpx)g=bn(v.hpx);else if(v.hpt)g=v.hpt;if(g>-1){m.ht=g;m.customHeight=1}if(v.level){m.outlineLevel=v.level}}n[n.length]=ur("row",i.join(""),m)}}if(p)for(;u-1){m.ht=g;m.customHeight=1}if(v.level){m.outlineLevel=v.level}n[n.length]=ur("row","",m)}}return n.join("")}var is=ur("worksheet",null,{xmlns:dr.main[0],"xmlns:r":dr.r});function ss(e,r,t,a){var n=[De,is];var i=t.SheetNames[e],s=0,l="";var o=t.Sheets[i];if(o==null)o={};var c=o["!ref"]||"A1";var f=kt(c);if(f.e.c>16383||f.e.r>1048575){if(r.WTF)throw new Error("Range "+c+" exceeds format limit A1:XFD1048576");f.e.c=Math.min(f.e.c,16383);f.e.r=Math.min(f.e.c,1048575);c=yt(f)}if(!a)a={};o["!comments"]=[];var u=[];Wi(o,t,e,r,n);n[n.length]=ur("dimension",null,{ref:c});n[n.length]=rs(o,r,e,t);if(r.sheetFormat)n[n.length]=ur("sheetFormatPr",null,{defaultRowHeight:r.sheetFormat.defaultRowHeight||"16",baseColWidth:r.sheetFormat.baseColWidth||"10",outlineLevelRow:r.sheetFormat.outlineLevelRow||"7"});if(o["!cols"]!=null&&o["!cols"].length>0)n[n.length]=Ki(o,o["!cols"]);n[s=n.length]="";o["!links"]=[];if(o["!ref"]!=null){l=ns(o,r,e,t,a);if(l.length>0)n[n.length]=l}if(n.length>s+1){n[n.length]="";n[s]=n[s].replace("/>",">")}if(o["!protect"])n[n.length]=Vi(o["!protect"]);if(o["!autofilter"]!=null)n[n.length]=Zi(o["!autofilter"],o,t,e);if(o["!merges"]!=null&&o["!merges"].length>0)n[n.length]=zi(o["!merges"]);var h=-1,p,d=-1;if(o["!links"].length>0){n[n.length]="";o["!links"].forEach(function(e){if(!e[1].Target)return;p={ref:e[0]};if(e[1].Target.charAt(0)!="#"){d=ua(a,-1,je(e[1].Target).replace(/#.*$/,""),ia.HLINK);p["r:id"]="rId"+d}if((h=e[1].Target.indexOf("#"))>-1)p.location=je(e[1].Target.slice(h+1));if(e[1].Tooltip)p.tooltip=je(e[1].Tooltip);n[n.length]=ur("hyperlink",null,p)});n[n.length]=""}delete o["!links"];if(o["!margins"]!=null)n[n.length]=Yi(o["!margins"]);if(!r||r.ignoreEC||r.ignoreEC==void 0)n[n.length]=cr("ignoredErrors",ur("ignoredError",null,{numberStoredAsText:1,sqref:c}));if(u.length>0){d=ua(a,-1,"../drawings/drawing"+(e+1)+".xml",ia.DRAW);n[n.length]=ur("drawing",null,{"r:id":"rId"+d});o["!drawing"]=u}if(o["!comments"].length>0){d=ua(a,-1,"../drawings/vmlDrawing"+(e+1)+".vml",ia.VML);n[n.length]=ur("legacyDrawing",null,{"r:id":"rId"+d});o["!legacy"]=d}if(n.length>1){n[n.length]="";n[1]=n[1].replace("/>",">")}return n.join("")}ia.CHART="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";ia.CHARTEX="http://schemas.microsoft.com/office/2014/relationships/chartEx";function ls(e){var r=[];var t=e.match(/^/);var a;(e.match(/(.*?)<\/c:pt>/gm)||[]).forEach(function(e){var a=e.match(/(.*)<\/c:v><\/c:pt>/);if(!a)return;r[+a[1]]=t?+a[2]:a[2]});var n=Ue((e.match(/([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);(e.match(/(.*?)<\/c:f>/gm)||[]).forEach(function(e){a=e.replace(/<.*?>/g,"")});return[r,n,a]}function os(e,r,t,a,n,i){var s=i||{"!type":"chart"};if(!e)return i;var l=0,o=0,c="A";var f={s:{r:2e6,c:2e6},e:{r:0,c:0}};(e.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(e){var r=ls(e);f.s.r=f.s.c=0;f.e.c=l;c=pt(l);r[0].forEach(function(e,t){s[c+ct(t)]={t:"n",v:e,z:r[1]};o=t});if(f.e.r0)s["!ref"]=yt(f);return s}ia.CS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet";var cs=ur("chartsheet",null,{xmlns:dr.main[0],"xmlns:r":dr.r});function fs(e,r,t,a,n){if(!e)return e;if(!a)a={"!id":{}};var i={"!type":"chart","!drawel":null,"!rel":""};var s;var l=e.match(Ri);if(l)Ui(l[0],i,n,t);if(s=e.match(/drawing r:id="(.*?)"/))i["!rel"]=s[1];if(a["!id"][i["!rel"]])i["!drawel"]=a["!id"][i["!rel"]];return i}function us(e,r,t,a){var n=[De,cs];n[n.length]=ur("drawing",null,{"r:id":"rId1"});ua(a,-1,"../drawings/drawing"+(e+1)+".xml",ia.DRAW);if(n.length>2){n[n.length]="";n[1]=n[1].replace("/>",">")}return n.join("")}var hs=[["allowRefreshQuery",false,"bool"],["autoCompressPictures",true,"bool"],["backupFile",false,"bool"],["checkCompatibility",false,"bool"],["CodeName",""],["date1904",false,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",false,"bool"],["hidePivotFieldList",false,"bool"],["promptedSolutions",false,"bool"],["publishItems",false,"bool"],["refreshAllConnections",false,"bool"],["saveExternalLinkValues",true,"bool"],["showBorderUnselectedTables",true,"bool"],["showInkAnnotation",true,"bool"],["showObjects","all"],["showPivotChartFilter",false,"bool"],["updateLinks","userSet"]];var ps=[["activeTab",0,"int"],["autoFilterDateGrouping",true,"bool"],["firstSheet",0,"int"],["minimized",false,"bool"],["showHorizontalScroll",true,"bool"],["showSheetTabs",true,"bool"],["showVerticalScroll",true,"bool"],["tabRatio",600,"int"],["visibility","visible"]];var ds=[];var ms=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function vs(e,r){for(var t=0;t!=e.length;++t){var a=e[t];for(var n=0;n!=r.length;++n){var i=r[n];if(a[i[0]]==null)a[i[0]]=i[1];else switch(i[2]){case"bool":if(typeof a[i[0]]=="string")a[i[0]]=Ke(a[i[0]]);break;case"int":if(typeof a[i[0]]=="string")a[i[0]]=parseInt(a[i[0]],10);break;}}}}function gs(e,r){for(var t=0;t!=r.length;++t){var a=r[t];if(e[a[0]]==null)e[a[0]]=a[1];else switch(a[2]){case"bool":if(typeof e[a[0]]=="string")e[a[0]]=Ke(e[a[0]]);break;case"int":if(typeof e[a[0]]=="string")e[a[0]]=parseInt(e[a[0]],10);break;}}}function bs(e){gs(e.WBProps,hs);gs(e.CalcPr,ms);vs(e.WBView,ps);vs(e.Sheets,ds);wi.date1904=Ke(e.WBProps.date1904)}function ws(e){if(!e.Workbook)return"false";if(!e.Workbook.WBProps)return"false";return Ke(e.Workbook.WBProps.date1904)?"true":"false"}var ys="][*?/\\".split("");function ks(e,r){if(e.length>31){if(r)return false;throw new Error("Sheet names cannot exceed 31 chars")}var t=true;ys.forEach(function(a){if(e.indexOf(a)==-1)return;if(!r)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");t=false});return t}function xs(e,r,t){e.forEach(function(a,n){ks(a);for(var i=0;i22)throw new Error("Bad Code Name: Worksheet"+s)}})}function Ss(e){if(!e||!e.SheetNames||!e.Sheets)throw new Error("Invalid Workbook");if(!e.SheetNames.length)throw new Error("Workbook is empty");var r=e.Workbook&&e.Workbook.Sheets||[];xs(e.SheetNames,r,!!e.vbaraw);for(var t=0;t":break;case"":;case"":break;case"":break;case"":hs.forEach(function(e){if(f[e[0]]==null)return;switch(e[2]){case"bool":t.WBProps[e[0]]=Ke(f[e[0]]);break;case"int":t.WBProps[e[0]]=parseInt(f[e[0]],10);break;default:t.WBProps[e[0]]=f[e[0]];}});if(f.codeName)t.WBProps.CodeName=qe(f.codeName);break;case"":break;case"":break;case"":;case"":break;case"":delete f[0];t.WBView.push(f);break;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":break;case"":;case"":a=false;break;case"":{i.Ref=Ue(qe(e.slice(s,c)));t.Names.push(i)}break;case"":break;case"":delete f[0];t.CalcPr=f;break;case"":break;case"":;case"":;case"":break;case"":;case"":;case"":break;case"":;case"":break;case"":break;case"":break;case"":;case"":break;case"":;case"":;case"":break;case"":a=false;break;case"":a=true;break;case"":a=false;break;case"0;var a={codeName:"ThisWorkbook"};if(e.Workbook&&e.Workbook.WBProps){hs.forEach(function(r){if(e.Workbook.WBProps[r[0]]==null)return;if(e.Workbook.WBProps[r[0]]==r[1])return;a[r[0]]=e.Workbook.WBProps[r[0]]});if(e.Workbook.WBProps.CodeName){a.codeName=e.Workbook.WBProps.CodeName;delete a.CodeName}}r[r.length]=ur("workbookPr",null,a);var n=e.Workbook&&e.Workbook.Sheets||[];var i=0;if(n&&n[0]&&!!n[0].Hidden){r[r.length]="";for(i=0;i!=e.SheetNames.length;++i){if(!n[i])break;if(!n[i].Hidden)break}if(i==e.SheetNames.length)i=0;r[r.length]='';r[r.length]=""}r[r.length]="";for(i=0;i!=e.SheetNames.length;++i){var s={name:je(e.SheetNames[i].slice(0,31))};s.sheetId=""+(i+1);s["r:id"]="rId"+(i+1);if(n[i])switch(n[i].Hidden){case 1:s.state="hidden";break;case 2:s.state="veryHidden";break;}r[r.length]=ur("sheet",null,s)}r[r.length]="";if(t){r[r.length]="";if(e.Workbook&&e.Workbook.Names)e.Workbook.Names.forEach(function(e){var t={name:e.Name};if(e.Comment)t.comment=e.Comment;if(e.Sheet!=null)t.localSheetId=""+e.Sheet;if(e.Hidden)t.hidden="1";if(!e.Ref)return;r[r.length]=ur("definedName",je(e.Ref),t)});r[r.length]=""}if(r.length>2){r[r.length]="";r[1]=r[1].replace("/>",">")}return r.join("")}function Es(e,r,t){if(r.slice(-4)===".bin")return parse_wb_bin(e,t);return _s(e,t)}function Ts(e,r,t,a,n,i,s,l){if(r.slice(-4)===".bin")return parse_ws_bin(e,a,t,n,i,s,l);return Bi(e,a,t,n,i,s,l)}function Os(e,r,t,a,n,i,s,l){if(r.slice(-4)===".bin")return parse_cs_bin(e,a,t,n,i,s,l);return fs(e,a,t,n,i,s,l)}function Ds(e,r,t,a,n,i,s,l){if(r.slice(-4)===".bin")return ii(e,a,t,n,i,s,l);return si(e,a,t,n,i,s,l)}function Ms(e,r,t,a,n,i,s,l){if(r.slice(-4)===".bin")return ai(e,a,t,n,i,s,l);return ni(e,a,t,n,i,s,l)}function Ns(e,r,t,a){if(r.slice(-4)===".bin")return parse_sty_bin(e,t,a);return On(e,t,a)}function Ps(e,r,t){return Wn(e,t)}function Rs(e,r,t){if(r.slice(-4)===".bin")return parse_sst_bin(e,t);return qa(e,t)}function Is(e,r,t){if(r.slice(-4)===".bin")return parse_comments_bin(e,t);return Kn(e,t)}function Ls(e,r,t){if(r.slice(-4)===".bin")return parse_cc_bin(e,r,t);return parse_cc_xml(e,r,t)}function Bs(e,r,t,a){if(t.slice(-4)===".bin")return Vn(e,r,t,a);return Hn(e,r,t,a)}function zs(e,r,t){return(r.slice(-4)===".bin"?write_wb_bin:Fs)(e,t)}function Us(e,r,t,a,n){return(r.slice(-4)===".bin"?write_ws_bin:ss)(e,t,a,n)}function $s(e,r,t,a,n){return(r.slice(-4)===".bin"?write_cs_bin:us)(e,t,a,n)}function Ws(e,r,t){return(r.slice(-4)===".bin"?write_sty_bin:Mn)(e,t)}function js(e,r,t){return(r.slice(-4)===".bin"?write_sst_bin:Qa)(e,t)}function Hs(e,r,t){return(r.slice(-4)===".bin"?write_comments_bin:Zn)(e,t)}var Vs=function(){function e(e,r){var t=r||{};if(v!=null&&t.dense==null)t.dense=v;var a=t.dense?[]:{};e=e.replace(//g,"");var n=e.match(/");var i=e.match(/<\/table/i);var s=n.index,l=i&&i.index||e.length;var o=ge(e.slice(s,l),/(:?]*>)/i,"");var c=-1,f=0,u=0,h=0;var p={s:{r:1e7,c:1e7},e:{r:0,c:0}};var d=[];for(s=0;s/i);for(l=0;l"))>-1)y=y.slice(k+1);for(var x=0;x")));h=C.colspan?+C.colspan:1;if((u=+C.rowspan)>1||h>1)d.push({s:{r:c,c:f},e:{r:c+(u||1)-1,c:f+h-1}});var _=C.t||C["data-t"]||"";if(!y.length){f+=h;continue}y=ar(y);if(p.s.r>c)p.s.r=c;if(p.e.rf)p.s.c=f;if(p.e.c[\s\S]*?<\/table>/gi);if(!a||a.length==0)throw new Error("Invalid HTML: could not find
");if(a.length==1)return Ct(e(a[0],t),t);var n=io.book_new();a.forEach(function(r,a){io.book_append_sheet(n,e(r,t),"Sheet"+(a+1))});return n}function t(e,r,t,a){var n=e["!merges"]||[];var i=[];for(var s=r.s.c;s<=r.e.c;++s){var l=0,o=0;for(var c=0;ct||n[c].s.c>s)continue;if(n[c].e.r1)p.rowspan=l;if(o>1)p.colspan=o;if(a.editable)h=''+h+"";else if(u){p["data-t"]=u&&u.t||"z";if(u.v!=null)p["data-v"]=u.v;if(u.z!=null)p["data-z"]=u.z;if(u.l&&(u.l.Target||"#").charAt(0)!="#")h=''+h+""}p.id=(a.id||"sjs")+"-"+f;i.push(ur("td",h,p))}var d="";return d+i.join("")+""}function a(e,r,t){var a=[];return a.join("")+""}var n='SheetJS Table Export';var i="";function s(e,r){var s=r||{};var l=s.header!=null?s.header:n;var o=s.footer!=null?s.footer:i;var c=[l];var f=wt(e["!ref"]);s.dense=Array.isArray(e);c.push(a(e,f,s));for(var u=f.s.r;u<=f.e.r;++u)c.push(t(e,f,u,s));c.push("
"+o);return c.join("")}return{to_workbook:r,to_sheet:e,_row:t,BEGIN:n,END:i,_preamble:a,from_sheet:s}}();function Xs(e,r,t){var a=t||{};if(v!=null)a.dense=v;var n=0,i=0;if(a.origin!=null){if(typeof a.origin=="number")n=a.origin;else{var s=typeof a.origin=="string"?gt(a.origin):a.origin;n=s.r;i=s.c}}var l=r.getElementsByTagName("tr");var o=Math.min(a.sheetRows||1e7,l.length);var c={s:{r:0,c:0},e:{r:n,c:i}};if(e["!ref"]){var f=wt(e["!ref"]);c.s.r=Math.min(c.s.r,f.s.r);c.s.c=Math.min(c.s.c,f.s.c);c.e.r=Math.max(c.e.r,f.e.r);c.e.c=Math.max(c.e.c,f.e.c);if(n==-1)c.e.r=n=f.e.r+1}var u=[],h=0;var p=e["!rows"]||(e["!rows"]=[]);var d=0,m=0,g=0,b=0,w=0,y=0;if(!e["!cols"])e["!cols"]=[];for(;d1||y>1)u.push({s:{r:m+n,c:b+i},e:{r:m+n+(w||1)-1,c:b+i+(y||1)-1}});var F={t:"s",v:C};var E=S.getAttribute("data-t")||S.getAttribute("t")||"";if(C!=null){if(C.length==0)F.t=E||"z";else if(a.raw||C.trim().length==0||E=="s"){}else if(C==="TRUE")F={t:"b",v:true};else if(C==="FALSE")F={t:"b",v:false};else if(!isNaN(pe(C)))F={t:"n",v:pe(C)};else if(!isNaN(me(C).getDate())){F={t:"d",v:ce(C)};if(!a.cellDates)F={t:"n",v:re(F.v)};F.z=a.dateNF||P._table[14]}}if(F.z===undefined&&_!=null)F.z=_;var T="",O=S.getElementsByTagName("A");if(O&&O.length)for(var D=0;D=o)e["!fullref"]=yt((c.e.r=l.length-d+m-1+n,c));return e}function Gs(e,r){var t=r||{};var a=t.dense?[]:{};return Xs(a,e,r)}function Ys(e,r){return Ct(Gs(e,r),r)}function Js(e){var r="";var t=Ks(e);if(t)r=t(e).getPropertyValue("display");if(!r)r=e.style&&e.style.display;return r==="none"}function Ks(e){if(e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle==="function")return e.ownerDocument.defaultView.getComputedStyle;if(typeof getComputedStyle==="function")return getComputedStyle;return null}var qs=function(){var e=function(e){var r=e.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(//g," ").replace(//g,function(e,r){return Array(parseInt(r,10)+1).join(" ")}).replace(/]*\/>/g,"\t").replace(//g,"\n");var t=Ue(r.replace(/<[^>]*>/g,""));return[t]};var r={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};return function t(a,n){var i=n||{};if(v!=null&&i.dense==null)i.dense=v;var s=xlml_normalize(a);var l=[],o;var c;var f={name:""},u="",h=0;var p;var d;var m={},g=[];var b=i.dense?[]:{};var w,y;var k={value:""};var x="",S=0,C;var _=[];var A=-1,F=-1,E={s:{r:1e6,c:1e7},e:{r:0,c:0}};var T=0;var O={};var D=[],M={},N=0,P=0;var R=[],I=1,L=1;var B=[];var z={Names:[]};var U={};var $=["",""];var W=[],j={};var H="",V=0;var X=false,G=false;var Y=0;xlmlregex.lastIndex=0;s=s.replace(//gm,"").replace(//gm,"");while(w=xlmlregex.exec(s))switch(w[3]=w[3].replace(/_.*$/,"")){case"table":;case"工作表":if(w[1]==="/"){if(E.e.c>=E.s.c&&E.e.r>=E.s.r)b["!ref"]=yt(E);else b["!ref"]="A1:A1";if(i.sheetRows>0&&i.sheetRows<=E.e.r){b["!fullref"]=b["!ref"];E.e.r=i.sheetRows-1;b["!ref"]=yt(E)}if(D.length)b["!merges"]=D;if(R.length)b["!rows"]=R;p.name=p["名称"]||p.name;if(typeof JSON!=="undefined")JSON.stringify(p);g.push(p.name);m[p.name]=b;G=false}else if(w[0].charAt(w[0].length-2)!=="/"){p=Ie(w[0],false);A=F=-1;E.s.r=E.s.c=1e7;E.e.r=E.e.c=0;b=i.dense?[]:{};D=[];R=[];G=true}break;case"table-row-group":if(w[1]==="/")--T;else++T;break;case"table-row":;case"行":if(w[1]==="/"){A+=I;I=1;break}d=Ie(w[0],false);if(d["行号"])A=d["行号"]-1;else if(A==-1)A=0;I=+d["number-rows-repeated"]||1;if(I<10)for(Y=0;Y0)R[A+Y]={level:T};F=-1;break;case"covered-table-cell":if(w[1]!=="/")++F;if(i.sheetStubs){if(i.dense){if(!b[A])b[A]=[];b[A][F]={t:"z"}}else b[bt({r:A,c:F})]={t:"z"}}x="";_=[];break;case"table-cell":;case"数据":if(w[0].charAt(w[0].length-2)==="/"){++F;k=Ie(w[0],false);L=parseInt(k["number-columns-repeated"]||"1",10);y={t:"z",v:null};if(k.formula&&i.cellFormula!=false)y.f=di(Ue(k.formula));if((k["数据类型"]||k["value-type"])=="string"){y.t="s";y.v=Ue(k["string-value"]||"");if(i.dense){if(!b[A])b[A]=[];b[A][F]=y}else{b[bt({r:A,c:F})]=y}}F+=L-1}else if(w[1]!=="/"){++F;x="";S=0;_=[];L=1;var J=I?A+I-1:A;if(F>E.e.c)E.e.c=F;if(FE.e.r)E.e.r=J;k=Ie(w[0],false);W=[];j={};y={t:k["数据类型"]||k["value-type"],v:null};if(i.cellFormula){if(k.formula)k.formula=Ue(k.formula);if(k["number-matrix-columns-spanned"]&&k["number-matrix-rows-spanned"]){N=parseInt(k["number-matrix-rows-spanned"],10)||0;P=parseInt(k["number-matrix-columns-spanned"],10)||0;M={s:{r:A,c:F},e:{r:A+N-1,c:F+P-1}};y.F=yt(M);B.push([M,y.F])}if(k.formula)y.f=di(k.formula);else for(Y=0;Y=B[Y][0].s.r&&A<=B[Y][0].e.r)if(F>=B[Y][0].s.c&&F<=B[Y][0].e.c)y.F=B[Y][1]}if(k["number-columns-spanned"]||k["number-rows-spanned"]){N=parseInt(k["number-rows-spanned"],10)||0;P=parseInt(k["number-columns-spanned"],10)||0;M={s:{r:A,c:F},e:{r:A+N-1,c:F+P-1}};D.push(M)}if(k["number-columns-repeated"])L=parseInt(k["number-columns-repeated"],10);switch(y.t){case"boolean":y.t="b";y.v=Ke(k["boolean-value"]);break;case"float":y.t="n";y.v=parseFloat(k.value);break;case"percentage":y.t="n";y.v=parseFloat(k.value);break;case"currency":y.t="n";y.v=parseFloat(k.value);break;case"date":y.t="d";y.v=ce(k["date-value"]);if(!i.cellDates){y.t="n";y.v=re(y.v)}y.z="m/d/yy";break;case"time":y.t="n";y.v=se(k["time-value"])/86400;if(i.cellDates){y.t="d";y.v=ie(y.v)}y.z="HH:MM:SS";break;case"number":y.t="n";y.v=parseFloat(k["数据数值"]);break;default:if(y.t==="string"||y.t==="text"||!y.t){y.t="s";if(k["string-value"]!=null){x=Ue(k["string-value"]);_=[]}}else throw new Error("Unsupported value type "+y.t);}}else{X=false;if(y.t==="s"){y.v=x||"";if(_.length)y.R=_;X=S==0}if(U.Target)y.l=U;if(W.length>0){y.c=W;W=[]}if(x&&i.cellText!==false)y.w=x;if(X){y.t="z";delete y.v}if(!X||i.sheetStubs){if(!(i.sheetRows&&i.sheetRows<=A)){for(var K=0;K0)b[A+K][F+L]=ue(y)}else{b[bt({r:A+K,c:F})]=y;while(--L>0)b[bt({r:A+K,c:F+L})]=ue(y)}if(E.e.c<=F)E.e.c=F}}}L=parseInt(k["number-columns-repeated"]||"1",10);F+=L-1;L=0;y={};x="";_=[]}U={};break;case"document":;case"document-content":;case"电子表格文档":;case"spreadsheet":;case"主体":;case"scripts":;case"styles":;case"font-face-decls":;case"master-styles":if(w[1]==="/"){if((o=l.pop())[0]!==w[3])throw"Bad state: "+o}else if(w[0].charAt(w[0].length-2)!=="/")l.push([w[3],true]);break;case"annotation":if(w[1]==="/"){if((o=l.pop())[0]!==w[3])throw"Bad state: "+o;j.t=x;if(_.length)j.R=_;j.a=H;W.push(j)}else if(w[0].charAt(w[0].length-2)!=="/"){l.push([w[3],false])}H="";V=0;x="";S=0;_=[];break;case"creator":if(w[1]==="/"){H=s.slice(V,w.index)}else V=w.index+w[0].length;break;case"meta":;case"元数据":;case"settings":;case"config-item-set":;case"config-item-map-indexed":;case"config-item-map-entry":;case"config-item-map-named":;case"shapes":;case"frame":;case"text-box":;case"image":;case"data-pilot-tables":;case"list-style":;case"form":;case"dde-links":;case"event-listeners":;case"chart":if(w[1]==="/"){if((o=l.pop())[0]!==w[3])throw"Bad state: "+o}else if(w[0].charAt(w[0].length-2)!=="/")l.push([w[3],false]);x="";S=0;_=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":;case"percentage-style":;case"date-style":;case"time-style":if(w[1]==="/"){O[f.name]=u;if((o=l.pop())[0]!==w[3])throw"Bad state: "+o}else if(w[0].charAt(w[0].length-2)!=="/"){u="";f=Ie(w[0],false);l.push([w[3],true])}break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":;case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(l[l.length-1][0]){case"time-style":;case"date-style":c=Ie(w[0],false);u+=r[w[3]][c.style==="long"?1:0];break;}break;case"fraction":break;case"day":;case"month":;case"year":;case"era":;case"day-of-week":;case"week-of-year":;case"quarter":;case"hours":;case"minutes":;case"seconds":;case"am-pm":switch(l[l.length-1][0]){case"time-style":;case"date-style":c=Ie(w[0],false);u+=r[w[3]][c.style==="long"?1:0];break;}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(w[0].slice(-2)==="/>")break;else if(w[1]==="/")switch(l[l.length-1][0]){case"number-style":;case"date-style":;case"time-style":u+=s.slice(h,w.index);break;}else h=w.index+w[0].length;break;case"named-range":c=Ie(w[0],false);$=vi(c["cell-range-address"]);var q={Name:c.name,Ref:$[0]+"!"+$[1]};if(G)q.Sheet=g.length;z.Names.push(q);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":;case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":;case"文本串":if(["master-styles"].indexOf(l[l.length-1][0])>-1)break;if(w[1]==="/"&&(!k||!k["string-value"])){var Z=e(s.slice(S,w.index),C);x=(x.length>0?x+"\n":"")+Z[0]}else{C=Ie(w[0],false);S=w.index+w[0].length}break;case"s":break;case"database-range":if(w[1]==="/")break;try{$=vi(Ie(w[0])["target-range-address"]);m[$[0]]["!autofilter"]={ref:$[1]}}catch(Q){}break;case"date":break;case"object":break;case"title":;case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":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"print-date":;case"generator":;case"document-statistic":;case"user-defined":;case"editing-duration":;case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":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":if(w[1]!=="/"){U=Ie(w[0],false);if(!U.href)break;U.Target=Ue(U.href);delete U.href;if(U.Target.charAt(0)=="#"&&U.Target.indexOf(".")>-1){$=vi(U.Target.slice(1));U.Target="#"+$[0]+"!"+$[1]}else if(U.Target.match(/^\.\.[\\\/]/))U.Target=U.Target.slice(3)}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(w[2]){case"dc:":;case"calcext:":;case"loext:":;case"ooo:":;case"chartooo:":;case"draw:":;case"style:":;case"chart:":;case"form:":;case"uof:":;case"表:":;case"字:":break;default:if(i.WTF)throw new Error(w);};}var ee={Sheets:m,SheetNames:g,Workbook:z};if(i.bookSheets)delete ee.Sheets;return ee}}();function Zs(e,r){r=r||{};if(ke(e,"META-INF/manifest.xml"))pa(Se(e,"META-INF/manifest.xml"),r);var t=Ce(e,"content.xml");if(!t)throw new Error("Missing content.xml in ODS / UOF file");var a=qs(qe(t),r);if(ke(e,"meta.xml"))a.Props=ka(Se(e,"meta.xml"));return a}function Qs(e,r){return qs(e,r)}var el=function(){var e=["",'',"",'',"",'',"",""].join("");var r=""+e+"";return function t(){return De+r}}();var rl=function(){var e=function(e){return je(e).replace(/ +/g,function(e){return''}).replace(/\t/g,"").replace(/\n/g,"").replace(/^ /,"").replace(/ $/,"")};var r=" \n";var t=" \n";var a=function(a,n,i){var s=[];s.push(' \n');var l=0,o=0,c=wt(a["!ref"]||"A1");var f=a["!merges"]||[],u=0;var h=Array.isArray(a);if(a["!cols"]){for(o=0;o<=c.e.c;++o)s.push(" \n")}var p="",d=a["!rows"]||[];for(l=0;l\n")}for(;l<=c.e.r;++l){p=d[l]?' table:style-name="ro'+d[l].ods+'"':"";s.push(" \n");for(o=0;oo)continue;if(f[u].s.r>l)continue;if(f[u].e.c\n")}s.push(" \n");return s.join("")};var n=function(e,r){e.push(" \n");e.push(' \n');e.push(' \n');e.push(" /\n");e.push(' \n');e.push(" /\n");e.push(" \n");e.push(" \n");var t=0;r.SheetNames.map(function(e){return r.Sheets[e]}).forEach(function(r){if(!r)return;if(r["!cols"]){for(var a=0;a\n');e.push(' \n');e.push(" \n");++t}}});var a=0;r.SheetNames.map(function(e){return r.Sheets[e]}).forEach(function(r){if(!r)return;if(r["!rows"]){for(var t=0;t\n');e.push(' \n');e.push(" \n");++a}}});e.push(' \n');e.push(' \n');e.push(" \n");e.push(' \n');e.push(" \n")};return function i(e,r){var t=[De];var i=fr({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text: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:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"});var s=fr({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});if(r.bookType=="fods"){t.push("\n");t.push(ba().replace(/office:document-meta/g,"office:meta"))}else t.push("\n");n(t,e);t.push(" \n");t.push(" \n");for(var l=0;l!=e.SheetNames.length;++l)t.push(a(e.Sheets[e.SheetNames[l]],e,l,r));t.push(" \n");t.push(" \n");if(r.bookType=="fods")t.push("");else t.push("");return t.join("")}}();function tl(e,r){if(r.bookType=="fods")return rl(e,r);var t=Ee();var a="";var n=[];var i=[];a="mimetype";Fe(t,a,"application/vnd.oasis.opendocument.spreadsheet");a="content.xml";Fe(t,a,rl(e,r));n.push([a,"text/xml"]);i.push([a,"ContentFile"]);a="styles.xml";Fe(t,a,el(e,r));n.push([a,"text/xml"]);i.push([a,"StylesFile"]);a="meta.xml";Fe(t,a,De+ba());n.push([a,"text/xml"]);i.push([a,"MetadataFile"]);a="manifest.rdf";Fe(t,a,ga(i));n.push([a,"application/rdf+xml"]);a="META-INF/manifest.xml";Fe(t,a,da(n));return t}function al(e){return function r(t){for(var a=0;a!=e.length;++a){var n=e[a];if(t[n[0]]===undefined)t[n[0]]=n[1];if(n[2]==="n")t[n[0]]=Number(t[n[0]])}}}var nl=function(e){al([["cellNF",false],["cellHTML",true],["cellFormula",true],["cellStyles",false],["cellText",true],["cellDates",false],["sheetStubs",false],["sheetRows",0,"n"],["bookDeps",false],["bookSheets",false],["bookProps",false],["bookFiles",false],["bookVBA",false],["password",""],["WTF",false]])(e)};var il=al([["cellDates",false],["bookSST",false],["bookType","xlsx"],["compression",false],["WTF",false]]);function sl(e){if(ia.WS.indexOf(e)>-1)return"sheet";if(ia.CS&&e==ia.CS)return"chart";if(ia.DS&&e==ia.DS)return"dialog";if(ia.MS&&e==ia.MS)return"macro";return e&&e.length?e:"sheet"}function ll(e,r){if(!e)return 0;try{e=r.map(function a(r){if(!r.id)r.id=r.strRelID;return[r.name,e["!id"][r.id].Target,sl(e["!id"][r.id].Type)]})}catch(t){return null}return!e||e.length===0?null:e}function ol(e,r,t,a,n,i,s,l,o,c,f,u){try{i[a]=la(Ce(e,t,true),r);var h=Se(e,r);var p;switch(l){case"sheet":p=Ts(h,r,n,o,i[a],c,f,u);break;case"chart":p=Os(h,r,n,o,i[a],c,f,u);if(!p||!p["!drawel"])break;var d=Oe(p["!drawel"].Target,r);var m=sa(d);var v=Xn(Ce(e,d,true),la(Ce(e,m,true),d));var g=Oe(v,d);var b=sa(g);p=os(Ce(e,g,true),g,o,la(Ce(e,b,true),g),c,p);break;case"macro":p=Ds(h,r,n,o,i[a],c,f,u);break;case"dialog":p=Ms(h,r,n,o,i[a],c,f,u);break;default:throw new Error("Unrecognized sheet type "+l);}s[a]=p;var w=[];if(i&&i[a])J(i[a]).forEach(function(t){if(i[a][t].Type==ia.CMNT){var n=Oe(i[a][t].Target,r);w=Is(Se(e,n,true),n,o);if(!w||!w.length)return;Jn(p,w)}})}catch(y){if(o.WTF)throw y}}function cl(e){return e.charAt(0)=="/"?e.slice(1):e}function fl(e,r){R(P);r=r||{};nl(r);if(ke(e,"META-INF/manifest.xml"))return Zs(e,r);if(ke(e,"objectdata.xml"))return Zs(e,r);if(ke(e,"Index/Document.iwa")){if(typeof Uint8Array=="undefined")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof NUMBERS!="undefined"){if(e.FileIndex)return NUMBERS.parse_numbers(e);var t=H.utils.cfb_new();Ae(e).forEach(function(r){Fe(t,r,_e(e,r))});return NUMBERS.parse_numbers(t)}throw new Error("Unsupported NUMBERS file")}if(!ke(e,"[Content_Types].xml")){if(ke(e,"index.xml.gz"))throw new Error("Unsupported NUMBERS 08 file");if(ke(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Error("Unsupported ZIP file")}var a=Ae(e);var n=ra(Ce(e,"[Content_Types].xml"));var i=false;var s,l;if(n.workbooks.length===0){l="xl/workbook.xml";if(Se(e,l,true))n.workbooks.push(l)}if(n.workbooks.length===0){l="xl/workbook.bin";if(!Se(e,l,true))throw new Error("Could not find workbook");n.workbooks.push(l);i=true}if(n.workbooks[0].slice(-3)=="bin")i=true;var o={};var c={};if(!r.bookSheets&&!r.bookProps){bi=[];if(n.sst)try{bi=Rs(Se(e,cl(n.sst)),n.sst,r)}catch(f){if(r.WTF)throw f}if(r.cellStyles&&n.themes.length)o=Ps(Ce(e,n.themes[0].replace(/^\//,""),true)||"",n.themes[0],r);if(n.style)c=Ns(Se(e,cl(n.style)),n.style,o,r)}n.links.map(function(t){try{var a=la(Ce(e,sa(cl(t))),t);return Bs(Se(e,cl(t)),a,t,r)}catch(n){}});var u=Es(Se(e,cl(n.workbooks[0])),n.workbooks[0],r);var h={},p="";if(n.coreprops.length){p=Se(e,cl(n.coreprops[0]),true);if(p)h=ka(p);if(n.extprops.length!==0){p=Se(e,cl(n.extprops[0]),true);if(p)Ea(p,h,r)}}var d={};if(!r.bookSheets||r.bookProps){if(n.custprops.length!==0){p=Ce(e,cl(n.custprops[0]),true);if(p)d=Ma(p,r)}}var m={};if(r.bookSheets||r.bookProps){if(u.Sheets)s=u.Sheets.map(function D(e){return e.name});else if(h.Worksheets&&h.SheetNames.length>0)s=h.SheetNames;if(r.bookProps){m.Props=h;m.Custprops=d}if(r.bookSheets&&typeof s!=="undefined")m.SheetNames=s;if(r.bookSheets?m.SheetNames:r.bookProps)return m}s={};var v={};if(r.bookDeps&&n.calcchain)v=Ls(Se(e,cl(n.calcchain)),n.calcchain,r);var g=0;var b={};var w,y;{var k=u.Sheets;h.Worksheets=k.length;h.SheetNames=[];for(var x=0;x!=k.length;++x){h.SheetNames[x]=k[x].name}}var S=i?"bin":"xml";var C=n.workbooks[0].lastIndexOf("/");var _=(n.workbooks[0].slice(0,C+1)+"_rels/"+n.workbooks[0].slice(C+1)+".rels").replace(/^\//,"");if(!ke(e,_))_="xl/_rels/workbook."+S+".rels";var A=la(Ce(e,_,true),_);if(A)A=ll(A,u.Sheets);var F=Se(e,"xl/worksheets/sheet.xml",true)?1:0;e:for(g=0;g!=h.Worksheets;++g){var E="sheet";if(A&&A[g]){w="xl/"+A[g][1].replace(/[\/]?xl\//,"");if(!ke(e,w))w=A[g][1];if(!ke(e,w))w=_.replace(/_rels\/.*$/,"")+A[g][1];E=A[g][2]}else{w="xl/worksheets/sheet"+(g+1-F)+"."+S;w=w.replace(/sheet0\./,"sheet.")}y=w.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels");if(r&&r.sheets!=null)switch(typeof r.sheets){case"number":if(g!=r.sheets)continue e;break;case"string":if(h.SheetNames[g].toLowerCase()!=r.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(r.sheets)){var T=false;for(var O=0;O!=r.sheets.length;++O){if(typeof r.sheets[O]=="number"&&r.sheets[O]==g)T=1;if(typeof r.sheets[O]=="string"&&r.sheets[O].toLowerCase()==h.SheetNames[g].toLowerCase())T=1}if(!T)continue e};}ol(e,w,y,h.SheetNames[g],g,b,s,E,r,u,o,c)}m={Directory:n,Workbook:u,Props:h,Custprops:d,Deps:v,Sheets:s,SheetNames:h.SheetNames,Strings:bi,Styles:c,Themes:o,SSF:P.get_table()};if(r&&r.bookFiles){if(e.files){m.keys=a;m.files=e.files}else{m.keys=[];m.files={};e.FullPaths.forEach(function(r,t){r=r.replace(/^Root Entry[\/]/,"");m.keys.push(r);m.files[r]=e.FileIndex[t]})}}if(r&&r.bookVBA){if(n.vba.length>0)m.vbaraw=Se(e,cl(n.vba[0]),true);else if(n.defaults&&n.defaults.bin===Qn)m.vbaraw=Se(e,"xl/vbaProject.bin",true)}return m}function ul(e,r){var t=r||{};var a="Workbook",n=H.find(e,a);try{a="/!DataSpaces/Version";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);parse_DataSpaceVersionInfo(n.content);a="/!DataSpaces/DataSpaceMap";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var i=parse_DataSpaceMap(n.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var s=parse_DataSpaceDefinition(n.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);parse_Primary(n.content)}catch(l){}a="/EncryptionInfo";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var o=parse_EncryptionInfo(n.content);a="/EncryptedPackage";n=H.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);if(o[0]==4&&typeof decrypt_agile!=="undefined")return decrypt_agile(o[1],n.content,t.password||"",t);if(o[0]==2&&typeof decrypt_std76!=="undefined")return decrypt_std76(o[1],n.content,t.password||"",t);throw new Error("File is password-protected")}function hl(e,r){if(r.bookType=="ods")return tl(e,r);return pl(e,r)}function pl(e,r){Gn=1024;if(e&&!e.SSF){e.SSF=P.get_table()}if(e&&e.SSF){R(P);P.load_table(e.SSF);r.revssf=Z(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(yi)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t=r.bookType=="xlsb"?"bin":"xml";var a=ti.indexOf(r.bookType)>-1;var n=ea();il(r=r||{});var i=Ee();var s="",l=0;r.cellXfs=[];Ci(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";Fe(i,s,Ca(e.Props,r));n.coreprops.push(s);ua(r.rels,2,s,ia.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var o=[];for(var c=0;c0){s="docProps/custom.xml";Fe(i,s,Pa(e.Custprops,r));n.custprops.push(s);ua(r.rels,4,s,ia.CUST_PROPS)}for(l=1;l<=e.SheetNames.length;++l){var f={"!id":{}};var u=e.Sheets[e.SheetNames[l-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+l+"."+t;Fe(i,s,Us(l-1,s,r,e,f));n.sheets.push(s);ua(r.wbrels,-1,"worksheets/sheet"+l+"."+t,ia.WS[0]);}if(u){var p=u["!comments"];var d=false;if(p&&p.length>0){var m="xl/comments"+l+"."+t;Fe(i,m,Hs(p,m,r));n.comments.push(m);ua(f,-1,"../comments"+l+"."+t,ia.CMNT);d=true}if(u["!legacy"]){if(d)Fe(i,"xl/drawings/vmlDrawing"+l+".vml",Yn(l,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(f["!id"].rId1)Fe(i,sa(s),ca(f)); +}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;Fe(i,s,js(r.Strings,s,r));n.strs.push(s);ua(r.wbrels,-1,"sharedStrings."+t,ia.SST)}s="xl/workbook."+t;Fe(i,s,zs(e,s,r));n.workbooks.push(s);ua(r.rels,1,s,ia.WB);s="xl/theme/theme1.xml";Fe(i,s,jn(e.Themes,r));n.themes.push(s);ua(r.wbrels,-1,"theme/theme1.xml",ia.THEME);s="xl/styles."+t;Fe(i,s,Ws(e,s,r));n.styles.push(s);ua(r.wbrels,-1,"styles."+t,ia.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";Fe(i,s,e.vbaraw);n.vba.push(s);ua(r.wbrels,-1,"vbaProject.bin",ia.VBA)}Fe(i,"[Content_Types].xml",na(n,r));Fe(i,"_rels/.rels",ca(r.rels));Fe(i,"xl/_rels/workbook."+t+".rels",ca(r.wbrels));delete r.revssf;delete r.ssf;return i}function dl(e,r){Gn=1024;if(e&&!e.SSF){e.SSF=P.get_table()}if(e&&e.SSF){R(P);P.load_table(e.SSF);r.revssf=Z(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(yi)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t="xml";var a=ti.indexOf(r.bookType)>-1;var n=ea();il(r=r||{});var i=Ee();var s="",l=0;r.cellXfs=[];Ci(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";Fe(i,s,Ca(e.Props,r));n.coreprops.push(s);ua(r.rels,2,s,ia.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var o=[];for(var c=0;c0){s="docProps/custom.xml";Fe(i,s,Pa(e.Custprops,r));n.custprops.push(s);ua(r.rels,4,s,ia.CUST_PROPS)}for(l=1;l<=e.SheetNames.length;++l){var f={"!id":{}};var u=e.Sheets[e.SheetNames[l-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+l+"."+t;Fe(i,s,ss(l-1,r,e,f));n.sheets.push(s);ua(r.wbrels,-1,"worksheets/sheet"+l+"."+t,ia.WS[0]);}if(u){var p=u["!comments"];var d=false;if(p&&p.length>0){var m="xl/comments"+l+"."+t;Fe(i,m,Zn(p,r));n.comments.push(m);ua(f,-1,"../comments"+l+"."+t,ia.CMNT);d=true}if(u["!legacy"]){if(d)Fe(i,"xl/drawings/vmlDrawing"+l+".vml",Yn(l,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(f["!id"].rId1)Fe(i,sa(s),ca(f))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;Fe(i,s,Qa(r.Strings,r));n.strs.push(s);ua(r.wbrels,-1,"sharedStrings."+t,ia.SST)}s="xl/workbook."+t;Fe(i,s,Fs(e,r));n.workbooks.push(s);ua(r.rels,1,s,ia.WB);s="xl/theme/theme1.xml";Fe(i,s,jn(e.Themes,r));n.themes.push(s);ua(r.wbrels,-1,"theme/theme1.xml",ia.THEME);s="xl/styles."+t;Fe(i,s,Mn(e,r));n.styles.push(s);ua(r.wbrels,-1,"styles."+t,ia.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";Fe(i,s,e.vbaraw);n.vba.push(s);ua(r.wbrels,-1,"vbaProject.bin",ia.VBA)}Fe(i,"[Content_Types].xml",na(n,r));Fe(i,"_rels/.rels",ca(r.rels));Fe(i,"xl/_rels/workbook."+t+".rels",ca(r.wbrels));delete r.revssf;delete r.ssf;return i}function ml(e,r){var t="";switch((r||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":t=b.decode(e.slice(0,12));break;case"binary":t=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(r&&r.type||"undefined"));}return[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3),t.charCodeAt(4),t.charCodeAt(5),t.charCodeAt(6),t.charCodeAt(7)]}function vl(e,r){if(H.find(e,"EncryptedPackage"))return ul(e,r);return parse_xlscfb(e,r)}function gl(e,r){var t,a=e;var n=r||{};if(!n.type)n.type=w&&Buffer.isBuffer(e)?"buffer":"base64";t=Te(a,n);return fl(t,n)}function bl(e,r){var t=0;e:while(t=2&&n[3]===0)return WK_.to_workbook(a,t);if(n[2]===0&&(n[3]===8||n[3]===9))return WK_.to_workbook(a,t)}break;case 3:;case 131:;case 139:;case 140:return Ra.to_workbook(a,t);case 123:if(n[1]===92&&n[2]===114&&n[3]===116)return RTF.to_workbook(a,t);break;case 10:;case 13:;case 32:return wl(a,t);case 137:if(n[1]===80&&n[2]===78&&n[3]===71)throw new Error("PNG Image File is not a spreadsheet");break;}if(Ra.versions.indexOf(n[0])>-1&&n[2]<=12&&n[3]<=31)return Ra.to_workbook(a,t);return xl(e,a,t,i)}function Cl(e,r){var t=r||{};t.type="file";return Sl(e,t)}function _l(e){return function r(t,a){var n=0;if(a.sheet){if(typeof a.sheet=="number")n=a.sheet;else n=t.SheetNames.indexOf(a.sheet);if(!t.SheetNames[n])throw new Error("Sheet not found: "+a.sheet+" : "+typeof a.sheet)}return e.from_sheet(t.Sheets[t.SheetNames[n]],a,t)}}var Al=_l(Vs);var Fl=_l({from_sheet:eo});var El=_l(typeof Ia!=="undefined"?Ia:{});var Tl=_l(typeof La!=="undefined"?La:{});var Ol=_l(typeof za!=="undefined"?za:{});var Dl=_l(typeof RTF!=="undefined"?RTF:{});var Ml=_l({from_sheet:ro});var Nl=_l(typeof Ra!=="undefined"?Ra:{});var Pl=_l(typeof Ba!=="undefined"?Ba:{});var Rl=_l(typeof WK_!=="undefined"?{from_sheet:WK_.sheet_to_wk1}:{});function Il(e,r){switch(r.type){case"base64":;case"binary":break;case"buffer":;case"array":r.type="";break;case"file":return G(r.file,H.write(e,{type:w?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");default:throw new Error("Unrecognized type "+r.type);}return H.write(e,r)}function Ll(e,r){var t=ue(r||{});var a=hl(e,t);return zl(a,t)}function Bl(e,r){var t=ue(r||{});var a=dl(e,t);return zl(a,t)}function zl(e,r){var t={};if(r.compression)t.compression="DEFLATE";if(r.password)t.type=w?"nodebuffer":"string";else switch(r.type){case"base64":t.type="base64";break;case"binary":t.type="string";break;case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");case"buffer":;case"file":t.type=w?"nodebuffer":"string";break;default:throw new Error("Unrecognized type "+r.type);}var a=e.FullPaths?H.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[t.type]||t.type,compression:!!r.compression}):e.generate(t);if(typeof Deno!=="undefined"){if(typeof a=="string"){if(r.type=="binary"||r.type=="base64")return a;a=new Uint8Array(A(a))}}if(r.password&&typeof encrypt_agile!=="undefined")return Il(encrypt_agile(a,r.password),r);if(r.type==="file")return G(r.file,a);return r.type=="string"?qe(a):a}function Ul(e,r){var t=r||{};var a=write_xlscfb(e,t);return Il(a,t)}function $l(e,r,t){if(!t)t="";var a=t+e;switch(r.type){case"base64":return b.encode(Ze(a));case"binary":return Ze(a);case"string":return e;case"file":return G(r.file,a,"utf8");case"buffer":{if(w)return y(a,"utf8");else if(typeof TextEncoder!=="undefined")return(new TextEncoder).encode(a);else return $l(a,{type:"binary"}).split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function Wl(e,r){switch(r.type){case"base64":return b.encode(e);case"binary":return e;case"string":return e;case"file":return G(r.file,e,"binary");case"buffer":{if(w)return y(e,"binary");else return e.split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function jl(e,r){switch(r.type){case"string":;case"base64":;case"binary":var t="";for(var a=0;a0)n=0;var u=ct(o.s.r);var h=[];var p=[];var d=0,m=0;var v=Array.isArray(e);var g=o.s.r,b=0,w=0;if(v&&!e[g])e[g]=[];for(b=o.s.c;b<=o.e.c;++b){h[b]=pt(b);t=v?e[g][b]:e[h[b]+u];switch(a){case 1:i[b]=b-o.s.c;break;case 2:i[b]=h[b];break;case 3:i[b]=c.header[b-o.s.c];break;default:if(t==null)t={w:"__EMPTY",t:"s"};l=s=St(t,null,c);m=0;for(w=0;w=0)f='"'+f.replace(Zl,'""')+'"'}else f="";c.push(f)}if(l.blankrows===false&&o)return null;return c.join(s)}function eo(e,r){var t=[];var a=r==null?{}:r;if(e==null||e["!ref"]==null)return"";var n=kt(e["!ref"]);var i=a.FS!==undefined?a.FS:",",s=i.charCodeAt(0);var l=a.RS!==undefined?a.RS:"\n",o=l.charCodeAt(0);var c=new RegExp((i=="|"?"\\|":i)+"+$");var f="",u=[];a.dense=Array.isArray(e);var h=a.skipHidden&&e["!cols"]||[];var p=a.skipHidden&&e["!rows"]||[];for(var d=n.s.c;d<=n.e.c;++d)if(!(h[d]||{}).hidden)u[d]=pt(d);for(var m=n.s.r;m<=n.e.r;++m){if((p[m]||{}).hidden)continue;f=Ql(e,n,m,u,s,o,i,a);if(f==null){continue}if(a.strip)f=f.replace(c,"");t.push(f+l)}delete a.dense;return t.join("")}function ro(e,r){if(!r)r={};r.FS="\t";r.RS="\n";var t=eo(e,r);if(typeof cptable=="undefined"||r.type=="string")return t;var a=cptable.utils.encode(1200,t,"str");return String.fromCharCode(255)+String.fromCharCode(254)+a}function to(e){var r="",t,a="";if(e==null||e["!ref"]==null)return[];var n=kt(e["!ref"]),i="",s=[],l;var o=[];var c=Array.isArray(e);for(l=n.s.c;l<=n.e.c;++l)s[l]=pt(l);for(var f=n.s.r;f<=n.e.r;++f){i=ct(f);for(l=n.s.c;l<=n.e.c;++l){r=s[l]+i;t=c?(e[f]||[])[l]:e[r];a="";if(t===undefined)continue;else if(t.F!=null){r=t.F;if(!t.f)continue;a=t.f;if(r.indexOf(":")==-1)r=r+":"+r}if(t.f!=null)a=t.f;else if(t.t=="z")continue;else if(t.t=="n"&&t.v!=null)a=""+t.v;else if(t.t=="b")a=t.v?"TRUE":"FALSE";else if(t.w!==undefined)a="'"+t.w;else if(t.v===undefined)continue;else if(t.t=="s")a="'"+t.v;else a=""+t.v;o[o.length]=r+"="+a}}return o}function ao(e,r,t){var a=t||{};var n=+!a.skipHeader;var i=e||{};var s=0,l=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var o=typeof a.origin=="string"?gt(a.origin):a.origin;s=o.r;l=o.c}}var c;var f={s:{c:0,r:0},e:{c:l,r:s+r.length-1+n}};if(i["!ref"]){var u=kt(i["!ref"]);f.e.c=Math.max(f.e.c,u.e.c);f.e.r=Math.max(f.e.r,u.e.r);if(s==-1){s=u.e.r+1;f.e.r=s+r.length-1+n}}else{if(s==-1){s=0;f.e.r=r.length-1+n}}var h=a.header||[],p=0;r.forEach(function(e,r){J(e).forEach(function(t){if((p=h.indexOf(t))==-1)h[p=h.length]=t;var o=e[t];var f="z";var u="";var d=bt({c:l+p,r:s+r+n});c=io.sheet_get_cell(i,d);if(o&&typeof o==="object"&&!(o instanceof Date)){i[d]=o}else{if(typeof o=="number")f="n";else if(typeof o=="boolean")f="b";else if(typeof o=="string")f="s";else if(o instanceof Date){f="d";if(!a.cellDates){f="n";o=re(o)}u=a.dateNF||P._table[14]}else if(o===null&&a.nullError){f="e";o=0}if(!c)i[d]=c={t:f,v:o};else{c.t=f;c.v=o;delete c.w;delete c.R;if(u)c.z=u}if(u)c.z=u}})});f.e.c=Math.max(f.e.c,l+h.length-1);var d=ct(s);if(n)for(p=0;p=0&&e.SheetNames.length>r)return r;throw new Error("Cannot find sheet # "+r)}else if(typeof r=="string"){var t=e.SheetNames.indexOf(r);if(t>-1)return t;throw new Error("Cannot find sheet name |"+r+"|")}else throw new Error("Cannot find sheet |"+r+"|")}e.book_new=function(){return{SheetNames:[],Sheets:{}}};e.book_append_sheet=function(e,r,t){if(!t)for(var a=1;a<=65535;++a,t=undefined)if(e.SheetNames.indexOf(t="Sheet"+a)==-1)break;if(!t||e.SheetNames.length>=65535)throw new Error("Too many worksheets");ks(t);if(e.SheetNames.indexOf(t)>=0)throw new Error("Worksheet with name |"+t+"| already exists!");e.SheetNames.push(t);e.Sheets[t]=r};e.book_set_sheet_visibility=function(e,r,a){t(e,"Workbook",{});t(e.Workbook,"Sheets",[]);var i=n(e,r);t(e.Workbook.Sheets,i,{});switch(a){case 0:;case 1:;case 2:break;default:throw new Error("Bad sheet visibility setting "+a);}e.Workbook.Sheets[i].Hidden=a};r([["SHEET_VISIBLE",0],["SHEET_HIDDEN",1],["SHEET_VERY_HIDDEN",2]]);e.cell_set_number_format=function(e,r){e.z=r;return e};e.cell_set_hyperlink=function(e,r,t){if(!r){delete e.l}else{e.l={Target:r};if(t)e.l.Tooltip=t}return e};e.cell_set_internal_link=function(r,t,a){return e.cell_set_hyperlink(r,"#"+t,a)};e.cell_add_comment=function(e,r,t){if(!e.c)e.c=[];e.c.push({t:r,a:t||"SheetJS"})};e.sheet_set_array_formula=function(e,r,t){var n=typeof r!="string"?r:kt(r);var i=typeof r=="string"?r:yt(r);for(var s=n.s.r;s<=n.e.r;++s)for(var l=n.s.c;l<=n.e.c;++l){var o=a(e,s,l);o.t="n";o.F=i;delete o.v;if(s==n.s.r&&l==n.s.c)o.f=t}return e};return e})(io);if(typeof parse_xlscfb!=="undefined")e.parse_xlscfb=parse_xlscfb;e.parse_zip=fl;e.read=Sl;e.readFile=Cl;e.readFileSync=Cl;e.write=Vl;e.writeFile=Gl;e.writeFileSync=Gl;e.writeFileAsync=Jl;e.utils=io;e.writeXLSX=Hl;e.writeFileXLSX=Yl;e.SSF=P;if(typeof H!=="undefined")e.CFB=H}if(typeof exports!=="undefined")make_xlsx_lib(exports);else if(typeof module!=="undefined"&&module.exports)make_xlsx_lib(module.exports);else if(typeof define==="function"&&define.amd)define("xlsx",function(){if(!XLSX.version)make_xlsx_lib(XLSX);return XLSX});else make_xlsx_lib(XLSX);if(typeof window!=="undefined"&&!window.XLSX)try{window.XLSX=XLSX}catch(e){} diff --git a/dist/xlsx.mini.min.map b/dist/xlsx.mini.min.map index 5226750..2acf486 100644 --- a/dist/xlsx.mini.min.map +++ b/dist/xlsx.mini.min.map @@ -1 +1 @@ -{"version":3,"sources":["misc/suppress_export.js","xlsx.mini.js"],"names":["DO_NOT_EXPORT_CODEPAGE","XLSX","make_xlsx_lib","version","current_codepage","current_ansi","module","require","cptable","global","window","VALID_ANSI","i","push","CS2CP","0","1","2","77","128","129","130","134","136","161","162","163","177","178","186","204","222","238","255","69","set_ansi","cp","indexOf","reset_ansi","set_cp","reset_cp","char_codes","data","o","len","length","charCodeAt","utf16leread","String","fromCharCode","join","utf16beread","debom","c1","c2","slice","_getchar","_gc1","x","_getansi","_ga1","utils","decode","_gc2","_ga2","DENSE","DIF_XL","Base64","map","encode","input","c3","e1","e2","e3","e4","isNaN","charAt","replace","has_buf","Buffer","process","versions","node","Buffer_from","nbfs","from","e","buf","enc","bind","alloc","n","allocUnsafe","new_raw_buf","Uint8Array","Array","new_unsafe_buf","s2a","s","split","s2ab","ArrayBuffer","view","a2s","isArray","c","a2u","Error","ab2a","utf8decode","content","out","widx","L","ridx","d","bconcat","bufs","maxlen","set","concat","apply","call","chr0","chr1","SSF","make_ssf","_strrev","fill","l","pad0","v","t","pad_","rpad_","pad0r1","Math","round","pad0r2","p2_32","pow","pad0r","isgeneral","days","months","init_table","table_fmt","default_map","defi","default_str","frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","floor","q","parse_date_code","opts","b2","date","time","dow","dout","T","u","y","m","H","M","S","abs","date1904","Date","setDate","getDate","getFullYear","getMonth","getDay","fix_hijri","basedate","dnthresh","getTime","base1904","datenum_local","epoch","getTimezoneOffset","general_fmt_int","toString","_general_int","general_fmt_num","make_general_fmt_num","trailing_zeroes_and_decimal","strip_decimal","mantissa_zeroes_and_decimal","exp_with_single_digit","normalize_exp","small_exp","w","toFixed","toPrecision","toExponential","large_exp","general_fmt_num_base","V","log","LOG10E","substr","toUpperCase","_general_num","general_fmt","format","_general","write_date","type","fmt","val","ss0","ss","tt","outl","outstr","commaify","j","write_num","make_write_num","pct1","write_num_pct","sfmt","mul","write_num_cm","idx","write_num_exp","match","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","r","aval","sign","den","parseInt","rr","base","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","str","cc","rnd","dd","dec","_frac","carry","flr","write_num_flt","ffmt","ri","ff","oa","min","max","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","lastIndexOf","split_fmt","in_str","_split","abstime","fmt_is_date","is_date","eval_fmt","flen","lst","dt","hr","toLowerCase","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","_eval","cfregex","cfregex2","chkcond","thresh","parseFloat","choose_fmt","f","lat","m1","m2","dateNF","table","load_entry","undefined","load","_table","get_table","load_table","tbl","XLMLFormatMap","General Number","General Date","Long Date","Medium Date","Short Date","Long Time","Medium Time","Short Time","Currency","Fixed","Standard","Percent","Scientific","Yes/No","True/False","On/Off","SSFImplicit","5","6","7","8","23","24","25","26","27","28","29","30","31","32","33","34","35","36","41","42","43","44","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","70","71","72","73","74","75","76","78","79","80","81","dateNFregex","dateNF_regex","RegExp","dateNF_fix","Y","forEach","datestr","timestr","DO_NOT_EXPORT_CFB","CRC32","factory","signed_crc_table","Int32Array","T0","slice_by_16_tables","subarray","TT","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","seed","C","crc32_buf","crc32_str","CFB","_CFB","exports","namecmp","R","Z","dirname","p","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_dos_date","read_shift","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_extra_field","blob","prep_blob","flags","sz","tgt","mtime","atime","ctime","mt","fs","get_fs","parse","file","options","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","header","check_shifts","dir_cnt","chk","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","name","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","shift","raw","HEADER_SIGNATURE","nsectors","ceil","FI","FP","pl","dad","get_mfat_entry","entry","payload","mini","start","size","MSSZ","__readInt32LE","new_buf","cnt","sector","get_sector_list","chkd","buf_chain","modulus","addr","nodes","__toBuffer","sl","k","seen","minifat_store","namelen","__utf16le","color","clsid","state","ct","read_date","storage","offset","__readUInt32LE","read_file","readFileSync","read","isBuffer","init_cfb","cfb","root","CLSID","seed_cfb","nm","find","rebuild_cfb","gc","_file","pop","now","fullPaths","Object","create","HEADER_CLSID","sort","elt","_write","_opts","fileType","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","copy","path","UCFullPaths","UCPaths","UCPath","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","write_file","writeFileSync","write","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_processChunk","_finishFlushFlag","bytesRead","console","error","message","_inflateRawSync","usz","_inflate","_deflateRawSync","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","b","rev","read_bits_2","bl","h","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","a","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","_deflateRawIIFE","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","off","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","h2","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","code","dst","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","unsafe","cdirs","method","compression","desc","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","htm","xml","gif","jpg","png","mso","thmx","sh33tj5","get_content_type","ctype","ext","write_base64_76","write_quoted_printable","text","encoded","si","end","tmp","parse_quoted_printable","di","line","oi","parse_mime","fname","cte","fdata","trim","row","test","mboundary","boundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","fpath","cfb_gc","cfb_del","splice","cfb_mov","old_name","new_name","writeFile","ReadShift","CheckField","_inflateRaw","_fs","blobify","write_dl","Deno","TextEncoder","utf8write","IE_SaveFile","Blob","navigator","msSaveBlob","saveAs","URL","document","createElement","createObjectURL","url","chrome","downloads","download","revokeObjectURL","setTimeout","href","body","appendChild","click","removeChild","$","File","Folder","open","encoding","close","read_binary","infile","keys","ks","o2","prototype","hasOwnProperty","evert_key","obj","key","K","evert","evert_num","evert_arr","datenum","refdate","refoffset","numdate","setTime","parse_isodur","sec","good_pd_date","good_pd","parseDate","fixdate","cc2str","arr","debomit","dup","JSON","stringify","fuzzynum","Number","isFinite","NaN","wt","lower_months","fuzzydate","getYear","lower","safe_split_regex","split_regex","re","def","getdatastr","asNodeBuffer","asBinary","_data","getContent","getdatabin","getdata","safegetzipfile","zip","g","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_add_file","res","zip_new","zip_read","resolve_path","result","target","step","XML_HEADER","attregexg","tagregex","nsregex","nsregex2","parsexmltag","tag","skip_root","skip_LC","z","eq","quot","strip_ns","encodings",""","'",">","<","&","rencoding","unescapexml","encregex","coderegex","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","escapexlml","xlml_fixstr","entregex","entrepl","xlml_unfixstr","parsexmlbool","value","utf8read","utf8reada","orig","utf8readb","ww","corpus","utf8readc","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vt_regex","vtvregex","vtmregex","parseVector","matches","baseType","WTF","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","toISOString","write_vt","xlsx","XMLNS","dc","dcterms","dcmitype","mx","sjs","vt","xsi","xsd","main","XLMLNS","html","read_double_le","Infinity","write_double_le","bs","av","LN2","___toBuffer","__readUInt16LE","___utf16le","__hexlify","___hexlify","__utf8","__readUInt8","___utf8","__lpstr","___lpstr","__cpstr","___cpstr","__lpwstr","___lpwstr","__lpp4","___lpp4","lpp4_","__8lpp4","___8lpp4","__double","___double","is_buf","is_buf_a","lpstr_b","readUInt32LE","cpstr_b","lpwstr_b","lpp4_b","lpp4_8b","utf8_b","double_","readDoubleLE","is_buf_b","cpdoit","__readInt16LE","__readInt32BE","oI","oR","oo","loc","this","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","hexstr","fld","pos","parsenoop","recordhopper","cb","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","ba_newblk","curbuf","endbuf","ba_endbuf","next","ba_next","ba_end","ba_push","_bufs","write_record","ba","XLSBRE","make_XLSBRE","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","range","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_col","encode_row","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","col","split_cell","decode_cell","decode_range","encode_range","cs","ce","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","origin","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","VT_I2","VT_I4","VT_BOOL","VT_VARIANT","VT_UI4","VT_LPSTR","VT_FILETIME","VT_BLOB","VT_CF","VT_VECTOR","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","3","4","9","10","11","12","13","14","15","16","17","19","22","2147483648","2147483651","1919054434","SummaryPIDSI","18","DocSummaryRE","SummaryRE","CountryEnum","20","39","45","46","47","48","49","82","84","86","90","105","213","216","218","351","354","358","420","886","961","962","963","964","965","966","971","972","974","981","65535","XLSFillPattern","rgbify","_XLSIcv","XLSIcv","RBErr","ct2type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml","application/vnd.ms-excel.binIndexWs","application/vnd.ms-excel.intlmacrosheet","application/vnd.ms-excel.binIndexMs","application/vnd.openxmlformats-package.core-properties+xml","application/vnd.openxmlformats-officedocument.custom-properties+xml","application/vnd.openxmlformats-officedocument.extended-properties+xml","application/vnd.openxmlformats-officedocument.customXmlProperties+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty","application/vnd.ms-excel.pivotTable","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml","application/vnd.openxmlformats-officedocument.drawingml.chart+xml","application/vnd.ms-office.chartcolorstyle+xml","application/vnd.ms-office.chartstyle+xml","application/vnd.ms-office.chartex+xml","application/vnd.ms-excel.calcChain","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings","application/vnd.ms-office.activeX","application/vnd.ms-office.activeX+xml","application/vnd.ms-excel.attachedToolbars","application/vnd.ms-excel.connections","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml","application/vnd.ms-excel.externalLink","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml","application/vnd.ms-excel.sheetMetadata","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml","application/vnd.ms-excel.pivotCacheDefinition","application/vnd.ms-excel.pivotCacheRecords","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml","application/vnd.ms-excel.queryTable","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml","application/vnd.ms-excel.userNames","application/vnd.ms-excel.revisionHeaders","application/vnd.ms-excel.revisionLog","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml","application/vnd.ms-excel.tableSingleCells","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml","application/vnd.ms-excel.slicer","application/vnd.ms-excel.slicerCache","application/vnd.ms-excel.slicer+xml","application/vnd.ms-excel.slicerCache+xml","application/vnd.ms-excel.wsSortMap","application/vnd.ms-excel.table","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml","application/vnd.openxmlformats-officedocument.theme+xml","application/vnd.openxmlformats-officedocument.themeOverride+xml","application/vnd.ms-excel.Timeline+xml","application/vnd.ms-excel.TimelineCache+xml","application/vnd.ms-office.vbaProject","application/vnd.ms-office.vbaProjectSignature","application/vnd.ms-office.volatileDependencies","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml","application/vnd.ms-excel.controlproperties+xml","application/vnd.openxmlformats-officedocument.model+data","application/vnd.ms-excel.Survey+xml","application/vnd.openxmlformats-officedocument.drawing+xml","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml","application/vnd.openxmlformats-officedocument.vmlDrawing","application/vnd.openxmlformats-package.relationships+xml","application/vnd.openxmlformats-officedocument.oleObject","image/png","CT_LIST","workbooks","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","styles","type2ct","CT","new_ct","rels","links","coreprops","extprops","custprops","themes","calcchains","vba","drawings","TODO","xmlns","parse_ct","ctext","Extension","ContentType","PartName","calcchain","sst","style","defaults","CTYPE_XML_ROOT","xmlns:xsd","xmlns:xsi","CTYPE_DEFAULTS","write_ct","f1","bookType","f2","f3","RELS","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","VBA","get_rels_path","parse_rels","currentFilePath","!id","rel","Type","Target","Id","TargetMode","canonictarget","RELS_ROOT","write_rels","rid","RELS_EXTERN","add_rels","rId","relobj","targetmode","CORE_PROPS","CORE_PROPS_REGEX","parse_core_props","cur","CORE_PROPS_XML_ROOT","xmlns:cp","xmlns:dc","xmlns:dcterms","xmlns:dcmitype","cp_doit","write_core_props","Props","CreatedDate","xsi:type","ModifiedDate","EXT_PROPS","PseudoPropsPairs","load_props_pairs","HP","TOP","props","hp","parts","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","parse_ext_props","HeadingPairs","TitlesOfParts","EXT_PROPS_XML_ROOT","xmlns:vt","write_ext_props","W","Application","CUST_PROPS","custregex","parse_cust_props","toks","warn","CUST_PROPS_XML_ROOT","write_cust_props","pid","custprop","fmtid","DBF","dbf_codepage_map","100","101","102","103","104","106","107","120","121","122","123","124","125","126","150","151","152","200","201","202","203","21","37","38","87","88","89","108","135","dbf_reverse_map","DBF_SUPPORTED_VERSIONS","dbf_to_aoa","ft","memo","vfp","l7","nrow","fpos","rlen","current_cp","codepage","fields","field","hend","sheetRows","dbf_to_sheet","dbf_to_workbook","_RLEN","?","","sheet_to_dbf","aoa","sheet_to_json","headers","hcnt","coltypes","guess","_guess","hf","_f","hb","rout","_s","to_workbook","to_sheet","from_sheet","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Ai","Bi","Ci","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","B ","!","\"","#","(","%","'","H ","+",";","<","=",">","{","sylk_char_regex","sylk_char_fn","_","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","hidden","wch","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_workbook","write_ws_cell_sylk","F","a1_to_rc","write_ws_cols_sylk","cols","rec","width","wpx","width2px","px2char","write_ws_rows_sylk","rows","px2pt","sheet_to_sylk","preamble","RS","coord","DIF","dif_to_aoa","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_workbook","sheet_to_dif","push_field","pf","topic","push_value","po","ETH","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","meta","sheet_to_eth_data","sheet_to_eth","PRN","set_text_arr","prn_to_aoa_str","lines","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","finish_cell","fuzzyfmla","cellText","cellNF","outer","prn_to_sheet_str","prn_to_sheet","bytes","firstbyte","prn_to_workbook","sheet_to_prn","read_wb_ID","OLD_WTF","parse_rpr","rpr","font","pass","shadow","outline","strike","uval","rgb","family","valign","parse_rs","tregex","rpregex","parse_r","rregex","rend","rs","filter","rs_to_html","parse_rs_factory","nlregex","parse_rpr2","intro","outro","align","r_to_html","terms","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","parse_sst_xml","Count","count","Unique","uniqueCount","SST","straywsregex","write_sst_xml","bookSST","sitag","hex2RGB","rgb2Hex","rgb2HSL","G","H6","L2","hsl2RGB","hsl","h6","X","rgb_tint","hex","tint","DEF_MDW","MAX_MDW","MIN_MDW","MDW","px","char2width","chr","cycle_width","collw","find_mdw_colw","delta","_MDW","coll","customWidth","DEF_PPI","PPI","pt","XLMLPatternTypeMap","None","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinHorzCross","parse_borders","Borders","border","diagonalUp","diagonalDown","parse_fills","Fills","patternType","bgColor","indexed","theme","fgColor","parse_fonts","Fonts","bold","italic","underline","condense","extend","vertAlign","scheme","auto","index","icv","themeElements","clrScheme","parse_numFmts","NumberFmt","formatCode","write_numFmts","NF","cellXF_uint","cellXF_bool","parse_cellXfs","CellXf","xf","alignment","vertical","horizontal","textRotation","indent","wrapText","write_cellXfs","cellXfs","parse_sty_xml","make_pstyx","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","STYLES_XML_ROOT","STY","write_sty_xml","wb","THEME","XLSXThemeClrScheme","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","parse_themeElements","themeltregex","parse_theme_xml","write_theme","Themes","themeXLSX","parse_xlink_xml","parse_xlink_bin","xlink_parse","R_n","IMG","DRAW","parse_drawing","id","_shapeid","write_comments_vml","csize","bbox","xmlns:v","xmlns:o","xmlns:x","xmlns:mv","v:ext","joinstyle","gradientshapeok","o:connecttype","o:spt","coordsize","fillopts","color2","angle","fillparm","fillxml","shadata","on","obscured","fillcolor","strokecolor","CMNT","sheet_insert_comments","comment","ref","author","parse_comments_xml","authors","commentList","authtag","cmnttag","cm","authorId","guid","textMatch","rt","CMNT_XML_ROOT","write_comments_xml","iauthor","CT_VBA","make_vba_xls","newcfb","newpath","fill_vba_xls","VBAFMTS","DS","MS","parse_ds_bin","!type","parse_ds_xml","parse_ms_bin","parse_ms_xml","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","_ssfopts","WS","browser_has_Map","Map","get_sst_id","has","revarr","get","col_obj_w","level","outlineLevel","default_margins","margins","mode","defs","left","right","top","bottom","footer","get_cell_style","revssf","ssf","fontId","fillId","borderId","xfId","applyNumberFormat","safe_format","fillid","cellStyles","raw_rgb","check_ws","sname","parse_ws_xml_dim","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml","refguess","data1","data2","mtch","sheetPr","parse_ws_xml_sheetpr","parse_ws_xml_sheetpr2","svs","parse_ws_xml_sheetviews","columns","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","merges","_merge","hlink","parse_ws_xml_hlinks","parse_ws_xml_margins","tmpref","write_ws_xml_merges","codeName","CodeName","write_ws_xml_sheetpr","needed","vbaraw","cname","Workbook","outlineprops","summaryBelow","summaryRight","above","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_protection","sp","password","crypto_CreatePasswordVerifier_Method1","location","Rel","tooltip","Tooltip","rng","margin","write_ws_xml_margins","seencol","coli","colm","colM","write_ws_xml_cols","write_ws_xml_autofilter","Names","names","Name","Sheet","Ref","sviewregex","Views","zoomScale","zoom","rightToLeft","RTL","write_ws_xml_sheetviews","sview","workbookViewId","write_ws_xml_cell","oldt","oldv","os","Strings","revStrings","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","cells","cref","tagr","tagc","sstr","ftag","do_format","cf","arrayf","sharedf","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","ht","rslice","cellFormula","xlfn","___f","_tag","_r","write_ws_xml_data","params","height","_cell","customHeight","WS_XML_ROOT","xmlns:r","write_ws_xml","sidx","rdata","_drawing","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","relc","ignoreEC","numberStoredAsText","sqref","r:id","CHART","CHARTEX","parse_Cache","num","nf","parse_chart","csheet","nc","cache","CS","CS_XML_ROOT","parse_cs_xml","!drawel","!rel","write_cs_xml","parse_BrtCsProp","parse_XLWideString","parse_cs_bin","cs_parse","write_cs_bin","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","safe1904","badchars","check_ws_name","_good","check_wb_names","N","codes","cn","check_wb","wbnsregex","parse_wb_xml","AppVersion","dname","dnstart","xml_wb","Hidden","Comment","localSheetId","WB_XML_ROOT","write_wb_xml","write_names","workbookPr","sheetId","parse_wb","parse_wb_bin","parse_ws","parse_ws_bin","parse_cs","parse_ms","parse_ds","parse_sty","parse_sty_bin","parse_theme","parse_sst","parse_sst_bin","parse_cmnt","parse_comments_bin","parse_cc","parse_cc_bin","parse_cc_xml","parse_xlink","write_wb","write_wb_bin","write_ws","write_ws_bin","write_cs","write_sty","write_sty_bin","write_sst","write_sst_bin","write_cmnt","write_comments_bin","HTML_","html_to_sheet","mtch2","hd","midx","colspan","rowspan","_t","html_to_book","book_new","book_append_sheet","make_html_row","editable","make_html_preamble","_BEGIN","_END","sheet_to_html","_row","BEGIN","END","_preamble","sheet_add_dom","or_R","or_C","getElementsByTagName","is_dom_element_hidden","display","elts","hasAttribute","getAttribute","innerHTML","Aelts","Aelti","parse_dom_table","table_to_book","element","get_computed_style","get_get_computed_style_function","getPropertyValue","ownerDocument","defaultView","getComputedStyle","parse_content_xml","parse_text_p","fixed","number_formats","day","month","year","hours","minutes","seconds","am-pm","day-of-week","era","quarter","pcx","xlml_normalize","NFtag","pidx","sheetag","rowtag","Rn","ctag","textp","textpidx","textptag","textR","row_ol","number_format_map","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","xlmlregex","lastIndex","exec","ods_to_csf_formula","rptR","rpt","ods_to_csf_3D","nrange","ptp","bookSheets","parse_ods","parse_manifest","parse_fods","write_styles_ods","master_styles","xmlns:office","xmlns:table","xmlns:style","xmlns:text","xmlns:draw","xmlns:fo","xmlns:xlink","xmlns:number","xmlns:svg","xmlns:of","office:version","wso","write_content_ods","write_text_p","null_cell_xml","covered_cell_xml","mi","ods","ROWS","skip","csf_to_ods_formula","_Fref","text_p","_tgt","csf_to_ods_3D","xlink:href","write_automatic_styles_ods","cidx","colobj","wcx","attr","xmlns:meta","xmlns:presentation","xmlns:chart","xmlns:dr3d","xmlns:math","xmlns:form","xmlns:script","xmlns:ooo","xmlns:ooow","xmlns:oooc","xmlns:dom","xmlns:xforms","xmlns:sheet","xmlns:rpt","xmlns:xhtml","xmlns:grddl","xmlns:tableooo","xmlns:drawooo","xmlns:calcext","xmlns:loext","xmlns:field","xmlns:formx","xmlns:css3t","fods","xmlns:config","office:mimetype","write_meta_ods","write_ods","manifest","rdf","write_rdf","write_manifest","NUMBERS","defineProperty","__defProp","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","__markAsModule","__export","all","enumerable","__reExport","copyDefault","__toCommonJS","temp","WeakMap","numbers_exports","parse_numbers","numbers_default","u8_to_dataview","array","DataView","buffer","byteOffset","byteLength","u8str","u8","TextDecoder","u8concat","u8a","reduce","acc","popcnt","readDecimal128LE","exp","mantissa","parse_varint49","ptr","varint","varint_to_i32","i32","parse_shallow","mappa","_a","deframe","parse_snappy_chunk","chunks","parse_iwa","ai","messages","fl","parse_old_storage","rsst","dv","getUint32","data_offset","ieee","getFloat64","ret","parse_storage","d128","packets","packet","docroot","iwams","iwam","mtype","parse_docroot","parse_Reference","pb","parse_TST_TableDataList","entries","le","rtp","rtpref","tswpsa","parse_TST_TileRowInfo","_b","_c","_d","_e","_g","_h","_i","_j","pre_bnc","pre_bnc_offsets","storage_offsets","wide_offsets","getUint16","parse_TST_Tile","parse_TST_TableModelArchive","store","tile","tiles","tl","tile2","parse_TST_TableInfoArchive","!ref","tableref","parse_sheetroot","shapeoffs","sheetoffs","root2","fix_opts_func","fix_opts","fix_read_opts","fix_write_opts","get_sheet_type","safe_parse_wbrels","wbrels","pwbr","strRelID","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","draw","chartp","crelsp","strip_front_slash","_zip","dir","binname","bookProps","link","propdata","pluck","Custprops","deps","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","wsloop","snjseen","snj","Directory","Deps","Styles","bookFiles","bookVBA","bin","parse_xlsxcfb","parse_DataSpaceVersionInfo","dsm","parse_DataSpaceMap","comps","seds","parse_DataSpaceDefinition","parse_Primary","einfo","parse_EncryptionInfo","decrypt_agile","decrypt_std76","write_zip_xlsxb","foo","vbafmt","General","_sn","wsrels","_type","need_vml","rId1","write_zip_xlsx","read_cfb","parse_xlscfb","read_zip","read_plaintext","parse_xlml","read_plaintext_raw","read_utf16","bstrify","read_prn","readSync","ab","vu","WK_","RTF","write_obj_str","write_str","write_htm_str","write_csv_str","sheet_to_csv","write_slk_str","write_dif_str","write_prn_str","write_rtf_str","write_txt_str","sheet_to_txt","write_dbf_buf","write_eth_str","write_wk1_buf","sheet_to_wk1","write_cfb_ctr","write_zip_type","write_zip_denouement","write_zip_typeXLSX","oopts","nodebuffer","string","generate","encrypt_agile","write_cfb_type","write_xlscfb","write_string_type","bom","write_stxt_type","write_binary_type","writeSyncXLSX","writeSync","write_xlml","book_to_wk3","write_biff_buf","resolve_book_type","_BT","xls","slk","socialcalc","Sh33tJS","writeFileSyncXLSX","writeFileAsync","_cb","Function","make_json_row","hdr","defval","isempty","__rowNum__","rawNumbers","outi","counter","CC","blankrows","qreg","make_csv_row","txt","forceQuotes","endregex","skipHidden","strip","sheet_to_formulae","cmds","sheet_add_json","js","skipHeader","JS","sheet_get_cell","json_to_sheet","table_to_sheet","sheet_to_row_object_array","add_consts","get_default","ws_get_cell_stub","RC","wb_sheet_idx","sh","book_set_sheet_visibility","vis","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","rngstr","readFile","writeXLSX","writeFileXLSX","define","amd"],"mappings":"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","file":"dist/xlsx.mini.min.js"} \ No newline at end of file +{"version":3,"sources":["dist/xlsx.mini.js"],"names":["XLSX","make_xlsx_lib","version","current_codepage","current_ansi","VALID_ANSI","i","push","CS2CP","0","1","2","77","128","129","130","134","136","161","162","163","177","178","186","204","222","238","255","69","set_ansi","cp","indexOf","reset_ansi","set_cp","reset_cp","char_codes","data","o","len","length","charCodeAt","utf16leread","String","fromCharCode","join","utf16beread","debom","c1","c2","slice","_getchar","_gc1","x","_getansi","_ga1","DENSE","DIF_XL","Base64","map","encode","input","c3","e1","e2","e3","e4","isNaN","charAt","decode","replace","has_buf","Buffer","undefined","node","Buffer_from","nbfs","from","e","buf","enc","bind","alloc","n","allocUnsafe","new_raw_buf","Uint8Array","Array","new_unsafe_buf","s2a","s","split","s2ab","ArrayBuffer","view","a2s","isArray","c","a2u","Error","ab2a","utf8decode","content","out","widx","L","ridx","d","bconcat","bufs","maxlen","set","concat","apply","call","chr0","chr1","SSF","make_ssf","_strrev","fill","l","pad0","v","t","pad_","rpad_","pad0r1","Math","round","pad0r2","p2_32","pow","pad0r","isgeneral","days","months","init_table","table_fmt","default_map","defi","default_str","frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","floor","q","parse_date_code","opts","b2","date","time","dow","dout","T","u","y","m","H","M","S","abs","date1904","Date","setDate","getDate","getFullYear","getMonth","getDay","fix_hijri","basedate","dnthresh","getTime","base1904","datenum_local","epoch","getTimezoneOffset","general_fmt_int","toString","_general_int","general_fmt_num","make_general_fmt_num","trailing_zeroes_and_decimal","strip_decimal","mantissa_zeroes_and_decimal","exp_with_single_digit","normalize_exp","small_exp","w","toFixed","toPrecision","toExponential","large_exp","general_fmt_num_base","V","log","LOG10E","substr","toUpperCase","_general_num","general_fmt","format","_general","write_date","type","fmt","val","ss0","ss","tt","outl","outstr","commaify","j","write_num","make_write_num","pct1","write_num_pct","sfmt","mul","write_num_cm","idx","write_num_exp","match","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","r","aval","sign","den","parseInt","rr","base","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","str","cc","rnd","dd","dec","_frac","carry","flr","write_num_flt","ffmt","ri","ff","oa","min","max","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","lastIndexOf","split_fmt","in_str","_split","abstime","fmt_is_date","is_date","eval_fmt","flen","lst","dt","hr","toLowerCase","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","_eval","cfregex","cfregex2","chkcond","thresh","parseFloat","choose_fmt","f","lat","m1","m2","dateNF","table","load_entry","load","_table","get_table","load_table","tbl","XLMLFormatMap","General Number","General Date","Long Date","Medium Date","Short Date","Long Time","Medium Time","Short Time","Currency","Fixed","Standard","Percent","Scientific","Yes/No","True/False","On/Off","SSFImplicit","5","6","7","8","23","24","25","26","27","28","29","30","31","32","33","34","35","36","41","42","43","44","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","70","71","72","73","74","75","76","78","79","80","81","dateNFregex","dateNF_regex","RegExp","dateNF_fix","Y","forEach","datestr","timestr","DO_NOT_EXPORT_CFB","CRC32","factory","signed_crc_table","Int32Array","T0","slice_by_16_tables","subarray","TT","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","seed","C","crc32_buf","crc32_str","CFB","_CFB","exports","namecmp","R","Z","dirname","p","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_dos_date","read_shift","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_extra_field","blob","prep_blob","flags","sz","tgt","mtime","atime","ctime","mt","fs","get_fs","parse","file","options","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","header","check_shifts","dir_cnt","chk","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","name","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","shift","raw","HEADER_SIGNATURE","nsectors","ceil","FI","FP","pl","dad","get_mfat_entry","entry","payload","mini","start","size","MSSZ","__readInt32LE","new_buf","cnt","sector","get_sector_list","chkd","buf_chain","modulus","addr","nodes","__toBuffer","sl","k","seen","minifat_store","namelen","__utf16le","color","clsid","state","ct","read_date","storage","offset","__readUInt32LE","read_file","readFileSync","read","isBuffer","init_cfb","cfb","root","CLSID","seed_cfb","nm","find","rebuild_cfb","gc","_file","pop","now","fullPaths","Object","create","HEADER_CLSID","sort","elt","_write","_opts","fileType","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","copy","path","UCFullPaths","UCPaths","UCPath","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","write_file","writeFileSync","write","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_processChunk","_finishFlushFlag","bytesRead","console","error","message","_inflateRawSync","usz","_inflate","_deflateRawSync","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","b","rev","read_bits_2","bl","h","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","a","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","_deflateRawIIFE","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","off","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","h2","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","code","dst","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","unsafe","cdirs","method","compression","desc","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","htm","xml","gif","jpg","png","mso","thmx","sh33tj5","get_content_type","ctype","ext","write_base64_76","write_quoted_printable","text","encoded","si","end","tmp","parse_quoted_printable","di","line","oi","parse_mime","fname","cte","fdata","trim","row","test","mboundary","boundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","fpath","utils","cfb_gc","cfb_del","splice","cfb_mov","old_name","new_name","writeFile","ReadShift","CheckField","_inflateRaw","require","module","_fs","blobify","write_dl","Deno","TextEncoder","utf8write","IE_SaveFile","Blob","navigator","msSaveBlob","saveAs","URL","document","createElement","createObjectURL","url","chrome","downloads","download","revokeObjectURL","setTimeout","href","body","appendChild","click","removeChild","$","File","Folder","open","encoding","close","read_binary","infile","keys","ks","o2","prototype","hasOwnProperty","evert_key","obj","key","K","evert","evert_num","evert_arr","datenum","refdate","refoffset","numdate","setTime","parse_isodur","sec","good_pd_date","good_pd","parseDate","fixdate","cc2str","arr","debomit","dup","JSON","stringify","fuzzynum","Number","isFinite","NaN","wt","lower_months","fuzzydate","getYear","lower","safe_split_regex","split_regex","re","def","getdatastr","asNodeBuffer","asBinary","_data","getContent","getdatabin","getdata","safegetzipfile","zip","g","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_add_file","res","zip_new","zip_read","resolve_path","result","target","step","XML_HEADER","attregexg","tagregex","nsregex","nsregex2","parsexmltag","tag","skip_root","skip_LC","z","eq","quot","strip_ns","encodings",""","'",">","<","&","rencoding","unescapexml","encregex","coderegex","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","escapexlml","xlml_fixstr","entregex","entrepl","xlml_unfixstr","parsexmlbool","value","utf8read","utf8reada","orig","utf8readb","ww","corpus","utf8readc","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vt_regex","vtvregex","vtmregex","parseVector","matches","baseType","WTF","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","toISOString","write_vt","xlsx","XMLNS","dc","dcterms","dcmitype","mx","sjs","vt","xsi","xsd","main","XLMLNS","html","read_double_le","Infinity","write_double_le","bs","av","LN2","___toBuffer","__readUInt16LE","___utf16le","__hexlify","___hexlify","__utf8","__readUInt8","___utf8","__lpstr","___lpstr","__cpstr","___cpstr","__lpwstr","___lpwstr","__lpp4","___lpp4","lpp4_","__8lpp4","___8lpp4","__double","___double","is_buf","is_buf_a","lpstr_b","readUInt32LE","cpstr_b","lpwstr_b","lpp4_b","lpp4_8b","utf8_b","double_","readDoubleLE","is_buf_b","cpdoit","cptable","__readInt16LE","__readInt32BE","oI","oR","oo","loc","this","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","hexstr","fld","pos","parsenoop","recordhopper","cb","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","ba_newblk","curbuf","endbuf","ba_endbuf","next","ba_next","ba_end","ba_push","_bufs","write_record","ba","XLSBRE","make_XLSBRE","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","range","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_col","encode_row","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","col","split_cell","decode_cell","decode_range","encode_range","cs","ce","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","origin","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","VT_I2","VT_I4","VT_BOOL","VT_VARIANT","VT_UI4","VT_LPSTR","VT_FILETIME","VT_BLOB","VT_CF","VT_VECTOR","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","3","4","9","10","11","12","13","14","15","16","17","19","22","2147483648","2147483651","1919054434","SummaryPIDSI","18","DocSummaryRE","SummaryRE","CountryEnum","20","39","45","46","47","48","49","82","84","86","90","105","213","216","218","351","354","358","420","886","961","962","963","964","965","966","971","972","974","981","65535","XLSFillPattern","rgbify","_XLSIcv","XLSIcv","RBErr","ct2type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml","application/vnd.ms-excel.binIndexWs","application/vnd.ms-excel.intlmacrosheet","application/vnd.ms-excel.binIndexMs","application/vnd.openxmlformats-package.core-properties+xml","application/vnd.openxmlformats-officedocument.custom-properties+xml","application/vnd.openxmlformats-officedocument.extended-properties+xml","application/vnd.openxmlformats-officedocument.customXmlProperties+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty","application/vnd.ms-excel.pivotTable","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml","application/vnd.openxmlformats-officedocument.drawingml.chart+xml","application/vnd.ms-office.chartcolorstyle+xml","application/vnd.ms-office.chartstyle+xml","application/vnd.ms-office.chartex+xml","application/vnd.ms-excel.calcChain","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings","application/vnd.ms-office.activeX","application/vnd.ms-office.activeX+xml","application/vnd.ms-excel.attachedToolbars","application/vnd.ms-excel.connections","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml","application/vnd.ms-excel.externalLink","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml","application/vnd.ms-excel.sheetMetadata","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml","application/vnd.ms-excel.pivotCacheDefinition","application/vnd.ms-excel.pivotCacheRecords","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml","application/vnd.ms-excel.queryTable","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml","application/vnd.ms-excel.userNames","application/vnd.ms-excel.revisionHeaders","application/vnd.ms-excel.revisionLog","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml","application/vnd.ms-excel.tableSingleCells","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml","application/vnd.ms-excel.slicer","application/vnd.ms-excel.slicerCache","application/vnd.ms-excel.slicer+xml","application/vnd.ms-excel.slicerCache+xml","application/vnd.ms-excel.wsSortMap","application/vnd.ms-excel.table","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml","application/vnd.openxmlformats-officedocument.theme+xml","application/vnd.openxmlformats-officedocument.themeOverride+xml","application/vnd.ms-excel.Timeline+xml","application/vnd.ms-excel.TimelineCache+xml","application/vnd.ms-office.vbaProject","application/vnd.ms-office.vbaProjectSignature","application/vnd.ms-office.volatileDependencies","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml","application/vnd.ms-excel.controlproperties+xml","application/vnd.openxmlformats-officedocument.model+data","application/vnd.ms-excel.Survey+xml","application/vnd.openxmlformats-officedocument.drawing+xml","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml","application/vnd.openxmlformats-officedocument.vmlDrawing","application/vnd.openxmlformats-package.relationships+xml","application/vnd.openxmlformats-officedocument.oleObject","image/png","CT_LIST","workbooks","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","styles","type2ct","CT","new_ct","rels","links","coreprops","extprops","custprops","themes","calcchains","vba","drawings","TODO","xmlns","parse_ct","ctext","Extension","ContentType","PartName","calcchain","sst","style","defaults","CTYPE_XML_ROOT","xmlns:xsd","xmlns:xsi","CTYPE_DEFAULTS","write_ct","f1","bookType","f2","f3","RELS","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","VBA","get_rels_path","parse_rels","currentFilePath","!id","rel","Type","Target","Id","TargetMode","canonictarget","RELS_ROOT","write_rels","rid","RELS_EXTERN","add_rels","rId","relobj","targetmode","CT_ODS","parse_manifest","xlml_normalize","Rn","FEtag","xlmlregex","exec","write_manifest","manifest","write_rdf_type","write_rdf_has","write_rdf","rdf","write_meta_ods","wmo","CORE_PROPS","CORE_PROPS_REGEX","parse_core_props","cur","CORE_PROPS_XML_ROOT","xmlns:cp","xmlns:dc","xmlns:dcterms","xmlns:dcmitype","cp_doit","write_core_props","Props","CreatedDate","xsi:type","ModifiedDate","EXT_PROPS","PseudoPropsPairs","load_props_pairs","HP","TOP","props","hp","parts","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","parse_ext_props","HeadingPairs","TitlesOfParts","EXT_PROPS_XML_ROOT","xmlns:vt","write_ext_props","W","Application","CUST_PROPS","custregex","parse_cust_props","toks","warn","CUST_PROPS_XML_ROOT","write_cust_props","pid","custprop","fmtid","DBF","dbf_codepage_map","100","101","102","103","104","106","107","120","121","122","123","124","125","126","150","151","152","200","201","202","203","21","37","38","87","88","89","108","135","dbf_reverse_map","DBF_SUPPORTED_VERSIONS","dbf_to_aoa","ft","memo","vfp","l7","nrow","fpos","rlen","current_cp","codepage","fields","field","hend","sheetRows","dbf_to_sheet","dbf_to_workbook","_RLEN","?","","sheet_to_dbf","aoa","sheet_to_json","headers","hcnt","coltypes","guess","_guess","hf","_f","hb","rout","_s","versions","to_workbook","to_sheet","from_sheet","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Ai","Bi","Ci","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","B ","!","\"","#","(","%","'","H ","+",";","<","=",">","{","sylk_char_regex","sylk_char_fn","_","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","hidden","wch","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_workbook","write_ws_cell_sylk","F","a1_to_rc","write_ws_cols_sylk","cols","rec","width","wpx","width2px","px2char","write_ws_rows_sylk","rows","px2pt","sheet_to_sylk","preamble","RS","coord","DIF","dif_to_aoa","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_workbook","sheet_to_dif","push_field","pf","topic","push_value","po","ETH","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","meta","sheet_to_eth_data","sheet_to_eth","PRN","set_text_arr","prn_to_aoa_str","lines","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","finish_cell","fuzzyfmla","cellText","cellNF","outer","prn_to_sheet_str","prn_to_sheet","bytes","firstbyte","prn_to_workbook","sheet_to_prn","read_wb_ID","OLD_WTF","parse_rpr","rpr","font","pass","shadow","outline","strike","uval","rgb","family","valign","parse_rs","tregex","rpregex","parse_r","rregex","rend","rs","filter","rs_to_html","parse_rs_factory","nlregex","parse_rpr2","intro","outro","align","r_to_html","terms","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","parse_sst_xml","Count","count","Unique","uniqueCount","SST","straywsregex","write_sst_xml","bookSST","sitag","hex2RGB","rgb2Hex","rgb2HSL","G","H6","L2","hsl2RGB","hsl","h6","X","rgb_tint","hex","tint","DEF_MDW","MAX_MDW","MIN_MDW","MDW","px","char2width","chr","cycle_width","collw","find_mdw_colw","delta","_MDW","coll","customWidth","DEF_PPI","PPI","pt","XLMLPatternTypeMap","None","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinHorzCross","parse_borders","Borders","border","diagonalUp","diagonalDown","parse_fills","Fills","patternType","bgColor","indexed","theme","fgColor","parse_fonts","Fonts","bold","italic","underline","condense","extend","vertAlign","scheme","auto","index","icv","themeElements","clrScheme","parse_numFmts","NumberFmt","formatCode","write_numFmts","NF","cellXF_uint","cellXF_bool","parse_cellXfs","CellXf","xf","alignment","vertical","horizontal","textRotation","indent","wrapText","write_cellXfs","cellXfs","parse_sty_xml","make_pstyx","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","STYLES_XML_ROOT","STY","write_sty_xml","wb","THEME","XLSXThemeClrScheme","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","parse_themeElements","themeltregex","parse_theme_xml","write_theme","Themes","themeXLSX","parse_xlink_xml","parse_xlink_bin","xlink_parse","R_n","IMG","DRAW","parse_drawing","id","_shapeid","write_comments_vml","csize","bbox","xmlns:v","xmlns:o","xmlns:x","xmlns:mv","v:ext","joinstyle","gradientshapeok","o:connecttype","o:spt","coordsize","fillopts","color2","angle","fillparm","fillxml","shadata","on","obscured","fillcolor","strokecolor","CMNT","sheet_insert_comments","comment","ref","author","parse_comments_xml","authors","commentList","authtag","cmnttag","cm","authorId","guid","textMatch","rt","CMNT_XML_ROOT","write_comments_xml","iauthor","CT_VBA","make_vba_xls","newcfb","newpath","fill_vba_xls","VBAFMTS","DS","MS","parse_ds_bin","!type","parse_ds_xml","parse_ms_bin","parse_ms_xml","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","ods_to_csf_formula","csf_to_ods_formula","ods_to_csf_3D","csf_to_ods_3D","_ssfopts","WS","browser_has_Map","Map","get_sst_id","has","revarr","get","col_obj_w","level","outlineLevel","default_margins","margins","mode","defs","left","right","top","bottom","footer","get_cell_style","revssf","ssf","fontId","fillId","borderId","xfId","applyNumberFormat","safe_format","fillid","cellStyles","raw_rgb","check_ws","sname","parse_ws_xml_dim","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml","refguess","data1","data2","mtch","sheetPr","parse_ws_xml_sheetpr","parse_ws_xml_sheetpr2","svs","parse_ws_xml_sheetviews","columns","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","merges","_merge","hlink","parse_ws_xml_hlinks","parse_ws_xml_margins","tmpref","write_ws_xml_merges","codeName","CodeName","write_ws_xml_sheetpr","needed","vbaraw","cname","Workbook","outlineprops","summaryBelow","summaryRight","above","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_protection","sp","password","crypto_CreatePasswordVerifier_Method1","location","Rel","tooltip","Tooltip","rng","margin","write_ws_xml_margins","seencol","coli","colm","colM","write_ws_xml_cols","write_ws_xml_autofilter","Names","names","Name","Sheet","Ref","sviewregex","Views","zoomScale","zoom","rightToLeft","RTL","write_ws_xml_sheetviews","sview","workbookViewId","write_ws_xml_cell","oldt","oldv","os","Strings","revStrings","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","cells","cref","tagr","tagc","sstr","ftag","do_format","cf","arrayf","sharedf","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","ht","rslice","cellFormula","xlfn","___f","_tag","_r","write_ws_xml_data","params","height","_cell","customHeight","WS_XML_ROOT","xmlns:r","write_ws_xml","sidx","rdata","_drawing","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","relc","ignoreEC","numberStoredAsText","sqref","r:id","CHART","CHARTEX","parse_Cache","num","nf","parse_chart","csheet","nc","cache","CS","CS_XML_ROOT","parse_cs_xml","!drawel","!rel","write_cs_xml","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","safe1904","badchars","check_ws_name","_good","check_wb_names","N","codes","cn","check_wb","wbnsregex","parse_wb_xml","AppVersion","dname","dnstart","xml_wb","Hidden","Comment","localSheetId","WB_XML_ROOT","write_wb_xml","write_names","workbookPr","sheetId","parse_wb","parse_wb_bin","parse_ws","parse_ws_bin","parse_cs","parse_cs_bin","parse_ms","parse_ds","parse_sty","parse_sty_bin","parse_theme","parse_sst","parse_sst_bin","parse_cmnt","parse_comments_bin","parse_cc","parse_cc_bin","parse_cc_xml","parse_xlink","write_wb","write_wb_bin","write_ws","write_ws_bin","write_cs","write_cs_bin","write_sty","write_sty_bin","write_sst","write_sst_bin","write_cmnt","write_comments_bin","HTML_","html_to_sheet","mtch2","hd","midx","colspan","rowspan","_t","html_to_book","book_new","book_append_sheet","make_html_row","editable","make_html_preamble","_BEGIN","_END","sheet_to_html","_row","BEGIN","END","_preamble","sheet_add_dom","or_R","or_C","getElementsByTagName","is_dom_element_hidden","display","elts","hasAttribute","getAttribute","innerHTML","Aelts","Aelti","parse_dom_table","table_to_book","element","get_computed_style","get_get_computed_style_function","getPropertyValue","ownerDocument","defaultView","getComputedStyle","parse_content_xml","parse_text_p","fixed","number_formats","day","month","year","hours","minutes","seconds","am-pm","day-of-week","era","quarter","pcx","NFtag","pidx","sheetag","rowtag","ctag","textp","textpidx","textptag","textR","row_ol","number_format_map","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","lastIndex","rptR","rpt","nrange","ptp","bookSheets","parse_ods","parse_fods","write_styles_ods","master_styles","xmlns:office","xmlns:table","xmlns:style","xmlns:text","xmlns:draw","xmlns:fo","xmlns:xlink","xmlns:number","xmlns:svg","xmlns:of","office:version","wso","write_content_ods","write_text_p","null_cell_xml","covered_cell_xml","mi","ods","ROWS","skip","_Fref","text_p","_tgt","xlink:href","write_automatic_styles_ods","cidx","colobj","wcx","attr","xmlns:meta","xmlns:presentation","xmlns:chart","xmlns:dr3d","xmlns:math","xmlns:form","xmlns:script","xmlns:ooo","xmlns:ooow","xmlns:oooc","xmlns:dom","xmlns:xforms","xmlns:sheet","xmlns:rpt","xmlns:xhtml","xmlns:grddl","xmlns:tableooo","xmlns:drawooo","xmlns:calcext","xmlns:loext","xmlns:field","xmlns:formx","xmlns:css3t","fods","xmlns:config","office:mimetype","write_ods","fix_opts_func","fix_opts","fix_read_opts","fix_write_opts","get_sheet_type","safe_parse_wbrels","wbrels","pwbr","strRelID","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","draw","chartp","crelsp","strip_front_slash","NUMBERS","parse_numbers","_zip","entries","dir","binname","bookProps","link","propdata","pluck","Custprops","deps","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","wsloop","snjseen","snj","Directory","Deps","Styles","bookFiles","bookVBA","bin","parse_xlsxcfb","parse_DataSpaceVersionInfo","dsm","parse_DataSpaceMap","comps","seds","parse_DataSpaceDefinition","parse_Primary","einfo","parse_EncryptionInfo","decrypt_agile","decrypt_std76","write_zip_xlsxb","foo","vbafmt","General","_sn","_i","wsrels","_type","need_vml","rId1","write_zip_xlsx","read_cfb","parse_xlscfb","read_zip","read_plaintext","parse_xlml","read_plaintext_raw","read_utf16","bstrify","read_prn","readSync","ab","vu","WK_","RTF","write_obj_str","write_str","write_htm_str","write_csv_str","sheet_to_csv","write_slk_str","write_dif_str","write_prn_str","write_rtf_str","write_txt_str","sheet_to_txt","write_dbf_buf","write_eth_str","write_wk1_buf","sheet_to_wk1","write_cfb_ctr","write_zip_type","write_zip_denouement","write_zip_typeXLSX","oopts","nodebuffer","string","generate","encrypt_agile","write_cfb_type","write_xlscfb","write_string_type","bom","write_stxt_type","write_binary_type","writeSyncXLSX","writeSync","write_xlml","book_to_wk3","write_biff_buf","resolve_book_type","_BT","xls","slk","socialcalc","Sh33tJS","writeFileSyncXLSX","writeFileAsync","_cb","Function","make_json_row","hdr","defval","isempty","defineProperty","enumerable","__rowNum__","rawNumbers","outi","counter","CC","blankrows","qreg","make_csv_row","txt","forceQuotes","endregex","skipHidden","strip","sheet_to_formulae","cmds","sheet_add_json","js","skipHeader","JS","sheet_get_cell","json_to_sheet","table_to_sheet","sheet_to_row_object_array","add_consts","get_default","ws_get_cell_stub","RC","wb_sheet_idx","sh","book_set_sheet_visibility","vis","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","rngstr","readFile","writeXLSX","writeFileXLSX","define","amd","window"],"mappings":"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","file":"dist/xlsx.mini.min.js"} \ No newline at end of file diff --git a/docbits/10_install.md b/docbits/10_install.md index dec19af..767f3d1 100644 --- a/docbits/10_install.md +++ b/docbits/10_install.md @@ -34,10 +34,12 @@ For example, `unpkg` makes the latest version available at: The complete single-file version is generated at `dist/xlsx.full.min.js` +`dist/xlsx.core.min.js` omits codepage library (no support for XLS encodings) + A slimmer build is generated at `dist/xlsx.mini.min.js`. Compared to full build: - codepage library skipped (no support for XLS encodings) - XLSX compression option not currently available -- no support for XLSB / XLS / Lotus 1-2-3 / SpreadsheetML 2003 +- no support for XLSB / XLS / Lotus 1-2-3 / SpreadsheetML 2003 / Numbers - node stream utils removed diff --git a/mini.lst b/mini.lst index 941d944..f48de91 100644 --- a/mini.lst +++ b/mini.lst @@ -1,6 +1,6 @@ bits/00_header.js bits/01_version.js -bits/02_codepage.js +misc/02_cpmini.js bits/03_consts.js bits/04_base64.js bits/05_buf.js @@ -19,6 +19,7 @@ bits/27_csfutils.js bits/29_xlsenum.js bits/30_ctype.js bits/31_rels.js +bits/32_odmanrdf.js bits/33_coreprops.js bits/34_extprops.js bits/35_custprops.js @@ -35,17 +36,17 @@ bits/57_cmntxml.js bits/59_vba.js bits/60_macrovba.js bits/61_fcommon.js +bits/65_fods.js bits/66_wscommon.js bits/67_wsxml.js bits/69_chartxml.js -bits/70_csheet.js +misc/70_csheet.js bits/71_wbcommon.js bits/72_wbxml.js bits/74_xmlbin.js bits/79_html.js bits/80_parseods.js bits/81_writeods.js -bits/83_numbers.js bits/84_defaults.js bits/85_parsezip.js bits/86_writezip.js diff --git a/misc/02_cpmini.js b/misc/02_cpmini.js new file mode 100644 index 0000000..20a4883 --- /dev/null +++ b/misc/02_cpmini.js @@ -0,0 +1,57 @@ +var current_codepage = 1200, current_ansi = 1252; + +var VALID_ANSI = [ 874, 932, 936, 949, 950, 10000 ]; +for(var i = 0; i <= 8; ++i) VALID_ANSI.push(1250 + i); +/* ECMA-376 Part I 18.4.1 charset to codepage mapping */ +var CS2CP = ({ + /*::[*/0/*::]*/: 1252, /* ANSI */ + /*::[*/1/*::]*/: 65001, /* DEFAULT */ + /*::[*/2/*::]*/: 65001, /* SYMBOL */ + /*::[*/77/*::]*/: 10000, /* MAC */ + /*::[*/128/*::]*/: 932, /* SHIFTJIS */ + /*::[*/129/*::]*/: 949, /* HANGUL */ + /*::[*/130/*::]*/: 1361, /* JOHAB */ + /*::[*/134/*::]*/: 936, /* GB2312 */ + /*::[*/136/*::]*/: 950, /* CHINESEBIG5 */ + /*::[*/161/*::]*/: 1253, /* GREEK */ + /*::[*/162/*::]*/: 1254, /* TURKISH */ + /*::[*/163/*::]*/: 1258, /* VIETNAMESE */ + /*::[*/177/*::]*/: 1255, /* HEBREW */ + /*::[*/178/*::]*/: 1256, /* ARABIC */ + /*::[*/186/*::]*/: 1257, /* BALTIC */ + /*::[*/204/*::]*/: 1251, /* RUSSIAN */ + /*::[*/222/*::]*/: 874, /* THAI */ + /*::[*/238/*::]*/: 1250, /* EASTEUROPE */ + /*::[*/255/*::]*/: 1252, /* OEM */ + /*::[*/69/*::]*/: 6969 /* MISC */ +}/*:any*/); + +var set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; }; +function reset_ansi() { set_ansi(1252); } + +var set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); }; +function reset_cp() { set_cp(1200); reset_ansi(); } + +function char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; } + +function utf16leread(data/*:string*/)/*:string*/ { + var o/*:Array*/ = []; + for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8)); + return o.join(""); +} +function utf16beread(data/*:string*/)/*:string*/ { + var o/*:Array*/ = []; + for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8)); + return o.join(""); +} + +var debom = function(data/*:string*/)/*:string*/ { + var c1 = data.charCodeAt(0), c2 = data.charCodeAt(1); + if(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2)); + if(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2)); + if(c1 == 0xFEFF) return data.slice(1); + return data; +}; + +var _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); }; +var _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); }; diff --git a/misc/70_csheet.js b/misc/70_csheet.js new file mode 100644 index 0000000..6e69af6 --- /dev/null +++ b/misc/70_csheet.js @@ -0,0 +1,32 @@ +RELS.CS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet"; + +var CS_XML_ROOT = writextag('chartsheet', null, { + 'xmlns': XMLNS.main[0], + 'xmlns:r': XMLNS.r +}); + +/* 18.3 Worksheets also covers Chartsheets */ +function parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ { + if(!data) return data; + /* 18.3.1.12 chartsheet CT_ChartSheet */ + if(!rels) rels = {'!id':{}}; + var s = ({'!type':"chart", '!drawel':null, '!rel':""}/*:any*/); + var m; + + /* 18.3.1.83 sheetPr CT_ChartsheetPr */ + var sheetPr = data.match(sheetprregex); + if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx); + + /* 18.3.1.36 drawing CT_Drawing */ + if((m = data.match(/drawing r:id="(.*?)"/))) s['!rel'] = m[1]; + + if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; + return s; +} +function write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ { + var o = [XML_HEADER, CS_XML_ROOT]; + o[o.length] = writextag("drawing", null, {"r:id": "rId1"}); + add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); + if(o.length>2) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +}